Programación Orientada a Objetos Desarrollo de software...

27
1 IAGP 1 Programación Orientada a Objetos Desarrollo de software orientado a objetos Definición Método de desarrollo de software que basa la arquitectura del sistema en módulos deducidos de los tipos de objetos que se manipulan, en lugar de basarse en la función o funciones a las que el sistema está destinado a asegurar. No preguntes primero qué hace el sistema, pregunta ¡¡A QUIÉN LO HACE!! IAGP 2 Programación Orientada a Objetos 2.1 Orígenes El tiempo transcurrido entre el desarrollo convencional del software y el desarrollo orientado a objetos, no se solapa. Hay más de 25 años, surgió con el lenguaje Simula, en Noruega, aunque comercialmente se ha difundido recientemente. Simula es acrónimo de “simulación lenguaje” y fue creado para soportar simulaciones, por O. J. Dahl yKristen Nygaard. Su propósito fue la simulación de sistemas físicos complejos con muchos cientos de componentes. En Simula los módulos no se basan en procedimientos como en la programación convencional, sino en los objetos físicos que se modelan en la simulación. PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com

Transcript of Programación Orientada a Objetos Desarrollo de software...

Page 1: Programación Orientada a Objetos Desarrollo de software ...dis.um.es/~barzana/Informatica/IAGP/IAGP_4.pdf · natural que la programación tradicional, y es verdad en dos niveles.

1

IAGP 1

Programación Orientada a Objetos

Desarrollo de software orientado a objetos

DefiniciónMétodo de desarrollo de software que basa la arquitectura del sistema en módulos deducidos de los tipos de objetos que se manipulan, en lugar de basarse en la función o funciones a las que el sistema está destinado a asegurar.

No preguntes primero qué hace el sistema, pregunta¡¡A QUIÉN LO HACE!!

IAGP 2

Programación Orientada a Objetos

2.1 Orígenes

El tiempo transcurrido entre el desarrollo convencional del software y el desarrollo orientado a objetos, no se solapa.

Hay más de 25 años, surgió con el lenguaje Simula, en Noruega, aunque comercialmente se ha difundido recientemente.

Simula es acrónimo de “simulación lenguaje” y fue creado para soportar simulaciones, por O. J. Dahl yKristen Nygaard.

Su propósito fue la simulación de sistemas físicos complejos conmuchos cientos de componentes.

En Simula los módulos no se basan en procedimientos como en la programación convencional, sino en los objetos físicos que se modelan en la simulación.

PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com

Page 2: Programación Orientada a Objetos Desarrollo de software ...dis.um.es/~barzana/Informatica/IAGP/IAGP_4.pdf · natural que la programación tradicional, y es verdad en dos niveles.

2

IAGP 3

Programación Orientada a Objetos

Los objetos del mundo real pueden exhibir una variedad infinita de efectos sobre otros, creando, destruyendo, levantando, uniendo, comprando, doblándose, enviando, etc.

Esta gran variedad suscita un problema: ¿Cómo se pueden representar en software las diversas clases de interacciones ?

Los autores de Simula lograron una solución elegante a este problema: el mensaje. Los objetos interaccionan el uno con el otro con mensajes que piden que los objetos realicen sus métodos.

Un mensaje es simplemente el nombre de un objeto seguido por el nombre de un método que el objeto sabe ejecutar. Si un método requiere alguna información adicional para saber qué hacer, el mensaje incluye la información como parámetros.

IAGP 4

Programación Orientada a Objetos

El objeto que inicia un mensaje se llama el remitente de ese mensaje, y el objeto que recibe el mensaje se llama el receptor.

El hecho de que los métodos están asociados siempre a objetos específicos tiene un efecto secundario interesante que resulta ser ventajoso. Diversos objetos pueden responder al mismo mensaje genérico, pero cada objeto puede interpretar el mensaje de una manera distinta.

Por ejemplo, un objeto camión podría poner en ejecución su propia versión del mensaje mueve_A, al igual que una nave, un tren, un avión, una persona, o cualquier cosa que se mueva. En el mundo real la manera en que estos objetos determinan sus rutas, planeansus movimientos, y realizan estos desplazamientos se diferencia radicalmente, pero todos entenderían una petición común de ir a un destino especificado.

PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com

