programación orientada a objetos - ldc.usb.veyudith/docencia/telematica/programacionooyc... ·...
TRANSCRIPT
ProgramaciProgramación Orientada ón Orientada por Objetospor ObjetosProf. Yudith CardinaleUniversidad Simón BolívarDpto de Computación y Tecnología de la Información
ContenidoContenidoIntroducciónConceptos básicos de POO
◦Clase◦Herencia◦Objeto◦Método◦Evento◦Mensaje◦Propiedad o atributo◦Estado interno◦Componentes de un objeto◦Identificación de un objeto
Programación: Programación: Actividad complejaActividad complejaLos problemas que se intentan
resolver con el software implican elementos complejos propios del área a la que pertenecen
Además, es díficil gestionar el proceso de desarrollo de software
No hay estándares o límites para la flexibilidad en la construcción de software
Crisis del softwareCrisis del software1968: ingeniería del software y crisis del
software (conferencia patrocinada por la OTAN) – el software es caro, poco fiable y escaso
Las metodologías estructuradas no han eliminado el problema – se requiere un nuevo paradigma de diseño y programación de software
La incapacidad humana de dominar la complejidad del software conlleva a:◦Proyectos retrasados◦Proyectos que exceden al presupuesto◦Proyectos deficientes que no cumplen los
requerimientos
Programación Orientada por Programación Orientada por ObjetosObjetos➢ POO es un conjunto de técnicas que
pueden utilizarse para desarrollar programas eficientemente.
➢ Es una manera de enfrentar la complejidad en los programas y la “Crisis del software”.
➢ Los objetos son los elementos principales de construcción de los programas.
La POO es ...La POO es ...
“Un método de implementación en el que los programas se organizan como colecciones cooperativas de objetos, cada uno de los cuales representa una instancia de alguna clase y cuyas clases son todas miembros de una jerarquía de clases unidas medianterelaciones de herencia”
Grady Booch
La Programación La Programación convencional ...convencional ...
➢ Procedimientos y datos
➢ Estructuras de datos como variables o parámetros que se tratan separadamente de los procedimientos
Razones del éxito de la POORazones del éxito de la POO La OO es adecuada para realizar
aplicaciones de prototipos y simulación de programas
Los mecanismos de encapsulamiento de la POO soportan un alto grado de reutilización de código, que se incrementa por los mecanismos de herencia
Soporte de lenguajes OO estables y sólidos
Soportan interfaces gráficas de usuarios
El modelo de objetosEl modelo de objetos➢ Objetos en el mundo real
➢ Propiedades➢ Métodos
➢ Abstracción➢ Clases y Objetos➢ Encapsulamiento➢ Mensajes➢ Constructores➢ Destructores➢ Herencia
Todos los objetos tienen ...Todos los objetos tienen ...➢ Estado: Valor de sus características que
los distinguen entre si (propiedades, sustantivos)Ejemplo: Objeto Perro - Características➢ Nombre: “FIDO”➢ Raza: “Chihuahua”➢ Color: “Café”, ...
➢ Comportamiento: Acciones que puede realizar (verbos)Ejemplo: Objeto Perro - Acciones◦ Ladrar [“Guau Guau”]◦ Comer [“Chomp Chomp”]◦ Dormir [“Zzzzzzzz”], …
➢ Identidad: Pertenece a su clase y tiene un nombre único
¿Cómo modelar un objeto ¿Cómo modelar un objeto real en un programa?real en un programa?
➢ Las “características” son PROPIEDADES o datos.
➢ Las “acciones” son METODOS u operaciones.
Objeto Perro “Real”
Abstracción de la “clase” Perro en software
Perro
Nombre: “FIDO”Raza: “Chihuahua”Color: “Café”
Ladrar ( )Comer( )Dormir ( )
AbstracciónAbstracción➢ Se refiere a “quitar” propiedades y
métodos de un objeto y quedarse solo con aquellas que sean necesarias.
Objeto Perro “Real”
Propiedades:(Nombre,Raza,Color, etc.) Abstracción de Perro en unAcciones: programa. NOTE que en la (Ladrar,Comer,Dormir, etc.) abstracción de Perro se eliminaron los etc.
Perro
Nombre: “FIDO”Raza: “Chihuahua”Color: “Café”
Ladrar ( )Comer( )Dormir ( )
AbstracciónAbstracciónDenota las características esenciales de
un objeto, donde se capturan sus comportamientos.
Decidir qué es importante y qué noEnfoca y depende de lo que es importanteIgnora y no depende de lo que no es
importanteUsa el encapsulamiento para reforzar una
abstracción The purpose of abstraction is not to
be vague, but to create a new semantic level in which one can be absolutely precise.
Edsger Dijkstra
ClaseClaseEs una descripción de las características y
acciones para un tipo de objetos.
Una clase NO es un objeto. Es solouna plantilla o definición para crearobjetos.
Nombre de la Clase
atributo 1atributo 2…atributo n
método 1método 2…método m
ClaseClaseContiene todas las características
comunes de ese conjunto de objetosClase = Modelo = Plantilla = Esquema
= Descripción de la anatomía de los objetos.
A partir de una clase se pueden definir [crear] muchos objetos independientes con las mismas características.
Contiene las definiciones de las propiedades y comportamiento de un tipo de objeto concreto. La instanciación es la lectura de estas definiciones y la creación de un objeto a partir de ellas
ObjetoObjetoUnidad que combina datos y funciones.
Datos = Propiedades = Atributos = Características
Funciones = Métodos = Procedimientos =Acciones
Un objeto es creado a partir de una clase.Los datos y funciones están
Encapsulados.Posee un nombre único (identificador).Un objeto es del tipo de una clase“Un objeto es la instancia de una clase”
Objeto & ClaseObjeto & Clase
Objeto & ClaseObjeto & Clase
Punto
trasladar(a, b)Distancia(p)
R x, y;Clase
Objetos
Ejemplo de ClaseEjemplo de Claseclase Automovil{
// propiedades o atributosString color;int velocidad;
// métodos públicosvoid asignaColor(String _color){
color = _color; }
int indicaColor(){return color;
}}
ObjetoObjetoInstancia de una
clase. IdentidadComportamientoEstado
Nombre del Objeto
atributo 1atributo 2…atributo n
método 1método 2…método m
Ejemplo de ObjetoEjemplo de Objetoclase Agencia{
public static void main (String args[]) {Automovil autoDeportivo = new Automovil();Automovil camioneta = new Automovil ();
autoDeportivo.asignaColor(“rojo”);camioneta.asignaColor(“azul”);System.out.println(“color de camioneta ” +
camioneta.indicaColor());System.out.println(“color del auto deportivo” +
autoDeportivo.indicaColor());}
}
HerenciaHerenciaEs la facilidad
mediante la cual la clase B hereda en ella cada uno de los atributos y operaciones de la clase A
Clase A
Clase B Clase C
Herencia Simple
Clase A
Clase B Clase C
Herencia Múltiple
HerenciaHerencia Una clase heredera proporciona los atributos y métodos de la clase heredada, y puede añadir otros nuevos.
La clase heredera puede modificar el comportamiento heredado (por ejemplo, redefiniendo algún método heredado) .
La herencia es transitiva.
Los objetos de una clase que hereda de otra pueden verse como objetos de estaúltima.
Figura Cerrada
Polígono Elipse
Pentágono Cuadrilátero Círculo
Rectángulo Rombo
HerenciaHerencia Una clase heredera proporciona los atributos y métodos de la clase heredada, y puede añadir otros nuevos.
La clase heredera puede modificar el comportamiento heredado (por ejemplo, redefiniendo algún método heredado) .
La herencia es transitiva.
Los objetos de una clase que hereda de otra pueden verse como objetos de estaúltima.
Polígono
Cuadrado
R perimetro()
R perimetro()
R lado;
Resultado = 4*lado
Resultado = Suma de las distancias entre los puntos
MensajeMensajeuna comunicación dirigida a un
objeto, que le ordena que ejecute uno de sus métodos con ciertos parámetros asociados al evento que lo generó.
EventoEventoEs un suceso en el sistema (tal
como una interacción del usuario con la máquina, o un mensaje enviado por un objeto). El sistema maneja el evento enviando el mensaje adecuado al objeto pertinente. También se puede definir como evento, a la reacción que puede desencadenar un objeto, es decir la acción que genera.
Estado internoEstado internoes una variable que se declara
privada, que puede ser únicamente accedida y alterada por un método del objeto, y que se utiliza para indicar distintas situaciones posibles para el objeto (o clase de objetos). No es visible al programador que maneja una instancia de la clase.
EncapsulamientoEncapsulamientoSignifica reunir a todos los
elementos que pueden considerarse pertenecientes a una misma entidad, al mismo nivel de abstracción.
Esto permite aumentar la cohesión de los componentes del sistema.
EncapsulamientoEncapsulamientoPermite incluir en una sola
entidad información y operaciones que operan sobre esa información.
Permite:◦Componentes públicos [Accesibles,
Visibles].◦Componentes privados [No
accesibles, Ocultos].◦Restricción de accesos indebidos.
.
OcultaciónOcultación Cada objeto está aislado del exterior, es un
módulo natural, y cada tipo de objeto expone una interfaz a otros objetos que especifica cómo pueden interactuar con los objetos de la clase.
El aislamiento protege a las propiedades de un objeto contra su modificación por quien no tenga derecho a acceder a ellas, solamente los propios métodos internos del objeto pueden acceder a su estado.
Esto asegura que otros objetos no pueden cambiar el estado interno de un objeto de maneras inesperadas, eliminando efectos secundarios e interacciones inesperadas.
Algunos lenguajes relajan esto, permitiendo un acceso directo a los datos internos del objeto de una manera controlada y limitando el grado de abstracción.
La aplicación entera se reduce a un agregado o rompecabezas de objetos.
PolimorfismoPolimorfismo comportamientos diferentes, asociados a objetos
distintos, pueden compartir el mismo nombre, al llamarlos por ese nombre se utilizará el comportamiento correspondiente al objeto que se esté usando.
O dicho de otro modo, las referencias y las colecciones de objetos pueden contener objetos de diferentes tipos, y la invocación de un comportamiento en una referencia producirá el comportamiento correcto para el tipo real del objeto referenciado.
Cuando esto ocurre en "tiempo de ejecución", esta última característica se llama asignación tardía o asignación dinámica. Algunos lenguajes proporcionan medios más estáticos (en "tiempo de compilación") de polimorfismo, tales como las plantillas y la sobrecarga de operadores de C++.
Recolección de basuraRecolección de basurala Recolección de basura o Garbage
Collector es la técnica por la cual el ambiente de Objetos se encarga de destruir automáticamente, y por tanto desasignar de la memoria, los Objetos que hayan quedado sin ninguna referencia a ellos. Esto significa que el programador no debe preocuparse por la asignación o liberación de memoria, ya que el entorno la asignará al crear un nuevo Objeto y la liberará cuando nadie lo esté usando. En la mayoría de los lenguajes híbridos que se extendieron para soportar el Paradigma de Programación Orientada a Objetos como C++ u Object Pascal, esta característica no existe y la memoria debe desasignarse manualmente.
Sistemas ConvencionalesSistemas Convencionales
ENTRADA SALIDA
DATOSPROCESOS
ESTRUCTURAS
Abstracción de ProcesosAbstracción de Procesos
leer rt = r*ra = t*3.1416muestra a
area funcion areaCirculo(radio){
t = r*r;a = t*3.1416regresa a;
}
Evolución de los lenguajesEvolución de los lenguajesProgramación EstructuradaProgramación lógicaProgramación funcionalProgramación Orientada a ObjetoProgramación Orientada a
agentes (en desarrolllo)
Caracaterísticas de JavaCaracaterísticas de Java
Java Java Java
class class class
Maquina virtual de Java
Hardware
Unix Windows solaris Linux
compilación
carga
ejecución
Requerimientos para usar Requerimientos para usar JavaJavaKid de desarrollo SDK de java
◦Incluye el compilador◦java.sun.com
API de Java (Application Program Interface)◦java.sun.com/API
Editor◦JCreator