paradigma orientado a objetos

Post on 24-Jul-2015

264 Views

Category:

Software

3 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Paradigma Orientado a Objetos

Paradigma

Paradigma

Un paradigma es un determinado marco desde el cual miramos el mundo, lo comprendemos, lo interpretamos e intervenimos sobre él. Abarca desde el conjunto de conocimientos científicos que imperan en una época determinada hasta las formas de pensar y de sentir de la gente en un determinado lugar y momento histórico.

Paradigma

Adam Smith define paradigma, en su libro “Los poderes de la mente”, como “un conjunto compartido de suposiciones. Es la manera como percibimos el mundo: agua para el pez. El paradigma nos explica el mundo y nos ayuda a predecir su comportamiento”.

Paradigma

En nuestro contexto, el paradigma debe ser concebido como una forma aceptada de resolver un problema en la ciencia, que más tarde es utilizada como modelo para la investigación y la formación de una teoría. También, el paradigma debe ser concebido como un conjunto de métodos, reglas y generalizaciones utilizadas conjuntamente por aquellos entrenados para realizar el trabajo científico de investigación.

Paradigmas

Paradigmas de programación

Los paradigmas de programación nos indican las diversas formas que, a lo largo de la evolución de los lenguajes, han sido aceptadas como estilos para programar y para resolver los problemas por medio de una computadora.

Paradigmas de programación

ImperativoFuncionalLógicoOrientado a Objetos

Paradigma POO

La Programación Orientada a Objetos (POO u OOP según sus siglas en inglés) es un paradigma de programación que usa objetos y sus interacciones para diseñar aplicaciones y programas de computadora. Está basado en varias técnicas, incluyendo herencia, modularidad, polimorfismo, y encapsulamiento. Su uso se popularizó a principios de la década de 1990. Actualmente son muchos los lenguajes de programación que soportan la orientación a objetos.

Lenguajes de programación OO

Simula 67: Johan Dahl y Kristen NygaardSmalltalk: Alan KayC++: Bjarne StroustrupEiffel: Bertrand MeyerJava: James GoslingC#: Anders HejlsbergRuby: Yukihiro Matsumoto

Personajes

Características de la POO

Características de la POO

Abstraction Encapsulation Information Hiding Modularity Functional Independence: Coupling and

Cohesion Polymorphism Inheritance

Single inheritance Multiple inheritance

Abstracción

Es aislar un elemento de su contexto o del resto de los elementos que lo acompañan.

Expresa las características esenciales de un objeto, las cuales distinguen al objeto de los demás.

Provee límites conceptuales.Quitar las propiedades y acciones de un

objeto para dejar solo aquellas que sean necesarias.

Encapsulación

Es reunir todos los elementos que puedan considerarse pertenecientes a una misma entidad al mismo nivel de abstracción.

Aumenta la cohesión de los componentes de un sistema.

Ocultamiento de la información

Cada objeto está aislado y establece una interfaz que especifica cómo pueden interactuar con éste, protegiendo sus propiedades de la modificación por quien no tenga derecho a acceder a ellos.

Modularidad

Permite subdividir un sistema en partes más pequeñas llamadas módulos, cada una tan independiente como sea posible.

Independencia funcional

Evalúa dos criterios cualitativos: Cohesión: Medida que indica qué tan especializado es

un módulo u objeto, lo que hace que tenga poca interacción con las otras partes del sistema. Algo cohesivo deberá idealmente hacer una sola cosa.

Acoplamiento: Medida de interconexión entre módulos dentro de una estructura de software. Esta medida depende de la complejidad de interconexión entre los módulos. Grado de interdependencia entre módulos de un programa.

Independencia funcional

Alta cohesión Bajo acoplamiento

Polimorfismo

Comportamientos diferentes asociados a objetos distintos pueden compartir el mismo nombre.

Herencia

Los objetos heredan las propiedades y el comportamiento de todas las clases a las que pertenece.

Hay dos tipos de herencia: Herencia simple Herencia múltiple

DDD: Deadly Diamond of Death

Ventajas de la POO

Reusability (reutilizabilidad): Cuando hemos diseñado adecuadamente las clases, se pueden usar en distintas partes del programa y en numerosos proyectos.