Page 3: Programación Orientada a Objetos Desarrollo de software ...dis.um.es/~barzana/Informatica/IAGP/IAGP_4.pdf · natural que la programación tradicional, y es verdad en dos niveles.

3

IAGP 5

Programación Orientada a Objetos

La capacidad de diversos objetos para responder al mismo mensaje de diversas maneras se llama polimorfismo, que en griego significa "muchas formas."

El término puede intimidar, y el polimorfismo a menudo se considera un concepto avanzado en tecnología de objetos. Pero la idea básica no podía ser más simple: cada objeto puede tener una respuesta única al mismo mensaje.

A veces, una simulación implica solamente un ejemplo de una clase particular de objeto. Sin embargo es mucho más común, necesitar más de un objeto de cada tipo. Esta posibilidad levanta otra preocupación: sería extremadamente ineficaz redefinir los mismos métodos en cada ocurrencia de ese objeto.

IAGP 6

Programación Orientada a Objetos

Aquí, otra vez, los autores de Simula aportaron una solución elegante: la clase.

Una clase es una plantilla de software que define los métodos y las variables que se incluirán en un tipo particular de objeto. Los métodos y las variables que hacen el objeto se definen solamenteuna vez, en la definición de la clase.

Los objetos que pertenecen a una clase se llaman generalmente instancias de la clase y contienen solamente sus propios valores particulares para las variables.

Un programa orientado a objetos (poo), se define de la forma:

Objetos + Mensajes = Programa

PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com

Page 4: Programación Orientada a Objetos Desarrollo de software ...dis.um.es/~barzana/Informatica/IAGP/IAGP_4.pdf · natural que la programación tradicional, y es verdad en dos niveles.

4

IAGP 7

Programación Orientada a Objetos

IAGP 8

Programación Orientada a Objetos

La programación orientada a objetos, se dice a menudo que es más natural que la programación tradicional, y es verdad en dos niveles.

• En un nivel, la POO es más natural porque permite que organicemos la información de la forma que nos es familiar, según lo ilustrado en las jerarquías de las clases.

• En otro nivel más profundo, es más natural porque refleja técnicas propias de la naturaleza para manejar complejidad.

Es interesante fijarse en la estructura de organismos vivos para establecer un marco para entender la naturaleza adaptativa de losobjetos.

PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com

Page 5: Programación Orientada a Objetos Desarrollo de software ...dis.um.es/~barzana/Informatica/IAGP/IAGP_4.pdf · natural que la programación tradicional, y es verdad en dos niveles.

5

IAGP 9

Programación Orientada a Objetos

Programa OO

Clase

Objeto

Los objetos se comunican mediante mensajes

Colección estructuradade clases

Implementación de un TAD

Una instancia de una clase

IAGP 10

Programación Orientada a Objetos

2.2 Comparación con los seres vivos

El bloque de edificio básico a partir del cual se componen los seres vivos es la célula. Las células son "paquetes orgánicos", como objetos, combinan la información relacionada y comportamiento.

La mayoría de la información está contenida en moléculas de proteína, dentro del núcleo de la célula. El comportamiento, que puede extenderse desde conversión de energía al movimiento, es realizado por estructuras fuera del núcleo.

Las células están rodeadas por una membrana que permitesolamente ciertas clases de intercambios químicos con otras. Esta membrana protege el funcionamiento interno de la célula contra la intrusión exterior, y también oculta la complejidad, presentando un interfaz relativamente simple al resto del organismo.

PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com

Page 6: Programación Orientada a Objetos Desarrollo de software ...dis.um.es/~barzana/Informatica/IAGP/IAGP_4.pdf · natural que la programación tradicional, y es verdad en dos niveles.

6

IAGP 11

Programación Orientada a Objetos

Todas las interacciones entre las células ocurren a través de los mensajes químicos, reconocidos por la membrana de la célula y pasados a su través al interior de la célula.

IAGP 12

Programación Orientada a Objetos

Los objetos que contienen a otros, se llaman objetos compuestos, son importantes porque pueden representar estructuras más sofisticadas que los objetos simples.

Un avión consiste en alas, motores, y otros componentes que son demasiado complejos para representarlos de forma simple.

Colecciones de objetos

