0% encontró este documento útil (0 votos)
30 vistas23 páginas

POO - Clase 3

El documento aborda conceptos fundamentales de la Programación Orientada a Objetos (POO), centrándose en clases abstractas e interfaces. Se explica la importancia de la abstracción en la definición de clases y métodos, así como la distinción entre clases abstractas e interfaces, y cuándo utilizar cada una. Además, se presentan ejercicios prácticos para aplicar estos conceptos en la creación de sistemas de software.

Cargado por

Cele Lombardo
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PPT, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
30 vistas23 páginas

POO - Clase 3

El documento aborda conceptos fundamentales de la Programación Orientada a Objetos (POO), centrándose en clases abstractas e interfaces. Se explica la importancia de la abstracción en la definición de clases y métodos, así como la distinción entre clases abstractas e interfaces, y cuándo utilizar cada una. Además, se presentan ejercicios prácticos para aplicar estos conceptos en la creación de sistemas de software.

Cargado por

Cele Lombardo
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PPT, PDF, TXT o lee en línea desde Scribd

Programación B

Programación Orientada a Objetos

Ingeniería en Informática
Universidad FASTA

Ing. Luis Buffoni


Lic. Claudio Gea

Clase 3 – POO: Clases Abstractas – Interfaces


Clases y métodos abstractos
Abstracción de Clases
 A menudo existen clases, a las que se denomina
abstractas, que sirven para definir un tipo genérico,
pero de los que no tiene sentido crear objetos de
esa clase

 Una clase abstracta NO puede instanciarse

 Los objetos son instancias de clases concretas


Figura
Abstracta

ta s
oncr e
C
Triangulo Rectangulo

Universidad FASTA – Programación B 2


Clases y métodos abstractos
Abstracción de Métodos
 También pueden declararse métodos
abstractos
 Un método abstracto de una clase es un
método incompleto:
 Tiene definición pero no tiene cuerpo: no está
implementado
 Se espera que las clases concretas que heredan de

esa superclase implementen (sobreescriban) dicho


método

Universidad FASTA – Programación B 3


Clases y métodos abstractos
Abstracción de Métodos
 La abstracción de métodos es una técnica muy útil
para definir patrones de comportamiento para
clases derivadas

 Permite diseñar plantillas (templates), donde el


comportamiento común de una jerarquía de clases se
define en un conjunto de métodos dentro de la superclase
abstracta, imponiendo un comportamiento común para
todas las subclases pero sin dictar cómo implementarlo

 Los métodos abstractos, deben ser implementados en las


subclases, tomando en ellas su comportamiento específico

Universidad FASTA – Programación B 4


Clases y métodos abstractos
 Si una clase contiene métodos abstractos, entonces
la clase debe definirse/considerarse como abstracta

 No obstante pueden existir clases abstractas sin


métodos abstractos:
 Todos los métodos están implementados
 Al mismo tiempo, no se desean instancias de esa clase

 Si se van a crear instancias de una subclase que


hereda de una superclase abstracta, en la subclase
deben implementarse todos los métodos declarados
como abstractos en la superclase

Universidad FASTA – Programación B 5


Clases y métodos
abstractos en UML
Se expresan en cursiva

Vehiculo

-velocidadMaxima

+frenar()
+getVelocidadMaxima()

Universidad FASTA – Programación B 6


Clases y métodos
abstractos en UML
Figura

+calcularArea(): Float
+calcularPerimetro(): Float

Triangulo Rectangulo

-lado1: Float -base: Float


-lado2: Float -altura: Float
-lado3: Float
+calcularArea(): Float
+calcularArea(): Float +calcularPerimetro(): Float
+calcularPerimetro(): Float

Circulo

-radio: Float

+calcularArea(): Float
+calcularPerimetro(): Float

Universidad FASTA – Programación B 7


Clases y métodos abstractos
Para pensar…
¿Cuántas subclases abstractas se pueden declarar en una jerarquía de clases?

 Las que sean necesarias. La


Herencia es fundamental en
los lenguajes OO y es vital que
cualquier clase pueda ser
extendida por otras,
independientemente de la
cantidad de superclases que
esta tuviera

 Noobstante, no es muy común


tener 2 o 3 clases sucesivas
abstractas sin una
implementación concreta.

Universidad FASTA – Programación B 8


Clases y métodos abstractos
Para pensar…

Una superclase ¿debe ser abstracta o concreta?


 Unasuperclase puede ser
abstracta o concreta.

 Una subclase puede


adicionar / modificar
comportamiento heredado de
una superclase
independientemente de que
esta sea abstracta o concreta

Universidad FASTA – Programación B 9


Clases y métodos abstractos
Para pensar…

¿Es necesario implementar todos los métodos abstractos?


 Sí,
alguna subclase debe en
algún nivel de la herencia
implementar los métodos
abstractos. Si eso no se hace y el
método abstracto es invocado, se
producirá una excepción o fallo
en tiempo de ejecución

 Si
