Conceptos de Programación Orientada A Objetos

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 79

UNIVERSIDAD NACIONAL DE INGENIERÍA

FACULTAD DE CIENCIAS Y SISTEMAS


DEPARTAMENTO DE INFORMÁTICA

Conceptos de Programación
Orientada a Objetos (POO)

I SEMESTRE 2021
Contenido
I. BREVE HISTORIA DE LA PROGRAMACIÓN
II. OBJETOS
III. LA CLASE
IV. ABSTRACCIÓN
V. ENCAPSULACIÓN Y OCULTAMIENTO DE DATOS
VI. HERENCIA
VII. POLIMORFISMO
VIII.DIAGRAMA DE CLASES DE UML

01/06/2021 Docente: Ing. Danilo H. Noguera Rivera 2


I. Breve historia de la programación
Paradigmas de la programación
’50s ’60s ’80s
Programación orientada a
Programación no estructurada Programación estructurada
objetos
• Instrucciones secuencialmente • Pasos lógicos • Dividir el programa en objetos
ordenadas • Implementan subrutinas o autocontenidos
• Las líneas de código estaban funciones • Cada objeto representa una
enumeradas o Mejora en la legibilidad del parte del sistema que es
• “Código espagueti” código mapeada en una entidad
o Complicado, difícil de o Reducción del tiempo de distinta
entender y mantener desarrollo • Un objeto funciona como un
• Ejemplo, Sinclair Basic • Uso amplio de variables programa separado, por sí
• Estructuras de datos complejas mismo
• Ejemplo, C • Opera en sus propios datos y
tiene un rol específico
• Los objetos que forman un
sistema, interactúan entre sí
• Acerca a la programación al
01/06/2021 Docente: Ing. Danilo H. Noguera Rivera mundo real 3
II. Objetos
Mientras que la programación estructurada depende de acciones…

La POO está organizada en objetos

Un objeto representa una cosa


• Simple
• Complejo

Pelota Falcon Heavy


01/06/2021 Docente: Ing. Danilo H. Noguera Rivera 4
II. Objetos
• La manera en cómo definimos un objeto
depende del nivel de detalle que se necesite
• Los objetos pueden contener o referenciar
otros objetos
• Esto también sucede en el mundo de la POO

Tesla Roadster Starman Falcon Heavy


01/06/2021 Docente: Ing. Danilo H. Noguera Rivera 5
II. Objetos
• Podemos describir objetos usando sus
propiedades o atributos Color Posición

o Nombre Peso
Velocidad
o Color
Aceleración
o Peso Precio

o Velocidad
Podrían no variar Podrían variar
Pelota

Todas estas propiedades describen un objeto del mundo real

Igual sucede en la POO


01/06/2021 Docente: Ing. Danilo H. Noguera Rivera 6
II. Objetos
• Los objetos tienen su propia identidad o su
propio estado
• Cambiar el estado de un objeto, no cambia el
estado de otros objetos
o Su estado es independiente
o Cada uno tiene su identidad privada

Pelota

Si golpeamos una pelota, no afectará a las demás pelotas


01/06/2021 Docente: Ing. Danilo H. Noguera Rivera 7
II. Objetos
• Aparte de tener propiedades e identidad, un
objeto tiene su propio comportamiento
o El comportamiento de un objeto es lo que
el objeto puede hacer
Objeto Propiedad Comportamiento

El perro negro ladra


Sustantivo Adjetivo Verbo

01/06/2021 Docente: Ing. Danilo H. Noguera Rivera 8


II. Objetos
• Pero… ¿Cómo implementamos esto en
código?
Propiedad Objeto Comportamiento

El perro negro ladra


Adjetivo Sustantivo Verbo

• Con el concepto de CLASE

01/06/2021 Docente: Ing. Danilo H. Noguera Rivera 9


III. La Clase
• La construcción de un sistema orientado a
objetos inicia con la identificación de objetos
potenciales, sus atributos y
responsabilidades

Se necesita crear una CLASE para poder crear un OBJETO

01/06/2021 Docente: Ing. Danilo H. Noguera Rivera 10


III. La Clase
• Una Clase es como un plano o plan de un
objeto
o Una descripción de lo que será un objeto

Un OBJETO es una realización de una CLASE

01/06/2021 Docente: Ing. Danilo H. Noguera Rivera 11