Hay una clase especial de clases, a menudo llamada la colección de clases, que se puede encontrar en la biblioteca de clases en la mayoría de los lenguajes comerciales. Como el nombre sugiere, la función básica de una colección es recolectar juntos los objetos que se deben manejar como grupo.

PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com

Page 7: Programación Orientada a Objetos Desarrollo de software ...dis.um.es/~barzana/Informatica/IAGP/IAGP_4.pdf · natural que la programación tradicional, y es verdad en dos niveles.

7

IAGP 13

Programación Orientada a Objetos

En un avión, por ejemplo, no crearíamos una variable separada para cada objeto del asiento, agruparíamos todos los objetos del asiento en una colección y pondríamos una referencia a esa colección en un solo conjunto llamado variable.

IAGP 14

Programación Orientada a Objetos

Aunque los mecanismos reales de células y de objetos apenas podrían ser más diferentes, sus funciones son similares.

Las células y los objetos encapsulan datos y comportamientosasociados; ambos tienen interfaces que definen qué señales responderán a su ambiente; ambos utilizan la comunicación basadaen mensajes para ocultar complejidad; ambos se pueden organizar en una jerarquía de tipos especializados; y ambos proporcionan los bloques de edificio fundamentales para construir una variedad infinita de sistemas complejos.

Esta semejanza, considerando la gran variedad de organismos vivos,demuestra claramente la flexibilidad de este acercamiento básico a a la construcción de sistemas complejos.

PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com

Page 8: Programación Orientada a Objetos Desarrollo de software ...dis.um.es/~barzana/Informatica/IAGP/IAGP_4.pdf · natural que la programación tradicional, y es verdad en dos niveles.

8

IAGP 15

Programación Orientada a Objetos

¡La naturaleza, después de todo, ha estado utilizando el acercamiento algunos miles de millones de años más que los diseñadores del software!

Anatomía de los componentes de un mensaje

Un mensaje consiste de tres partes:

• Un objeto receptor

• Un método que el receptor sabe ejecutar

• Un conjunto de parámetros que el método requiere para realizar su función

IAGP 16

Programación Orientada a Objetos

Respuestas a los mensajes

En la mayoría de los sistemas, los mensajes requieren una ciertaclase de respuesta del receptor. Esta respuesta es generalmentellamada valor de retorno, puede ser datos simples, valores u objetos.

PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com

Page 9: Programación Orientada a Objetos Desarrollo de software ...dis.um.es/~barzana/Informatica/IAGP/IAGP_4.pdf · natural que la programación tradicional, y es verdad en dos niveles.

9

IAGP 17

Programación Orientada a Objetos

La potencia de los polimorfismos, simplificación de programas

Supónganos que estamos desarrollando un sistema que incluya instrumentos financieros tales como bonos y acciones.

El sistema debe permitir que realicemos una variedad de operaciones tales como añadir una nueva acción, seguir el funcionamiento de varias clases de instrumentos, y supervisión del valor actual de la cartera en su totalidad.

Nuestra primera clase es cartera, un objeto compuesto que contiene un objeto de la colección de objetos llamada instrumentos_financieros.

Nuestro primer método es agregar, que toma un objeto instrumento financiero como su parámetro.

IAGP 18

Programación Orientada a Objetos

PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com

Page 10: Programación Orientada a Objetos Desarrollo de software ...dis.um.es/~barzana/Informatica/IAGP/IAGP_4.pdf · natural que la programación tradicional, y es verdad en dos niveles.

10

IAGP 19

Programación Orientada a Objetos

Modularidad• Extensibilidad + Reutilización ⇒ necesidad de

arquitecturas flexibles hechas con componentes autónomos

• Programa modular: formado por un conjunto de módulos

• Módulo: unidad básica de descomposición de un sistema software

• Un método de construcción de software es modular si ayuda a producir sistemas software a partir de elementos autónomos interconectados por una estructura simple y coherente.

2.3 Modularidad

IAGP 20

Programación Orientada a Objetos

Modularidad: 5 criteriosCinco criterios, cinco reglas, cinco principios.

Requisitos que debe satisfacer un método de construcción de software para merecer el nombre de modular:

• Permitir una descomposición modular

• Permitir una composición modular

• Producir módulos fáciles de comprender

• Favorecer la continuidad del software

• Protección modular

PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com