una clase derivada no
implementa algunos de los
métodos abstractos de su
superclase, debe ser
considerada abstracta

Universidad FASTA – Programación B 10


Clases y métodos abstractos
Para pensar…

Un método declarado como abstracto ¿puede ser declarado


privado?

Los modificadores private y abstract no tienen sentido juntos:

 Un método abstracto necesita ser sobreescrito por alguna


subclase

 Pero si las subclases no tienen acceso a miembros privados de


sus superclases, no lo podrán sobreescribir

Los métodos abstractos debieran ser public o protected

Universidad FASTA – Programación B 11


Clases y métodos abstractos
Para pensar…

¿Se puede declarar un constructor para una clase


abstracta?

Sí, una clase abstracta puede tener constructores, pero estos no


serán utilizados para instanciar objetos de la clase abstracta.

Los constructores en clases abstractas se implementan para ser


llamados por los constructores de las subclases concretas,
utilizando las invocaciones inherited (Delphi) o super (Java).

Universidad FASTA – Programación B 12


Interfaces

 Una interfaz (en inglés, interface) es un tipo de clase


especial: NO implementa ninguno de sus métodos
 Provee una clase abstracta en extremo: no permite
ninguna implementación de métodos
 Ofrece un contrato, una “interfaz de programación
de aplicaciones” (API)
 En algunos lenguajes, posibilita implementar el
concepto de herencia múltiple
 Una interfaz puede extender de otra interfaz

Universidad FASTA – Programación B 13


Interfaces
Abstracción Pura
 Conceptualmente, una interfaz indica…

“Esto es lo que todas las clases que implementen esta interface


están obligadas a proveer”

 Una interfaz…
 No provee ninguna implementación
 Establece la forma de una clase:
 Nombres de métodos, Tipos de Parámetros, Retorno

 Una interfaz NO forma parte de la jerarquía de clases


 Clases dispares pueden implementar una misma interfaz

Universidad FASTA – Programación B 14


Interfaces
Abstracción Pura

¿Para qué se utilizan las interfaces?

 Razón de fondo: hacer upcast a más de una clase


superior
 ofrecer una solución semejante a Herencia Múltiple

 Definir lo que una clase exporta, sin implementarlo

Universidad FASTA – Programación B 15


¿Interface o Clase Abstracta?
¿Qué conviene usar?
 Interfaz, si la funcionalidad que se está creando va a
proporcionar comportamiento común a clases no
relacionadas
 Las clases abstractas deben utilizarse principalmente para objetos
estrechamente relacionados

 Interfaz, si se van a diseñar fragmentos pequeños y concisos


de funcionalidad
 Si se diseñarán unidades funcionales grandes, conviene utilizar clases
abstractas
 Si se van a definir unos pocos métodos, las interfaces son una buena
solución

Universidad FASTA – Programación B 16


¿Interface o Clase Abstracta?
¿Qué conviene usar?

 Clase abstracta, si queremos definir un grupo genérico de


clases y tenemos algunos métodos implementados y/o
variables de instancia que se pueden reutilizar
 Al actualizar la clase base, todas las clases heredadas se actualizan
automáticamente con el cambio.

 Por el contrario, las interfaces son más difíciles de cambiar una vez
creadas porque obliga a actualizar todas las clases que la implementan

Universidad FASTA – Programación B 17


Interfaces en UML
<<interface>>
Dirigible
+retome = 180
+girar(grados)
Dirigible

Vehiculo Vehiculo

-velocidadMaxima -velocidadMaxima

+frenar() +frenar()
+getVelocidadMaxima() +getVelocidadMaxima()
+girar(grados) +girar(grados)

Notación gráfica
Universidad FASTA – Programación B 18
Interfaces
Implementación de Herencia Múltiple
Vehículo

VehiculoTerrestreConRuedas VehiculoAereo

Lenguajes que NO soportan


Herencia Múltiple

Vehículo
Automovil Camion Avion HidroAvion

VehiculoAereo
VehiculoTerrestreConRuedas
Lenguajes que soportan
Herencia Múltiple
VehiculoRodante

Avion HidroAvion
Automovil Camion

Universidad FASTA – Programación B 19


Distribuyendo responsabilidades
Un problema al que nos enfrentamos todos…
 Diseñar software orientado a objetos es difícil… y diseñar software
orientado a objetos reutilizable es más difícil aún  Patrones de Diseño
 Asignación de responsabilidades = Distribuir el comportamiento

Universidad FASTA – Programación B 20