III. La Clase
• Supongamos que deseamos
usar un Pokémon en nuestro
programa
• Una Clase llamada Pokemon
proveerá un plan de cómo lucirá
el Pokémon y qué hará

Pokémon

01/06/2021 Docente: Ing. Danilo H. Noguera Rivera 12


III. La Clase
• La Clase nos indica que cada
objeto tendrá un:
o nombre
o nivel de armadura
o puntos de golpe
• No dice los valores de estas
propiedades
Pokémon

01/06/2021 Docente: Ing. Danilo H. Noguera Rivera 13


III. La Clase
• La Clase también nos indica que
cada objeto podrá:
o atacar
o defenderse
• Estas dos acciones definen su
comportamiento

Pokémon

01/06/2021 Docente: Ing. Danilo H. Noguera Rivera 14


III. La Clase
• Se crea una Clase:
o Dándole un nombre
o Declarando sus propiedades
o Describiendo sus métodos
• Los métodos son bloques de código que
pueden ser llamados para ejecutar ciertas Son como las
operaciones funciones en la
programación
o Pueden admitir parámetros de entrada y estructurada

devolver un valor
o Son funciones insertadas en una Clase
01/06/2021 Docente: Ing. Danilo H. Noguera Rivera 15
III. La Clase
Clase Objetos
• Dada esta Clase,
podemos crear objetos
basados en ella Nombre: Pikachu
Armadura: 100
• Al crear un objeto, se Puntos: 1000

provee los valores de los


atributos declarados en la Nombre: Kawaii
Armadura: 75
Clase Puntos: 960

Nombre: Armaldo
Armadura: 200
Puntos: 5000

01/06/2021 Docente: Ing. Danilo H. Noguera Rivera 16


III. La Clase
• Dada una Clase,
podemos crear tantas
instancias como se
desee
• Un beneficio de las
Clases es que podemos
empaquetarlas en
bibliotecas o
frameworks para
reutilizarlas
01/06/2021 Docente: Ing. Danilo H. Noguera Rivera 17
III. La Clase

https://openjdk.java.net/groups/core-libs/
01/06/2021 Docente: Ing. Danilo H. Noguera Rivera 18
III. La Clase

https://docs.python.org/3/library/
01/06/2021 Docente: Ing. Danilo H. Noguera Rivera 19
III. La Clase

https://developer.apple.com/documentation/swift/swift_standard_library
01/06/2021 Docente: Ing. Danilo H. Noguera Rivera 20
III. La Clase
• Ya hay Clases creadas y listas para utilizar
o No reinventar la rueda
o Enfocarse en la creación y uso de objetos de
nuestros programas
• Cada programa tiene diferentes requisitos
• Las Clases pre-creadas raramente van a cubrir todas
nuestras necesidades
o A veces será necesario crear nuestras propias
Clases

01/06/2021 Docente: Ing. Danilo H. Noguera Rivera 21


IV. Abstracción
• La abstracción es una manera de describir problemas
complejos en términos simples, ignorando los detalles
• Eliminando algunos detalles, nos permite enfocarnos
en el problema principal
• Podemos profundizar una vez que tengamos un
entendimiento más amplio
• Pero… ¿en qué consiste la abstracción?

01/06/2021 Docente: Ing. Danilo H. Noguera Rivera 22


IV. Abstracción
• Por ejemplo, si digo Gato, ya
sabemos de qué hablo
• No es necesario que diga que es
macho, persa, pequeño
• Se entiende que estoy hablando de
un gato en GENERAL
Gatos
• Somos buenos generalizando
cosas

01/06/2021 Docente: Ing. Danilo H. Noguera Rivera 23


IV. Abstracción
• Omitimos los detalles irrelevantes,
pero la gente nos entiende
• Eso se debe a que nuestro cerebro
está diseñado para entender
conceptos abstractos como
“gato”, “casa”, o “carro”.
• Igual sucede en el mundo de la
POO

01/06/2021 Docente: Ing. Danilo H. Noguera Rivera 24


IV. Abstracción
• Cuando definimos una Clase…

Nos enfocamos en las cualidades esenciales , descartamos las no importantes

Propiedades
Nombre Edad
Armadura Peso
Puntos Estatura
Acciones
Atacar Son propiedades
Defender irrelevantes para nuestra
aplicación
01/06/2021 Docente: Ing. Danilo H. Noguera Rivera 25
V. Encapsulación y ocultamiento de datos
• Encapsular de forma general implica
proteger algo y mantener sus partes
juntas
• Por ejemplo, una cápsula de
medicina
• En POO, esto se aplica
empaquetando todas las
propiedades y métodos en una Clase
Cápsulas

