programación orientada a objetos - ldc.usb.veyudith/docencia/telematica/programacionooyc... ·...

37
Programaci Programaci ón Orientada ón Orientada por Objetos por Objetos Prof. Yudith Cardinale Universidad Simón Bolívar Dpto de Computación y Tecnología de la Información

Upload: buinguyet

Post on 19-Sep-2018

224 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: Programación Orientada a Objetos - ldc.usb.veyudith/docencia/Telematica/ProgramacionOOYC... · Programación Orientada por Objetos Prof. Yudith Cardinale Universidad Simón Bolívar

ProgramaciProgramación Orientada ón Orientada por Objetospor ObjetosProf. Yudith CardinaleUniversidad Simón BolívarDpto de Computación y Tecnología de la Información

Page 2: Programación Orientada a Objetos - ldc.usb.veyudith/docencia/Telematica/ProgramacionOOYC... · Programación Orientada por Objetos Prof. Yudith Cardinale Universidad Simón Bolívar

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

Page 3: Programación Orientada a Objetos - ldc.usb.veyudith/docencia/Telematica/ProgramacionOOYC... · Programación Orientada por Objetos Prof. Yudith Cardinale Universidad Simón Bolívar

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

Page 4: Programación Orientada a Objetos - ldc.usb.veyudith/docencia/Telematica/ProgramacionOOYC... · Programación Orientada por Objetos Prof. Yudith Cardinale Universidad Simón Bolívar

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

Page 5: Programación Orientada a Objetos - ldc.usb.veyudith/docencia/Telematica/ProgramacionOOYC... · Programación Orientada por Objetos Prof. Yudith Cardinale Universidad Simón Bolívar

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.

Page 6: Programación Orientada a Objetos - ldc.usb.veyudith/docencia/Telematica/ProgramacionOOYC... · Programación Orientada por Objetos Prof. Yudith Cardinale Universidad Simón Bolívar

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

Page 7: Programación Orientada a Objetos - ldc.usb.veyudith/docencia/Telematica/ProgramacionOOYC... · Programación Orientada por Objetos Prof. Yudith Cardinale Universidad Simón Bolívar

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

Page 8: Programación Orientada a Objetos - ldc.usb.veyudith/docencia/Telematica/ProgramacionOOYC... · Programación Orientada por Objetos Prof. Yudith Cardinale Universidad Simón Bolívar

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

Page 9: Programación Orientada a Objetos - ldc.usb.veyudith/docencia/Telematica/ProgramacionOOYC... · Programación Orientada por Objetos Prof. Yudith Cardinale Universidad Simón Bolívar

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

Page 10: Programación Orientada a Objetos - ldc.usb.veyudith/docencia/Telematica/ProgramacionOOYC... · Programación Orientada por Objetos Prof. Yudith Cardinale Universidad Simón Bolívar

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

Page 11: Programación Orientada a Objetos - ldc.usb.veyudith/docencia/Telematica/ProgramacionOOYC... · Programación Orientada por Objetos Prof. Yudith Cardinale Universidad Simón Bolívar

¿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 ( )

Page 12: Programación Orientada a Objetos - ldc.usb.veyudith/docencia/Telematica/ProgramacionOOYC... · Programación Orientada por Objetos Prof. Yudith Cardinale Universidad Simón Bolívar

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 ( )

Page 13: Programación Orientada a Objetos - ldc.usb.veyudith/docencia/Telematica/ProgramacionOOYC... · Programación Orientada por Objetos Prof. Yudith Cardinale Universidad Simón Bolívar

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

Page 14: Programación Orientada a Objetos - ldc.usb.veyudith/docencia/Telematica/ProgramacionOOYC... · Programación Orientada por Objetos Prof. Yudith Cardinale Universidad Simón Bolívar

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

Page 15: Programación Orientada a Objetos - ldc.usb.veyudith/docencia/Telematica/ProgramacionOOYC... · Programación Orientada por Objetos Prof. Yudith Cardinale Universidad Simón Bolívar

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

Page 16: Programación Orientada a Objetos - ldc.usb.veyudith/docencia/Telematica/ProgramacionOOYC... · Programación Orientada por Objetos Prof. Yudith Cardinale Universidad Simón Bolívar

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”

Page 17: Programación Orientada a Objetos - ldc.usb.veyudith/docencia/Telematica/ProgramacionOOYC... · Programación Orientada por Objetos Prof. Yudith Cardinale Universidad Simón Bolívar

Objeto & ClaseObjeto & Clase

Page 18: Programación Orientada a Objetos - ldc.usb.veyudith/docencia/Telematica/ProgramacionOOYC... · Programación Orientada por Objetos Prof. Yudith Cardinale Universidad Simón Bolívar

Objeto & ClaseObjeto & Clase

Punto