Page 11: Programación Orientada a Objetos Desarrollo de software ...dis.um.es/~barzana/Informatica/IAGP/IAGP_4.pdf · natural que la programación tradicional, y es verdad en dos niveles.

11

IAGP 21

Programación Orientada a Objetos

Descomposición modularUn método de construcción de software satisface la descomposición modular si permite la descomposición de un problema en un pequeño número de subproblemas menos complejos, conectados por una estructura simple, y que se puedenabordar por separado.Importante que las dependencias sean mínimas y que se conozcan.

• Ejemplo: Diseño Descendente• Contra-ejemplo: Módulos de Inicialización

IAGP 22

Programación Orientada a Objetos

Composición modularUn método satisface la composición modular si favorece la producción de elementos software que pueden ser combinados para crear nuevos sistemas, posiblemente en un entorno diferente a aquel en el que se idearon.

• Relacionada con el objetivo de reutilización

• Independiente de la descomposición modular

• Ejemplos: Librerías de rutinas, Filtros de Unix• Contra-ejemplo: Preprocesadores de lenguajes

PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com

Page 12: Programación Orientada a Objetos Desarrollo de software ...dis.um.es/~barzana/Informatica/IAGP/IAGP_4.pdf · natural que la programación tradicional, y es verdad en dos niveles.

12

IAGP 23

Programación Orientada a Objetos

Comprensión ModularSe satisface si facilita que quién lea un módulo pueda comprenderlo sin necesidad de acudir a otros módulos (en el peor de los casos a unos pocos módulos).

• Relacionado con el mantenimiento

• Contra-ejemplo: Dependencias secuenciales

IAGP 24

Programación Orientada a Objetos

Continuidad ModularUn método satisface la Continuidad Modular si se favorecen arquitecturas software en las que un cambio pequeño en la especificación origina un cambio en un solo módulo, o en un pequeño número de módulos.

• Relacionado con la extensibilidad• Ejemplos:

Constantes simbólicas y Principio de Acceso Uniforme

• Contra- ejemplos:Diseño de programas basado en la representación física de los datos y el uso de vectores estáticos

PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com

Page 13: Programación Orientada a Objetos Desarrollo de software ...dis.um.es/~barzana/Informatica/IAGP/IAGP_4.pdf · natural que la programación tradicional, y es verdad en dos niveles.

13

IAGP 25

Programación Orientada a Objetos

Protección ModularUn método satisface la Continuidad Modular si se originan arquitecturas en las que el efecto de una condición excepcional acaecida en tiempo de ejecución sólo afecta al módulo dónde se produce, o sólo se propaga a los módulos vecinos.

• Relacionado con la robustez• Ejemplo: Módulos de entrada de datos comprueben su validez.• Contra-ejemplo: Excepciones no disciplinadas.

IAGP 26

Programación Orientada a Objetos

Modularidad: 5 reglasDe los criterios anteriores se derivan cinco reglas que se deben seguir para asegurar la modularidad

• Correspondencia directa• Pocas conexiones entre módulos• Intercambio de información intermodular mínimo• Conexiones explícitas• Ocultamiento de Información

Las cuatro últimas se refieren a la comunicación entre módulos: uso o compartición de datos

PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com

Page 14: Programación Orientada a Objetos Desarrollo de software ...dis.um.es/~barzana/Informatica/IAGP/IAGP_4.pdf · natural que la programación tradicional, y es verdad en dos niveles.

14

IAGP 27

Programación Orientada a Objetos

2.4 Otras consideraciones

Impacto de la POO• Desarrollo más rápido. • Mantenimiento barato• Proceso de modelado más simple• Diseños más claros y manejables• Incremento productividad de programadores• Inconveniente: Curva de aprendizaje

–Diseño con objetos ≠ diseño procedural

• Librerías bien diseñadas y fáciles de usar

IAGP 28

Programación Orientada a Objetos

Abstracción y modelado• Modelado del problema: Proceso de abstracción• Lenguajes O.O.: Representa elementos del marco del problema a resolver• Código (solución): descripción del problema• Objetos: Tienen su estado y pueden realizar operaciones

PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com

Page 15: Programación Orientada a Objetos Desarrollo de software ...dis.um.es/~barzana/Informatica/IAGP/IAGP_4.pdf · natural que la programación tradicional, y es verdad en dos niveles.

