Está en la página 1de 54

PROGRAMACIÓN ORIENTADA

A OBJETOS

Facultad de ingeniería Electrónica


Departamento de Sistemas
Universidad del Cauca
MODELADO ORIENTADO A OBJETOS
MODELADO ORIENTADO A OBJETOS
Una de las formas conceptuales para definir los elementos a
incorporar consiste en la denominada modelación orientada a
objetos que tiene su naturaleza en modelos conceptuales de
programación.

Como parte de la esta modelación se definen significados de


los elementos, se proponen variables o atributos pertinentes y
métodos propios.

El modelado orientado a objetos es el proceso de preparación y


diseño de cómo se verá realmente el código del modelo.
Durante la fase de construcción o programación, las técnicas
de modelado se implementan utilizando un lenguaje que
admite el modelo de programación orientado a objetos.
MODELADO ORIENTADO A OBJETOS
UML.
El Lenguaje Unificado de Modelado (UML) fue creado para forjar
un lenguaje de modelado visual común, semántica y
sintácticamente rico para la arquitectura, el diseño y la
implementación de sistemas de software complejos, tanto en
estructura como en comportamiento.

– Hay cuatro categorías de modelos para la resolución de


problemas:
– Lenguajes imperativos
– Lenguajes funcionales
– Lenguajes declarativos
– Lenguajes orientados a objetos (OOP). En los lenguajes
orientados a objetos, los algoritmos se expresan definiendo
'objetos' y haciendo que los objetos interactúen entre sí.
MODELADO ORIENTADO A OBJETOS
UML.
– Dominio:contexto de un problema
– Modelo: abstracción de un problema
– UML:
o Unified Modeling Language. Versión 2.0 (finales de 2004)
o Lenguaje de modelado de sistemas
o Diagramas de estructura, comportamiento, ...
o Especificar sistemas
o Visualizar sistemas
o Construir sistemas
o Documentar sistemas
– Ingeniería directa: hacer diagramas y luego implementar
– Ingeniería inversa: a partir de código extraer los diagramas
MODELADO ORIENTADO A OBJETOS
Diagramas de clases: estruc tura del sistema.

Eningeniería de software, un diagrama de clases en UMLes un tipo de diagrama de


estructura estática que describe la estructura de un sistema mostrando las clases del
sistema, sus atributos, métodos, y las relaciones entre los objetos.

– El Diagrama de Clases es el diagrama principal para el análisis y diseño.


– Clases: conceptos dentro del sistema que comparten los mismos atributos,
operaciones, relaciones y semántica
o Atributos: tipo, visibilidad, posible valor inicial
o Operaciones: signatura, visibilidad
– Relaciones:asociaciones entre clases
– Cada objeto pertenece a una clase
– Los objetos se crean por instanciación de las clases
MODELADO ORIENTADO A OBJETOS
Diagramas de Clases –Notación Grafica
– Cada c lase se representa en un rec tángulo
con tres compartimientos:
o Nombre de la clase:debe ser distintivo
o Atributos de la clase
o Operacionesde la clase

– Atributo: Generalmente son de tipos simples,


ya que los atributos de tipos compuestos se
representan mediante asociaciones de
agregación con otras clases.
MODELADO ORIENTADO A OBJETOS

Diagramas de Clases –Notación Grafica


MODELADO ORIENTADO A OBJETOS
Diagramas de Clases –Notación Grafica
MODELADO ORIENTADO A OBJETOS
Diagramas de Clases –Notación Grafica

En UML, una clase es un tipo de clasificador cuyas características son atributos y


operaciones.

• Símbolos UML de clase y objeto


MODELADO ORIENTADO A OBJETOS

Diagramas de Clases –Visibilidad

Sección Explicación
Public Elementos accesibles a todas las funciones

Elementos accesibles por clases derivadas debido


Protected
a la propiedades de la herencia

Elementos accesibles sólo a los miembros de la


Private
clase en que están definidos
MODELADO ORIENTADO A OBJETOS
Notación para atributos de la clase
[ v s b l dad] [ / ] nombre [ : t po] [ m u l t p l c dad] [= v a l o r ] [{prop edad}]

– Visibilidad: +(público) – (privado) # protegido


o + Visibilidad pública: Visible por todos los objetos
o # Visibilidad protegida: Visible sólo por el objeto y sus descendientes
o - Visibilidad privada: Visible sólo por el objeto
– /: indic a que el atributo es derivado
– Nombre:es el identific a dor del atributo
– Tipo: Indic a el dominio del atributo
– Multiplic idad: va entre [ ] y vale 1 por defecto
– Valor: valor inicial que va a contener el atributo cuando se crea de nuevo el objeto
– Propiedad: {readOnly}, {union}, {subsets },{redefines }, {ordered}, {bag},
{seq}, {sequence }, {composite}
– Un atributo subrayado es estático
MODELADO ORIENTADO A OBJETOS
Notación para atributos de la clase

