Clase 2
Clase 2
Orientada a Objetos
Introducción
• Los problemas suelen tener varias soluciones
posibles.
• En programación existen diversas metodologías que
nos ayudan a enfrentar un problema.
• Cada metodología tiene diversos lenguajes que las
soportan.
• Algunos lenguajes soportan varias metodologías.
Metodología Lenguaje
Estructurada Fortran, C, Pascal,
Basic
Orientada a objetos C++, Java, Smalltalk
(OOP)
Orientada a eventos VisualBasic
Programación Orientada a
Objetos
Definición:
La Programación Orientada a Objetos (OOP) es un método
de programación en el cual los programas se organizan en
colecciones cooperativas de objetos, cada uno de los cuales
representa una instancia de alguna clase, y cuyas clases son,
todas ellas, miembros de una jerarquía de clases unidas
mediante relaciones de herencia.
Comentarios:
• Usamos objetos en lugar de algoritmos como bloque fundamental
• Cada objeto es una instancia de una clase
• Las clases están relacionadas entre sí por relaciones tan complejas como
la herencia
Ventajas de la POO
• Proximidad de los conceptos modelados
respecto a objetos del mundo real
• Facilita la reutilización de código y por
tanto el mantenimiento del mismo
• Se pueden usar conceptos comunes
durante las fases de análisis, diseño e
implementación
• Disipa las barreras entre el qué y el cómo
Desventajas de la POO
• Mayor complejidad a la hora de entender el flujo
de datos
• Pérdida de linealidad
• Requiere de un lenguaje de modelización de
problemas más elaborado:
• Unified Modelling Language (UML)
• Representaciones gráficas más complicadas
Conceptos de la OOP
Conceptos básicos Tipos de relaciones
• Objeto • Asociación
• Clase • Herencia
• Agregación
Características de la OOP
• Instanciación
• Abstracción:
• Encapsulamiento:
• Modularidad: Representaciones gráficas
• Jerarquía • Diagramas estáticos (de
clases, de objetos...)
Otros conceptos OOP • Diagramas dinámicos (de
• Tipos interacción...)
• Persistencia
Objeto y Clase
Un objeto es algo de lo Una clase describe los
que hablamos y que objetos del mismo tipo
podemos manipular • Todos los objetos son
• Existen en el mundo real instancias de una clase
(o en nuestro
• Describe las propiedades
entendimiento del
mismo) y el comportamiento de
un tipo de objetos
Objeto:Clase Clase
Atributo1=valor Atributos
Atributo2=valor
... Operaciones
Conceptos OOP: Abstracción
• Nos permite trabajar con la complejidad del mundo real
• Resaltando los aspectos relevantes de los objetos de una clase
• Ocultando los detalles particulares de cada objeto
• Separaremos el comportamiento de la implementación
• Es más importante saber qué se hace en lugar de cómo se
hace:
Un sensor de temperatura
• Se define porque...
• mide la temperatura
• nos muestra su valor
• se puede calibrar...
• No sabemos... (no nos importa)
• cómo mide la temperatura
• de qué está hecho
• cómo se calibra
Conceptos OOP: Abstracción
• La abstracción no es única:
Figura plana
Escaleno
Herencia simple
Rectángulo Cuadrado
Superclase Subclase
Relación de Agregación
• Una clase contiene a otra
clase
• Ésta “es parte de” aquélla.
• También se denomina
relación “es parte de” (has a)
• Una clase puede contener a otra:
• Por valor: Cuando los objetos de la clase contenida
se crean y destruyen al mismo tiempo que los de la
clase continente
• Por referencia: Cuando no necesariamente ocurre
lo anterior
Relación de Agregación
Un auto está hecho de
• Volante Volante
• Palanca de cambio
Marchas
• Motor
auto
• Ruedas
Motor
Ruedas
Relación de Instanciación
• En determinados casos una clase (p.ej. un vector)
puede implementarse independientemente del tipo
(real, complejo, color...) de alguno de sus atributos:
• Definimos una clase
parametrizada o template
(plantilla) Tipo
llegué subir
llegué
Bajando al
primer piso
bajar
time-out
Diagrama secuencial:
Impresión
Ordenador Servidor Impresora Cola