Programación Orientada a Objetos Conceptos Básicos
Programación Orientada a Objetos Paradigma de programación Un programa orientado a objetos está organizado como un conjunto de agentes en interacción llamados objetos. Cada objeto proporciona un servicio o realiza una acción que es usada por otros objetos
Objetivos de la POO Con el paradigma de la POO se buscan los siguientes objetivos fundamentales [Meyer,1999]: Corrección: Capacidad del software para realizar con exactitud sus tareas, tal y como se definen en las especificaciones Robustez: Capacidad del software de reaccionar adecuadamente ante condiciones excepcionales. Complementa a la corrección, caracterizando lo que ha de suceder fuera de las especificaciones Reutilización o reusabilidad (Reusability): Capacidad del software de servir para la construcción de cuantiosas aplicaciones diferentes Extensibilidad: Facilidad de adaptar el software a los cambios de especificación
Elementos de los Lenguajes OO Para ello, se suelen utilizar los siguientes elementos en la Programación Orientada a Objetos: Encapsulamiento (encapsulación): Proceso de almacenar en un mismo compartimento los elementos de una abstracción que constituyen su estructura y su comporta-miento [Booch, 1996] Manejo de excepciones: Mecanismo para recuperar el sistema de situaciones anómalas o erróneas detectadas en tiempo de ejecución [Meyer, 1999] Precondiciones: Condición que siempre debe cumplirse previa ejecución de una sección de código. Se aplica a funciones, bucles, clases y especificaciones formales. Postcondiciones: Condición que siempre debe cumplirse posteriormente a la ejecución de una sección de código. Se aplica a funciones, bucles, clases y especificaciones formales. Invariantes: Condición que expresan restricciones de consistencia de una abstracción. Se aplica a funciones, bucles, clases y especificaciones formales.
Elementos de los Lenguajes OO Sobrecarga: Capacidad de poder asociar más de un significado a un elemento del programa [Meyer, 1999]. Se aplica a funciones, métodos y operadores. Herencia: Relación de generalización / especialización entre dos o más abstracciones [Hernández-Orallo, 2002] Polimorfismo: Capacidad de utilizar a una misma abstracción con distintos tipos, resultando en abstracciones más generales y abstractas. Genericidad: Propiedad que permite construir abstracciones modelo para otras abstracciones. Se aplica a funciones, métodos y clases. Bibliotecas estándar: Clases estándar y reutilizables dirigidas a solventar las necesidades comunes del desarrollo de software [Meyer, 1999].
Programación Orientada a Objetos Ventajas: El desarrollo de aplicaciones es muy sencillo e intuitivo. El código es muy elegante, fácil de comprender y mantener. Los objetos son completamente independientes, por tanto la facilidad para la programación en equipo y la reutilización son muy altos. Inconvenientes: Al principio resulta difícil resolver un problema mediante objetos, supone un cambio de mentalidad respecto a la programación tradicional.
Noción de Clase y de Instancia
Representación gráfica (notación UML) de una clase
Objeto Es una instancia de una clase, creada en tiempo de ejecución Es una estructura de datos formada por tantos campos como atributos tiene la clase. El estado de un objeto viene dado por el valor de los campos Los métodos permiten consultar y modificar el estado del objeto. Durante la ejecución de un programa OO se crearán un conjunto de objetos.
Interfaz de una clase La interfaz de una clase define el tipo de peticiones (operaciones) que se le pueden hacer a objetos de esa clase Describe qué hace un objeto de una clase A un usuario de una clase sólo le hace falta conocer su interfaz
Herencia de clases Mecanismo para definir similitud entre clases Se enlazan una clase base y una o varias clases derivadas La clase Base contiene todas las características (atributos) y comportamientos (métodos) comunes, compartidas por las clases derivadas
Ejemplo de herencia de clases
Características de la herencia Cuando se hereda de una clase Base, se crea una nueva clase que: Contiene todos los atributos de la clase Base Contiene la interfaz de la clase Base Relación es-un un objeto de la clase Derivada es también un objeto de la clase Base
Extensión de clases La clase Derivada puede añadir nuevos métodos y/o atributos no son parte de la clase Base, sino una extensión
Sobreescritura de métodos Cambio en la implementación de alguno de los métodos las clases derivadas tendrán la misma interfaz pero una implementación distinta
Otros tipos de Relaciones Agregación es la relación de parte_de Composición es una variedad de agregación más fuerte, el objeto parte permanece solo con el todo, cuando el todo desaparece la parte también. Asociación relaciona dos elementos
Preguntas