01/06/2021 Docente: Ing. Danilo H. Noguera Rivera 26


V. Encapsulación y ocultamiento de datos
• Encapsulación también
significa ocultar los
engranajes y palancas
• Por ejemplo, nosotros
podemos usar un celular
sin necesidad de entender
la electrónica
Celular
• No necesitamos saber
cómo funciona el touch, o la
cámara ni lo demás.
01/06/2021 Docente: Ing. Danilo H. Noguera Rivera 27
V. Encapsulación y ocultamiento de datos
• De igual forma, no deseamos exponer el
funcionamiento interno de nuestra Clase
• Un objeto solo debería revelar las
características esenciales
• A este concepto se le conoce como
Ocultamiento de datos
• Evitar exponer el funcionamiento interno
de nuestros objetos, protegiéndolos de
Pokémon
interferencias externas

01/06/2021 Docente: Ing. Danilo H. Noguera Rivera 28


V. Encapsulación y ocultamiento de datos
• Se restringe a los clientes modificar los
objetos (intencional o accidentalmente) en
formas que nosotros no planeamos
originalmente
• Así mismo, protegemos otras partes del
sistema para que no dependan de
propiedades o comportamientos que pueden
cambiar

01/06/2021 Docente: Ing. Danilo H. Noguera Rivera 29


V. Encapsulación y ocultamiento de datos
• Si cambiamos la batería del
celular, eso no afectará la
forma en cómo usamos el
celular
• Nosotros solo
interactuamos con la
pantalla touch
• Los cambios en el Celular

funcionamiento interno del


celular no nos interesan
01/06/2021 Docente: Ing. Danilo H. Noguera Rivera 30
V. Encapsulación y ocultamiento de datos
• Las Clases no son tan
disímiles a eso
• Si exponemos detalles
innecesarios, cualquier
cambio a los atributos o
métodos podrían afectar
otras partes del sistema

01/06/2021 Docente: Ing. Danilo H. Noguera Rivera 31


V. Encapsulación y ocultamiento de datos
• El ocultamiento de datos es para
proteger nuestras clases de
dependencias externas no deseadas

Al momento de diseñar nuestras Clases , expongamos solo los detalles necesarios

• Exponer de una Clase solo las


propiedades y métodos necesarios para
uso normal de la Clase

01/06/2021 Docente: Ing. Danilo H. Noguera Rivera 32


V. Encapsulación y ocultamiento de datos
• El ocultamiento de datos juega un rol esencial en
mantener las dependencias entre objetos al mínimo
• Un sistema bien acoplado, con la mayoría de objetos
dependiendo entre sí, es la señal obvia de un mal
diseño
• Actualizar o mantener un sistema así es complicado
• Cualquier modificación, por más pequeña que sea,
afectará en cascada y requerirá cambios en otras
partes del sistema

01/06/2021 Docente: Ing. Danilo H. Noguera Rivera 33


VI. Herencia
• Sin herencia, terminamos escribiendo código similar
de nuevo

La herencia = Reutilización de código

• Consiste en reutilizar una implementación de una


Clase existente en nuevas Clases

01/06/2021 Docente: Ing. Danilo H. Noguera Rivera 34


VI. Herencia
• Por ejemplo, modelamos nuestro
Pokémon con las principales
Propiedades
propiedades y comportamientos en Nombre
mente Armadura
• A partir de esta Clase… Puntos
Acciones
Atacar
Defender

01/06/2021 Docente: Ing. Danilo H. Noguera Rivera 35


VI. Herencia
• Pudimos crear nuestras
instancias de Pokémon Nombre: Pikachu
Armadura: 100
• Pero, qué pasaría si Puntos: 1000

necesitáramos nuevos
tipos, como… Nombre: Kawaii
Armadura: 75
Puntos: 960

Nombre: Armaldo
Armadura: 200
Puntos: 5000

01/06/2021 Docente: Ing. Danilo H. Noguera Rivera 36


VI. Herencia
Nombre Nombre Nombre
Armadura Armadura Armadura
Puntos Puntos Puntos

Atacar Atacar Atacar


Defender Defender Defender
Eléctrico De agua Volador

• Se necesitaría de nuevas Clases, ya que estos


tipos nuevos, tienen habilidades especiales

