PDF de programación - Introducción a la Orientación a Objetos

Imágen de pdf Introducción a la Orientación a Objetos

Introducción a la Orientación a Objetosgráfica de visualizaciones

Actualizado el 28 de Julio del 2017 (Publicado el 5 de Julio del 2017)
1.031 visualizaciones desde el 5 de Julio del 2017
2,2 MB
64 paginas
Creado hace 16a (25/02/2008)
Introducción a la Orientación a

Objetos

Breve historia de la OO

● 1960s. Simula incorpora características propias de la

OO.

● 1970s. Smalltalk. Lenguaje totalmente OO.
● 1990s. “Boom” de la OO.
● 2000-Hoy. Época dorada de la OO.

“Si yo tuviera que vender mi gato (al menos a un informático), no diría
que es amable y autosuficiente y que se alimenta de ratones: más bien
diría que está orientado a objetos”

Roger King

© David Cabrero

Grupo MADS - UDC

2

Metodologías y OO

● Presente en todas las fases de la metodología de

desarrollo:

Análisis

Diseño

Implementación

Validación

Mantenimiento

© David Cabrero

Grupo MADS - UDC

3

Breve historia de UML

● Representar artefactos en metodologías OO
● 1990s:

- James Rumbaugh: OMT, Grady Booch: Booch's

method, Ivar Jacobson: OOSE

- Unified Modelling Language (UML)

ISO/IEC 19501:2005 Information technology — Open Distributed
Processing — Unified Modeling Language (UML) Version 1.4.2.

● UML es el estándar adoptado por la industria
● Última versión: UML 2.0 (2.1.x)

© David Cabrero

Grupo MADS - UDC

4

OO desde la Programación Estructurada

● OO como evolución del concepto de TAD

- Un objeto es una entidad simple
- Los sistemas complejos se forma estableciendo

relaciones entre objetos

- Una aplicación es un conjunto de objetos que

interactúan entre sí mediante paso de mensajes

- El control de la aplicación viene dado por el orden en

que se envían los mensajes

© David Cabrero

Grupo MADS - UDC

5

OO y Paso de Mensajes (i)

● Paso de mensajes

- Un objeto envía un mensaje a otro, invocando una

operación

- El receptor ejecuta el método correspondiente y

devuelve el resultado

1: validarPago()

pasarelaDePago

controladorPedidos

2: enviarPedido()

almacen

© David Cabrero

Grupo MADS - UDC

6

OO y Paso de Mensajes (ii)

● Paso de mensajes
- Visión ortodoxa

● Cada objeto es un thread de ejecución independiente
● Paso de mensajes = mensajes entre threads

- Implementaciones actuales
● Inicialmente un único thread
● Paso de mensajes = llamada a función
● Manejo explícito de threads y RPCs

© David Cabrero

Grupo MADS - UDC

7

Visión General de la OO

- Problemas que pretende resolver la OO:
Mantenimiento | Extensibilidad | Reutilización

- ¿ Cómo ? Idea inicial: las entidades (objetos) del

dominio son la parte más estable del sistema

- Características básicas de la OO:

● Abstracción. El objeto representa entidades cercanas al

dominio del problema, no a la máquina

● Encapsulación. El objeto oculta su información, los demás
objetos acceden a su información a través de una interface
definida por él (concepto de caja negra)

© David Cabrero

Grupo MADS - UDC

8

Ejercicio

● Identificar posibles objetos en una aplicación de

mensajería instantánea

● ¿ Qué problemas propios de la OO nos hemos

encontrado ?
- Identificar objetos
- Establecer atributos y métodos

© David Cabrero

Grupo MADS - UDC

9

Introducción a UML (i)

- Es en su mayoría un lenguaje gráfico
- Cubre análisis, diseño, despliegue
- Extensible, sus componentes son opcionales
- Abierto a interpretación (p.e. implementar un diseño)

© David Cabrero

Grupo MADS - UDC

10

Introducción a UML (ii)

