Conceptos z z z z z z z z Objeto Clase Atributo / Método Encapsulamiento Mensaje Herencia Polimorfismo Encadenamiento Dinámico Objeto z Representa una instancia de un elemento p del mundo del problema z Es cualquier elemento que se pueda describir en términos de su estado y su comportamiento Características de los Objetos z Pueden ser: { Cosas { Sencillos y Complejos { Reales o imaginarios(conceptuales) z Ej. Cuenta bancaria, transacción, Juan, , Leon,etc. Implementación oculta zRepresenta elementos internos de un j q que p pueden ser dañadas p por un objeto cliente poco cuidadoso.=> ocultar la implementación disminuye errores errores. zEl diseñador de bibliotecas puede cambiar el funcionamiento f interno de la clase sin preocuparse p p sobre cómo afectará al programador cliente Clases zAgrupa un conjunto de objetos del mundo problema q que tienen las mismas del p características y el mismo comportamiento zSon plantillas para crear objetos objetos. zUn objeto es una instancia de una clase z Ej. Receta para hacer galletas de chocolate Con ella creas una o muchas chocolate. galletas de chocolate Atributo / Método Atributos Métodos Color Arrancar() Placa Detenerse() Capacidad Recoger pasajeros() Atributos z Describen el estado de un objeto z Objetos Obj t simples i l { Tipos de datos primitivos { Ej. int, float, double, char, etc z Objetos Complejos { Referencias a otros objetos { Ej. Ej E Estructuras t t de d datos d t u otros t objetos bj t Visibilidad de los Atributos Encapsulamiento z Pública : Los otros objetos pueden referenciar directamente el atributo Colo Obj t Conductor Objeto C d t lo l i r a m r=a * color * placa * capacidad * amarillo * XXX * 50 Obj t Bus Objeto B Visibilidad de los Atributos Encapsulamiento (cont.) z Privada : solo el objeto puede referenciar directamente sus atributos Colo Objeto Conductor X lo l i r a m r=a * color * placa l * capacidad * amarillo * XXX * 50 Objeto Bus Visibilidad de los Atributos - Encapsulamiento z Todos los atributos deben tener visibilidad privada z EL RESTO DE OBJETOS NO CONOCEN LOS DETALLES DE LA IMPLEMENTACION * color * placa * capacidad S et C ol or ( am a rill o) * amarillo * XXX * 50 Comportamiento setColor (color) getColor (): color Objeto Conductor Objeto Bus Métodos z Son servicios que describen el comportamiento asociado a un objeto z Pueden conducir al cambio del estado de un objeto j z Se activa por medio de un mensaje al objeto z Métodos se pueden llamar entre ellos z Es posible darles visibilidad (Pública, Privada) Tipos de Métodos z Constructores B Buses( ( rojo, j AAA AAA, 20 ) B Buses(( amarillo, ill XXX XXX, 20) CLASE DE BUSES Color ESTADO Placa COMPORTAMIENTO Buses (color, placa, capacidad) Buses () Capacidad objetos Tipos de Métodos (cont (cont.)) z Analizadores: Permiten obtener el estado * color * placa * capacidad p Col or = g et Col or * amarillo * XXX * 50 Comportamiento getColor (): color getCapacidad()int getPlaca():Placa Objeto Conductor Objeto Bus Tipos de Métodos (cont (cont.)) z Modificadores: Permiten cambiar el estado * color * placa * capacidad se t Col or (am ari ll o) * amarillo * XXX * 50 Comportamiento setColor(color) setCapacidad(capacidad) setPlaca(placa) Objeto Conductor Objeto Bus Tipos de Métodos (cont (cont.)) z Destructores : permiten eliminar un objeto des tr oy () Comportamiento destroy() Objeto Conductor Objeto Bus Mensaje z Mecanismo de comunicación ente objetos para solicitar servicios Color: Amarillo Placa: Xxx Capacidad: 50 Comportamiento Objeto Conductor Buses(color,placa, capacidad) Buses() getColor().Color g () getPlaca():Placa getCapacidad()int setColor(color) setPlaca(placa) setCapacidad(capacidad) y() destroy() Objeto j Bus Herencia z Construir Co s u u un obje objeto o a pa partir de o otro o - Usa Usar atributos y métodos de antecesor z Ventaja >> Re Reutilización tili ación Persona E t di t Estudiante Pregrado g Magister g Instructor Asistente Especialización p Herencia (cont (cont.)) z Permite definir una clase en función de otra Superclase Subclase Agregar atributos Agregar Métodos Redefinir Métodos Herencia (cont (cont.)) z Agregar Atributos Persona Promedio: float Estudiante Pregrado Magister Instructor Asistente Especialización Herencia (cont (cont.)) z Agregar métodos estaAprobando():Boolean p () Persona Promedio: float Estudiante Pregrado Magister Instructor Asistente Especialización Herencia (cont (cont.)) z Redefinición de métodos estaAprobando() {If Promedio>=3.0 Promedio>=3 0 return TRUE; else return FALSE} Persona Promedio: float Estudiante Magister estaAprobando() {If Promedio>=3.75 return TRUE; else return FALSE} Visibilidad y Herencia Visibilidad Hereda? Puede Acceder? Public Si Si Private Si No Visibilidad Protegida Persona Promedio: float Estudiante Magister z Las instancias de magíster pueden referenciar directamente el atributo promedio de la instancia padre estudiante Polimorfismo z Habilidad para adoptar formas distintas Persona Estudiante Objeto Persona Objeto Estudiante: Métodos de persona y estudiante M i t Magister Objeto Magister Métodos de persona, estudiante y magister Contenedor Polimorfico z Colección de Personas (Arreglo) Estudiante (Juan Pérez) Pregrado (Margarita Rojas) Magister (María Rodríguez) Especialización (Carlos Ruiz) Encadenamiento Dinámico VEHÍCULO BUS Int calculeCapacidad() { return numerosillas *2+1; } Int calculeCapacidad() { return 0; } AUTOMOVIL Int calculeCapacidad() { return numerosillas *3; } Encadenamiento Dinámico VEHICULO_1 VEHICULO_2 VEHICULO_3 VEHICULO_4 VEHICULO_5 Z = ARREGLO [3].calculeCapacidad() Automovil.calculeCapacidad() VEHICULO_3 Sobrecarga de métodos z Métodos dentro de una misma clase que tienen el mismo nombre pero distinta firma { No rebuscar nombres de métodos para operaciones i similares i il Sobrecarga de métodos Buses() valores por defecto: Color=rojo Color=rojo, Placa=AAA Placa=AAA, Cap=20 Buses( amarillo, XXX, 20) CLASE DE BUSES Color ESTADO Placa COMPORTAMIENTO Buses (color, placa, capacidad) Buses () Capacidad objetos Interface z Expone un conjunto de métodos sin definir zQuien 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 zEs E una plantilla l till para otras t clases l zNo es p posible crear instancia >> Es abstracta zExpone métodos implementados que pueden ser redefinidos con base en la herencia zExpone métodos abstractos { Deben D b ser redefinidos d fi id en S Subclases b l { Modelan funcionalidad