– Un atributo debería ser un valor de datos puro, no un objeto.


– Los valores de datos puros, a diferencia de los objetos, no tienen identidad.
MODELADO ORIENTADO A OBJETOS

Notación para métodos de la clase


[ v s b l dad] nombre ( [parámetros] ) [ : t p o - r e t o r n o ] [{prop edad}]

– Visibilidad: +(público) – (privado) # protegido


– Parámetros:separados por comas
– Propiedades: {query}, {update}, {concurrent}, {abstract}, {constructor}
– Un método subrayado es estático
– Ejemplos:
o +Visualizar()
o +Esconder()
MODELADO ORIENTADO A OBJETOS

Notación para métodos de la clase


MODELADO ORIENTADO A OBJETOS

Relaciones
Los enlaces entre objetos pueden representarse entre las respectivas clases

Formas de relación entre clases:


• Dependencia
• Asociación
• Agregación
• Composición
• Implementación
• Herencia

Las relaciones forman las jerarquías de clases


MODELADO ORIENTADO A OBJETOS
Relaciones - DEPENDENCIA
• La dependencia es el tipo de relación más básica y débil entre
clases.
• Existe una dependencia entre dos clases cuando ciertos
cambios en la definición de una clase puede provocar
modificaciones en otra.
Dependencia en UML. El profesor
• La dependencia ocurre normalmente cuando se utilizan depende de los materiales del curso
nombres de clases concretas en el código.
o Por ejemplo, al especificar tipos en las firmas de un
método, al instanciar objetos mediante llamadas al
constructor, etc.
• Se puede hacer más débil una dependencia haciendo que el
código dependa de interfaces o clases abstractas en lugar de
clases concretas.
• La dependencia en UML se establece mediante una línea
punteada y una flecha dirigida hacia el objeto de la cual se
depende
MODELADO ORIENTADO A OBJETOS
Relaciones - DEPENDENCIA
MODELADO ORIENTADO A OBJETOS
Relaciones - ASOCIACIÓN
• La asociación es una relación
en la que un objeto utiliza o
interactúa con otro.
• Es una relación estructural que
describe una conexión entre
objetos.
• Se muestra como una línea
continua que une las clases
relacionadas entre si.
MODELADO ORIENTADO A OBJETOS
Relaciones - ASOCIACIÓN
• Se utiliza la asociación para representar algo como un campo en una clase. El vínculo
siempre está ahí, en cuanto a que siempre puedes pedir una orden para su cliente.

• Cuando una asociación es una conexión de dos clases, se llama asociación binaria.

• Aunque no es lo común, se pueden tener asociaciones que conecten más de dos clases;
éstas se llaman asociaciones n-arias.
MODELADO ORIENTADO A OBJETOS
Relaciones - ASOCIACIÓN
• Aunque las asociaciones suelen ser bidireccionales (se pueden recorrer en ambos
sentidos), en ocasiones es deseable hacerlas unidireccionales (restringir su
navegación en un único sentido)

• Cuando la asociación es unidireccional, la línea termina en una punta de flecha


que indic a el sentido de la asociación.

Asociación Unidireccional Asociación Bidireccional


MODELADO ORIENTADO A OBJETOS
Relaciones - ASOCIACIÓN
Involutiva

• Cuando la misma clase aparece en los dos extremos de la asociación.


MODELADO ORIENTADO A OBJETOS
Relaciones - MUTIPLICIDAD
• Cada asociación puede presentar algunos elementos adicionales que dan
detalle a la relación, como son:
o Multiplicidad: describe la cardinalidad de la asociación. Cada asociación
tiene, en ambos sentidos, una multiplicidad:
1 indica una ocurrencia;
*indica 0 o más ocurrencias;
1..*señala una o más;
1..40 indica de 1 a 40 ocurrencias;
3,5,8 indica que hay 3 ó 5 u 8 ocurrencias .

o Ejemplo:
MODELADO ORIENTADO A OBJETOS
Relaciones - MUTIPLICIDAD
La multiplicidad es una restricción, que limita el número de instancias de una clase
que pueden tener esa asociación con una instancia de la otra clase. Puede
expresarse de las siguientes formas:

• Con un número fijo: 1.


• Con un intervalo de valores:2..5.
• Con un rango en el cual uno de los extremos es un asterisco. Significa que es
un intervalo abierto. Por ejemplo, 2..* significa 2 o más.
• Con una c ombinación de elementos como los anteriores separados por
comas:1, 3..5, 7, 15..*.
• ·Con un asterisco: * . En este caso indica que puede tomar cualquier valor
(cero o más).
MODELADO ORIENTADO A OBJETOS
Relaciones - MUTIPLICIDAD
• Especificación de multiplicidad (mínima...máxima)
1 Uno y sólo uno
0..1 Cero o uno
M..N Desde M hasta N (enteros naturales)
* Cero o muchos
0..* Cero o muchos
1..* Uno o muchos (al menos uno)