15

IAGP 29

Programación Orientada a Objetos

Características de la O.O.• Todo es un objeto (alumno, factura, polígono)• Programa: Conjunto de objetos. Se envían mensajes para decirse qué deben hacer• Objetos pueden estar compuestos por otros• Cada objeto es de un tipo (instancia de clase)• Objetos de un mismo tipo pueden recibir los mismos mensajes

IAGP 30

Programación Orientada a Objetos

Interface de un objeto• Elementos del problema: Entidad (Objeto)• Objeto: Pertenece a una clase.

– Define sus características y comportamiento• POO crea nuevos tipos e instancia los objetos necesarios de esos tipos• modelado: Mapeo 1 a 1 Problema ⇔ Solución• Tipo: Interface. Informa de las peticiones que se pueden hacer a objetos de ese tipo

PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com

Page 16: Programación Orientada a Objetos Desarrollo de software ...dis.um.es/~barzana/Informatica/IAGP/IAGP_4.pdf · natural que la programación tradicional, y es verdad en dos niveles.

16

IAGP 31

Programación Orientada a Objetos

Encapsulación• Programador: Dos puntos de vista

– Crear clases– Crear clientes de esas clases

• Sólo muestra lo necesario para quien programa clientes. Oculta el resto• Interface ⇔ ¿Qué solicitudes puedo hacer?• Implementación: Realización de las tareas de la interface• Envío de mensajes (ejecución de un método)

IAGP 32

Programación Orientada a Objetos

Tipos Abstractos de Datos• Conjunto de objetos que ofrecen una serie de operaciones• Abstracciones matemáticas:

– No se menciona cómo se implementan las operaciones

• Java permite la construcción de TAD's• Mecanismos para la ocultación de detalles de implementación

PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com

Page 17: Programación Orientada a Objetos Desarrollo de software ...dis.um.es/~barzana/Informatica/IAGP/IAGP_4.pdf · natural que la programación tradicional, y es verdad en dos niveles.

17

IAGP 33

Programación Orientada a Objetos

• Si se modifica la implementación:– El programa que usa el TAD no se modifica– Sólo cambian los métodos del TAD– Cambios transparentes al resto del programa

• Operaciones soportadas por el TAD:– Decisión de diseño (Programador del TAD)

• Ejemplos: Listas, conjuntos, grafos, ...

IAGP 34

Programación Orientada a Objetos

Control de acceso• Disponibilidad de métodos. Razones:

– El cliente no necesita ver lo que no le afecta (simplicidad)– Modificaciones en la implementación sin afectar a la interface ⇒ Cliente no afectado

• Niveles de acceso a miembros:– public, private, protected: Quién puede hacer uso

PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com

Page 18: Programación Orientada a Objetos Desarrollo de software ...dis.um.es/~barzana/Informatica/IAGP/IAGP_4.pdf · natural que la programación tradicional, y es verdad en dos niveles.

18

IAGP 35

Programación Orientada a Objetos

Clase Subclase Paquete Todos

private SI

protected SI SI* SI

public SI SI SI SI

package SI SI

IAGP 36

Programación Orientada a Objetos

Reutilización• Uso habitual: Instanciar un objeto de una clase• Composición: Relación "tiene un" (has-a)

–Clases que contienen objetos de otras clases (member object)–Objetos miembro: Privados si no son necesarios en la interface

• Herencia: Relación "es un" (is-a)–Modificación (especialización) de una clase ya existente

PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com

Page 19: Programación Orientada a Objetos Desarrollo de software ...dis.um.es/~barzana/Informatica/IAGP/IAGP_4.pdf · natural que la programación tradicional, y es verdad en dos niveles.

19

IAGP 37

Programación Orientada a Objetos

Herencia• Evita crear tipos (clases) nuevos por necesidad de similar funcionalidad• El nuevo tipo es un duplicado del otro con añadidos y/o modificaciones• Modificaciones en la clase original afectan a la clase hija• Herencia: ¿Es realmente necesaria?

– Composición mucho más habitual

IAGP 38

Programación Orientada a Objetos

Herencia: Subclases• Nuevo tipo. Contiene todos los miembros del anterior• Los miembros privados son inaccesibles• Duplica el interface de la original. Es del mismo tipo que la clase base• Formas de modificar la nueva clase:

