Conceptos Objeto Clase Atributo / Método Encapsulamiento Mensaje Herencia Polimorfismo Encadenamiento Dinámico
Objeto Representa una instancia de un elemento del mundo del problema Es cualquier elemento que se pueda describir en términos de su estado y su comportamiento
Características de los Objetos Pueden ser: Cosas Sencillos y Complejos Reales o imaginarios(conceptuales) Ej. Cuenta bancaria, transacción, Juan, Leon,etc.
Implementación oculta Representa elementos internos de un objeto que pueden ser dañadas por un cliente poco cuidadoso.=> ocultar la implementación disminuye errores. El diseñador de bibliotecas puede cambiar el funcionamiento interno de la clase sin preocuparse sobre cómo afectará al programador cliente
Clases Agrupa un conjunto de objetos del mundo del problema que tienen las mismas características y el mismo comportamiento Son plantillas para crear objetos. Un objeto es una instancia de una clase Ej. Receta para hacer galletas de chocolate. Con ella creas una o muchas galletas de chocolate
Atributo / Método
Atributos Describen el estado de un objeto Objetos simples Tipos de datos primitivos Ej. int, float, double, char, etc Objetos Complejos Referencias a otros objetos Ej. Estructuras de datos u otros objetos
Visibilidad de los Atributos - Encapsulamiento Pública : Los otros objetos pueden referenciar directamente el atributo
Visibilidad de los Atributos - Encapsulamiento (cont.) Privada : solo el objeto puede referenciar directamente sus atributos
Visibilidad de los Atributos - Encapsulamiento Todos los atributos deben tener visibilidad privada EL RESTO DE OBJETOS NO CONOCEN LOS DETALLES DE LA IMPLEMENTACION
Métodos Son servicios que describen el comportamiento asociado a un objeto Pueden conducir al cambio del estado de un objeto Se activa por medio de un mensaje al objeto Métodos se pueden llamar entre ellos Es posible darles visibilidad (Pública, Privada)
Tipos de Métodos Constructores Buses( rojo, AAA, 20 ) Buses( amarillo, XXX, 20)
Tipos de Métodos (cont.) Analizadores: Permiten obtener el estado
Tipos de Métodos (cont.) Modificadores: Permiten cambiar el estado
Tipos de Métodos (cont.) Destructores : permiten eliminar un objeto
Mensaje Mecanismo de comunicación ente objetos para solicitar servicios
Herencia Construir un objeto a partir de otro - Usar atributos y métodos de antecesor Ventaja >> Reutilización Persona Estudiante Pregrado Magister Especialización Instructor Asistente Generalización
Herencia (cont.) Permite definir una clase en función de otra Superclase Subclase Redefinir Métodos Agregar atributos
Herencia (cont.) Agregar Atributos Persona Estudiante Pregrado Magister Especialización Instructor Asistente Promedio: float
Herencia (cont.) Agregar métodos Persona Estudiante Pregrado Magister Especialización Instructor Asistente estaAprobando():Boolean Promedio: float
Herencia (cont.) Redefinición de métodos Persona estaAprobando() Estudiante Magister Promedio: float estaAprobando() {If Promedio>=3.0 return TRUE; else return FALSE} {If Promedio>=3.75
Visibilidad y Herencia Hereda? Puede Acceder? Public Si Private No
Visibilidad Protegida Persona Estudiante Magister Promedio: float Las instancias de magíster pueden referenciar directamente el atributo promedio de la instancia padre estudiante
Polimorfismo Habilidad para adoptar formas distintas Persona Estudiante Magister Objeto Magister Objeto Persona Objeto Estudiante: Métodos de persona y estudiante Métodos de persona, estudiante y magister
Contenedor Polimorfico Colección de Personas (Arreglo) Estudiante (Juan Pérez) Pregrado (Margarita Rojas) Magister (María Rodríguez) Especialización (Carlos Ruiz)
Encadenamiento Dinámico
Encadenamiento Dinámico
Sobrecarga de métodos Métodos dentro de una misma clase que tienen el mismo nombre pero distinta firma No rebuscar nombres de métodos para operaciones similares
Sobrecarga de métodos Buses() valores por defecto: Color=rojo, Placa=AAA, Cap=20 Buses( amarillo, XXX, 20)
Interface Expone un conjunto de métodos sin definir Quien la implementa es responsable de la programación de los métodos expuestos y por tanto expone todos los métodos de dicha clase
Clase Abstracta Es una plantilla para otras clases No es posible crear instancia >> Es abstracta Expone métodos implementados que pueden ser redefinidos con base en la herencia Expone métodos abstractos Deben ser redefinidos en Subclases Modelan funcionalidad