Ejercicios prácticos
Un restaurant desea gestionar la facturación que surge de su actividad diaria de acuerdo a la siguiente
operatoria de trabajo:
El restaurant dispone de N mesas (numeradas de 1 a N). Se dispone de M mozos, los cuáles atienden las mesas de
manera rotativa cada día (no atienden siempre las mismas mesas)
Cuando una mesa se ocupa, el mozo abre la Orden para esa mesa informando al facturista el número de la mesa y
la cantidad de comensales que se atenderán. Automáticamente se asocia a la Orden la hora de inicio de la atención
A medida que los comensales van pidiendo platos y bebidas del menú, se irán registrando los mismos en la Orden
Cuando se cierra la Orden, se emite un ticket/factura detallado y se sumarizan sus precios para obtener el total a
pagar.
El cliente paga ya sea con Tarjetas de Crédito o con efectivo. En el caso de las TC, registrar qué Tarjeta de Crédito
se usó (VISA, MASTERCARD, etc.), número identificatorio de la tarjeta, fecha de expiración y nombre del titular.
Una vez retirados los comensales, el mozo informa la propina dejada por los comensales y se registra la hora de
finalización de la Orden
El sistema deberá generar informes estadísticos y de facturación por diversos criterios: Mesa, Mozo, Fecha, Día de la
semana, ranking de platos/bebidas más consumidos, cantidad de comensales, medios de pago utilizados, tiempos de
atención promedio, propinas por mozo, etc.

Aplicar los conceptos propios de la Orientación a Objetos vistos hasta el momento:


-Identificar clases con sus atributos y métodos
-Identificar relaciones de Herencia, Clases Abstractas, Interfaces, agregación, composición, cardinalidad
-Identificar Métodos y variables de Clase (miembros estáticos)
-Indicar especificadores de acceso (privado, protegido, público)
-Definir constructores,
Universidad FASTAidentificar métodos sobrecargados,
– Programación B aplicar sobreescritura.
21
Ejercicios prácticos Avenida
Avenida

Se solicita generar las clases necesarias para representar el comportamiento de un Sistema de Control de
Semáforos Centralizado, como el esquematizado en la figura, donde las elipses representan los semáforos, la franja
verde, una Avenida y las franjas grises, las calles transversales.
Un semáforo puede estar en Rojo, Verde o Amarillo. La secuencia de transición posible es: Verde, Amarillo, Rojo,
Verde…
Los semáforos ubicados sobre la avenida deben coordinar una onda verde, es decir que una vez que un semáforo
pasó a encender su luz verde, el semáforo de la intersección siguiente deberá pasar a verde luego de 10” (este valor
debería poder ser modificado por el sistema). Cuando un semáforo sobre la avenida se desea pasar a verde, deberá
notificar al semáforo que controla el tráfico sobre la correspondiente transversal para que el mismo comience su
transición a rojo.
En el sistema que se está diseñando los objetos Avenida deben conocer cuales son todos los semáforos que
poseen. Es importante notar que solamente los semáforos que están sobre una avenida tienen semáforos sucesores
(elipses blancas en el dibujo) y asociados a su calle transversal (elipses negras).
Todos los días el sistemas de semáforo de las avenidas comienza a funcionar a las 6 de la mañana. A partir de las
23 horas todos los semáforos de la avenida y sus transversales permanecen en Amarillo intermitente (en el sistema de
objetos existe un objeto reloj, al cual se le puede enviar el mensaje hora, el cual retorna la hora actual)
Se solicita definir las clases: Avenida y Semáforo

Universidad FASTA – Programación B 22


Ejercicios prácticos
Una empresa de hardware pretende un sistema para gestionar el stock de sus insumos y la
facturación de sus productos y servicios. Se informa que:
 Cada factura de venta implica una reducción en el stock de los artículos. Además de equipos
completos, insumos (cartuchos, CD, DVD, etc.) y partes (discos rígidos, monitores, etc.), la empresa
también factura servicios como cursos y soporte técnico, que no afectan al subsistema de stock
La empresa factura a sus clientes en dos modalidades: Contado y Cuenta Corriente. Este último tipo,
implica almacenar información adicional del cliente, vencimiento de los pagos y gestión de los mismos
Respecto a las compras, solamente interesa administrar el stock de partes e insumos, y no la cuestión
monetaria de las mismas. El comprobante que registra el ingreso de mercadería es el informe de
recepción. Los equipos completos incrementan su stock mediante órdenes de producción, que
exceden el alcance de este sistema. También excede el alcance del sistema el decremento del stock
de las partes usadas en el equipo completo.
Cada artículo está identificado por un código único. Además posee una descripción, precio de venta
mayorista y minorista, punto de pedido. Un artículo debe estar activo para poder incluirlo en una venta
Un equipo completo está conformado por el ensamble de partes.

Aplicar los conceptos propios de la Orientación a Objetos vistos hasta el momento:


-Identificar clases con sus atributos y métodos
-Identificar relaciones de Herencia, Clases Abstractas, Interfaces, agregación, composición, cardinalidad
-Identificar Métodos y variables de Clase (miembros estáticos)
-Indicar especificadores de acceso (privado, protegido, público)
-Definir constructores,
Universidad FASTAidentificar métodos sobrecargados,
– Programación B aplicar sobreescritura.
23

También podría gustarte