fundamentos de orientación a objetos. referencias meyer, bertran., construcción de software...

44
Fundamentos de Orientación a Objetos

Upload: manolete-escoto

Post on 14-Apr-2015

14 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Fundamentos de Orientación a Objetos. Referencias Meyer, Bertran., Construcción de Software Orientado a Objetos, Prentice Hall, 1997. Booch, Grady.,Analisis

Fundamentos de Orientación a Objetos

Page 2: Fundamentos de Orientación a Objetos. Referencias Meyer, Bertran., Construcción de Software Orientado a Objetos, Prentice Hall, 1997. Booch, Grady.,Analisis

Referencias● Meyer, Bertran., “Construcción de Software

Orientado a Objetos”, Prentice Hall, 1997.● Booch, Grady.,”Analisis y Diseño orientado a Objetos

con aplicaciones”. ● Fowler, Martin., “UML Distille – Applying the

Standard Object Modeling Language”, Addison-Wesley, 1997

● Budd, Timothy A. An Introduction to Object Oriented Programming (3rd Ed), Addison-Wesley, 2002.

● Peña, Ricardo.,”Diseño de Programas, formalismo y abstracciones”, Prentice Hall, 1998

Page 3: Fundamentos de Orientación a Objetos. Referencias Meyer, Bertran., Construcción de Software Orientado a Objetos, Prentice Hall, 1997. Booch, Grady.,Analisis

Referencias ( cont...)● Larman, G., “Applying UML and

Patterns: An Introduction to Object-Oriented Analysis and Design”, prentice-Hall, 1998.

● Booch, Grady., “El Lenguaje Unificado de Modelado UML”, Addison-Wesley, 1998

● Aguilar, Joyanes., “Programación Orientada a Objetos”, Mc. Graw Hill

● Rumbaugh, James., “Modelaje y Diseño Orientado a Objetos”, Prentice Hall, 1990

Page 4: Fundamentos de Orientación a Objetos. Referencias Meyer, Bertran., Construcción de Software Orientado a Objetos, Prentice Hall, 1997. Booch, Grady.,Analisis

AgendaIntroducción a la Programación Orientada por Objetos

Conceptos básicosAbstracciónHerenciaRelaciones entre clasesPolimorfismo

Page 5: Fundamentos de Orientación a Objetos. Referencias Meyer, Bertran., Construcción de Software Orientado a Objetos, Prentice Hall, 1997. Booch, Grady.,Analisis

Introducción

Símula (1961...)

Símula (1967...)

SmallTalk (1972-...)

C++ (1983...)Eiffel (1985...)

Java 1 (1995...)

60-70's 80's 90's

Self (1986...)Modula 3 (1986...)

ADA(1979-...)

Ruby (1991...) C#(2000...)

Page 6: Fundamentos de Orientación a Objetos. Referencias Meyer, Bertran., Construcción de Software Orientado a Objetos, Prentice Hall, 1997. Booch, Grady.,Analisis

Introducción

Símula (1961...)

Símula (1967...)

SmallTalk (1972-...)

C++ (1983...)Eiffel (1985...)

Java 1 (1995...)

60-70's 80's 90's

Self (1986...)Modula 3 (1986...)

ADA(1979-...)

Ruby (1991...) C#(2000...)

Booch (1991...)OMT (1991...) Objectory

(1992...)OBA,MOSES, FUSION (1994...)

RUP (1999...)

Page 7: Fundamentos de Orientación a Objetos. Referencias Meyer, Bertran., Construcción de Software Orientado a Objetos, Prentice Hall, 1997. Booch, Grady.,Analisis

Conceptos básicos

OO provee objetos como el principal medio para abstraer y estructurar un sistema.Un objeto puede modelar entidades del mundo real, puede capturar abstracciones de fenómenos complejos, puede representar artefactos de software (pilas, gráficos, …).

Page 8: Fundamentos de Orientación a Objetos. Referencias Meyer, Bertran., Construcción de Software Orientado a Objetos, Prentice Hall, 1997. Booch, Grady.,Analisis

Conceptos básicos El contexto del problema se ve como objetos que interactúan entre ellos

Page 9: Fundamentos de Orientación a Objetos. Referencias Meyer, Bertran., Construcción de Software Orientado a Objetos, Prentice Hall, 1997. Booch, Grady.,Analisis

Conceptos básicos

Ejemplo Enviar Flores [4] Suponga que Juan desea llevarle flores a una amiga en otra ciudad María

Como Juan no puede llevarlas personalmente, le encarga a su florista preferida (Rosa) el envío

María recibe sus flores

