Programación
Orientada Objetos
Recursos
Thinking in Java, 3rd ed., Bruce Eckel, Prentice
Hall
Applying UML And Patterns 2d. Edition, Craig
Larman , Prentice Hall
UML in a NutShell (1998), Sinan Sir Alhir ,
O'Reilly
Java 2 - Programador Certificado, Antonio J.
Martin Sierra (Curso Práctico)
Cómo programar en Java, Deitel & Deitel,
Prentice Hall
El paradigma OO
Orientación a objetos
Reusabilidad
Confiabilidad
Robustez
Extensibilidad
Mantenibilidad
En todos los niveles del proceso de
desarrollo: Análisis, diseño y programación
Programación
Orientada a
Objetos
Contenido de la clase
de hoy
• Introduccíón a la Orientación a objetos
• Introducción a la Programación
Orientada a Objetos
Ciclo de Vida de una
Aplicación
La base: Orientación a
Objetos
¿Qué es?
Paradigma: (¿Qué es un paradigma?)
Basado en objetos y clases
Aplicables al análisis, diseño y programación de
una solución
Un sistema software es un conjunto de objetos que
cooperan.
Paradigma OO
Los lenguajes de programación proporcionan
mecanismos para implementar una filosofía o
paradigma de programación. Un paradigma es una
forma de entender y representar la realidad: un
conjunto de teorías, estándares y métodos que,
juntos, representan un modo de organizar el
pensamiento, es decir, un modo de ver el mundo.
Cada nuevo paradigma responde a una necesidad
real de nuevas formas de afrontar problemas. A
menudo un nuevo paradigma es creado como
respuesta a las deficiencias de paradigmas
anteriores.
Paradigmas de
Programación
Un paradigma de programación es una
forma de conceptualizar en qué consiste
la ejecución de un programa y cómo
deben de estructurarse y organizarse
las tareas que se llevaran a cabo en esa
ejecución.A continuación describimos
dos de los principales paradigmas.
Paradigma imperativo Paradigma Orientado a Objetos
La programación imperativa es un El paradigma orientado a objetos (OO)
paradigma de programación que describe la define los programas en términos de
programación en términos del estado del comunidades de objetos.
programa y sentencias que cambian dicho
estado.
Los programas imperativos son un conjunto Los objetos con características comunes se
de instrucciones que le indican a la agrupan en clases
computadora cómo realizar una tarea.
Las recetas, por ejemplo, son conceptos Los objetos son entidades que combinan un
familiares similares en estilo a la estado (es decir, datos) y un
programación imperativa; cada paso es una comportamiento (esto es, procedimientos o
instrucción, y el mundo físico (la métodos). Estos objetos se comunican entre
computadora en el caso de la programación) ellos para realizar tareas.
guarda el estado.
La mayoría de los lenguajes imperativos de Es en este modo de ver un programa donde
alto nivel incorporan cuatro tipos básicos de este paradigma difiere del paradigma
sentencias: asignaciones, ciclos, imperativo o estructurado, en los que los
ramificaciones condicionales, y datos y los métodos están separados y sin
ramificaciones incondicionales. relación.
Ejemplos de lenguajes de programación Entre los lenguajes que soportan el
estructurados son C, Pascal y Ada. paradigma OO están Smalltalk, C++, Delphi
(Object Pascal), Java y C#.
La base: Orientación a
Objetos
Los objetos poseen comportamiento
(operaciones que son capaces de hacer o
mensajes a los que son capaces de reaccionar).
En esta materia nos concentramos en la
aplicación de la orientación a objetos a la
programación en Java
Programación orientada a
objetos
Ventajas
Desarrollo más rápido
Incremento en la calidad
Mantenimiento más sencillo (Modularidad)
Los cambios son más sencillos de hacer
Reutilización de Software
Sistemas que pueden evolucionar de una manera más
conveniente y sencilla (Extensibilidad)
Reducción del riesgo en el desarrollo de sistemas
complejos porque la integración es más simple
Naturalidad en la forma de encarar los problemas
POO: Conceptos
Objeto
Mensaje
Clase
Herencia
Polimorfismo
Encapsulamiento
Interfaz
Objeto
• ¿Qué es?
○ Clave para entender el paradigma
orientado a objetos
○ Cualquier objeto de la vida real
• Características
○ Estado
○ Comportamiento
Un objeto es una
porción de software
combinada de variables
y métodos asociados
Objeto: ¿Qué podemos
representar?
• Objetos reales:
o Casas, perros, gatos, sillas, mesas, clubes de
fútbol, entidades de negocio, etc.
• Objetos abstractos:
o Eventos (Cambios de estado, cotización de
productos, etc), Cuenta Corriente
Desde el punto de vista de la programación,
un objeto es una variable.
Esquema visual de un
objeto de Software
Objeto: Una bicicleta
modelada con un objeto de
SOFTWARE
Objeto: Beneficios
• Modularidad El código fuente para un objeto
puede escribirse independientemente del código
fuente para otros objetos
• Encapsulamiento Al interactuar solo con los
métodos de un objeto, los detalles de su
implementación interna permanecen ocultos del
mundo exterior.
• Reutilización de código Si ya existe un objeto (tal
vez escrito por otro desarrollador de software),
puede usar ese objeto en su programa
Mensaje
• ¿Qué es?
• Formas de interacción y
comunicación entre objetos
• Un objeto de una clase
responde a cualquiera de los mensajes
definidos en la clase. Ej:
float x = unRectangulo.getX();
unRectangulo.mover(0, 20);
unRectangulo.dibujar();
Mensaje: Alguien
enviando mensajes a
una bicicleta
Mensaje: Beneficios
• El comporamiento de un objeto se expresa a través
de sus métodos (en vez de acceso directo a sus
variables)
• El paso de mensajes soporta todas las posibles
interacciones entre objetos
• Los objetos no necesitan estar en el mismo proceso
ni siquiera en la misma máquina para enviarse y
recibir mensajes unos con otros.
Clase
¿Qué es?
Prototipo,
Prototipo,plantilla
plantillaoo agrupador
agrupadordede
objetos
objetosque
quecomparten
compartencaracterísticas
característicasyy
comportamientos
comportamientoscomunes,
comunes,describe
describeunun
conjunto
conjuntodedeejemplares
ejemplaresconconpropiedades
propiedades
yycomportamientos
comportamientossimilares.
similares.
Una clase es una plantilla
o prototipo (blueprint)
que define las variables y
métodos comunes a los
objetos de cierto tipo
Clase: Esquema
Clase: Objetos como
Instancias
Clase
• Una clase se describe por:
o Nombre
o Cuerpo
o Interfaz: Operaciones (métodos, mensajes) que
manipulan el estado.
o Conjunto de atributos (datos) que definen el
estado.
• Desde el punto de vista de la programación una
clase es un tipo de dato (Ejs.: Rectangulo, Lista,
Cola, NumeroComplejo, etc.).
Clase: ¿Cómo son
diferentes a los objetos?
• Ustedes...
Herencia
• ¿Qué es?
Una relación entre Clases que
permite Generalizar o
Especializar las mismas
• Posibilidad de definir nuevas
clases a partir de clases
existentes compartiendo
características comunes.
Herencia
• Heredar (inherit)
• Redefinir (override)
• Crear una jerarquía
Herencia: Beneficios
• La subclases proveen especialización a los elementos
básicos comunes provistos por las super-clases
• La clase hija puede extender o redefinir (override) el
comportamiento de la clase padre.
o Extensión: Se añaden operaciones y/o atributos
(ej.: Volar en el caso de Ave).
o Redefinición: Se cambia la implementación de
alguna operación heredada (o se le da una
implementación si no la tenía).
Herencia: Beneficios
• En java, se dice que las clases EXTIENDEN a
su super-clase o clase padre
• Ej.
o Integer extends Number
o Number extends Object
o Manager extends Employee
o Employee extends Person
o Person extends Object
Interfaces
• ¿Qué es?
• Traducción literal: dispositivo que utilizan dos
entidades para interactuar.
• En POO, las interfaces son utilizadas por los objetos
no relacionados para interactuar
• En otros lenguajes OO a las interfaces se las suele
llamar protocolos
• En java, se dice que las clases IMPLEMENTAN
interfaces
Diferencia entre los
conceptos de clase e
interfaz
• El concepto de clase hace referencia a los
atributos y a las operaciones, junto con su
implementación.
• El concepto de interfaz hace referencia sólo a
los prototipos de las operaciones visibles.
Ejercicio
• Los objetos de la vida 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 ___.
• El ocultamiento de los datos internos al mundo externo,y accediéndolos
sólo mediante métodos públicos se conoce como ___.
• Un blueprint (plan) para un objeto de software es llamado una ___.
• Comportamientos comunes pueden ser definidos en una ___ y heredados
en una ___ usando la palabra clave ___.
• Una colección de métodos sin implementación es una ___.
• Un espacio de nombres que organiza clases e interfaces por funcionalidad
es un ___.
• El término API se refiere a ___?