Conceptos Objeto Clase Atributo / Método Encapsulamiento Mensaje Herencia Polimorfismo...

Post on 11-Apr-2015

163 views 0 download

Transcript of Conceptos Objeto Clase Atributo / Método Encapsulamiento Mensaje Herencia Polimorfismo...

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 losObjetos 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 Métodos

Color

Placa

Capacidad

Arrancar()

Detenerse()

Recoger pasajeros()

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

* color * placa* capacidad

* amarillo* XXX* 50

Objeto Conductor Objeto Bus

Visibilidad de los Atributos -Encapsulamiento (cont.)

Privada : solo el objeto puede referenciar directamente sus atributos

* color * placa* capacidad

* amarillo* XXX* 50

Objeto Conductor Objeto Bus

X

Visibilidad de los Atributos- Encapsulamiento

Todos los atributos deben tener visibilidad privada

EL RESTO DE OBJETOS NO CONOCEN LOS DETALLES DE LA IMPLEMENTACION

* color * placa* capacidad

* amarillo* XXX* 50

Objeto Conductor Objeto Bus

Comportamiento

setColor (color)

getColor (): color

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)

ESTADO COMPORTAMIENTO

objetos

Color

Placa

Capacidad

Buses (color, placa, capacidad)

Buses ()

CLASE DE BUSES

Tipos de Métodos (cont.)

Analizadores: Permiten obtener el estado

* color * placa* capacidad

* amarillo* XXX* 50

Objeto Conductor Objeto Bus

Comportamiento

getColor (): colorgetCapacidad()intgetPlaca():Placa

Tipos de Métodos (cont.)

* color * placa* capacidad

* amarillo* XXX* 50

Objeto Conductor Objeto Bus

Comportamiento

setColor(color)setCapacidad(capacidad)setPlaca(placa)

Modificadores: Permiten cambiar el estado

Tipos de Métodos (cont.)

Objeto Conductor Objeto Bus

Comportamiento

destroy()

Destructores : permiten eliminar un objeto

Mensaje

Color:

Placa:

Capacidad:

Amarillo

Xxx

50

Objeto Conductor

Objeto Bus

Comportamiento

Buses(color,placa, capacidad)Buses()getColor().ColorgetPlaca():PlacagetCapacidad()intsetColor(color)setPlaca(placa)setCapacidad(capacidad)destroy()

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

Herencia (cont.)

Permite definir una clase en función de otra

Superclase

Subclase

RedefinirMétodos

AgregarMétodos

Agregaratributos

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

Promedio: floatestaAprobando():Boolean

Herencia (cont.)

Redefinición de métodos

Persona

Estudiante

Magister

Promedio: floatestaAprobando(){If Promedio>=3.0 return TRUE; else return FALSE}

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

Las instancias de magíster pueden referenciar directamente el atributo promedio de la instancia padre estudiante

Persona

Estudiante

Magister

Promedio: float

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

Int calculeCapacidad(){ return 0;}

Int calculeCapacidad(){ return numerosillas *3;}

Int calculeCapacidad(){ return numerosillas *2+1;}

VEHÍCULO

BUS AUTOMOVIL

Encadenamiento Dinámico

VEHICULO_1 VEHICULO_2 VEHICULO_3

VEHICULO_3

VEHICULO_4 VEHICULO_5

Z = ARREGLO [3].calculeCapacidad()

Automovil.calculeCapacidad()

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=20Buses( amarillo, XXX, 20)

ESTADO COMPORTAMIENTO

objetos

Color

Placa

Capacidad

Buses (color, placa, capacidad)

Buses ()

CLASE DE BUSES

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 clasesNo es posible crear instancia >> Es

abstractaExpone métodos implementados que

pueden ser redefinidos con base en la herencia

Expone métodos abstractos Deben ser redefinidos en Subclases Modelan funcionalidad