Page 10: Fundamentos de Orientación a Objetos. Referencias Meyer, Bertran., Construcción de Software Orientado a Objetos, Prentice Hall, 1997. Booch, Grady.,Analisis

Conceptos básicos

Ejemplo Enviar Flores [4]Juan le solicita a Rosa un servicioRosa sabe cómo prestarle el servicio a JuanJuan sabe que Rosa presta el servicio que el necesitaRosa es responsable de prestarle el servicio adecuadamente a JuanJuan desconoce qué le implica a Rosa prestarle el servicio

CB4

Page 11: Fundamentos de Orientación a Objetos. Referencias Meyer, Bertran., Construcción de Software Orientado a Objetos, Prentice Hall, 1997. Booch, Grady.,Analisis

Conceptos básicos

Ejemplo Enviar Flores [4]

María

Juan Rosa

Florista Local

Recolector

ProductorArreglista

Mensajero

Page 12: Fundamentos de Orientación a Objetos. Referencias Meyer, Bertran., Construcción de Software Orientado a Objetos, Prentice Hall, 1997. Booch, Grady.,Analisis

Conceptos básicos

En programación orientada por objetos un programa es una comunidad de agentes (objetos) que interactuan entre ellos.

Cada objeto tiene un rol en la solución del problema

Cada objeto provee un conjunto de servicios (o métodos)

Los servicios de un objeto son usados por otros objetos.

Page 13: Fundamentos de Orientación a Objetos. Referencias Meyer, Bertran., Construcción de Software Orientado a Objetos, Prentice Hall, 1997. Booch, Grady.,Analisis

Conceptos básicos

La forma en que los objetos se comunican entre ellos es a través de mensajes:Un mensaje encapsula la petición de un servicioEl receptor del mensaje presta el servicio y devuelve una respuesta al que solicitó el servicio

Page 14: Fundamentos de Orientación a Objetos. Referencias Meyer, Bertran., Construcción de Software Orientado a Objetos, Prentice Hall, 1997. Booch, Grady.,Analisis

Conceptos básicos

Ventana ejemplo

Un objeto ventana gráfica

La ventana se sabe:• cerrar• abrir• cambiar de tamaño • pintar• moverAdemás, sabe: dónde está,si está visible o no ...

Cómo se le solicitan los servicios?

Qué sabe hacer la ventana?Cuáles servicios ofrece?

Page 15: Fundamentos de Orientación a Objetos. Referencias Meyer, Bertran., Construcción de Software Orientado a Objetos, Prentice Hall, 1997. Booch, Grady.,Analisis

Conceptos básicos

Ventana ejemplo

Las figuras geométricas se saben:

• Pintar• agrandar ..Además, saben: dónde están,si están visibles o no ...

Cómo se le solicitan los servicios?

Qué saben hacer las figuras geométricas gráficas?

Objetos figuras geométricas:• un triángulo• un rectángulo• un círculo

Page 16: Fundamentos de Orientación a Objetos. Referencias Meyer, Bertran., Construcción de Software Orientado a Objetos, Prentice Hall, 1997. Booch, Grady.,Analisis

Conceptos básicos

Ventana ejemplo

La ventana tiene la responsabilidad de solicitar a las figuras geométricas que se pinten

Las figuras geométricas tienen la responsabilidad de saberse pintar y de hacerlo cuando se lo soliciten

La ventana tiene que saber cómo hacer la solicitud.La figura geométrica tuvo que haber hecho público cómo usar sus servicios

Page 17: Fundamentos de Orientación a Objetos. Referencias Meyer, Bertran., Construcción de Software Orientado a Objetos, Prentice Hall, 1997. Booch, Grady.,Analisis

Conceptos básicos

La comunicación se hace a través del envío de mensajes

CambiarTamaño(50%+)Ventana Cliente

Ok

Interfaz: conjunto de servicios públicos que presta

Page 18: Fundamentos de Orientación a Objetos. Referencias Meyer, Bertran., Construcción de Software Orientado a Objetos, Prentice Hall, 1997. Booch, Grady.,Analisis

Conceptos básicos

Modelar consiste en identificar (abstraer) qué objetos hay en el mundo del problema, cómo son, cómo se comportan y cómo se relacionan.

Page 19: Fundamentos de Orientación a Objetos. Referencias Meyer, Bertran., Construcción de Software Orientado a Objetos, Prentice Hall, 1997. Booch, Grady.,Analisis

Conceptos básicos

Objeto Es una abstracción de un elemento

(concepto) del Contexto del Problema Ejemplos:

Estudiante Fecha Automóvil Libro Vuelo