01/06/2021 Docente: Ing. Danilo H. Noguera Rivera 37


VI. Herencia
Nombre

• La Clase Pokémon tiene las Armadura

propiedades nombre, armadura y Puntos

puntos, puede atacar y defenderse Atacar


Defender

Nombre Nombre Nombre


Armadura Armadura Armadura
Puntos Puntos Puntos

Atacar Atacar Atacar


Defender Defender Defender
Eléctrico cargaSalvaje De agua colaAgua Volador ascensoDragon
01/06/2021 Docente: Ing. Danilo H. Noguera Rivera 38
VI. Herencia
Nombre
• Los Pokémon eléctrico, de agua y volador Armadura
tienen esas mismas propiedades y Puntos

comportamientos Atacar

• Pero también tienen funcionalidad Defender

especializada
Nombre Nombre Nombre
Armadura Armadura Armadura
Puntos Puntos Puntos

Atacar Atacar Atacar


Defender Defender Defender
Eléctrico cargaSalvaje De agua colaAgua Volador ascensoDragon
01/06/2021 Docente: Ing. Danilo H. Noguera Rivera 39
VI. Herencia
• Podríamos agregar todos estos
Propiedades
comportamientos a la Clase Nombre
Pokémon, pero… Armadura
• Si lo hacemos, terminaríamos Puntos

teniendo una Clase con Acciones

demasiadas responsabilidades Atacar


Defender
• Cualquier Pokémon podría nadar, cargaSalvaje
volar y descargar electricidad colaAgua
• No es algo que se desee ascensoDragon
• Las Clases deberían ser simples
01/06/2021 Docente: Ing. Danilo H. Noguera Rivera 40
VI. Herencia
• La POO es acerca de la
Propiedades
granularidad y la separación de Nombre
intereses Armadura
• Cada Clase debería enforcarse en Puntos

un conjunto específico de Acciones

funcionalidades Atacar
Defender
• Crear una Clase que acapare todo cargaSalvaje
es uno de los principales errores colaAgua
del desarrollo de Software ascensoDragon
orientado a objetos
01/06/2021 Docente: Ing. Danilo H. Noguera Rivera 41
VI. Herencia
Nombre
• Se repite el código de las funcionalidades Armadura
comunes, debería haber una mejor Puntos

manera… Atacar

• Los lenguajes de POO tienen una Defender

solución para este tipo de problema…


Nombre Nombre Nombre
Armadura Armadura Armadura
Puntos Puntos Puntos

Atacar Atacar Atacar


Defender Defender Defender
Eléctrico cargaSalvaje De agua colaAgua Volador ascensoDragon
01/06/2021 Docente: Ing. Danilo H. Noguera Rivera 42
VI. Herencia Nombre

• La herencia Armadura
Puntos

Atacar
Defender

Nombre Nombre Nombre


Armadura Armadura Armadura
Puntos Puntos Puntos

Atacar Atacar Atacar


Defender Defender Defender
Eléctrico cargaSalvaje De agua colaAgua Volador ascensoDragon
01/06/2021 Docente: Ing. Danilo H. Noguera Rivera 43
VI. Herencia
• Una Clase puede heredar
todos los atributos y
comportamientos de otra
Clase
• Por ejemplo, permitimos
que los Pokémon nuevos
hereden características
de la Clase Pokémon

01/06/2021 Docente: Ing. Danilo H. Noguera Rivera 44


VI. Herencia Nombre

• Agrega datos y Armadura


Puntos
comportamiento
Atacar
especializados
Defender

cargaSalvaje colaAgua ascensoDragon


Eléctrico De agua Volador
01/06/2021 Docente: Ing. Danilo H. Noguera Rivera 45
VI. Herencia
• Los datos y comportamientos
de la Clase Pokémon ahora
están disponibles a las
demás Clases, sin que
tengamos que agregar más
líneas de código para ello
• Ahora podemos agregar
atributos o comportamientos
especializados a las Clases
que hereden de Pokémon
01/06/2021 Docente: Ing. Danilo H. Noguera Rivera 46
VI. Herencia Nombre
Armadura

• Podemos mejorar o Puntos

modificar la Clase Generación

Pokémon Atacar
Defender

cargaSalvaje colaAgua ascensoDragon


Eléctrico De agua Volador
01/06/2021 Docente: Ing. Danilo H. Noguera Rivera 47
VI. Herencia Nombre
Armadura