Maintainability (sostenibilidad): Debido a las sencillez para abstraer el problema, los programas orientados a objetos son más sencillos de leer y comprender, pues nos permiten ocultar detalles de implementación dejando visibles sólo aquellos detalles más relevantes.

Modifiability (modificabilidad) La facilidad de añadir, suprimir o modificar nuevos objetos nos permite hacer modificaciones de una forma muy sencilla.

Reliability (fiabilidad): Al dividir el problema en partes más pequeñas podemos probarlas de manera independiente y aislar mucho más fácilmente los posibles errores que puedan surgir.

Conceptos básicos

Object Class

Concrete Abstract

Interface Attribute Operation Responsibility Message Package

Objeto

Entidad prevista de un conjunto de propiedades (datos) y de comportamiento (funcionalidad).

Instancia de una clase.

Clase

Descripción de un conjunto de objetos que comparten los mismos atributos, operaciones, relaciones y semántica.

Clase y objetos

Clase y objetos

Clase: Persona

Objetos

Clase y objetos

Clase: Galleta

Objetos

?

Clase abstracta

Es una clase que tiene incompleto su comportamiento.

No implementa todas sus operaciones: al menos una de ellas no contiene código (operación abstracta).

No se puede instanciar.Está obligada a heredar.

Interface

Es una colección de operaciones que se usa para especificar un servicio de una clase o de un componente.

Solo declara comportamiento, no lo implementa. Todas las operaciones son abstractas (sin

código). Obliga a otras clases derivadas a la

implementación de todas sus operaciones. Obliga a la herencia siempre y cuando sea con

interfaces derivadas. No se puede instanciar.

Componentes de las clases

Classes are composed from structural and behavioral constituents.

ESTRUCTURA

COMPORTAMIENTO

Componentes de las clases

Classes are composed from structural and behavioral constituents.

ESTRUCTURA

COMPORTAMIENTO

ATRIBUTOS

OPERACIONES

Atributo

Es una propiedad de una clase que describe un rango de valores que pueden tomar las instancias de la propiedad.

Atributo derivado: son aquellos que se pueden calcular a partir de otros atributos.

Operación

Es la implementación de un servicio que puede ser requerido a cualquier objeto de la clase para que muestre un comportamiento.

Es la abstracción de algo que se puede hacer a un objeto.

Reglas de Visibilidad

Matriz de Visibilidad

Alcance de atributos y operaciones

Es una característica específica si cada instancia del clasificador tiene su propio valor de la característica, o si sólo hay un valor de la característica para todas las instancias del clasificador. Hay dos tipos de alcances: Instance Static

Alcance de instancia

Cada instancia del clasificador tiene su propio valor para la característica. Éste es el valor por defecto y no requiere una notación adicional de UML.

Alcance estático

Sólo hay un valor de la característica para todas las instancias del clasificador. También se llama alcance de clase. Esto se denota con UML subrayando el nombre de la característica.

Responsabilidad

Es un contrato o una obligación de una clase. Al crear una clase, hay una promesa de que

todos los objetos de esa clase tendrán el mismo tipo de estado y el mismo comportamiento.

Los atributos y operaciones de una clase son simplemente las características por medio de las cuales se llevan a cabo las responsabilidades de dicha clase.

Gráficamente, las responsabilidades se pueden expresar como texto libre en un compartimento separado al final del icono de la clase.

Interacciones: Mensajes

En cualquier sistema, los objetos interactúan entre sí pasándose mensajes.

Una interacción es un comportamiento que incluye un conjunto de mensajes que se intercambian un conjunto de objetos.

Un mensaje es la especificación de una comunicación entre objetos que transmite información, con la expectativa de que se desencadenará una actividad.

Paquete

Es un mecanismo de propósito general para organizar elementos de modelado en grupos.

Is a container for the definitions of UML elements such as classes, use cases and components. A package can also contain other packages.

Packages are useful for separating work into different areas.

Each package defines a namespace so that names that are defined in different packages do not conflict with each other.

Paquete

The qualified name property of each element is the qualified name of the package to which it belongs, followed by the element's own name.