– Añadir nuevos métodos– Cambiar el comportamiento de un método (override)

PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com

Page 20: Programación Orientada a Objetos Desarrollo de software ...dis.um.es/~barzana/Informatica/IAGP/IAGP_4.pdf · natural que la programación tradicional, y es verdad en dos niveles.

20

IAGP 39

Programación Orientada a Objetos

Herencia: Polimorfismo• Objetos de clases derivadas se pueden tratar como de la clase base• Permite código independiente del tipo.

– Fácil de escribir y entender• Al añadir nuevos tipos:

– No hay que reescribir código– Programas extensibles

IAGP 40

Programación Orientada a Objetos

Ejemplos:• Polimorfismo:

– Mensaje a un objeto de tipo desconocido.– Se ejecuta el método correcto– No hay que especificarlo (en C++ virtual)

• Upcasting (Conversión a superclase)– Ej. Figuras geométricas

• Enlace dinámico.– Ej. Trabajadores y nóminas

PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com

Page 21: Programación Orientada a Objetos Desarrollo de software ...dis.um.es/~barzana/Informatica/IAGP/IAGP_4.pdf · natural que la programación tradicional, y es verdad en dos niveles.

21

IAGP 41

Programación Orientada a Objetos

Clases abstractas• Subclases diferentes con un interface único• Sólo se permiten objetos de subclases• Métodos abstractos (sin implementación)

– Sólo en clases abstractas• Interfaces:

– Impiden implementar cualquier función– Sólo declaraciones– Herencia diferente a clases (herencia múltiple)– Las subclases "implementan" interfaces

IAGP 42

Programación Orientada a Objetos

Declaración de clases<acceso> class <nombre>{<miembros> // "members"

}

Miembros:– Atributos:

• Variables de instancia, globales a la clase.• Atributos de clase (información estática, compartida)

– Constructores. Código de inicialización– Métodos. Comportamiento.

PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com

Page 22: Programación Orientada a Objetos Desarrollo de software ...dis.um.es/~barzana/Informatica/IAGP/IAGP_4.pdf · natural que la programación tradicional, y es verdad en dos niveles.

22

IAGP 43

Programación Orientada a Objetos

Constructores• Se garantiza la inicialización de cada objeto (sus atributos) con un constructor• Java invoca al constructor al crear el objeto• La instanciación (new) reserva el lugar de almacenamiento e invoca al constructor• Nombre del constructor = nombre de la clase• Se encargan de todas las operaciones de inicialización necesarias.

IAGP 44

Programación Orientada a Objetos

• Constructor: No tiene valor de retorno• Una clase puede tener múltiples constructores

–Sobrecarga de constructorespublic class Coordenada{double x, y;public Coordenada(){x = 0.0; y = 0.0;

}public Coordenada (double v1, double v2){x = v1; y = v2;

}}

PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com

Page 23: Programación Orientada a Objetos Desarrollo de software ...dis.um.es/~barzana/Informatica/IAGP/IAGP_4.pdf · natural que la programación tradicional, y es verdad en dos niveles.

23

IAGP 45

Programación Orientada a Objetos

• Constructor "por defecto". Sin parámetros.• Clase sin constructor: El compilador crea un constructor "por defecto".• Si hay constructores con argumentos, no se crea el "constructor por defecto". Ejemplo.

– Error si se invoca el constr. sin parámetros• Constructores que invocan a otros constructores:

– llamada a this(...). Ejemplo.

IAGP 46

Programación Orientada a Objetos

La referencia this• Referencia al objeto actual.• Permite invocar métodos del objeto actual.

– No es necesario this para hacer eso

• Permite referenciar atributos del objeto actual

– Necesario si estan ocultos por parámetros / variables de ámbito más local. Ejemplo.

• Permite devolver una ref. al objeto actual• Permite invocaciones entre constructores

PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com

Page 24: Programación Orientada a Objetos Desarrollo de software ...dis.um.es/~barzana/Informatica/IAGP/IAGP_4.pdf · natural que la programación tradicional, y es verdad en dos niveles.

24

IAGP 47

Programación Orientada a Objetos

La llamada a super• Referencia a la superclase de la que desciende la clase actual• Reutilización de código por medio de herencia

