modulo: análisis y diseño de sistemasjuan.gonzalez/temp/clase 6.pdf · clases están compuestas...
Post on 26-Oct-2019
11 Views
Preview:
TRANSCRIPT
Modulo: Análisis y Diseño de Sistemas
Dr. Juan Manuel González CallerosBenemérita Universidad Autónoma de Puebla
Email: juan.gonzalez@cs.buap.mx
jumagoca78@gmail.com
Twitter: @Juan__Gonzalez
Facebook: Juan Glez Calleros
Reuniones pedir cita
1-2
DIAGRAMAS DE CLASE
1-3
@Juan__Gonzalez
�Cuando se han identificado muchos objetos en un dominio, decimos que una clase es una abstracción que describe un grupo de objetos que tienen:� propiedades en común (atributos)� comportamiento en común (operaciones)� relaciones comunes con otros objetos (asociaciones) � semántica en común (descripción breve)
�Una clase es una abstracción porque:� enfatiza características relevantes al sistema� suprime otras características
Yalú Galicia /Miguel Rodríguez
(FCC/BUAP)
3
¿Qué son las clases?
1-4
@Juan__Gonzalez
�En los lenguajes Orientados a Objetos, las clases están compuestas por dos características básicas: � Atributos� Comportamientos.
�Los atributos son las características individuales que diferencian un objeto de otro y determinan su apariencia (ej. color, estilo, marca,etc.), su estado (ej. encendido o pagado) y otras cualidades.
�El comportamiento de una clase determina la manera en que un objeto de esa clase opera o reacciona, esto es, su funcionabilidad (por ejemplo: vuela, rueda, navega, ladra, maulla, suma, resta, calcula, etc.).
Yalú Galicia /Miguel Rodríguez
(FCC/BUAP)
4
Clases
1-5
Ejemplo: la clase Auto
�La clase AUTO es el modelo abstracto del concepto de un Auto.
�La descripción de la clase Auto podría ser:� Tiene Puertas� Tiene Llantas� Tiene Motor� Tiene Ventanas� Tiene modelo� Arranca� Frena� Se desplaza� Usa gasolina� Etc.
Yalú Galicia /Miguel Rodríguez
(FCC/BUAP)
5
Una clase es como
un molde o plantilla
1-6
La clase AUTO
�A partir de la clase AUTO se pueden crear muchos objetos, o sea muchos autos, con características diferentes (color, tamaño, diseño, material, etc.), pero que pueden ser reconocidos como autos.
�Por ejemplo: un Bochito, un Audi, un BMW, un Chevy, el auto del vecino, tu auto, mi auto, etc.
�Todos estos pueden ser representadas como objetos diferentes y únicosde la clase AUTO.
Yalú Galicia /Miguel Rodríguez
(FCC/BUAP)
6
Clase Auto
Objeto
Objeto
1-7
@Juan__Gonzalez
�Un conjunto de objetos que comparten una estructura común y un comportamiento común
�Un objeto no es más que una instancia de la clase –> un objeto no es una clase
Yalú Galicia /Miguel Rodríguez
(FCC/BUAP)
7
Qué es una clase y qué no es una clase
1-8
@Juan__Gonzalez
�Una clase en una definición abstracta de un objeto� Define la estructura y comportamiento de cada objeto
en la clase� Sirve como una plantilla para crear objetos
�Un objeto es una instancia concreta de una clase (un ejemplar)� Los objetos pueden agruparse en clases
Yalú Galicia /Miguel Rodríguez
(FCC/BUAP)
8
Clases v.s. Objetos
Estudiante
Clase
A. PinedaG. Rodríguez
E. Gomez
1-9
@Juan__Gonzalez
• ¿Cuántas clases ves?
Yalú Galicia /Miguel Rodríguez
(FCC/BUAP)
9
Clases v.s. Objetos
1-10
@Juan__Gonzalez
• Modelar la clase lavadora
Yalú Galicia /Miguel Rodríguez
(FCC/BUAP)
10
Ejemplo de una clase
LAVADORA
marca
modelo
capacidad
Programar
Poner ropa
Cerrar puerta
lavar
Atributos
Comportamiento
1-11
@Juan__Gonzalez
� Pensemos en las clases de su proyecto, extiendan lo que vimos al inicio del tema
Yalú Galicia /Miguel Rodríguez
(FCC/BUAP)
11
Actividad
Nombre de la clase
Atributos
comportamientos
1-12
Herencia
�La herencia representa una jerarquía de abstracciones (clases).
�Básicamente, la herencia define una relación entre clases, el la que una clase comparte la estructura de comportamiento definida en una o más clases
�De forma simple, la herencia es el proceso mediante el cual un objeto adquiere las propiedades de otro.
M.C. Yalu Galicia (FCC/BUAP) 12
1-13
@Juan__GonzalezM.C. Yalu Galicia (FCC/BUAP) 13
Herencia
1-14
@Juan__Gonzalez
�Cada vez que se especializa una clase, esta clase hereda atributos y comportamientos de su superclase; pero además se añaden nuevos comportamientos o se modifican alguno de losya heredados
�Veamos que hereda la clase leo de sus clases padre.
Yalú Galicia /Miguel Rodríguez
(FCC/BUAP)
14
Herencia
CLASE QUE HEREDA
Vertebrados Espina dorsal
Mamíferos Se alimenta con leche materna
Carnívoros Al ser adulto se alimenta de carne
Leo Agrega: tipo y color de piel
1-15
@Juan__Gonzalez
• Semánticamente, la herencia denota una
relación “es un”.
• Por ejemplo, un oso es un tipo de
mamífero, una casa es un tipo de bien
inmueble.
• Así la herencia implica una jerarquía de
generalización/especialización, en la que
una subclase especializa el
comportamiento o estructura más general
de sus superclases.Yalú Galicia /Miguel Rodríguez
(FCC/BUAP)
15
Herencia
1-16
@Juan__Gonzalez
� Identifiquen una clase que agrupe todos estos objetos
� Agrupen diversos objetos en distintas clases
� Pensando en el concepto de herencia, construyan una jerarquía de clases
16
Actividad
1-17
@Juan__Gonzalez
• Polimorfismo es la habilidad que adquieren
los objetos de responder en forma
diferente al mismo mensaje.
• Es decir, el mismo mensaje que se envía a
muchos tipos de objetos, toma “muchas
formas” y de ahí viene el término
polimorfismo
Alg y EDM.C. Yalu Galicia (FCC/BUAP) 17
Polimorfismo
1-18
@Juan__Gonzalez
�Polimorfismo es la habilidad de esconderdiferentes implementaciones tras una sola interface
M.C. Yalu Galicia (FCC/BUAP) 18
Polimorfismo
Marca CMarca A
Marca B
1-19
@Juan__Gonzalez
�Pensemos en las FigurasGeometricas. Todas las FigurasGeometricas tienen como característica el poder calcular su área. Sin embargo, cada figura puede realizar esta operación de forma distinta.
Alg y EDM.C. Yalu Galicia (FCC/BUAP) 19
Ejemplo de Polimorfismo
Area = l*l Area= pi*r2Area=b*a2
Calcula Area
1-20
@Juan__Gonzalez
• Tomemos Medios de Transportes:
barco, avión y auto. Si les enviamos el
mensaje Desplázate, cada uno de
estos objetos los hará a su manera.
Alg y EDM.C. Yalu Galicia (FCC/BUAP) 20
Otro ejemplo,
1-21
@Juan__Gonzalez
• ¿Reflexiona sobre tus clases,
tendrán polimorfismo?
• Define la Herencia e identifica los
atributos y funciones comunes
Yalú Galicia /Miguel Rodríguez
(FCC/BUAP)
21
Actividad
1-22
@Juan__Gonzalez
Bloques de Construcción UML
Elementos Relaciones Diagramas
Dependencia
• Relación entre dos elementos uno independiente a otrodependiente y puede afectar la semántica
Asociación
• Son conexiones entre objetos (rol, multiplicidad, calificador)
Generalización
• Especificación en donde el hijo comparte la estructura y elcomportamiento del padre
Realización
• Es una relación semántica entre clasificadores
0...1 *
Patrón empleado
1-23
@Juan__Gonzalez
�Los problemas del “mundo real”, son más complejos que modelar una simple clase, más bien, se tiene muchos objetos de distintas clases comunicándose unos con otros. Esto significa, que dichos objetos establecen relaciones.
�Básicamente las relaciones que se establecen son:�Asociación
�Dependencia
�Agregación
�Composición
�Herencia
�Realización
Relaciones entre clases
Yalú Galicia /Miguel Rodríguez
(FCC/BUAP)
23
1-24
@Juan__Gonzalez
� La relación más simple entre clases es la asociación.
� Indica que dos clases tienen una relación que las asocia según el
papel que cada una juega con respecto a otra.
�Se usa la asociación para relacionar dos objetos que necesitan
colaborar enviándose mensajes
�En un diagrama de clases, la asociación se indica mediante una línea
continua que se dirige de un objeto a otro.
Relación de asociación
24
EmpresaPersona
Asociación
1-25
@Juan__Gonzalez
Relación de asociación
• Asociaciones
Cuando las clases se conectan entre sí de
forma conceptual, esta conexión se
conoce como asociación.
1-26
@Juan__Gonzalez
• Cuando una clase se asocia con otra, cada una
de ellas juega un papel dentro de tal asociación.
En la asociación entre un jugador y un equipo, si
el equipo es profesional, éste es un empleador y
el jugador es un empleado.
• La asociación puede funcionar en dirección
inversa: un equipo emplea a jugadores.
1-27
@Juan__Gonzalez
• Las asociaciones podrían ser más
complejas que tan sólo una clase
conectada a otra.
1-28
@Juan__Gonzalez
Restricciones en las asociaciones.
• Algunas veces una asociación entre dos
clases debe seguir una regla, ésta se
indica al establecer una restricción junto a
la línea de asociación. Por ejemplo: un
cajero atiende a un cliente, pero cada
cliente es atendido en el orden en que se
encuentre en la formación.
1-29
@Juan__Gonzalez
• Otro tipo de restricción es la relación O
(distinguida como {Or}) en una línea
discontinua que conecte a dos líneas de
asociación.
1-30
@Juan__Gonzalez
�Para aclarar su significado, En la línea se puede anotar el nombre de
la relación (normalmente un verbo) y con un triángulo se indica la
dirección en la que hay que leer dicho nombre.
� Por default la asociación es bi-direccional.
�Opcionalmente se pueden colocar un nombre de rol para cada clase,
dicho rol es un nombre alternativo que representa el papel que toma
cada clase en la relación
Relación de asociación en UML
30
EmpresaPersona Trabaja en �
Trabajador Empleador
1-31
@Juan__Gonzalez
� La Multiplicidad es el número de instancias de una clase
relacionadas a UNA instancia de otra clase
�Para cada asociación existen dos decisiones que tomar en cuanto a
multiplicidad; una para cada extremo de la asociación
�Por ejemplo, en la conexión entre Profesor y Curso
� Cada instancia de Profesor, puede impartir muchos (cero o más)
cursos
� Para cada instancia de Curso, hay exactamente un Profesor
Relación de asociación
31
CursoProfesor
0.. *1
1-32
@Juan__Gonzalez
�Cada extremo de la asociación contiene un indicador de
multiplicidad
� Indica el número de objetos que participan en la relación
Indicadores de Multiplicidad
32
Sin especificar
Exactamente uno 1
Muchos (Cero o más, *
sin limite) 0..*
Uno o más 1..*
Cero o uno 0..1
Rango Específico 2..4
Varios Rangos 2,4..6,8
1-33
@Juan__Gonzalez
� La multiplicidad responde dos preguntas
� ¿La asociación es obligatoria o es opcional?
� ¿Cuál es el mínimo y máximo número de objetos de una clase que
se pueden enlazar a un objeto de la otra clase?
� Las decisiones de multiplicidad exponen muchas suposiciones
escondidas acerca del problema que se está modelando
� ¿Se puede ir el maestro de licencia o tomar vacaciones?
� ¿Puede un curso tener dos maestros?
¿Qué significa la Multiplicidad?
33
CursoProfesor
1.. *1
1-34
@Juan__Gonzalez
�Esta relación implica dependencia entre clases. Se
denota mediante una línea punteada con flecha.
� Siempre es dirigida (La clase A depende de la clase B)
�La dependencia es causada porque un método en la clase A temporalmente “usa un” objeto de la clase B.
Relación de Dependencia
34
BA
“usa una”
1-35
@Juan__Gonzalez
• Por ejemplo, un Pedido usa una Cuenta,
porque un pedido necesita acceder a los
objetos de tipo cuenta para comprobar el
estado de un crédito
– La flecha es dirigida hacia la clase “usada”
Relación de Dependencia
35
CuentaPedido
“usa una”
1-36
@Juan__Gonzalez
�Es común que un objeto contenga objetos de otras clases, tal capacidad se llama agregación.
�Por ejemplo: Un objeto Auto tiene o esta formado por objetos de otras clases (Llantas, Motor, etc.)
�La relación que se establece entre estos objetos se llama “tiene un”, “es parte de” o “consta de”� Ejemplo: Un auto tiene un motor
� Un escuela tiene alumnos
�La relación de agregación, es una relación “débil” entre los objetos, ya que estos pueden existir independientemente del “todo”. Es decir, una llanta “puede existir”, sin ser parte de un auto.
Relación de agregación
36
1-37
@Juan__Gonzalez
Relación de Agregación: representación en UML
37
Auto
Motor
Agregación: diamante vacío
Llanta
Tiene un
1..4
1
multiplicidad
1-38
@Juan__Gonzalez
Relación de Agregación: otro ejemplo
38
País Estado1..*
Playa
0..*
1-39
@Juan__Gonzalez
Otro ejemplo
39
1-40
@Juan__Gonzalez
�Es una relación de composición es muy parecida a la
anterior (del tipo tiene un), sólo que en este caso la
relación es mas fuerte.
� La vida de los objetos incluidos como atributos es
totalmente dependiente de la vida del objeto contenedor
� Por ejemplo, una cara puede ser descrita, por los
elementos que la forman; es decir; una cara está
compuesta por un par de ojos, una boca y una nariz
� Tanto los ojos, la boca y la nariz, son objetos de otras
clases: la clase Ojo, la clase Boca y la clase Nariz; sin
embargo no existen independientemente a una cara.
Relación de Composición
40
1-41
@Juan__Gonzalez
Relación de composición:UML
41
Cara Ojo2
Boca
1
Nariz
1
Composición: diamante lleno
Tiene un
1-42
@Juan__Gonzalez
• Identifica las relaciones entre tus clases
Actividad
42
1-43
@Juan__Gonzalez
�Como ya comentamos, la herencia permite especificar jerarquías de clases en las que unas clases toman propiedades de otras (atributos, operaciones y relaciones).
�A la clase superior se la llama superclase mientras que a la clase que hereda las propiedades de la anterior se la llama subclase.
� La relación que se establece entre clases que heredan, se llama “es un”
� Por ejemplo: � Una persona es un ser humano
� Un perro es un canino� Un auto es un medio de transporte
Relación de Herencia o generalización
Yalú Galicia /Miguel Rodríguez
(FCC/BUAP)
43
1-44
@Juan__Gonzalez
Relación de Herencia en UML
44
Vehículo
BicicletaCoche
es un
+ mover ()+ detener ()
+llenarGasolina()
Estas métodos
se heredan
Un coche es un vehículo, pero NO todos los vehículos
son coches!!
1-45
@Juan__Gonzalez
Herencia Simple
45
+Abstracta
+Concreta
A este nivel, la
clase es
abstracta
1-46
@Juan__Gonzalez
� La mayoría de las veces una clase hereda de solo otra clase
(herencia simple), sin embargo una misma clase puede heredar de
varias clases distintas (herencia multiple).
�Esto puede ayudar a simplificar el Modelo de Analisis, pero debe
usarse juiciosamente, ya que puede ser dificil de implementar en el
Modelo de Diseño.
Aeroplano Helicóptero Lobo Caballo
ObjetoVolador Animal
Pájaro
Herencia
múltiple
Herencia múltiple
46
1-47
@Juan__Gonzalez
�Continuar las relaciones de tus clases
Actividad colaborativa
47
1-48
@Juan__Gonzalez
• Recordamos que polimorfismo se define
como la capacidad de objetos de clases
diferentes, relacionados mediante
herencia, a responder de forma distinta al
mismo mensaje (llamada a un método)
• Es decir, el mismo mensaje que se envía a
muchos tipos de objetos, toma “muchas
formas” y de ahí viene el término
polimorfismo.
Polimorfismo
48
1-49
@Juan__Gonzalez
• La definición del método reside en la superclase
• La implementación del método reside en la subclase
• La invocación es resuelta al momento de ejecución (ligadura dinámica)
Polimorfismo - Ejemplo
49
Transporte
Avanzar
Frena
r
Transporte
Avanzar
Frena
r
Transporte
Avanzar
Frena
r
Transporte
avanzar()
frenar()
1-50
@Juan__Gonzalez
Representación polimorfismo UML
50
Transporte
CoheteCaballo
+ avanzar ()+ frenar ()
En itálicas
denota clase
abstractas
+ avanzar ()+ frenar ()
+ avanzar ()+ frenar ()
Carro
+ avanzar ()+ frenar ()
La definición de estos
métodos se heredan,
pero hay redefinirlos o
sobreescribirlos
1-51
@Juan__Gonzalez
Resumen de relaciones
• Asociación. Indica que dos clases tienen una relación que las asocia según el papel que cada una juega con
respecto a otra.
• Dependencia. La dependencia es causada porque un método en la clase A temporalmente “usa un” objeto de
la clase B.
1-52
@Juan__Gonzalez
Resumen de relaciones
• Agregación. La relación que se establece entre estos objetos se llama “tiene un”, “es parte de” o “consta de”
Auto
Motor
Agregación: diamante vacío
Llanta
Tiene un
1..4
1
multiplicidad
1-53
@Juan__Gonzalez
Resumen de relaciones
• Composición. La relación que se establece entre estos objetos se llama “tiene un”, sólo que en este caso la
relación es mas fuerte.
1-54
@Juan__Gonzalez
Herencia Simple
54
+Abstracta
+Concreta
A este nivel, la
clase es
abstracta
1-55
@Juan__Gonzalez
Representación polimorfismo UML
55
Transporte
CoheteCaballo
+ avanzar ()+ frenar ()
En itálicas
denota clase
abstractas
+ avanzar ()+ frenar ()
+ avanzar ()+ frenar ()
Carro
+ avanzar ()+ frenar ()
La definición de estos
métodos se heredan,
pero hay redefinirlos o
sobreescribirlos
1-56
@Juan__Gonzalez
Más sobre Clases
• Las clases son el centro operativo de un
sistema orientado a objetos.
• El sistema se compone de pequeñas
colecciones llamadas objetos.
• Las clases describen los diferentes tipos
de objetos que puede tener un sistema. Y
los diagramas de clase nos muestran qué
clases tenemos y sus relaciones.
1-57
@Juan__Gonzalez
4.1 Clases
• Analogía: Una guitarra es un objeto, una entidad propia. Este objeto es creada por cierta compañía, la cual crea cientos de ejemplares de un mismo tipo de guitarra (una misma clase de guitarra).
• A cada guitarra de este tipo se le llama ‘instancia’ de la clase.
• Cada instancia puede contener información sobre el objeto y el comportamiento de la misma. – Información: contiene 5 cuerdas
– Comportamiento: tocar música
1-58
@Juan__Gonzalez
4.1 ClasesAbstracción
• Para definir una clase se necesita saber si
es importante su existencia para el sistema que estamos modelando.
• Se debe obtener una abstracción justa
para el modelo, concentrándose en la información que el sistema necesita
saber, e ignorar lo irrelevante o lo que no
representa nada significativo para el
sistema.
1-59
@Juan__Gonzalez
4.1 ClasesEncapsulación
• Encapsular consiste en analizar cuáles son los datos internos (o ocultos) de un objeto y cuales son los que pueden interactuar con el exterior.
• Ejemplo de la guitarra: el cuerpo y las partes eléctricas
de la guitarra se pueden considerar como características
internas, y las cuerdas al contrario si pueden interactuar
con el exterior.
– De esta forma operaciones como serviciosElectricos pueden ser
encapsuladas y ofrecidas por la misma clase. Y otros objetos
ajenos mientras pueden interactuar con la guitarra usando la
operación tocar.
1-60
@Juan__Gonzalez
4.1 ClasesEncapsulación
• La encapsulación permite ocultar detalles propios, y da visibilidad solo a los datos que se escojan como accesibles.
• Los cambios hechos por métodos internos
de la clase no deben afectar el cómo la
ven otras partes del sistema, la interacción
externa debe ser la misma.
1-61
@Juan__Gonzalez
4.2 Clases en UML
• Se dibujan como un rectángulo dividido en
tres partes.
• Pueden no incluir las secciones de
atributos o operación.
1-62
@Juan__Gonzalez
4.3 Visibilidad
• Una clase puede permitir el acceso a otras
clases ver ciertos atributos y operaciones.
• En UML existen 4 tipos de acceso y son:
1-63
@Juan__Gonzalez
4.3 VisibilidadPublic (+)
• Es accesible por :
– Métodos de la
misma clase.
– Clases dentro del
mismo paquete.
– Clases dentro de
otro paquete.
1-64
@Juan__Gonzalez
4.3 VisibilidadProtected (#)
• Es accesible por :
– Métodos de la clase
– Otras clases, del
mismo u otro
paquete, que heredade la clase.
• No accesible por:
– Clases que no
hereden de ésta.
1-65
@Juan__Gonzalez
4.3 VisibilidadPackage visibility (~)
• Es accesible por:
– Métodos de la
misma clase
– Todos las clases
dentro del mismo
paquete.
• No accesible por:
– Clases de otros
paquetes.
1-66
@Juan__Gonzalez
4.3 VisibilidadPrivate (-)
• Es accesible por:
– Solo la clase en
donde fue
declarado el
atributo o método
• No accesible por:
– Ninguna clase
ajena a ésta.
1-67
@Juan__Gonzalez
4.4 Atributos de la clase
• Son los pedazos de información que representan a un
objeto.
• Se pueden declarar dentro del diagrama de clase en la
sección de atributos, o asociando atributos con la clase
como se muestra en la imagen:
1-68
@Juan__Gonzalez
4.4 Atributos de la claseNombre y tipo
• El nombre puede ser cualquiera que
represente la información que almacena.
No puede haber dos atributos con el
mismo nombre dentro de una clase.
• El tipo depende de la implementación de
la clase, pero puede ser una clase (como
String) o un tipo primitivo (como un int o
char).
1-69
@Juan__Gonzalez
4.4 Atributos de la claseMultiplicidad
• La multiplicidad permite especificar que un atributo es una colección de objetos.
• Los atributos trackbacks, comments y authors son colecciones de objetos. El asterisco [*] representa que pueden contener n elementos la colección.
• El 1 sobre BlogAccount representa que existe solo 1 clase de ese tipo y el * indica que puede haber n cantidad de clases de BlogEntry
1-70
@Juan__Gonzalez
4.4 Atributos de la claseMultiplicidad
• Entries, trackbacks y comments tienen una
propiedad que detalla la multiplicidad.
– {unique}: no existe ningún elemento repetido
en la colección
– {ordered}: indica que la colección esta
organizada por algún criterio de orden.
1-71
@Juan__Gonzalez
4.4 Atributos de la clasePropiedades
• Existen muchas diferentes propiedades para las clases. La mas usada es readOnly, pero existen otras como union, subsets, redefines, composite.
• readOnly: si un atributo la posee, significa que su valor no puede ser modificado despues de ser asignado. En Java se implementa:
private final String cantidad = 2
1-72
@Juan__Gonzalez
4.5 Operaciones
• Describen lo que una clase puede hacer.
• No especifican cómo lo van a hacer.
• En UML se componen de un nombre, seguidos de dos ( ) donde pueden nombrarse los parámetros necesarios
para realizar su trabajo, y por último se escribe el tipo de
dato que regresa (return).
1-73
@Juan__Gonzalez
4.5 OperacionesParámetros
• Son los datos que requiere una operación
para realizar su trabajo. Puede requerir
más de un parámetro por operación.
• Ejemplo: la operación addEntry requiere
un parámetro llamado newEntry, y este
dato es de tipo BlogEntry (una clase).
1-74
@Juan__Gonzalez
4.5 OperacionesTipos de retorno (return)
• Se refieren al tipo de objeto que va a devolver la
operación.
• Se especifica después de los ( ) seguidos por
dos puntos :
• No es necesario que siempre devuelvan un dato.
En ese caso se le llama retorno del tipo void.
1-75
@Juan__Gonzalez
4.6 Secciones estáticas
• Algunos atributos, operaciones o toda la clase
pueden considerarse estáticas.
• Los atributos declarados en ejemplos anteriores
son no estáticos, lo que significa que cada objeto
creado de una clase tiene sus propios atributos y operaciones.
• Cuando se requiere que todos los objetos, de
una clase particular, tenga la misma copia de los
atributos y operaciones, entonces se hace uso
del modificador static.
1-76
@Juan__Gonzalez
4.6 Secciones estáticas
• Cuando un atributo u operación se declara como
estática, se le asocia directamente a la clase que
pertenece y no a los objetos instanciados.
• Ejemplo: un contador que almacene el número
de todas los objetos instanciados de cierta clase.
El atributo contador debe ser estático debido a
que su valor debe ser el mismo en todas las
instancias, es decir, pertenece a la clase y no a
las instancias.
1-77
@Juan__Gonzalez
4.6 Secciones estáticas
• En UML el atributo u operación estática se
señala subrayando la declaración
completa:
1-78
@Juan__Gonzalez
• Visibilidad
La visibilidad se aplica a atributos y operaciones, y establece la proporción en que otras clases podrán utilizar los atributos y operaciones de una clase dada.
Existen 3 niveles de visibilidad:
1. Nivel público, en el cual la funcionalidad se extiende a otras clases.
2. Nivel protegido, en el que la funcionalidad se otorga sólo a las clases que se heredan de la clase original.
3. Nivel privado, en el sólo la clase original puede utilizar el atributo u operación.
1-79
@Juan__Gonzalez
• En una televisión, modificarVolumen() y
cambiarCanal() son operaciones públicas
en tanto que dibujarImagenEnPantalla()
es privada.
• En un automóvil, acelerar() y frenar() son
operaciones públicas, pero
actualizarKilometraje() es protegida.
+ Nivel público
- Nivel privado
# Nivel protegido
1-80
@Juan__Gonzalez
Relaciones
• UML no se trata solo de declarar atributos y
operaciones. Existen muchas operaciones
especiales que hacen de UML un lenguaje de
modelado extenso.
– Existen varios tipos de relaciones entre clases.
– Declaración de clases abstractas.
– Interfaces que nos permiten nombrar las operaciones
sin hacer alguna implementación.
– Creación de clases genéricas, que puedan usarse
para cualquier tipo de dato.
– Entre otras.
1-81
@Juan__Gonzalez
5.1 Relaciones entre clases
• Las clases generalmente trabajan en conjunto con otras,
usando diferentes tipos de relaciones.
• Existen 5 tipos de relaciones en UML
– Dependencia
– Asociación
– Agregado
– Composición
– Herencia
1-82
@Juan__Gonzalez
5.1 Relaciones entre clasesDependencia• Esta relación declara que una clase requiere conocer acerca de otra para usar los objetos de esa clase.
• Ejemplo: una interfaz requiere usar la información de un objeto del tipo BlogEntry para
mostrarla en pantalla, usamos la flecha de
dependencia.
1-83
@Juan__Gonzalez
5.1 Relaciones entre clasesDependencia
• La dependencia solo implica que los
objetos de la clase pueden trabajar juntos. Se dice que los objetos de ambas
clases son dependientes uno del otro,
trabajan juntos en tiempo de ejecución.
• Es la mas débil de todas las relaciones.
1-84
@Juan__Gonzalez
5.1 Relaciones entre clasesAsociación
• Se refiere a que la clase tendrá una referencia a
uno o varios objetos de la otra clase, en forma
de atributo.
• Se utiliza cuando una clase necesita trabajar con
un objeto de otra clase.
• Ejemplo: se asocian 0 o varios objetos BlogEntry a una sola clase BlogAccount
1-85
@Juan__Gonzalez
5.1 Relaciones entre clasesAgregado
• Es parecida a la asociación. Indica que una
clase tiene objetos que puede compartir con otra
clase. La relación significa “tiene un”.
• Se demuestra con un diamante vacío.• Ejemplo: un autor tiene una cuenta de blogs. Puede incluso compartir una
cuenta con otros autores, también tiene control total sobre sus objetos.
1-86
@Juan__Gonzalez
5.1 Relaciones entre clasesComposición
• Tiene un comportamiento similar al agregado. En UML
se denota con un diamante relleno.
• Ejemplo: la introducción y el cuerpo de un blog son
partes individuales del mismo, no se comparte con las
demás partes de BlogEntry. Si se elimina un objeto
BlogEntry, todas sus partes se van con el.
1-87
@Juan__Gonzalez
5.1 Relaciones entre clasesHerencia
• Se usa para describir que una clase es un tipo
de otra clase. Responde a “es un”.
• Las clases de abajo heredan todos los atributos
y métodos que son declarados en las clases
generalizadas. Y también pueden agregar sus
propios especializados métodos y atributos.
1-88
@Juan__Gonzalez
5.1 Relaciones entre clasesHerencia – Múltiple
• UML soporta la herencia múltiple, aunque no es
soportado por lenguajes modernos como Java, C#.
• Cuando se hereda de dos clases, existe la posibilidad de
que se encuentren atributos o métodos repetidos.
Ejemplo:
1-89
@Juan__Gonzalez
5.2 Restricciones
• Se usan cuando queremos restringir las
formas en que una clase trabaja.
• Se utiliza una condición que impide a la
clase dejarla en el estado que esta, e
invoca una acción.
• UML llama a un lenguaje llamado OCLpara hacer uso de las restricciones.
1-90
@Juan__Gonzalez
5.3 Clases abstractas
• Cuando creamos una clase generalizada,
vemos que algunos métodos de las clases
especializadas van a ser implementados
de diferente manera. Dichos métodos se
declaran abstractos y su implementación
se deja a las clases especializadas.
• En UML se declara que un método es
abstracto escribiendo su nombre en
cursiva. Si una parte es cursiva, el nombre
de la clase también debe serlo.
1-91
@Juan__Gonzalez
5.3 Clases abstractas - Java
• En Java esta es la forma de implementar
una clase y metodos abstractos.
public abstract class Store{
public abstract void store(Article[] a);
public abstract Article [] retrieve( );
}
• No existe una implementación del método,
solo declaración de los parámetros y el
tipo de retorno.
1-92
@Juan__Gonzalez
5.3 Clases abstractas - Java
• No puedes crear un
objeto de una clase
abstracta (Store), pero
si de la que incluye la
implementación del
método abstracto
(Blogstore).
• Para implementar
métodos de clases
abstractas
necesitamos hacer
1-93
@Juan__Gonzalez
5.4 Interfaces
• Si queremos declarar los métodos que una
clase en concreto debe implementar, y no
queremos usar clases abstractas (por el
uso de la herencia), podemos utilizar
interfaces.
• Son una colección de operaciones que no
tienen una implementación.
1-94
@Juan__Gonzalez
5.4 Interfaces
• En UML se escriben de dos diferentes maneras:
• Y su implementación en Java es:public interface EmailSystem {
public void send(Message m);
1-95
@Juan__Gonzalez
5.4 Interfaces
• Para denotar la implementación de los
métodos de una interfaz, se le asocia a
esta con una clase.
1-96
@Juan__Gonzalez
5.5 Clases genéricas
• Cuando se declara un parámetro genérico, se
refiere a que dicha clase a la que se asigne
trabajara con otra clase, no importando cual
será.
• Se denota usando un rectángulo punteado que
lleva dentro el tipo parametrizado, que
representa a otra clase.
1-97
@Juan__Gonzalez
5.5 Clases genéricas
• En el diagrama anterior, E no es una clase
dentro del modelo; E es un sustituto para un
objeto de otro tipo que no sea de la misma clase ListOfThings
• El ejemplo mostrado trata de una lista, los genéricos generalmente son utilizados para
expresar listas, que pueden almacenar cualquier
tipo de dato, sin tener que hacer diferentes
implementaciones de listas.
1-98
@Juan__Gonzalez
Funciones básicas de una clase
• Toda clase debe tener el patrón CRUD
– Create (Constructores) – Caso Especial
– Read (Getters)
– Update (Setters)
– Delete (Destructores)
1-99
@Juan__Gonzalez
Clase Abstracta
• Las jerarquías de clases es común para el
diseño de algunas clases que nunca tendrán instancias, y están destinadas a ser utilizadas sólo por las subclases
• No toda raíz es abstracta, aunque es deseable
Fuente: The essence of OOP
with Java and UML
1-100
@Juan__Gonzalez
Clase Abstracta
• En muchos casos las clases abstractas
definen las funciones comunes pero en
términos de código estarán vacías.
• La programación se hace en las subclases
– Los animales comen, corren, etc.
– La especificación de lo que hacen se da en
las subclases
• En Java las Interfaces son abstractas
Fuente: The essence of OOP
with Java and UML
1-101
@Juan__Gonzalez
Clase Concreta
• Es aquellas de que se pueden derivar
instancias u objetos
– Perro
– Gato
1-102
@Juan__Gonzalez
Interfaces
• Diseñadas para indicar el comportamiento
a seguir por un conjunto de subclases.
– Solamente tiene una lista de funciones
– No tiene atributos
• Toda subclase esta obligada a sobre-
escribir sus métodos
1-103
@Juan__Gonzalez
Interfaces
• Apoya la herencia múltiple
– Es común que una clase sea del interés de
muchas clases
1-104
@Juan__Gonzalez
Interface
• En Java, por ejemplo, es la única forma de
dar soporte a la herencia múltiple ya que:
– podemos implementar todas las interfaces
que se desee
• Listeners
– Podemos extender sólo una clase
1-105
EJEMPLO
1-106
@Juan__Gonzalez
Clases
Fuente: The essence of OOP
with Java and UML
1-107
@Juan__Gonzalez
Composición
Fuente: The essence of OOP
with Java and UML
1-108
@Juan__Gonzalez
Herencia
Fuente: The essence of OOP
with Java and UML
1-109
@Juan__Gonzalez
Polimorfismo
Fuente: The essence of OOP
with Java and UML
1-110
@Juan__Gonzalez
Poniendo todo Junto
Fuente: The essence of OOP
with Java and UML
1-111
EJEMPLO DE CODIFICACIÓN
1-112
@Juan__Gonzalez
Ejemplo de Codificación
Fuente: The essence of OOP
with Java and UML
1-113
@Juan__Gonzalez
Ejemplo de Codificación
Fuente: The essence of OOP
with Java and UML
1-114
@Juan__Gonzalez
Ejemplo de Codificación
Fuente: The essence of OOP
with Java and UML
1-115
@Juan__Gonzalez
Ejemplo de Codificación
Fuente: The essence of OOP
with Java and UML
1-116
@Juan__Gonzalez
Ejemplo de Codificación
Fuente: The essence of OOP
with Java and UML
1-117
@Juan__Gonzalez
Ejemplo de Codificación
Fuente: The essence of OOP
with Java and UML
1-118
@Juan__Gonzalez
Ejemplo de Codificación
Fuente: The essence of OOP
with Java and UML
1-119
@Juan__Gonzalez
Ejemplo de Codificación
Fuente: The essence of OOP
with Java and UML
1-120
@Juan__Gonzalez
Tarea
• Hacer el diagrama de clases de tu sistema
top related