For example, if your package is called mypackage, a class within the package will have a qualified name like mypackage::MyClass.

Packages are containers. If you move or delete a package, the classes, packages, and other things defined inside it are also moved or deleted.

Namespace

Un espacio de nombres es un conjunto de nombres en el cual todos los nombres son únicos.

Es un contenedor abstracto en el que un grupo de uno o más identificadores únicos pueden existir.

Modelado en UML

Objeto

objeto : Clase

: Alumno

Clase

Clase

+atributo1#atributo2-atributo3~atributo4

+operacion1()-operacion2()#operacion3()~operacion4()

Clase

+atributo1#atributo2-atributo3~atributo4

+operacion1()-operacion2()#operacion3()~operacion4()

paquete1::Clase

+atributo1#atributo2-atributo3~atributo4

+operacion1()-operacion2()#operacion3()~operacion4()

Clase

Profesor

+noTrabajador+nombre+apellidoPaterno+apellidoMaterno+fechaNacimiento+nacionalidad+/edad+/rfc

Clase

ClaseA

+atributo1: String#atributo2: Integer-atributo3: Boolean~atributo4: ClaseB

+operacion1(p1)-operacion2(p1, p2)#operacion3(p1: String)~operacion4(): Integer

Alumno

+nombre: String+apellidoPaterno: String+apellidoMaterno: String+carrera: Integer = 308

+estudiar()+presentarExamen()

Alumno

+nombre: String+apellidoPaterno: String+apellidoMaterno: String+carrera: int = 308

+estudiar()+presentarExamen()

Clase

Clase

+atributo1#atributo2-atributo3~atributo4

+operacion1()-operacion2()#operacion3()~operacion4()

Clase

+atributo1#atributo2-atributo3~atributo4

+operacion1()-operacion2()#operacion3()~operacion4()

Clase

+atributo1#atributo2-atributo3~atributo4

+operacion1()-operacion2()#operacion3()~operacion4()

Clase y objeto

Alumno

+nombre+apellidoPaterno+apellidoMaterno

+estudiar()+presentarExamen()

alumno1 : Alumno

nombre = IsmaelapellidoPaterno = PereaapellidoMaterno = Camarillo

Clase abstracta

TarjetaBancaria

TarjetaCrédito TarjetaDébito

Figura

+calcularArea()+mover()

Cuadrado

+calcularArea()

Círculo

+calcularArea()

Interface

Actor<<interface>>

+actuar()

Persona

+actuar()

Perro

+actuar()

Animal

Alcance

Persona

+nombre: String+especie: String

+main(args[]: String)+Persona()

Persona

+nombre: String+ESPECIE: String

+main(args[]: String)+Persona()

Persona

+nombre: String+ESPECIE: String

+main(args[]: String)+Persona()

Responsabilidades

AgenteDeFraudes

Responsabilidades

- Determinar el riesgodel pedido de un cliente.

- Gestionar los criteriosde fraude específicospara cada cliente.

Paquete

paquete1

paqueteA

paqueteA::paquete1

Codificación del modelo UML

Ejercicio:

Modelar y programar las siguientes clases, paquetes y objetos.

¿Qué objetos le corresponden?

ClaseUno ClaseDos ClaseTres

ClasePadre

ClaseHijoUno ClaseHijoDos

ClaseHijoTres

paqueteuno paquetedos paquetetres

ClaseCuatro ClaseCinco

RockStar PopStar

música

BoyBand

paqueteuno

ClaseUno

ClaseDos

paquetetres

paquetedos

ClaseTres

ClasePadre

ClaseHijoUno

ClaseHijoDos

ClaseHijoTres

música

RockStar

PopStar

BoyBand

ClaseCuatro ClaseCinco

paqueteuno::ClaseUno paqueteuno::ClaseDos paquetedos::ClaseTres

paquetedos::ClasePadre

paquetetres::ClaseHijoUno

paquetetres::ClaseHijoDos

ClaseHijoTres

paqueteuno paquetedos paquetetres

ClaseCuatro ClaseCinco

música::RockStar música::PopStar

música

música::BoyBand

top related