• Las demás Clases Puntos

recibirán esos cambios Generación

automáticamente Atacar
Defender

Generación Generación Generación

cargaSalvaje colaAgua ascensoDragon


Eléctrico De agua Volador
01/06/2021 Docente: Ing. Danilo H. Noguera Rivera 48
VI. Herencia
• En términos de POO, SúperClase
Pokémon es un padre
o SúperClase
• Las demás Clases
son SubClases o
Clases hijas

SubClases

01/06/2021 Docente: Ing. Danilo H. Noguera Rivera 49


VII. Polimorfismo

poli morfos

Muchas formas

• Polimorfismo es la condición de ocurrir en diferentes formas


• Pero, ¿cómo funciona en la programación?

01/06/2021 Docente: Ing. Danilo H. Noguera Rivera 50


VII. Polimorfismo
• Hay que retroceder de nuevo al concepto de herencia y su
jerarquía

SúperClase

SubClases

01/06/2021 Docente: Ing. Danilo H. Noguera Rivera 51


VII. Polimorfismo
• ¿Qué pasaría si quisiéramos agregarle al Pokémon de Agua
un mejor ataque para que cause Nombre
más daño que el Pokémon
básico? Armadura
Puntos
Generación SúperClase
Atacar
Defender

Atacar SubClases

01/06/2021 Docente: Ing. Danilo H. Noguera Rivera 52


VII. Polimorfismo
• Para eso tendríamos que proveer una implementación
especializada del método Atacar Nombre
Armadura
Puntos
• A eso se le llama Generación SúperClase
anulación de Atacar
Defender
método

Atacar SubClases
Anulación
de método
01/06/2021 Docente: Ing. Danilo H. Noguera Rivera 53
VII. Polimorfismo
• La anulación de método significa que las subClases puedan
proveer una implementación especializada de un método
definido en la superClase

01/06/2021 Docente: Ing. Danilo H. Noguera Rivera 54


VII. Polimorfismo
Nombre
Armadura
• Implementamos el método Puntos
con el mismo nombre, con Generación SúperClase
los parámetros de la Atacar

súperClase y le proveemos Defender

nuestro propio
comportamiento
+50 daño

Atacar
SubClases
Anulación
de método
Eléctrico De agua Volador
01/06/2021 Docente: Ing. Danilo H. Noguera Rivera 55
VII. Polimorfismo
Nombre
• De esta manera, el Armadura
ataque de los Puntos
objetos Pokémon de Generación SúperClase

agua tendrán su Atacar


Defender
propio
comportamiento
• Los demás objetos
Atacar Atacar
tendrán el
+50 daño

Atacar
SubClases
comportamiento Anulación
definido en la de método

súperClase
01/06/2021 Docente: Ing. Danilo H. Noguera Rivera 56
VII. Polimorfismo
• El polimorfismo nos permite
trabajar con objetos creados
a partir de cualquiera de
estas Clases Atacar
Atacar
• Podríamos crear un ejercito Atacar

mixto de Pokémon y Atacar


Atacar Atacar

hacerlos atacar al mismo Atacar Atacar


tiempo Atacar Atacar Atacar

Atacar

01/06/2021 Docente: Ing. Danilo H. Noguera Rivera 57


VII. Polimorfismo
• Cada uno ejecutaría el
método correcto sin que
sepamos el tipo de Pokémon
• Solo sabemos que todos Atacar
Atacar
ellos son instancias del tipo Atacar

Pokémon o una de sus Atacar


Atacar Atacar

subclases Atacar Atacar


Atacar Atacar Atacar

Atacar

01/06/2021 Docente: Ing. Danilo H. Noguera Rivera 58


VII. Polimorfismo
• El polimorfismo nos permite
trabajar libremente con
instancias de muchas clases
diferentes que comparten Atacar
Atacar
una misma súperClase Atacar

Atacar Atacar
Atacar

Atacar Atacar
Atacar Atacar Atacar

Atacar

01/06/2021 Docente: Ing. Danilo H. Noguera Rivera 59


VIII.Diagrama de Clases de UML
• UML (Unified Modeling Language) o lenguaje de modelado
unificado, permite entender un sistema de Software a partir de
diagramas de diseño
• No es un lenguaje de programación textual, sino una notación
gráfica
• Consiste de un conjunto de diagramas que ayudan a diseñar y
comunicar sistemas de Software
• Podemos usar estos diagramas para describir los objetos que
conforman un sistema y sus interacciones