Page 20: Fundamentos de Orientación a Objetos. Referencias Meyer, Bertran., Construcción de Software Orientado a Objetos, Prentice Hall, 1997. Booch, Grady.,Analisis

Conceptos básicos

El comportamiento de los objetos puede ser descrito por una caracterización abstracta de su interfaz. Por ejemplo:

Page 21: Fundamentos de Orientación a Objetos. Referencias Meyer, Bertran., Construcción de Software Orientado a Objetos, Prentice Hall, 1997. Booch, Grady.,Analisis

Conceptos básicos

La caracterización del comportamiento es suficiente para diseñar el sistema. El comportamiento real del objeto puede ser implementado y refinado más tarde de acuerdo con las necesidades.

Page 22: Fundamentos de Orientación a Objetos. Referencias Meyer, Bertran., Construcción de Software Orientado a Objetos, Prentice Hall, 1997. Booch, Grady.,Analisis

Conceptos básicos

Un objeto empaqueta datos (una representación concreta) y procedimientos que operan sobre los datos.

Page 23: Fundamentos de Orientación a Objetos. Referencias Meyer, Bertran., Construcción de Software Orientado a Objetos, Prentice Hall, 1997. Booch, Grady.,Analisis

Conceptos básicos

Nombre

Datos/Atributos/Campos

Métodos/Servicios/Interfaz

Page 24: Fundamentos de Orientación a Objetos. Referencias Meyer, Bertran., Construcción de Software Orientado a Objetos, Prentice Hall, 1997. Booch, Grady.,Analisis

Conceptos básicos

El envío de mensajes es la única forma para que un objeto realice una operación.Las operaciones son la única forma para cambiar el estado de los datos. Cuando esto se cumple, se dice que el estado interno del objeto (el valor de sus datos) está encapsulado; éste no puede ser manipulado directamente desde el exterior y su representación concreta es invisible.

Page 25: Fundamentos de Orientación a Objetos. Referencias Meyer, Bertran., Construcción de Software Orientado a Objetos, Prentice Hall, 1997. Booch, Grady.,Analisis

Conceptos básicos

Abstracción:Mecanismo de la mente humana

fundamental para la comprensión de fenómenos o situaciones que involucren una gran cantidad de detalles.

En biología los seres vivos se clasifican en especies, géneros, clases, órdenes, etc...

Page 26: Fundamentos de Orientación a Objetos. Referencias Meyer, Bertran., Construcción de Software Orientado a Objetos, Prentice Hall, 1997. Booch, Grady.,Analisis

Conceptos básicos

Abstracción ( cont...)Proceso mental que tiene dos

aspectos complementarios El aspecto de destacar los detalles

relevantes del objeto de estudio El aspecto de ignorar los detalles

irrelevantes del objeto.

Page 27: Fundamentos de Orientación a Objetos. Referencias Meyer, Bertran., Construcción de Software Orientado a Objetos, Prentice Hall, 1997. Booch, Grady.,Analisis

Conceptos básicos

Tipo Abstracto de Datos (TAD)“Un tipo abstracto de datos es una

colección de valores y de operaciones que se definen mediante una especificación que es independiente de cualquier representacion”

Page 28: Fundamentos de Orientación a Objetos. Referencias Meyer, Bertran., Construcción de Software Orientado a Objetos, Prentice Hall, 1997. Booch, Grady.,Analisis

Conceptos básicos

Abstracción y encapsulamiento: La abstracción se centra en el comportamiento

observable de un objeto, el encapsulamiento se centra en la implementación que da lugar a ese comportamiento.

”encapsulamiento es el proceso de almacenar en un mismo lugar los elementos de una abstracción que constituyen su estructura y su comportamiento; sirve para separar la interfaz contractual de una abstracción de su implantación." [Booch96]

Page 29: Fundamentos de Orientación a Objetos. Referencias Meyer, Bertran., Construcción de Software Orientado a Objetos, Prentice Hall, 1997. Booch, Grady.,Analisis

Conceptos básicos Clase Describe un conjunto de objetos del

Contexto del Problema, que tienen las mismas características y el mismo comportamiento

Page 30: Fundamentos de Orientación a Objetos. Referencias Meyer, Bertran., Construcción de Software Orientado a Objetos, Prentice Hall, 1997. Booch, Grady.,Analisis

Conceptos básicos La noción de Clase viene de clasificación: agrupar (en un conjunto) objetos (elementos) que se comportan de la misma manera (con respecto a la interfaz que describe el comportamiento).

Page 31: Fundamentos de Orientación a Objetos. Referencias Meyer, Bertran., Construcción de Software Orientado a Objetos, Prentice Hall, 1997. Booch, Grady.,Analisis