trasladar(a, b)Distancia(p)

R x, y;Clase

Objetos

Page 19: Programación Orientada a Objetos - ldc.usb.veyudith/docencia/Telematica/ProgramacionOOYC... · Programación Orientada por Objetos Prof. Yudith Cardinale Universidad Simón Bolívar

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;

}}

Page 20: Programación Orientada a Objetos - ldc.usb.veyudith/docencia/Telematica/ProgramacionOOYC... · Programación Orientada por Objetos Prof. Yudith Cardinale Universidad Simón Bolívar

ObjetoObjetoInstancia de una

clase. IdentidadComportamientoEstado

Nombre del Objeto

atributo 1atributo 2…atributo n

método 1método 2…método m

Page 21: Programación Orientada a Objetos - ldc.usb.veyudith/docencia/Telematica/ProgramacionOOYC... · Programación Orientada por Objetos Prof. Yudith Cardinale Universidad Simón Bolívar

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());}

}

Page 22: Programación Orientada a Objetos - ldc.usb.veyudith/docencia/Telematica/ProgramacionOOYC... · Programación Orientada por Objetos Prof. Yudith Cardinale Universidad Simón Bolívar

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

Page 23: Programación Orientada a Objetos - ldc.usb.veyudith/docencia/Telematica/ProgramacionOOYC... · Programación Orientada por Objetos Prof. Yudith Cardinale Universidad Simón Bolívar

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

Page 24: Programación Orientada a Objetos - ldc.usb.veyudith/docencia/Telematica/ProgramacionOOYC... · Programación Orientada por Objetos Prof. Yudith Cardinale Universidad Simón Bolívar

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

Page 25: Programación Orientada a Objetos - ldc.usb.veyudith/docencia/Telematica/ProgramacionOOYC... · Programación Orientada por Objetos Prof. Yudith Cardinale Universidad Simón Bolívar

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ó.

Page 26: Programación Orientada a Objetos - ldc.usb.veyudith/docencia/Telematica/ProgramacionOOYC... · Programación Orientada por Objetos Prof. Yudith Cardinale Universidad Simón Bolívar

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.

Page 27: Programación Orientada a Objetos - ldc.usb.veyudith/docencia/Telematica/ProgramacionOOYC... · Programación Orientada por Objetos Prof. Yudith Cardinale Universidad Simón Bolívar

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.

Page 28: Programación Orientada a Objetos - ldc.usb.veyudith/docencia/Telematica/ProgramacionOOYC... · Programación Orientada por Objetos Prof. Yudith Cardinale Universidad Simón Bolívar

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.

Page 29: Programación Orientada a Objetos - ldc.usb.veyudith/docencia/Telematica/ProgramacionOOYC... · Programación Orientada por Objetos Prof. Yudith Cardinale Universidad Simón Bolívar

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.

.

Page 30: Programación Orientada a Objetos - ldc.usb.veyudith/docencia/Telematica/ProgramacionOOYC... · Programación Orientada por Objetos Prof. Yudith Cardinale Universidad Simón Bolívar

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.

Page 31: Programación Orientada a Objetos - ldc.usb.veyudith/docencia/Telematica/ProgramacionOOYC... · Programación Orientada por Objetos Prof. Yudith Cardinale Universidad Simón Bolívar

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++.

Page 32: Programación Orientada a Objetos - ldc.usb.veyudith/docencia/Telematica/ProgramacionOOYC... · Programación Orientada por Objetos Prof. Yudith Cardinale Universidad Simón Bolívar

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.

Page 33: Programación Orientada a Objetos - ldc.usb.veyudith/docencia/Telematica/ProgramacionOOYC... · Programación Orientada por Objetos Prof. Yudith Cardinale Universidad Simón Bolívar

Sistemas ConvencionalesSistemas Convencionales

ENTRADA SALIDA

DATOSPROCESOS

ESTRUCTURAS

Page 34: Programación Orientada a Objetos - ldc.usb.veyudith/docencia/Telematica/ProgramacionOOYC... · Programación Orientada por Objetos Prof. Yudith Cardinale Universidad Simón Bolívar

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;

}

Page 35: Programación Orientada a Objetos - ldc.usb.veyudith/docencia/Telematica/ProgramacionOOYC... · Programación Orientada por Objetos Prof. Yudith Cardinale Universidad Simón Bolívar

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)

Page 36: Programación Orientada a Objetos - ldc.usb.veyudith/docencia/Telematica/ProgramacionOOYC... · Programación Orientada por Objetos Prof. Yudith Cardinale Universidad Simón Bolívar

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

Page 37: Programación Orientada a Objetos - ldc.usb.veyudith/docencia/Telematica/ProgramacionOOYC... · Programación Orientada por Objetos Prof. Yudith Cardinale Universidad Simón Bolívar

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