01/06/2021 Docente: Ing. Danilo H. Noguera Rivera 60


VIII.Diagrama de Clases de UML
• UML tiene muchos diagramas diferentes
• Entre los más comunes están:
o Diagrama de casos de uso, describe el modelo funcional de un
sistema, es decir, la funcionalidad del sistema desde el punto de
vista del usuario
o Diagrama de clases, para describir la estructura de un sistema.
Este diagrama es un diagrama estructural. Permite describir un
sistema en términos de objetos, atributos, operaciones y relaciones
o Diagrama de secuencia, permite modelar comportamiento
dinámico, describe la funcionalidad del sistema, enfocándose en
qué pasa y las interacciones entre objetos
01/06/2021 Docente: Ing. Danilo H. Noguera Rivera 61
VIII.Diagrama de Clases de UML
• UML es independiente de cualquier lenguaje de programación en
particular
• Podemos empezar a codificar (código fuente) un sistema a partir de
diagramas UML bien detallados
• Generalmente dibujamos diagramas UML como boceto de una parte
específica de un Software o una nueva funcionalidad
• El beneficio de estos diagramas es que también obtenemos un diseño,
y éste puede ser comunicado
• También podemos dibujar diagramas a partir de código existente, a
esto se le llama Ingeniería inversa
• Usamos UML también para crear un plano detallado de un sistema
01/06/2021 Docente: Ing. Danilo H. Noguera Rivera 62
VIII.Diagrama de Clases de UML
• El diagrama de Clases es de los más usados
• Es un diagrama estructural
• Provee una visión general de las Clases que
conforma un sistema de Software y describe
las relaciones estáticas entre ellas
Diagrama de Clase
• En UML representamos una Clase de la
siguiente manera: Nombre

Atributos

Métodos

01/06/2021 Docente: Ing. Danilo H. Noguera Rivera 63


VIII.Diagrama de Clases de UML
• Primero determinamos las Clases requeridas, Diagrama de Clase
luego podemos agregar los detalles, cuando
definamos lo que se necesita para cumplir Viaje

con la funcionalidad requerida


nombre
• Las herramientas UML nos permiten ocultar
creadoEn
o mostrar los atributos o métodos monedaNacional
iniciaEn
terminaEn

guardar()
eliminar()
deshacerCambios()
01/06/2021 Docente: Ing. Danilo H. Noguera Rivera 64
VIII.Diagrama de Clases de UML
• La visibilidad controla quién tiene acceso a los atributos y a los
métodos de nuestras Clases
• UML utiliza los siguientes símbolos para describir los niveles de
visibilidad de los miembros (atributos y métodos):
o + -> público, puede ser usado por código fuera del objeto
o - -> privado, solo puede ser usado dentro de la Clase definitoria
o # -> protegido, es accesible desde las Clases definitorias e hijas
• Hay una regla importante:
o Se debe ocultar todo aquello que no es requerido para la
apropiada funcionalidad del sistema
o Exponer demasiado, conlleva a problemas inesperados
01/06/2021 Docente: Ing. Danilo H. Noguera Rivera 65
VIII.Diagrama de Clases de UML
• Los atributos de una Clase generalmente tienen acceso privado o
protegido
• Se debe proveer métodos que establezcan (setters) y muestren
(getters), en lugar de permitir que todo mundo tenga acceso a los
datos de nuestra Clase
• Esto nos permite tener control de lo que vayan a hacer los que
llaman nuestras Clases con sus propiedades
• Pero, ¿cómo?

01/06/2021 Docente: Ing. Danilo H. Noguera Rivera 66


VIII.Diagrama de Clases de UML
Diagrama de Clase Diagrama de Clase

Viaje Viaje

-nombre
+nombre
Correcto -iniciaEn
+iniciaEn
-terminaEn
+terminaEn obtenerNombre()
establecerNombre()
obtenerIniciaEn()
Incorrecto
establecerIniciaEn ()
obtenerTerminaEn()
establecerTerminaEn ()
01/06/2021 Docente: Ing. Danilo H. Noguera Rivera 67
VIII.Diagrama de Clases de UML
• Existe relaciones en UML:
o Generalización, es una manera de describir
relaciones padre-hijo entre Clases. Esta relación A
se describe mejor con la frase “B es un A”
o Por ejemplo, un perro es una mascota
o Un gato también es una mascota
o Se usa una flecha

01/06/2021 Docente: Ing. Danilo H. Noguera Rivera 68


VIII.Diagrama de Clases de UML
• Generalización:
o En términos de UML,
Mascota es una Clase Mascota
base, mientras que Gato y
Perro son Clases hijas

Gato Perro

01/06/2021 Docente: Ing. Danilo H. Noguera Rivera 69


VIII.Diagrama de Clases de UML
• Asociación:
o Una asociación entre dos Clases
representa una conexión entre Curso
instancias de esas Clases
o Se necesita una asociación si las
instancias de dos Clases necesitan
referenciarse entre sí para
funcionar correctamente
o Se usa una línea sólida Revisión

01/06/2021 Docente: Ing. Danilo H. Noguera Rivera 70


VIII.Diagrama de Clases de UML
• Asociación:
o Por ejemplo, hay una asociación
entre un curso en línea y una Curso
revisión

Revisión

01/06/2021 Docente: Ing. Danilo H. Noguera Rivera 71


VIII.Diagrama de Clases de UML
• Multiplicidad:
o El final de una asociación puede
también incluir multiplicidad, que Curso
muestra el número de instancias 1
que participan en la asociación
o Por ejemplo, un curso en línea
tiene revisiones o no 0..*
o Una revisión puede ser escrita para
un curso en específico, pero Revisión
también puede ser omitida

01/06/2021 Docente: Ing. Danilo H. Noguera Rivera 72


VIII.Diagrama de Clases de UML
• Multiplicidad:
o Los posibles valores de la multiplicidad :
▪ 0 -> No hay instancias
▪ 0..1 -> 0 ó exactamente 1 instancia
▪ 1 -> Exactamente 1 instancia
▪ 0..* -> 0 ó más instancias
▪ * -> 0 ó más instancias
▪ 1..* -> 1 ó más instancias

01/06/2021 Docente: Ing. Danilo H. Noguera Rivera 73


VIII.Diagrama de Clases de UML
• Navigabilidad:
o La asociación puede ser bidireccional,
donde ambos objetos se conocen Carro
o Aunque no siempre es necesario que esto
sea así
o Por ejemplo, no tiene sentido que un
carro conozca al conductor. En este caso,
se necesita de una asociación
unidireccional Conductor

01/06/2021 Docente: Ing. Danilo H. Noguera Rivera 74


VIII.Diagrama de Clases de UML
• Agregación:
o Es un tipo especial de asociación
o Denota que un objeto es parte de otro Instructor
objeto
o Se conoce también como una relación
“tiene un/una”
o Por ejemplo, un “Instructor” tiene un
“Curso” para impartir
o Se usa un extremo con forma de Curso
diamante hueco

01/06/2021 Docente: Ing. Danilo H. Noguera Rivera 75


VIII.Diagrama de Clases de UML
• Composición:
o Es una variante más fuerte de la relación
“tiene un/una” que implica qué partes
viven y mueren con el todo, es decir Carro
“parte de”
o Por ejemplo, el chasis es parte de un
carro
o Si el carro es destruido, el chasis es
destruido también
o Se usa un extremo con forma de Chasis
diamante sólido
o Un curso podría durar más que el
instructor que lo creó (agregación)
01/06/2021 Docente: Ing. Danilo H. Noguera Rivera 76
VIII.Diagrama de Clases de UML
• Realización:
o Muestra que una Clase implementa el
comportamiento especificado por otro <<interfaz>>
elemento del modelo Interfaz
o Se usa un triángulo hueco en el extremo
de la interfaz y línea discontinua

Implementador

01/06/2021 Docente: Ing. Danilo H. Noguera Rivera 77


VIII.Diagrama de Clases de UML
• Dependencia:
o En algunos casos, una Clase puede
depender de otra Clase, pero la relación Carro
no es de asociación
o Esta relación es débil
o Por ejemplo, si un objeto envía una
notificación a otro objeto a través de un
tercero
o Otro ejemplo, cuando una Clase recibió
una referencia a otra Clase a través de un Camino
argumento de una función miembro
o Se usa una flecha con línea discontinua
01/06/2021 Docente: Ing. Danilo H. Noguera Rivera 78
VIII.Diagrama de Clases de UML

Generalización Asociación Agregación

<<interfaz>>

Composición Realización Dependencia

01/06/2021 Docente: Ing. Danilo H. Noguera Rivera 79

También podría gustarte