Conceptos básicos Metáfora

Page 32: Fundamentos de Orientación a Objetos. Referencias Meyer, Bertran., Construcción de Software Orientado a Objetos, Prentice Hall, 1997. Booch, Grady.,Analisis

Conceptos básicos Agregación/Composición Permite abstraer relaciones de

tipo ...tiene... y ... está compuesto de...

Page 33: Fundamentos de Orientación a Objetos. Referencias Meyer, Bertran., Construcción de Software Orientado a Objetos, Prentice Hall, 1997. Booch, Grady.,Analisis

Conceptos básicos

Asociaciones Permite abstraer relaciones entre

objetos diferentes a la composición

Page 34: Fundamentos de Orientación a Objetos. Referencias Meyer, Bertran., Construcción de Software Orientado a Objetos, Prentice Hall, 1997. Booch, Grady.,Analisis

Herencia Los objetos se organizan en jerarquías

Vertebrado

Mamifero

Canino Felino

Doméstico Salvaje

...

Page 35: Fundamentos de Orientación a Objetos. Referencias Meyer, Bertran., Construcción de Software Orientado a Objetos, Prentice Hall, 1997. Booch, Grady.,Analisis

Herencia La herencia permite modelar relaciones del tipo ...es... y clasificaciones: Un mamífero es un vertebrado Un monitor es un estudiante

Superclase(Tipo)

Subclase(Subtipo)

Vertebrado

Mamifero

Page 36: Fundamentos de Orientación a Objetos. Referencias Meyer, Bertran., Construcción de Software Orientado a Objetos, Prentice Hall, 1997. Booch, Grady.,Analisis

Herencia

Relación de subtipaje (herencia):

si B es subtipo de A entonces cualquier objeto de tipo B puede ser usado en cualquier parte donde un objeto de tipo A puede ser usado.

Page 37: Fundamentos de Orientación a Objetos. Referencias Meyer, Bertran., Construcción de Software Orientado a Objetos, Prentice Hall, 1997. Booch, Grady.,Analisis

Herencia

Monitor

MonitorPregrado

EstudiantePregrado

Herencia Múltiple:

Page 38: Fundamentos de Orientación a Objetos. Referencias Meyer, Bertran., Construcción de Software Orientado a Objetos, Prentice Hall, 1997. Booch, Grady.,Analisis

Herencia

ScrollBar

Window

Page 39: Fundamentos de Orientación a Objetos. Referencias Meyer, Bertran., Construcción de Software Orientado a Objetos, Prentice Hall, 1997. Booch, Grady.,Analisis

Herencia

ScrollBar

Window

Page 40: Fundamentos de Orientación a Objetos. Referencias Meyer, Bertran., Construcción de Software Orientado a Objetos, Prentice Hall, 1997. Booch, Grady.,Analisis

Herencia

La regla de oro de la herencia: ..es un... :Cuando tenga:

Forme la frase ``A es un B''. Si es correcto, entonces A puede ser subclase de B

B

A

Page 41: Fundamentos de Orientación a Objetos. Referencias Meyer, Bertran., Construcción de Software Orientado a Objetos, Prentice Hall, 1997. Booch, Grady.,Analisis

Polimorfismo

Es la posibilidad de definir de forma distinta un método,dependiendo del objeto.

MiCuadrado.pintar() MiCirculo.pintar()MiTriangulo.pintar()

Page 42: Fundamentos de Orientación a Objetos. Referencias Meyer, Bertran., Construcción de Software Orientado a Objetos, Prentice Hall, 1997. Booch, Grady.,Analisis

Polimorfismo

for (int i = 1; arreglo.length(); i++) {

arreglo[i].pintar();

}

Page 43: Fundamentos de Orientación a Objetos. Referencias Meyer, Bertran., Construcción de Software Orientado a Objetos, Prentice Hall, 1997. Booch, Grady.,Analisis

Polimorfismo

El polimorfismo es posible gracias a la herencia:

Figura

Triangulo

Pintar()

Cuadrado Circulo

Page 44: Fundamentos de Orientación a Objetos. Referencias Meyer, Bertran., Construcción de Software Orientado a Objetos, Prentice Hall, 1997. Booch, Grady.,Analisis

Resumen Principios

Todo es un objeto

Los objetos realizan operaciones (computan) solicitando servicios entre ellos a través del paso de mensajesTodo objeto tiene su propia memoria, la cual consiste de otros objetosTodo objeto es una instancia de una clase. Una clase agrupa objetos similares. En la clase se describe el comportamiento de los objetos. Las clases están organizadas en una jerarquía con una única raíz, llamada la jerarquía de herencia.