Story Transcript
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