2. ¿Qué es un Objeto?
Los Objetos del Mundo Real comparten 2
características: Todos ellos tienen
● Estado
● Comportamiento.
Los perros tienen Estado (nombre, color, raza,
hambre) y Comportamiento (ladrar, traer algo,
mover la cola).
3. ¿Qué es un Objeto?
Las bicicletas también tienen Estado (cambio
actual, revoluciones por minuto del pedal,
velocidad actual) y Comportamiento (cambiar
cambio, cambiar las revoluciones por minuto,
aplicar los frenos).
● Identificando el Estado y el Comportamiento de
los Objetos del Mundo Real es una gran forma
de comenzar a pensar en términos de
Programación Orientada a Objetos (POO).
4. ¿Qué es un Objeto?
Ejemplo de Objetos
● Perro
● Escritorio
● Televisión
● Bicicleta
5. ¿Qué es un Objeto?
Cuando diseñamos en POO, estas preguntas son
interesantes para definir Objetos:
● ¿Cuáles son los posibles Estados en que puede
estar este Objeto?
● ¿Cuáles son los posibles comportamientos que
este Objeto puede realizar?
6. ¿Qué es un Objeto?
Ejemplos:
● Lampara de Escritorio
– Estado: prendido,apagado.
– Comportamiento: prender,apagar.
● Radio
– Estado: prendido,apagado,volumen actual, estación
actual.
– Comportamiento: prender, apagar, incrementar
volumen, decrementar volumen,
adelantar/atrasar, buscar canal,sintonizar.
7. ¿Qué es un Objeto?
Los Objetos varían en complejidad.
Un objeto de software
8. ¿Qué es un Objeto?
Los Objetos de Software son, conceptualmente,
similares a los Objetos del Mundo Real: ellos
también consisten de Estado y Comportamiento.
Un Objeto guarda su estado en campos (fields)
(variables en algunos lenguajes de
programación) y expone su comportamiento a
través de métodos (funciones en algunos
lenguajes de programación).
9. ¿Qué es un Objeto?
Los métodos operan en el estado interno del
Objeto y sirven como el mecanismo principal
para la comunicación Objeto-a-Objeto.
Escondiendo el estado interno y requiriendo que
toda la interacción sea realizada a través de los
Métodos es conocida como Encapsulamiento de
los Datos (Data Encapsulation), un principio
fundamental de la POO.
Considere una bicicleta, por ejemplo.
10. ¿Qué es un Objeto?
Una bicicleta modelada como Objeto de Software
11. ¿Qué es un Objeto?
Atribuyendo Estados (velocidad actual,
revoluciones por minuto del pedal, cambio
actual) y proveyendo métodos para cambiar ese
Estado, el Objeto queda en control de como el
Mundo Exterior tiene permitido usarlo.
Por ejemplo, si la bicicleta solo tiene 6 cambios,
un método para cambiar los cambios puede
rechazar cualquier valor que es menor a 1 o
mayor a 6.
12. ¿Qué es un Objeto?
Construyendo el código en Objetos de Software
individuales provee varios beneficios,
incluyendo:
● Modularidad: El código fuente de un Objeto
puede ser escrito y mantenido
independientemente de los códigos fuentes de
otros Objetos. Una vez creados, un Objeto
puede ser fácilmente dejado de lado dentro del
Sistema.
13. ¿Qué es un Objeto?
● Ocultar Información: Interactuando solo con los
métodos de un Objeto, los detalles de su
implementación interna permanece oculto del
Mundo Exterior.
● Reutilización de Código: Si un Objeto ya existe
(seguramente escrito por otro desarrollador de
software), se puedes usar ese Objeto en nuestro
Programa. Esto permite que los especialistas
implementen/testeen/prueben complejos
Objetos específicos para una tarea, en el que se
puede confiar para correr en nuestro código.
14. ¿Qué es un Objeto?
● Facilidad de Integración y de Prueba: Si un
Objeto particular se vuelve problemático, se
puede simplemente removerlo de la aplicación e
integrar un Objeto diferente en su reemplazo.
Esto es análogo arreglar problemas mecánicos
en el mundo real. Si se rompe una bombilla, se
lo reemplaza, no la máquina entera.
15. ¿Qué es una Clase?
En el mundo real, siempre se encuentran muchos
Objetos individuales del mismo tipo. Pueden
haber miles de otras bicicletas en existencia,
todas de la misma marca y modelo. Cada
bicicleta fue construida del mismo conjunto de
Modelos y entonces contienen los mismos
componentes. En términos de Orientación a
Objeto, se dice que la bicicleta es una instancia
de la Clase de Objetos llamada Bicicletas. Una
clase es un Modelo del cual Objetos
individuales son creados.
16. ¿Qué es una Clase?
La siguiente clase Bicicleta es una de las posibles
implementaciones de una bicicleta.
(Código Fuente de la Bicicleta)
17. ¿Qué es una Clase?
El diseño de esta clase esta basado en los Objetos
bicicleta discutidos anteriormente. Los campos
cadence, speed y gear representan el Estado de
este Objeto, y los métodos (changeCadence,
changeGear, speedUp, etc) define su
interacción con el Mundo Exterior.
Esta es la clase BicycleDemo que crea 2 Objetos
Bicycle separados e invoca sus métodos.
(Código Fuente del Demo de la Bicicleta)
18. ¿Qué es una Clase?
La salida de este test imprime la revolución por
minuto final, velocidad y cambio de las dos
bicicletas:
cadence:50 speed:10 gear:2
cadence:40 speed:20 gear:3
19. ¿Qué es Herencia?
Diferentes tipos de Objetos regularmente tienen
cierta cosas en común entre si. Las bicicletas de
montaña, las bicicletas de camino y las
bicicletas en serie, por ejemplo, comparten las
características de las bicicletas (velocidad
actual, revoluciones por minuto actual, cambio
actual). Cada uno define características
adicionales que los hacen diferentes: las
bicicletas en serie tienen 2 asientos y 2
manubrios; las bicicletas de camino tienen
manubrios encorvados.
20. ¿Qué es Herencia?
Algunas bicicletas de montaña anillos de cadena
adicionales, que les brinda un cambio de menor
proporción.
POO permite que las clases hereden los Estados y
Comportamientos comúnmente utilizadas de
otras clases. En este ejemplo, Bicycle se
convierte ahora la superclase de MountainBike,
RoadBike, y TandemBike. En el Lenguaje de
Programación Java, cada clase puede tener una
superclase directa, y cada superclase tiene el
potencial de un número ilimitado de subclases:
22. ¿Qué es Herencia?
La sintaxis para crear una subclase es simple. Al
comienzo de una declaración de clase, se usa la
palabra reservada extends, seguida del nombre
de la clase de la cual hereda:
class MountainBike extends Bicycle {
// new fields and methods defining a mountain
bike would go here
}
23. ¿Qué es Herencia?
Esto brinda a MountainBike todos los mismo
campos y métodos que tiene Bicycle, además de
permitir que su código se concentre
exclusivamente en las características que lo
hacen único. Esto hace que el código para la
subclase sea fácil de leer. Sin embargo, se debe
documentar adecuadamente el estado y
comportamiento que cada superclase define, ya
que ese código no aparecerá en el código fuente
de casa subclase.
24. ¿Qué es una Interfaz?
Los Objetos definen su interacción con el Mundo
Exterior a través de métodos que ellos exponen.
Los métodos forman la Interfaz del Objeto con el
Mundo Exterior.
Los botones al frente de un televisor, por ejemplo,
son la interfaz entre nosotros y el cableado
eléctrico dentro de la cubierta de plástico. Se
presiona el botón “Encender” para prender y
apagar el televisor.
En su forma más común, una interfaz es un grupo
de métodos relacionados con cuerpos vacíos.
25. ¿Qué es una Interfaz?
El comportamiento de una bicicleta, si es
especificado como una interfaz, es como sigue:
interface Bicycle {
void changeCadence(int newValue); // wheel
revolutions per minute
void changeGear(int newValue);
void speedUp(int increment);
void applyBrakes(int decrement);
}
26. ¿Qué es una Interfaz?
Para implementar esta interfaz, el nombre de la
clase debe cambiar se usa la palabra clave
implements en la declaración de la clase:
class ACMEBicycle implements Bicycle {
// remainder of this class implemented as before
}
27. ¿Qué es una Interfaz?
Implementar una interfaz permite a una clase
volverse más formal sobre el comportamiento que
promete proveer. Las interfaces forman un
contrato entre las clases y el mundo exterior, y su
contrato es obligado en tiempo de compilación por
el compilador. Si la clase dice que implementa una
interfaz, todos los métodos definidas por esa
interfaz deben aparecer en el código fuente antes
de que la clase se compile con éxito.
28. ¿Qué es un Paquete?
Un paquete es un espacio de nombres que organiza
un conjunto de clase e interfaces relacionadas.
Conceptualmente, los paquetes son similares a las
carpetas de una computadora. E una carpeta se
guardan páginas HTML, imágenes en otra y los
scripts o aplicaciones en otra.
29. Preguntas y Ejercicios
● Los Objetos del Mundo Real contienen __ y __
● El estado de un Objeto de Software es almacenado
en __
● El Comportamiento de un Objeto de Software es
expuesto a través de __
● Ocultar datos internos del Mundo Exterior, y
accederlos a través de métodos expuestos
públicamente es conocido como __
● El Modelo para un Objeto de Software es llamado
__
30. Preguntas y Ejercicios
● El Comportamiento puede ser definido en una __ y
heredada en una __ usando la palabra clave __
● Un espacio de nombres que organiza clases e
interfaces por su funcionalidad es llamado __
● Crear nuevas clases para cada Objeto del Mundo
Real que observa.
● Por cada clase que creó, cree una interfaz que
defina su comportamiento, luego haga que la clase
lo implemente.
31. Referencias
● The Java Tutorials
– http://download.oracle.com/docs/cd/E17409_01/ja
vase/tutorial/index.html