• La multiplicidad mínima >=1 establece una restricción de existencia


MODELADO ORIENTADO A OBJETOS
Relaciones - MUTIPLICIDAD
MODELADO ORIENTADO A OBJETOS
Relaciones - EJEMPLOS
Cuando la multiplicidad mínima es 0,
significa que es una relación opcional
dirige
Todo departamento tiene un director
Profesor Departamento Un profesor puede dirigir un departamento
1 0…1

pertenece Todo profesor pertenece a un departamento


Profesor Departamento A un departamento pertenecen muchos
profesores
* 1

Relación opcional Relación obligatoria


Un cliente puede o no ser Una cuenta ha de tener un
titular de una cuenta titular como minimo
MODELADO ORIENTADO A OBJETOS
Relaciones - NOMBRE

Describe el significado de la relación. Se usa para describir la naturaleza de la


relación.

Así no hay ambigüedad sobre su significado. Para indicar la dirección en que se


debe leer el nombre se emplea un triángulo.

Ejemplo:
MODELADO ORIENTADO A OBJETOS
Relaciones - ROLES

Cuando una clase participa en una asociación, juega un rol específico en dicha
relación.
Se puede designar de forma explícita mediante un nombre a los finales de la
línea, el cual describe la semántica de la asociación en el sentido indicado.

Ejemplo:
MODELADO ORIENTADO A OBJETOS
Relaciones - ROLES
MODELADO ORIENTADO A OBJETOS
Relaciones - ATRIBUTOS
Atributo: como consecuencia de una relación puede necesitarse almacenar
cierta información de detalle. Ésta se denota como una clase relacionada por
una línea punteada a la relación.

Ejemplo: considerar una relación entre Muro y Ventana, la cual tiene como detalle
un objeto de la clase Posición; cabe notar que este objeto no podría tomarse
como atributo de ninguna de las clases anteriores, ya que el contexto de su
existencia está dado precisamente por la relación entre las dos clases.
MODELADO ORIENTADO A OBJETOS
Relaciones - ATRIBUTOS
MODELADO ORIENTADO A OBJETOS
DEPENDENCIA VS ASOCIACIÓN
El método enseñar. Toma un argumento de la clase
Curso , que después se utiliza en el cuerpo del método.
Si alguien cambia el método obtenerConocimientos de Dependencia
la clase Curso (es decir, si cambia su nombre o añade
algún parámetro requerido, etc .) nuestro c ódigo se
descompondrá. Esto se llama dependencia.
Asociación
Ahora observa el campo Estudiante y cómo se utiliza en
el método enseñar.
Podemos afirmar con seguridad que la clase Estudiante
también es una dependencia para el Profesor
Si el método recordar cambia, el código de Profesor se
romperá. No obstante, como el campo Estudiante
siempre está accesible para cualquier método de
Profesor, la claseEstudiante no es sólo una dependencia,
sino También una asociación.
MODELADO ORIENTADO A OBJETOS
AGREGACIÓN
Es un tipo especializado de asociación que representa
relaciones “uno a muchos”, “muchos a muchos” o
“todo a parte” entre múltiples objetos, mientras que una Contenedor Componente
asociación simple describe relaciones entre un par de
objetos.
En la agregación, un objeto “tiene” un grupo de otros
Agregación en UML. Los departamentos
objetos y sirve como contenedor o colección. contienen profesores.

El componente puede existir sin el contenedor y puede


vincularse a varios contenedores al mismo tiempo.
En UML, la relación de agregación se muestra por una
línea con un diamante vacío en el lado del contenedor
y una flecha en el extremo apuntando hacia el
componente.
MODELADO ORIENTADO A OBJETOS
AGREGACIÓN
Relación del tipo Todo/parte

No es una relación fuerte:


La Ventana contiene Figuras, pero cada una puede existir sin la otra.
La c ardinalidad del lado del todo sólo puede ser uno.
MODELADO ORIENTADO A OBJETOS
AGREGACIÓN –Ejemplos
Ordenador CPU

Circunferencia Punto
MODELADO ORIENTADO A OBJETOS
COMPOSICIÓN

• La composición es un tipo específico de


agregación en la que un objeto se Contenedor Componente

compone de una o más instancias del otro.


• La diferencia entre ésta y otras relaciones
Composición en UML. La universidad
está en que el componente sólo puede consta de departamentos.

existir como parte del contenedor.


• En UML, la relación de composición se
representa igual que la de agregación, pero
con un diamante relleno en la base de la
flecha.
MODELADO ORIENTADO A OBJETOS
COMPOSICIÓN
Relación del tipo Todo/ Parte

Es una relación fuerte:


Si el Circulo se copia o elimina, también lo hace el Punto.
La multiplicidad en el lado del todo puede ser uno (1) ó cero-uno
(0..1), pero la multiplicidad en el lado de la parte puede ser
cualquier intervalo.
MODELADO ORIENTADO A OBJETOS
COMPOSICIÓN –Ejemplos

Libro Página

Ser vivo Corazón


MODELADO ORIENTADO A OBJETOS
ESTEREOTIPOS:

Extensión del vocabulario de UML que permite crear nuevos


bloques derivados de los existentes, pero específicos a un
problema concreto
MODELADO ORIENTADO A OBJETOS
IMPLEMENTACIÓN:
Son clases que definen un juego de operaciones externas accesibles pero sin métodos.
Se usan para modelar una serie de operaciones que definen un servicio que puede ser
ofrecido por diferentes clases.
Una interfaz no tiene instancias.
Incluyen:
• Nombre
• Operacionessin implementación
• Relaciones de realización
• Pueden tener relaciones de generalización
No incluyen:
• Atributos
• Asociaciones
MODELADO ORIENTADO A OBJETOS
IMPLEMENTACIÓN:
Las interfases definen una separación entre la especificación (vista exterior) de lo que
hace una abstracción y la implementación (vista interior) de cómo lo hace.
MODELADO ORIENTADO A OBJETOS
HERENCIA:
La relación de herencia se representa mediante un triángulo en el extremo de la
relación que corresponde a la clase más general o clase “padre”.

En una generalización no hay multiplicidad ni roles.


MODELADO ORIENTADO A OBJETOS
HERENCIA:
MODELADO ORIENTADO A OBJETOS
HERENCIA MULTIPLE:

Se presenta cuando una subclase tiene más de


una superclase

La herencia múltiple debe manejarse con


precaución. Algunos problemas son el conflicto
de nombre y el conflicto de precedencia

Se recomienda un uso restringido y disciplinado


de la herencia. Java y Ada 95 simplemente no
ofrecen herencia múltiple
MODELADO ORIENTADO A OBJETOS
VISIÓNGLOBAL
Dependencia: La clase A puede verse afe ctada por
cambios en la clase B.
Asociación: El objeto A conoce el objeto B. La clase A
depende de B.
Agregación: El objeto A conoce el objeto B y consiste en
B. La clase A depende de B.
Composición: El objeto A conoce el objeto B, consiste en
B y gestiona el ciclo vital de B. La clase A depende de B.
Implementación: La clase A define métodos declarados
en la interfaz B. Los objetos A pueden tratarse como B. La
clase A depende de B.
Herencia: La clase A hereda la interfaz y la
implementación de la clase B, pero puede extenderla. El
objeto A puede tratarse como B. La clase A depende de
B.
MODELADO ORIENTADO A OBJETOS
ESTILO
• Los atributos no deben ser objetos (usar relaciones en tal
caso)
• Los diagramas de clases no suelen incluir (son detalles de
implementación):
o Constructores
o Métodos de acceso (“get”/“set”)
o Métodos de gestión de elementos de una asociación o
agregación (por ej. “add”/“remove”)
MODELADO ORIENTADO A OBJETOS
• Nombres:Clases y propiedades
• Adjetivos: Valores de las propiedades
• Verbos: Comportamiento de las clases (métodos)

“El coche tiene color rojo y se mueve”


“El documento tiene letra grande y se muestra”
Pasos:
1. Identificar clases
2. Identificar y depurar relaciones
3. Identificar atributos de clases y relaciones
4. Añadir herencia
5. Comprobar casos de uso (iterar)
6. Añadir y simplificar métodos
MODELADO ORIENTADO A OBJETOS
EJEMPLO:
Representar mediante un diagrama de clases la siguiente
especificación:

Una aplic a ción necesita almacenar informac ión sobre empresas,


sus empleados, y sus clientes:
• Empleados y se cliente se caracterizan por su nombre y edad
• Los empleados tienen un sueldo bruto
• Los empleados que son directivos tienen una categoría y un conjunto
de empelados subordinados
• De los clientes se necesita conocer su teléfono de contacto
• La aplicación necesita mostrar los datos de empleados y clientes
MODELADO ORIENTADO A OBJETOS
EJEMPLO

Pasos:
1. Identific a r clases
2. Identific a r y depurar
relaciones
MODELADO ORIENTADO A OBJETOS
EJEMPLO

Pasos:
3. Identific a r atributos de
clases y relaciones
4. Añadir herencia
MODELADO ORIENTADO A OBJETOS
EJEMPLO

Pasos:
5. Comprobar c a sos de
uso (iterar)
MODELADO ORIENTADO A OBJETOS
EJEMPLO

Pasos:
6. Añadir y simplificar
métodos

También podría gustarte