● Distintos tipos de diagramas para expresar distintos

aspectos del desarrollo:
- Diagrama de casos de uso
- Diagrama de clases, de paquetes, de componentes
- Diagrama de secuencia, de colaboración, de actividad,

de estados

- Diagrama de despliegue
- ...

● Especificación: ~ 1.000 páginas

© David Cabrero

Grupo MADS - UDC

11

Introducción a UML (iii)

● Herramientas de UML

- Papel y lápiz
- Software de dibujo especializado
- Herramienta integrada en un entorno de desarrollo

© David Cabrero

Grupo MADS - UDC

12

Propiedades de los objetos (i)

● Objeto: "encapsulamiento de un conjunto de

operaciones (métodos) que pueden ser invocados
externamente, y de un estado que recuerda el efecto
de los servicios"
"Análisis y diseño detallado de Aplicaciones informáticas

de gestión" [Piattini et al., 1996]

© David Cabrero

Grupo MADS - UDC

13

Propiedades de los objetos (i)

● Estado

- Viene dado por el valor de sus atributos
- Cambia a medida que se ejecuta el programa

unaLista

- items = [“abc”,”foo”,”bar”]
- last = 3
- it =2
+ añadir(item:string)
+ borrar(item:string)
+ elemento_en(i:int):string
+ siguiente():string

© David Cabrero

Grupo MADS - UDC

14

Propiedades de los objetos (ii)

● Identidad

- Cada objeto tiene identidad propia,
independientemente de su estado.

unaLista

- items = [“abc”,”foo”,”bar”]
- last = 3
- it = 2

otraLista

- items = [“abc”,”foo”,”bar”]
- last = 3
- it = 2

© David Cabrero

Grupo MADS - UDC

15

Propiedades de los objetos (iii)

● Comportamiento

- Todo objeto posee un conjunto de métodos que

determinan su comportamiento

unaLista

- items = [“abc”,”foo”,”bar”]
- last = 3
- it = 2
+ añadir(item:string)
+ borrar(item:string)
+ elemento_en(i:int):string
+ siguiente():string

unaListaOrdenada

- items = [“abc”,”bar”,”foo”]
- last = 3
- it = 2
+ añadir(item:string)
+ borrar(item:string)
+ elemento_en(i:int):string
+ siguiente():string

© David Cabrero

Grupo MADS - UDC

16

Propiedades de los objetos (iv)

● Tiempo de vida

- El objeto existe durante un período finito de tiempo.
- La mayoría una parte de la ejecución del programa

© David Cabrero

Grupo MADS - UDC

17

Resumen

● OO cubre el ciclo de
desarrollo completo

● Características:

- Abstracción
- Encapsulación

● Paso de mensajes
● UML

● Objeto

- Encapsula:
● Atributos
● Métodos

- Propiedades:

● Estado
● Identidad
● Comportamiento
● Tiempo de vida

© David Cabrero

Grupo MADS - UDC

18

LOO basado en prototipos o clases

● Basado en prototipos

- Javascript, self, ...
- Menos populares (salvo javascript)
- Un objeto se crea duplicando otro objeto existente

● Basado en clases

- Java, C#, C++, Ruby, Smalltalk, Eiffel, ...
- Más extendidos
- Los objetos se crean a partir de clases

© David Cabrero

Grupo MADS - UDC

19

Clases

● Clase: definición abstracta de un objeto.

conjunto de, plantilla, definición de, ...

“Una clase es una descripción de un conjunto de objetos

que manifiestan los mismos atributos, operaciones,
relaciones y la misma semántica”

(Object Modelling and Design [Rumbaught et al., 1991])
“Una clase es un conjunto de objetos que comparten una

estructura y un comportamiento comunes”

[Booch G., 1994]

© David Cabrero

Grupo MADS - UDC

20

Especificación de una clase

● Definición de una clase:

- Nombre de la clase
- Lista de atributos
- Lista de métodos

© David Cabrero