– super invoca al comportamiento anterior.– Además se puede añadir comportamiento adicional

• Implícita en constructores como 1ª instrucción• en métodos: super.nombre_metodo()

IAGP 48

Programación Orientada a Objetos

Miembros de tipo static• Miembros (métodos o atributos) implementados a nivel de clase• Desde métodos static la referencia thisno tiene sentido• No se puede acceder a miembros no estáticos desde métodos estáticos• static: Semántica de "ámbito global"• Permite desarrollo de código sin usar POO

PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com

Page 25: Programación Orientada a Objetos Desarrollo de software ...dis.um.es/~barzana/Informatica/IAGP/IAGP_4.pdf · natural que la programación tradicional, y es verdad en dos niveles.

25

IAGP 49

Programación Orientada a Objetos

2.5 Lenguaje Smalltalk• Surge en los años 1970, en el Centro de Investigación de Xerox en Palo Alto (PARC) en EE.UU.

• Creado por Alan Kay, Adele Goldberg y Daniel Ingalls

• Influenciado por Simula y Lisp

•“El objetivo del proyecto de Smalltalk es proporcionar soporte informatizado para el espíritu creativo”

•“Lenguaje de descripción (lenguaje de programación) que sirva como una interface entre los modelos mentales y los modelos en el ordenador, y además un lenguaje de interacción(interfaz de usuario) que traslade los sistemas de comunicación humana a los ordenadores”

IAGP 50

Programación Orientada a Objetos

• “El sistema debería construirse con el mínimo nº de partes fijas y todas las partes deberían encontrarse en un marco uniforme.”

• “Un lenguaje para ordenadores debería:– soportar el concepto de Objeto y proporcionar un medio uniforme para identificarlos.– proporcionar un medio de clasificar los objetos y de crear nuevas clases con la misma base que las del núcleo.– ser Independiente de la representación (polimorfismo)– factorizar comportamiento común (herencia)”

• “La ejecución debería verse como una capacidad intrínseca de los objetos que pueden ser invocados de manera uniforme mediante el envío de mensajes.”

PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com

Page 26: Programación Orientada a Objetos Desarrollo de software ...dis.um.es/~barzana/Informatica/IAGP/IAGP_4.pdf · natural que la programación tradicional, y es verdad en dos niveles.

26

IAGP 51

Programación Orientada a Objetos

• Para que un lenguaje de desarrollo llegue a ser ampliamente aceptado deber ser estandarizado.

•A finales de 1993 se creó el Comité para la estandarización de Smalltalk X3J20.

• El primer borrador aparece a finales de 1995– 50% sintaxis/semántica y 50% Librerías de clases– Fácil debido a la simplicidad del lenguaje– Código de aplicaciones muy portable

• En 1995 se forma el STIC (SmallTalk Industry Council) “una voz unificada para la comunidad Smalltalk”

IAGP 52

Programación Orientada a Objetos

Los objetivos del STIC son:

• Lograr que Smalltalk sea el LOO elegido para el desarrollo de aplicaciones en la empresa

• Responder a las necesidades de la industria Smalltalk

• Favorecer la aparición de estándares

• Crear un “punto de encuentro” para la comunidad Smalltalk

http://www.stic.orgApuntes sobre Smalltalk:http://www.um.es/informatica/alumnos/apuntes/tercero/poo/smalltalk.ppt

PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com

Page 27: Programación Orientada a Objetos Desarrollo de software ...dis.um.es/~barzana/Informatica/IAGP/IAGP_4.pdf · natural que la programación tradicional, y es verdad en dos niveles.

27

IAGP 53

Programación Orientada a Objetos

2.6 Ejemplo

Polígonos y Rectángulos• Tenemos la clase Poligono y necesitamos representar rectángulos.

¿Debemos crear la clase Rectangulopartiendo de cero?

Podemos aprovechar la existencia de similitudes y particularidades entre ambas clases

IAGP 54

Programación Orientada a Objetos

• Un rectángulo tiene muchas de las características de un polígono (rotar, trasladar, vértices,..)• Pero tiene características especiales (diagonal) y propiedades especiales (4 lados, ángulos rectos)• Algunas características de polígono pueden implementarse más eficientemente

class Rectangulo inheritPoligono

feature...Características específicas para rectángulos

end

PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com