Clase I
Francisco Javier González Gasca
Abril/2023
Agenda
Presentación del
curso
Programación
Orientada a Objetos
Conceptos
Fundamentales
Herencia,
Encapsulamiento
, Polimorfismo
¿Qué es la Programación Orientada a
Objetos?
Es una manera de construir Software
basada en un nuevo paradigma.
Propone resolver problemas de la
realidad a través de identificar objetos y
relaciones de colaboración entre ellos.
El Objeto y el mensaje son sus
elementos fundamentales.
POO
¿Qué es lo que ves?
POO
¿Qué es lo que ves?
POO
¿Qué es lo que ves?
POO
¿Qué es lo que tienen en común?
POO
¿Qué es lo que tienen en común?
POO
¿Qué es una clase?
Clase Clasificación
Clasificación en base a
comportamiento y atributos comunes
Crea un vocabulario
La forma en que nos comunicamos
La forma en que pensamos
POO
¿Qué es una clase?
Construcción Estática
Describe:
Comportamiento común
Atributos [estado]
Estructura de datos
Incluye:
Datos
Funciones o métodos
POO
Constructor y Destructor
Dos métodos de las clases
Existen por defecto
Constructor, inicializa valores
Destructor, libera recursos al finalizar
la vida de una instancia de una clase
creada en memoria
Existen constructores y destructores
por defecto
POO
¿Qué es un objeto?
POO
¿Qué es un objeto?
Instancia de una clase
Un objeto posee:
Identidad: Relación única entre el objeto
del modelo y el ente de la realidad que
representa. Se implementa a través de un
id único en el modelo.
Comportamiento: Resuelve un conjunto
particular de problemas a través de su
protocolo.
Estado: Almacena información
Fija
Variable
POO
Demo
• Modelizando el mundo real
POO
Pilares de POO
Herencia Polimorfismo Encapsulamiento
Abstracción
POO
Abstracción
Ignorancia selectiva
Decide que es importante y que no lo es
Se enfoca [depende] en lo que es importante
Ignora [no depende] de lo que no es
importante
Utiliza la encapsulación para reforzar la
abstracción
POO
Encapsulamiento
Acelera() 125
km
/ h
300 km/h
velocidad
Frena() 40 km
/h
POO
¿Por qué utilizar encapsulamiento?
Dos grandes razones
Control
Cambio
POO
Encapsulamiento
Los métodos
Acelera() son públicos:
son accesibles
desde fuera
velocidad Los datos son
privados:
Frena() accesibles
desde dentro
Controlador del Motor
POO
Datos del Objeto
Describe los objetos de forma individual
Color: Azul
Color 2: Gris
Instrumental Digital
Ventanas eléctricas
4 asientos
Color: Verde
Color 2: Negro
Instrumental digital
2 asientos
POO
Datos Estáticos
Describen información para todos los objetos
Número de llantas: 4
Capacidad del tanque: 40
litros
Tipo de Transmisión:
Automática
POO
Métodos Estáticos
Solo pueden acceder a datos
compartidos por todas las instancias
de la clase.
Encapsula los datos estáticos
Son invocados en la clase, no en el
objeto
No es necesaria la creación de una
instancia para invocarlos
POO
Métodos Estáticos
llantas
tanque
transmision
NumeroLlantas()
CapacidadTanque()
TipoTransmision()
Automóvil
POO
Herencia
Es “un tipo de” relación
Relación “es un”
Entre Clases Transporte
Va de la generalización a la Acelera
especialización Frena
Clase base Automóvil
Clase derivada
Hereda la implementación
POO
Jerarquías de Clase
Transporte
Marítimo Aire Nieve Tierra
DentroAtmosfera FueraAtmosfera 1-Persona N-Personas
POO
Jerarquías de Clase – Otro ejemplo
Cuentas
Cuenta Corriente Caja Ahorro
Común Sueldo
POO
Herencia Múltiple
Singular: La clase hija deriva de una única clase
padre
Múltiple: La clase hija deriva de varias clases padre
No es soportada por todos los lenguajes
Puede ser confusa
Nieve 1-Persona Terrestre
POO
Laboratorio
• Creando clases
POO
Polimorfismo y sobrecarga
Polimorfismo: desconocimiento del cliente sobre la
clase concreta del objeto que brinda el servicio.
Esto me da libertad de intercambiar libremente el
objeto servidor.
Sobrecarga: Definir más de un método por cada
mensaje, los tipos de los argumentos ayudan a
decidir a qué mensaje se invoca.
Tareas similares son realizadas por métodos con
mismo nombre
Suma
Enteros
Decimales
Fracciones
Simplifican la tarea del desarrollador, al no tener
que recordar distintos nombres para
comportamientos iguales.
POO
Polimorfismo
La definición del método reside en la clase base
La implementación del método reside en la clase derivada
La invocación es resuelta al momento de ejecución
Early binding
Late binding
Auto
Acelera
Frena
Cohete
Acelera
Frena
Transporte
Acelera
Frena
Caballo
Acelera
POO
Frena
Clases Base Abstractas
Existen solamente para que se
deriven de ellas
No tiene sentido crear una instancia de
este tipo de clases
Métodos abstractos
Clases abstractas – Concrete classes
Automóvil
Color
Asientos
Transporte
Acelera
frena ?
POO
Resumen
¿Qué es la Programación Orientada
a Objetos?
Clases y Objetos
Métodos y Atributos
Encapsulamiento
Herencia
Polimorfismo
POO