Grupo MADS - UDC

21

Clases. Problemas de diseño

● No Bajo acoplamiento
● Clases sin métodos

© David Cabrero

Grupo MADS - UDC

22

Visibilidad (i)

● Visibilidad de atributos y métodos

- Público
- Privado

● Los atributos públicos rompen la encapsulación

selectores / modificadores
(getters / setters)

métodos públicos: interface
(contrato)

© David Cabrero

Grupo MADS - UDC

23

Visibilidad (ii)

● Ámbitos especiales:

- Protegido (#)
- Paquete (~)

● Solucionan problemas de implementación, no de

diseño

© David Cabrero

Grupo MADS - UDC

24

Instanciación

● Crear un objeto (instancia) a partir de la definición de

una clase

© David Cabrero

Grupo MADS - UDC

25

Clases. Convenciones

● Nombres de las clases

- Guía de estilo. P.e. CamelCase
- Singular
- Sustantivos

● Nombres de los atributos

- Privados comenzando por subrayado “_”

© David Cabrero

Grupo MADS - UDC

26

Paquetes (i)

● Un paquete (package) es una agrupación de clases

relacionadas.

● Favorece el reuso y la creación de librerías.
● Los LOO suelen tener soporte de paquetes.

© David Cabrero

Grupo MADS - UDC

27

Paquetes (ii)

● Estereotipos y relaciones entre paquetes

© David Cabrero

Grupo MADS - UDC

28

Relaciones (i)

● Permiten

- Intercambio de mensajes
- Composiciones complejas de objetos

● Tipos de relaciones

- Dependencia
- Generalización
- Asociación
- Agregación / composición

© David Cabrero

Grupo MADS - UDC

29

Relaciones (ii)

● Datos de una relación

- Cardinalidad
- Navegabilidad
- Restricciones

© David Cabrero

Grupo MADS - UDC

30

Asociación

● Relación de tipo general

© David Cabrero

Grupo MADS - UDC

31

Implementación de asociaciones

● Las relaciones se implementan como atributos según

su cardinalidad
- 0..1 => referencia
- 0..n => colección (lista, array, ...)

● Los atributos no se especifican en el diseño
● Práctica común:

- nombre del atributo = papel en la relación

© David Cabrero

Grupo MADS - UDC

32

Paso de mensajes

● Mensaje: nombre + argumentos
● Un mensaje invoca una operación

- Cada operación se corresponde con un método
- Distintos objetos implementan la operación mediante

métodos con implementaciones distintas
- En general, los mensajes son síncronos
- Los LOO implementan el paso de mensajes como

llamadas a función

© David Cabrero

Grupo MADS - UDC

33

Diagrama de secuencia

● Secuencia temporal de envío de mensajes

- Muestra un caso concreto

© David Cabrero

Grupo MADS - UDC

34

Agregación y composición (i)

● Relación “es_parte_de”
- Jerarquía todo / parte
- Permite la creación de estructuras complejas
- El objeto base delega en sus agregados

● Composición vs. agregación

- “es_parte_de” completo / incompleto
- Tiempo de vida vinculado

● Implementación: equivalente asociaciones

© David Cabrero

Grupo MADS - UDC

35

Agregación y composición (ii)

© David Cabrero

Grupo MADS - UDC

36

Generalización (i)

● Relación “es_un”

- Jerarquía generalización / especialización
- Permite la herencia entre clases
- Jerarquía de clases. Superclases, subclases

Las clases hijas heredan
atributos y métodos de la
clase padre y ancestros.

Pueden redefinir y añadir
atributos y métodos.

© David Cabrero

Grupo MADS - UDC

37

Generalización (ii)

● Especialización

- Un objeto de la clase hija puede usarse en los mismos

lugares que un objeto de la clase padre, pero no
viceversa

- Punto de extensi
  • Links de descarga
http://lwp-l.com/pdf4884

Comentarios de: Introducción a la Orientación a Objetos (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad