Conceptos de Programación Orientada A Objetos
Conceptos de Programación Orientada A Objetos
Conceptos de Programación Orientada A Objetos
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
o Nombre Peso
Velocidad
o Color
Aceleración
o Peso Precio
o Velocidad
Podrían no variar Podrían variar
Pelota
Pelota
Pokémon
Pokémon
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
Nombre: Armaldo
Armadura: 200
Puntos: 5000
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
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
necesitáramos nuevos
tipos, como… Nombre: Kawaii
Armadura: 75
Puntos: 960
Nombre: Armaldo
Armadura: 200
Puntos: 5000
comportamientos Atacar
especializada
Nombre Nombre Nombre
Armadura Armadura Armadura
Puntos Puntos Puntos
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
• La herencia Armadura
Puntos
Atacar
Defender
Pokémon Atacar
Defender
automáticamente Atacar
Defender
SubClases
poli morfos
Muchas formas
SúperClase
SubClases
Atacar SubClases
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
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
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
Atacar
Atacar
Atacar Atacar
Atacar
Atacar Atacar
Atacar Atacar Atacar
Atacar
Atributos
Métodos
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?
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
Gato Perro
Revisión
Implementador
<<interfaz>>