Programación Orientada a Objetos - LDC

Anuncio
Programación
Orientada a Objetos
Prof. Angela Di Serio
Universidad Simón Bolívar
Especialización en Telemática
Agenda Clase 2
Qué es Orientado a Objetos?
Conceptos: objeto, clase,
instancias, mensajes
Propiedades de OO
UML
Diagrama de Clases
Programación convencional
procedimientos y datos
Estructuras de datos como
variables o parámetros que
se tratan separadamente de
los procedimientos
En programación convencional los programas se dividen en
dos componentes: procedimientos y datos. Este método
permite empaquetar código de programa en procedimientos,
pero ¿Qué sucede con los datos? Las estructuras de datos
utilizadas en programación son globales o se pasan como
parámetros. En esencia los datos se tratan separadamente de
los procedimientos.
Programación Orientada a Objetos
Idea:
Mundo lleno de objetos
Resolución de problema en
términos de objetos
Los objetos no son entes aislados
Forman parte de una
organización jerárquica
se basa en la idea natural de la existencia de un mundo lleno de objetos y que la
resolución del problema se realiza en términos de objetos, un lenguaje se dice que
está basado en objetos si soporta objetos como una característica fundamental del
mismo.
un objeto no es un dato simple, sino que contiene en su interior cierto número de
componentes bién estructurados. En segundo lugar, cada objeto no es un ente
aislado, sino que forma parte de una organización jerárquica o de otro tipo.
Elemento básico
objeto
contiene datos que describen su
estado y las operaciones que
operan sobre esos datos
Los datos y funciones se
encapsulan en una única
entidad
En POO un programa se divide en componentes. Cada componente se considera un objeto.
Un objeto es una unidad que contiene datos y las funciones que operan sobre esos datos. A los elementos de un objeto se
les conoce como miembros; las funciones que operan sobre los datos se denominan métodos
El elemento básico de este paradigma no es la función (elemento básico de la programación estructurada), sino un ente
denominado Objeto.
Un objeto es una unidad que contiene datos y las funciones que operan sobre esos datos. Los datos se denominan miembros
dato y las funciones métodos o funciones miembro.
Los datos y las funciones se encapsulan en una única entidad. Los datos están ocultos y sólo mediante las funciones
miembro es posible acceder a ellos.
Estructura de un objeto
Relaciones
Propiedades
Métodos
ESTRUCTURA DE UN OBJETO
Un objeto puede considerarse como una especie de cápsula dividida en tres partes:
1 - RELACIONES
2 - PROPIEDADES
3 - METODOS
Cada uno de estos componentes desempeña un papel totalmente independiente:
Las relaciones permiten que el objeto se insterte en la organización y están formadas esencialmente por punteros a otros
objetos.
Las propiedades distinguen un objeto determinado de los restantes que forman parte de la misma organización y tiene
valores que dependen de la propiedad de que se trate. Las propiedades de un objeto pueden ser heredadas a sus
descendientes en la organización.
Los métodos son las operaciones que pueden realizarse sobre el objeto, que normalmente estarán incorporados en forma de
programas (código) que el objeto es capaz de ejecutar y que también pone a disposición de sus descendientes a través de la
herencia.
Estructura de un objeto
Relaciones
permiten que el objeto se
inserte en la organización
formado esencialmente por
apuntadores a otros objetos
Las relaciones permiten que el objeto se insterte en la organización y están
formadas esencialmente por punteros a otros objetos.
Estructura de un objeto
Relaciones
Propiedades
Métodos
ESTRUCTURA DE UN OBJETO
Un objeto puede considerarse como una especie de cápsula dividida en tres partes:
1 - RELACIONES
2 - PROPIEDADES
3 - METODOS
Cada uno de estos componentes desempeña un papel totalmente independiente:
Las relaciones permiten que el objeto se insterte en la organización y están formadas esencialmente por punteros a otros
objetos.
Las propiedades distinguen un objeto determinado de los restantes que forman parte de la misma organización y tiene
valores que dependen de la propiedad de que se trate. Las propiedades de un objeto pueden ser heredadas a sus
descendientes en la organización.
Los métodos son las operaciones que pueden realizarse sobre el objeto, que normalmente estarán incorporados en forma de
programas (código) que el objeto es capaz de ejecutar y que también pone a disposición de sus descendientes a través de la
herencia.
Encapsulamiento y ocultación
Como hemos visto, cada objeto es una estructura compleja en cuyo interior hay datos y programas, todos ellos relacionados
entre sí, como si estuvieran encerrados conjuntamente en una cápsula. Esta propiedad (encapsulamiento), es una de las
características fundamentales en la OOP.
Los objetos son inaccesibles, e impiden que otros objetos, los usuarios, o incluso los programadores conozcan cómo está
distribuída la información o qué información hay disponible. Esta propiedad de los objetos se denomina ocultación de la
información.
Esto no quiere decir, sin embargo, que sea imposible conocer lo necesario respecto a un objeto y a lo que contiene. Si así
fuera no se podría hacer gran cosa con él. Lo que sucede es que las peticiones de información a un objeto. deben realizarse a
través de mensajes dirigidos a él, con la orden de realizar la operación pertinente. La respuesta a estas ordenes será la
información requerida, siempre que el objeto considere que quien envía el mensaje está autorizado para obtenerla.
El hecho de que cada objeto sea una cápsula facilita enormemente que un objeto determinado pueda ser transportado a otro
punto de la organización, o incluso a otra organización totalmente diferente que precise de él. Si el objeto ha sido bien
construído, sus métodos seguirán funcionando en el nuevo entorno sin problemas. Esta cualidad hace que la OOP sea muy
apta para la reutilización de programas.
La programación orientada a objetos trata de amoldarse al modo de pensar del hombre y no al de la máquina.
Esto es posible gracias a la forma racional con la que se manejan las abstracciones que representan las entidades del
dominio del problema, y a propiedades como la jerarquía o el encapsulamiento.
Estructura de un objeto
Propiedades
distingue un objeto del resto
propiedades pueden ser
heredadas a sus descendientes
Las propiedades distinguen un objeto determinado de los restantes que forman
parte de la misma organización y tiene valores que dependen de la propiedad de
que se trate. Las propiedades de un objeto pueden ser heredadas a sus
descendientes en la organización.
Estructura de un objeto
Relaciones
Propiedades
Métodos
ESTRUCTURA DE UN OBJETO
Un objeto puede considerarse como una especie de cápsula dividida en tres partes:
1 - RELACIONES
2 - PROPIEDADES
3 - METODOS
Cada uno de estos componentes desempeña un papel totalmente independiente:
Las relaciones permiten que el objeto se insterte en la organización y están formadas esencialmente por punteros a otros
objetos.
Las propiedades distinguen un objeto determinado de los restantes que forman parte de la misma organización y tiene
valores que dependen de la propiedad de que se trate. Las propiedades de un objeto pueden ser heredadas a sus
descendientes en la organización.
Los métodos son las operaciones que pueden realizarse sobre el objeto, que normalmente estarán incorporados en forma de
programas (código) que el objeto es capaz de ejecutar y que también pone a disposición de sus descendientes a través de la
herencia.
Encapsulamiento y ocultación
Como hemos visto, cada objeto es una estructura compleja en cuyo interior hay datos y programas, todos ellos relacionados
entre sí, como si estuvieran encerrados conjuntamente en una cápsula. Esta propiedad (encapsulamiento), es una de las
características fundamentales en la OOP.
Los objetos son inaccesibles, e impiden que otros objetos, los usuarios, o incluso los programadores conozcan cómo está
distribuída la información o qué información hay disponible. Esta propiedad de los objetos se denomina ocultación de la
información.
Esto no quiere decir, sin embargo, que sea imposible conocer lo necesario respecto a un objeto y a lo que contiene. Si así
fuera no se podría hacer gran cosa con él. Lo que sucede es que las peticiones de información a un objeto. deben realizarse a
través de mensajes dirigidos a él, con la orden de realizar la operación pertinente. La respuesta a estas ordenes será la
información requerida, siempre que el objeto considere que quien envía el mensaje está autorizado para obtenerla.
El hecho de que cada objeto sea una cápsula facilita enormemente que un objeto determinado pueda ser transportado a otro
punto de la organización, o incluso a otra organización totalmente diferente que precise de él. Si el objeto ha sido bien
construído, sus métodos seguirán funcionando en el nuevo entorno sin problemas. Esta cualidad hace que la OOP sea muy
apta para la reutilización de programas.
La programación orientada a objetos trata de amoldarse al modo de pensar del hombre y no al de la máquina.
Esto es posible gracias a la forma racional con la que se manejan las abstracciones que representan las entidades del
dominio del problema, y a propiedades como la jerarquía o el encapsulamiento.
Estructura de un objeto
Métodos
operaciones que pueden
realizarse sobre el objeto
Los métodos son las operaciones que pueden realizarse sobre el objeto, que normalmente estarán
incorporados en forma de programas (código) que el objeto es capaz de ejecutar y que también pone a
disposición de sus descendientes a través de la herencia.
Encapsulamiento y ocultación
Como hemos visto, cada objeto es una estructura compleja en cuyo interior hay datos y programas, todos ellos
relacionados entre sí, como si estuvieran encerrados conjuntamente en una cápsula. Esta propiedad
(encapsulamiento), es una de las características fundamentales en la OOP.
Los objetos son inaccesibles, e impiden que otros objetos, los usuarios, o incluso los programadores conozcan
cómo está distribuída la información o qué información hay disponible. Esta propiedad de los objetos se
denomina ocultación de la información.
Esto no quiere decir, sin embargo, que sea imposible conocer lo necesario respecto a un objeto y a lo que
contiene. Si así fuera no se podría hacer gran cosa con él. Lo que sucede es que las peticiones de información
a un objeto. deben realizarse a través de mensajes dirigidos a él, con la orden de realizar la operación
pertinente. La respuesta a estas ordenes será la información requerida, siempre que el objeto considere que
quien envía el mensaje está autorizado para obtenerla.
El hecho de que cada objeto sea una cápsula facilita enormemente que un objeto determinado pueda ser
transportado a otro punto de la organización, o incluso a otra organización totalmente diferente que precise de
él. Si el objeto ha sido bien construído, sus métodos seguirán funcionando en el nuevo entorno sin problemas.
Esta cualidad hace que la OOP sea muy apta para la reutilización de programas.
La programación orientada a objetos trata de amoldarse al modo de pensar del hombre y no al de la máquina.
Esto es posible gracias a la forma racional con la que se manejan las abstracciones que representan las
entidades del dominio del problema, y a propiedades como la jerarquía o el encapsulamiento.
Clase tipo definido por el usuario que
determina las estructuras de datos y las
operaciones asociadas con ese tipo
un objeto de una clase corresponde
a una instancia de esa clase.
La comunicación con el objeto se
realiza a través del paso de
mensajes
Una clase es un tipo definido por el usuario que determina las estructuras de datos y las operaciones
asociadas con ese tipo. Cada vez que se construye un objeto de una clase, se crea una instancia de
esa clase. En general, los términos objetos e instancias de una clase se pueden utilizar indistintamente.
Una clase es una colección de objetos similares y un objeto es una instancia de una definición de una clase.
La comunicación con el objeto se realiza a través del paso de mensajes. El envío a una instancia de una clase produce la
ejecución de un método o función miembro. El paso de mensajes es el término utilizado para referirnos a la invocación o
llamada de una función iembro de un objeto.
Encapsulamiento y ocultación
Como hemos visto, cada objeto es una estructura compleja en cuyo interior hay datos y programas, todos ellos relacionados
entre sí, como si estuvieran encerrados conjuntamente en una cápsula. Esta propiedad (encapsulamiento), es una de las
características fundamentales en la OOP.
Los objetos son inaccesibles, e impiden que otros objetos, los usuarios, o incluso los programadores conozcan cómo está
distribuída la información o qué información hay disponible. Esta propiedad de los objetos se denomina ocultación de la
información.
Esto no quiere decir, sin embargo, que sea imposible conocer lo necesario respecto a un objeto y a lo que contiene. Si así
fuera no se podría hacer gran cosa con él. Lo que sucede es que las peticiones de información a un objeto. deben realizarse a
través de mensajes dirigidos a él, con la orden de realizar la operación pertinente. La respuesta a estas ordenes será la
información requerida, siempre que el objeto considere que quien envía el mensaje está autorizado para obtenerla.
El hecho de que cada objeto sea una cápsula facilita enormemente que un objeto determinado pueda ser transportado a otro
punto de la organización, o incluso a otra organización totalmente diferente que precise de él. Si el objeto ha sido bien
construído, sus métodos seguirán funcionando en el nuevo entorno sin problemas. Esta cualidad hace que la OOP sea muy
apta para la reutilización de programas.
La programación orientada a objetos trata de amoldarse al modo de pensar del hombre y no al de la máquina.
Esto es posible gracias a la forma racional con la que se manejan las abstracciones que representan las entidades del
dominio del problema, y a propiedades como la jerarquía o el encapsulamiento.
Componentes de un mensaje
identidad del objeto receptor
función miembro cuya ejecución
se está solicitando
información adicional que necesite
el método
clase
Perro
?
Vainilla
Perro es una generalización
de Vainilla
Vainilla
Objeto o
instancia
Características de la
Programación
Orientada a Objetos
Ab
s
tra
cc
ió
Cohesión
He
lim
Po
n
ia
nc
re
Programación
orientada a objetos
mo
fr is
o
Acoplamiento
En
ca
ps
u la
mi
en
to
Es la capacidad de concentrar las
propiedades y comportamientos
necesarios para la correcta
representación del objeto dentro
del sistema
Ab
s
tra
cc
Cohesión
He
lim
Po
ió
n
ia
nc
re
Programación
orientada a objetos
mo
fr is
o
Acoplamiento
En
ca
ps
u la
mi
en
to
La abstracción
Es la capacidad de concentrar las propiedades y comportamientos necesarios para la correcta
representación del objeto dentro del sistema, otra definición es que consiste en el aislamiento
conceptual de una propiedad de un objeto.
En otras palabras, cuando modelamos pensando en objetos, necesitamos tomar las características y
propiedades de un ente real, y llevarlo a un objeto, por ejemplo en una escuela existen alumnos,
estos tienen diferentes propiedades (miles), pero existen algunas que caracterizan a todos los
estudiante, estas son las que debemos tomar, por ejemplo, un estudiante tiene una matricula, tiene
materias, tiene un grado, un curso, una calificación, y muchas cosas mas, dependiendo del sistema
que este en cuestión, serán las propiedades que se tomaran en cuenta, a esto se le llama
abstracción.
programación, el término se refiere al énfasis en el "¿qué hace?" más que en el "¿cómo lo hace?"
(característica de caja negra)
Ejemplo
Pensar en términos de objetos es muy parecido a cómo lo haríamos en la vida real. Por ejemplo
vamos a pensar en un coche para tratar de modelizarlo en un esquema de POO. Diríamos que el
coche es el elemento principal que tiene una serie de características, como podrían ser el color, el
modelo o la marca. Además tiene una serie de funcionalidades asociadas, como pueden ser
ponerse en marcha, parar o aparcar.
Pues en un esquema POO el coche sería el objeto, las propiedades serían las características como
el color o el modelo y los métodos serían las funcionalidades asociadas como ponerse en marcha o
parar.
Es la capacidad de concentrar las
propiedades y comportamientos
necesarios para la correcta
representación del objeto dentro
del sistema
Ab
s
tra
cc
ió
lim
Po
n
Cohesión
Programación
orientada a objetos
mo
fr is
o
Acoplamiento
Las propiedades son privadas,
accesadas mediante métodos
cia
en
r
He
o protegidos, permitiendo
En públicos
en la información
ca así consistencia
ps el aumento de la cohesión.
ul
am
ien
to
Encapsulamiento
Las propiedades son privadas, accesadas mediante métodos públicos o protegidos,
permitiendo así consistencia en la información y el aumento de la cohesión.
Mediante el encapsulamiento la información esta oculta a los demás objetos,
permitiendo el acceso mediante métodos públicos o protegidos, aquí se habla del
alcance de una propiedad o método, que puede ser private, protected o public. Al
implementar este concepto, cuando se ha desarrollado un objeto, al utilizarlo no
nos interesa como funciona internamente, simplemente lo que nos regresa o lo que
hace.
Es la capacidad de concentrar las
propiedades y comportamientos
necesarios para la correcta
representación del objeto dentro
del sistema
Ab
s
tra
cc
ió
Cohesión
Crear nuevos objetos a partir de los
existentes de forma que heredan las
propiedades y comportamientos de
sus ancestros. Existen dos clases
de herencia: simple y múltiple.
He
lim
Po
n
cia
n
re
Programación
orientada a objetos
mo
fr is
o
Acoplamiento
Las propiedades son privadas,
accesadas mediante métodos
públicos o protegidos, permitiendo
así consistencia en la información y
el aumento de la cohesión.
En
ca
ps
u la
mi
en
to
Herencia
Crear nuevos objetos a partir de los existentes de forma que heredan las propiedades y
comportamientos de sus ancestros. Existen dos clases de herencia: simple y múltiple.
La herencia es muy utilizada dentro de la POO, y es que mediante esta se puede especializar el
comportamiento de las clases hijas, permitiendo así un buen diseño del sistema.
La herencia es la propiedad que permite a los objetos construirse a partir de otros objetos.
Una clase se puede dividir en subclases. En C++ la clase original se denomina clase base; las
clases que se definen a partir de la clase base, compartiendo sus características y añadiendo otras
nuevas, se denominan clases derivadas. Las clases derivadas pueden heredar código y datos de su
clase base añadiendo su propio código y datos a la misma.
La herencia impone una relación jerárquica entre clases en la cual una clase hija hereda de su clase
padre. Si una clase sólo puede recibir características de otra clase base, la herencia se denomina
herencia simple.
Si una clase recibe propiedades de más de una clase base, la herencia se denomina herencia
múltiple.
Es la capacidad de concentrar las
propiedades y comportamientos
necesarios para la correcta
representación del objeto dentro
del sistema
Ab
s
tra
cc
ió
n
Cohesión
Crear nuevos objetos a partir de los
existentes de forma que heredan las
propiedades y comportamientos de
sus ancestros. Existen dos clases
de herencia: simple y múltiple.
He
ia
nc
re
Es la capacidad de tener métodos
con el mismo nombre, con comportamientos
diferentes, conocido como la sobre-escritura
de métodos y la sobrecarga de operadores
La firma de método
Programación
orientada a objetos
Po
o
m
s
i
f
or
m
li
Acoplamiento
Las propiedades son privadas,
accesadas mediante métodos
públicos o protegidos, permitiendo
así consistencia en la información y
el aumento de la cohesión.
En
ca
ps
u la
mi
en
to
Polimorfismo
Es la capacidad de tener métodos con el mismo nombre, con comportamientos diferentes,
conocido como la sobre-escritura de métodos y la sobrecarga de operadores.
El polimorfismo nos permite declarar métodos con el mismo nombre, y comportamientos
diferentes, haciendo diferencia entre estos por medio de la firma del método, la firma del método
se le conoce a los parámetros que recibe un método, esto es que el numero de parámetros debe de
ser diferente, en caso de ser el mismo estos deben ser diferentes en su tipo de dato.
Otra manera de aplicar el polimorfismo es cuando una clase hija sobre escribe un método de la
clase padre, cambiando o modificando su comportamiento.
En un sentido literal, significa la cualidad de tener más de una forma. En el contexto de POO, el
polimorfismo se refiere al hecho de que una misma operación puede tener diferente
comportamiento
en diferentes objetos. Por ejemplo, consideremos la operación sumar. El operador + realiza la
suma
de dos números de diferente tipo. Además se puede definir la operación de sumar dos cadenas
mediante el operador suma.
Es la capacidad de concentrar las
propiedades y comportamientos
necesarios para la correcta
representación del objeto dentro
del sistema
Ab
s
tra
cc
ió
n
Es una medida de la especialización con la
que cuenta un objeto dentro de un sistema,
entre mas alta sea esta, es mejor.
Cohesión
Crear nuevos objetos a partir de los
existentes de forma que heredan las
propiedades y comportamientos de
sus ancestros. Existen dos clases
de herencia: simple y múltiple.
He
ia
nc
re
Es la capacidad de tener métodos
con el mismo nombre, con comportamientos
diferentes, conocido como la sobre-escritura
de métodos y la sobrecarga de operadores
La firma de método
Programación
orientada a objetos
lim
Po
mo
fr is
o
Acoplamiento
Las propiedades son privadas,
accesadas mediante métodos
públicos o protegidos, permitiendo
así consistencia en la información y
el aumento de la cohesión.
En
ca
ps
u la
mi
en
to
Cohesión
Es una medida de la especialización con la que cuenta un objeto dentro de un
sistema, entre mas alta sea esta, es mejor.
Este concepto viene del paradigma clásico, y este fue un concepto que permitió el
salto a este nuevo paradigma.
Es la capacidad de concentrar las
propiedades y comportamientos
necesarios para la correcta
representación del objeto dentro
del sistema
Ab
s
tra
cc
ió
Es la capacidad de tener métodos
con el mismo nombre, con comportamientos
diferentes, conocido como la sobre-escritura
de métodos y la sobrecarga de operadores
n
Es una medida de la especialización con la
que cuenta un objeto dentro de un sistema,
entre mas alta sea esta, es mejor.
Cohesión
La firma de método
Es la medida con la que un objeto
depende de otro para funcionar, entre
Menor sea esta, es mejor.
Programación
orientada a objetos
Crear nuevos objetos a partir de los
existentes de forma que heredan las
propiedades y comportamientos de
sus ancestros. Existen dos clases
de herencia: simple y múltiple.
He
lim
Po
mo
fr is
o
ia
nc
re
La información fluye a través de mensajes
Acoplamiento
Las propiedades son privadas,
accesadas mediante métodos
públicos o protegidos, permitiendo
así consistencia en la información y
el aumento de la cohesión.
En
ca
ps
u la
mi
en
to
Acoplamiento
Es la medida con la que un objeto depende de otro para funcionar, entre menor sea
esta, es mejor.
La información fluye a través de mensajes.
Es la capacidad de concentrar las
propiedades y comportamientos
necesarios para la correcta
representación del objeto dentro
del sistema
Ab
s
tra
cc
ió
n
Es una medida de la especialización con la
que cuenta un objeto dentro de un sistema,
entre mas alta sea esta, es mejor.
Cohesión
Crear nuevos objetos a partir de los
existentes de forma que heredan las
propiedades y comportamientos de
sus ancestros. Existen dos clases
de herencia: simple y múltiple.
He
ia
nc
re
Es la capacidad de tener métodos
con el mismo nombre, con comportamientos
diferentes, conocido como la sobre-escritura
de métodos y la sobrecarga de operadores
La firma de método
lim
Po
mo
fr is
o
Es la medida con la que un objeto
depende de otro para funcionar, entre
Menor sea esta, es mejor.
Programación
orientada a objetos
La información fluye a través de mensajes
Acoplamiento
Las propiedades son privadas,
accesadas mediante métodos
públicos o protegidos, permitiendo
así consistencia en la información y
el aumento de la cohesión.
En
ca
ps
u la
mi
en
to
Unified Modeling
Language
UML (Unified Modeling Language) es un lenguaje que permite modelar, construir y documentar
los elementos que forman un sistema software orientado a objetos.
Se ha convertido en el estándar de facto de la industria, debido a que ha sido impulsado por los
autores de los tres métodos más usados de orientación a objetos: Grady Booch, Ivar Jacobson y
Jim Rumbaugh.
Estos autores fueron contratados por la empresa Rational Software Co. para crear una notación
unificada en la que basar la construcción de sus herramientas CASE. En el proceso de creación de
UML han participado, no obstante, otras empresas de gran peso en la industria como Microsoft,
Hewlett-Packard, Oracle o IBM, así como grupos de analistas y desarrolladores.
Esta notación ha sido ampliamente aceptada debido al prestigio de sus creadores y debido a que
incorpora las principales ventajas de cada uno de los métodos particulares en los que se basa
(principalmente Booch, OMT y OOSE).
UML ha puesto fin a las llamadas “guerras de métodos” que se han mantenido a lo largo de los 90,
en las que los principales métodos sacaban nuevas versiones que incorporaban las técnicas de los
demás.
Con UML se fusiona la notación de estas técnicas para formar una herramienta compartida entre
todos los ingenieros software que trabajan en el desarrollo orientado a objetos.
Uno de los objetivos principales de la creación de UML era posibilitar el intercambio de modelos
entre las distintas herramientas CASE orientadas a objetos del mercado. Para ello era necesario
definir una notación y semántica común.
El estándar UML no define un proceso de desarrollo específico, tan solo se trata de una notación.
Visualizar
Especificar estructura
Proporcionar plantillas
Documentar decisiones
Un modelo representa a un sistema software desde una perspectiva específica. Al
igual que la planta y el alzado de una figura en dibujo técnico nos muestran la
misma figura vista desde distintos ángulos, cada modelo nos permite fijarnos en
un aspecto distinto del sistema.
Lenguaje de Modelado
Unificado
basado en notación gráfica
permite especificar, construir,
visualizar y documentar los objetos
de un sistema
●
Vista Estática
●
Vista de Casos de Uso
●
Vista de Interacción
●
Diagrama de Secuencia
●
Diagrama de Colaboración
●
Vista de la Máquina de Estados
●
Vista de Actividades
●
Vista Física
●
Vista de la Gestión del Modelo
●
Constructores de Extensibilidad
Componentes
UML
Vista
Diagramas
Conceptos Principales
Vista Estática
Diagrama de
Clases
Clase, Asociación,
Generalización
Dependencia, Realización,
Interfase
Vista de Casos de
Uso
Diagrama de
Casos de Uso
Caso de uso, Actor,
Asociación, Extensión,
Inclusión, Generalización de
caso de uso
Vista de
Implementación
Diagrama de
Componentes
Componente, Interfaz,
Dependencia, Realización
Vista del
despliegue
(deployment)
Diagrama de
Despliegue
Nodo, Componente,
Dependencia, Locación
Diagrama de Clases
Modela los conceptos del dominio
de la aplicación
Permite visualizar las relaciones
entre las clases que involucran el
sistema
Diagrama de clases
Clases: atributos, operaciones
y visibilidad
Relaciones: herencia, composición
agregación, asociación y uso
Responsabilidades
Diagrama de clases
Elemento Clases
Encapsula toda la
información de un
objeto
Diagrama de clases
Elementos Atributo
Describen la clase
Públicos (+), privados (-) o
protegidos (#)
public (+, ): Indica que el atributo será visible tanto dentro como fuera de la
clase, es decir, es accesible desde todos lados.
private (-,
): Indica que el atributo sólo será accesible desde dentro de la clase (sólo sus
métodos lo pueden acceder).
protected (#, ): Indica que el atributo no será accesible desde fuera de la clase, pero si podrá ser
accesado por métodos de la clase además de las subclases que se deriven (herencia)
Diagrama de clases
Elementos Método
Describen la forma en la cual
interactúa la clase con su entorno
Públicos (+), privados (-) o
protegidos (#)
Las operaciones o métodos de una clase describen la forma en la cual ésta
interactúa con su entorno. Pueden ser Públicas, Privadas o Protegidas
public (+, ): Indica que el atributo será visible tanto dentro como fuera de la
clase, es decir, es accesible desde todos lados.
private (-,
): Indica que el método sólo será accesible desde dentro de la clase
(sólo otros métodos de la misma clase lo pueden acceder).
protected (#, ): Indica que el atributo no será accesible desde fuera de la clase,
pero si podrá ser accesado por métodos de la clase además de las subclases que se
deriven (herencia)
Diagrama de clases
Elementos Relaciones entre clases
Dependencia
Generalización
Asociación
Las clases interrelacionadas modelan un sistema en su dimensión estática.
Existen tres tipos de relaciones básicas:
Dependencia
Generalización
Asociación
Elementos Relaciones entre clases
Dependencia
La clase Cart usa la clase
Product como argumento en la
operación de agregar al Cart
Un cambio en Product puede
requerir un cambio en Cart
II.2.2 Dependencias
La relación de dependencia es una conección semántica entre dos elementos del modelo, uno
independiente y otro dependiente
Un cambio en el elemento independiente afectará al elemento dependiente.
Un elemento del modelo puede ser una clase, un paquete, un caso de uso, etc.
Un ejemplo de dependencia puede ser: una clase que toma otra clase como parámetro, o una clase
que accede a un objeto global de otra clase.
La relación de dependencia se muestra con una línea pespunteada con una flecha en uno de sus
extremos
Por ejemplo, en una aplicación de comercio electrónico, la clase Cart (Carrito) depende de la clase
Product porque la clase Cart usa Product como un parámetro en la operación de agregar.
En un diagrama de clases, la relación de dependencia va de la clase Cart a la clase Product.
La clase Cart es dependiente de Product
Elementos Relaciones entre clases
Generalización
La clase Child (subclase) está
basada en la clase Padre
(superclase)
Es una relación en donde un elemento del modelo (hijo) está basado en otro
elemento del modelo (padre). Los elementos del modelo deben ser del mismo
tipo (clase, componente, etc).
Se usan para indicar que el hijo recibe todos los atributos del padre, operaciones y
relaciones que están definidas en el padre
Se puede agregar generalización para capturar los atributos del elemento del
modelo padre y reusarlos en uno o mas elementos del modelo hijo. Dado que el
hijo hereda los atributos, operaciones, y relaciones del padre, sólo se deben definir
los atributos, operaciones y relaciones que son distintos del padre.
El elemento padre puede tener uno o más hijos, y cada hijo puede tener uno o más
padres.
Estas relaciones no tienen nombre.
La relación se indica gráficamente mediante una línea continua que termina con
una punta de flecha (del hijo al padre)
Elementos Relaciones entre clases
Generalización
La superclase contiene
un atributo Price, y
operaciones como
setPrice. Las subclases
usan los atributos y las
operaciones de la
superclase y agregan
otros atributos y
operaciones
The following figure illustrates an e-commerce application for a Web site that
sells a variety of merchandise. The application has an InventoryItem class that is a
parent class (also called a superclass). This class contains the attributes, such as
Price, and operations, such as setPrice, that all pieces of merchandise use.
After defining the parent class, a child class (also called a subclass) is created for
each type of merchandise, such as books and DVDs. The book class uses the
attributes and operations in the inventory class and then adds attributes such as
author and operations such as setAuthor. A DVD class also uses the attributes and
operations in the inventory class, but it adds attributes such as manufacturer and
operations such as setManufacturer, which are different from those in the book
class.
Elementos Relaciones entre clases
Generalización - Polimorfismo
Da lugar al polimorfismo entre
clases en una jerarquía
Un objeto de la subclase puede
sustituir a un objeto de la superclase
Una operación de la subclase con
igual firma sustituye a la operación
en la superclase
Elementos Relaciones entre clases
Asociación
Relación estructural entre clases
Tiene nombre que la describe (verbo)
Tiene multiplicidad que especifica el
número de objetos de la clase
opuesta que se relacionan con un
solo objeto de dicha clase
In UML models, an association is a relationship between two classifiers, such as classes or use
cases, that describes the reasons for the relationship and the rules that govern the relationship.
An association represents a structural relationship that connects two classifiers. Like attributes,
associations record the properties of classifiers. For example, in relationships between classes, you
can use associations to show the design decisions that you made about classes in your application
that contain data, and to show which of those classes need to share data. You can use an
association's navigability feature, to show how an object of one class gains access to an object of
another class or, in a reflexive association, to an object of the same class.
The name of an association describes the nature of the relationship between two classifiers and
should be a verb or phrase.
In the diagram editor, an association appears as a solid line between two classifiers.
Association ends
An association end specifies the role that the object at one end of a relationship performs. Each
end of a relationship has properties that specify the role of the association end, its multiplicity,
visibility, navigability, and constraints.
Example
In an e-commerce application, a customer class has a single association with an account class. The
association shows that a customer instance owns one or more instances of the account class. If you
have an account, you can locate the customer that owns the account. Given a particular customer,
you can navigate to each of the customer’s accounts. The association between the customer class
and the account class is important because it shows the structure between the two classifiers.
Elementos Relaciones entre clases
Asociación
Cada individuo está
asociado con el
banco a través de
varias cuentas.
El número de cuenta
califica la asociación
y permite indexar
muchas asociaciones
En una aplicación bancaria, una clase Bank representa una institución bancaria y
tiene una asociación con una clase Person que representa a un individuo. Cada
individuo está asociado con el banco a través de varias cuentas bancarias. El
número de cuenta califica la asociación y permite indexar muchas asociaciones
entre las clases Person y Bank
Elementos Relaciones entre clases
Asociación
Elementos Relaciones entre clases
Composición
Relación estática en donde el tiempo
de vida del objeto incluido está
condicionado por el del que lo incluye
El objeto base se construye a partir del
objeto incluido, es parte/todo como un
parámetro pasado por valor
Circle
Point
A composition association relationship represents a whole–part relationship and is
a form of aggregation. A composition association relationship specifies that the
lifetime of the part classifier is dependent on the lifetime of the whole classifier.
In a composition association relationship, data usually flows in only one direction
(that is, from the whole classifier to the part classifier). For example, a
composition association relationship connects a Student class with a Schedule
class, which means that if you remove the student, the schedule is also removed.
You can name any association to describe the nature of the relationship between
the two classifiers; however, names are unnecessary if you use association end
names.
As the following figure illustrates, a composition association relationship appears
as a solid line with a filled diamond at the association end, which is connected to
the whole, or composite, classifier.
Elementos Relaciones entre clases
Agregación
Relación dinámica, donde el tiempo de vida del
objeto incluido es independiente del que lo
incluye.
El objeto base utiliza al incluido
para su funcionamiento
La clase agregada es en cierta
forma el “todo”, y la otra es
“parte” del todo
The weak form of aggregation is denoted with an open diamond. This relationship
denotes that
the aggregate class (the class with the white diamond touching it) is in some way
the “whole”, and
the other class in the relationship is somehow “part” of that whole.
In this case, the Empresa class contains many Departamento instances. In UML
the ends of a relationship are referred to as its “roles”. Notice that the role at the
Depto end of the aggregation is marked with a “ * ”. This indicates that the
Empresa contains many Depto instances.
Diagrama de clases
Elementos Responsabilidades
La distribución de
responsabilidades en un
sistema, se realiza
identificando un conjunto
de clases que colaboran
entre sí para llevar a cabo
algún comportamiento.
Luego hay que identificar el
conjunto de
responsabilidades para
cada clase
Diagrama de Clases
Descargar