33
1 TEMA 4 : Conceptos básicos del paradigma Orientado a Objetos Profesor: David Granada

TEMA 4 - kybele.etsii.urjc.es · Ingeniería del Software - 2011/2012 Identificando Clases # La identificación de clases comienza con la lectura y comprensión de la especificación

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: TEMA 4 - kybele.etsii.urjc.es · Ingeniería del Software - 2011/2012 Identificando Clases # La identificación de clases comienza con la lectura y comprensión de la especificación

1

TEMA 4 : Conceptos básicos del paradigma Orientado a Objetos

Profesor: David Granada

Page 2: TEMA 4 - kybele.etsii.urjc.es · Ingeniería del Software - 2011/2012 Identificando Clases # La identificación de clases comienza con la lectura y comprensión de la especificación

Ingeniería del Software - 2011/2012

¿Qué es Orientado a Objetos?

2

§  Definición: Orientación a Objetos q Paradigma de computación q Define y organiza el software basándose en entidades

denominadas objetos q Los objetos combinan datos, comportamiento e identidad

§  Ámbitos q Programación q Bases de datos q Procesos de desarrollo q Arquitectura q Comunicaciones q Etc.

Page 3: TEMA 4 - kybele.etsii.urjc.es · Ingeniería del Software - 2011/2012 Identificando Clases # La identificación de clases comienza con la lectura y comprensión de la especificación

Ingeniería del Software - 2011/2012

¿Qué es un sistema orientado a objetos?

n  Un sistema donde sus elementos son entidades a las que denominaremos “objetos” que interactúan entre sí por medio del envío y recepción de “mensajes”, todo esto con el fin de cumplir un objetivo claro y definido para el sistema.

n  Cada uno de estos objetos “colabora” con otros objetos del sistema conversando con los mismos por medio de “mensajes”, y realiza tareas o cumple un rol específico en el sistema acorde a la “responsabilidad” que tenga asignada.

3

Page 4: TEMA 4 - kybele.etsii.urjc.es · Ingeniería del Software - 2011/2012 Identificando Clases # La identificación de clases comienza con la lectura y comprensión de la especificación

Ingeniería del Software - 2011/2012

¿Qué es Orientado a Objetos?

n  Complejidad ¨  Diferenciación entre Objetos y Atributos. ¨  Distinción entre el todo y sus partes. ¨  Formación y distinción de clases de objetos.

4

Page 5: TEMA 4 - kybele.etsii.urjc.es · Ingeniería del Software - 2011/2012 Identificando Clases # La identificación de clases comienza con la lectura y comprensión de la especificación

Ingeniería del Software - 2011/2012

Elementos del Paradigma OO

5

n  Elementos del paradigma OO ¨ Mecanismos que permiten abstracción, encapsulación,

modularización y jerarquización.

n  Objetos y clases n  Mensajes y métodos n  Estado y atributos n  Herencia y polimorfismo

Page 6: TEMA 4 - kybele.etsii.urjc.es · Ingeniería del Software - 2011/2012 Identificando Clases # La identificación de clases comienza con la lectura y comprensión de la especificación

Ingeniería del Software - 2011/2012

Elementos del Paradigma OO - Clase

6

n  Clase: ¨  Grupo de objetos con propiedades (atributos) similares,

comportamiento común (operaciones), relaciones comunes entre objetos, y semántica común (J.Raumbaugh).

n  Resultado del proceso de abstracción. Abstracción de los conceptos del dominio del problema.

n  “Molde” de infinitos objetos con ciertas características para crear en el dominio del ordenador un reflejo del mundo real

n  “Infinitud de objetos” à no estrictamente necesaria (meses, universo) n  Ej.: autobús, pila, radio, persona…

Page 7: TEMA 4 - kybele.etsii.urjc.es · Ingeniería del Software - 2011/2012 Identificando Clases # La identificación de clases comienza con la lectura y comprensión de la especificación

Ingeniería del Software - 2011/2012

Elementos del Paradigma OO - Clase

7

n  Clase: ¨  Principio de encapsulación: vistas.

n  Pública o Interfaz: comportamiento (a qué operaciones responden los objetos de esta clase)

n  Privada o Implantación: estructuras de datos de la clase y cómo manipulan las operaciones los datos

¨  Clase = nuevo bloque de construcción modular à cohesión entre datos y operaciones

Page 8: TEMA 4 - kybele.etsii.urjc.es · Ingeniería del Software - 2011/2012 Identificando Clases # La identificación de clases comienza con la lectura y comprensión de la especificación

Ingeniería del Software - 2011/2012

Identificando Clases n  La identificación de clases comienza con la lectura y

comprensión de la especificación de requerimientos, y con la exploración del dominio del problema.

n  Se establece una lista de clases candidatas basándose en los sustantivos que se encuentran. Luego se aplica las siguientes guías a la lista de clases candidatas: ¨  Modelar objetos físicos (un cliente, un libro, etc.). ¨  Modelar entidades conceptuales (una fecha, un evento, etc.). ¨  Utilizar un término simple para cada objeto. ¨  Controlar si los sustantivos calificados por adjetivos difieren de los

sustantivos solos. ¨  Modelar categorías de objetos (posibles superclases).

n  Luego de identificar clases, pueden identificarse clases abstractas candidatas agrupando clases con atributos comunes.

8

Page 9: TEMA 4 - kybele.etsii.urjc.es · Ingeniería del Software - 2011/2012 Identificando Clases # La identificación de clases comienza con la lectura y comprensión de la especificación

Ingeniería del Software - 2011/2012

Elementos del Paradigma OO - Objeto

9

n  Objeto: ¨  Def.1: Ejemplar concreto (instancia) de una clase que responde al

comportamiento definido por las operaciones de la clase a la que pertenece.

¨  Def.2: Proyección de parte del mundo real (del dominio del problema o del de la solución), en el ordenador.

¨  Características: n  Todo objeto se identifica unívocamente n  Todo objeto tiene unos datos propios (atributos) y un comportamiento

determinado

Page 10: TEMA 4 - kybele.etsii.urjc.es · Ingeniería del Software - 2011/2012 Identificando Clases # La identificación de clases comienza con la lectura y comprensión de la especificación

Ingeniería del Software - 2011/2012

¿Qué puede ser considerado un objeto?

n  Muchas cosas... ¨ Los objetos representan conceptos que

pertenecen al dominio de problema o al dominio de la solución.

n  Un objeto puede representar ¨ Algo físico: un avión, un libro, una persona. ¨ Algo abstracto: una cuenta bancaria, un número,

una fecha. ¨ Algo del dominio del problema: un factura, un

cliente. ¨ Algo del dominio de la solución: un formulario,

una página web. 10

Page 11: TEMA 4 - kybele.etsii.urjc.es · Ingeniería del Software - 2011/2012 Identificando Clases # La identificación de clases comienza con la lectura y comprensión de la especificación

Ingeniería del Software - 2011/2012

n Atributo: ¨ Es una característica intrínseca de un objeto,

es independiente de otros objetos. ¨ Tiene un nombre. ¨ Tiene un rango posible de valores. ¨ Ej: Nombre de empleado. # de empleado. ¨ En cada instante cada atributo tiene un valor

único. ¨ Pueden ser mutables o inmutables. ¨ Describen el estado del objeto.

11

Elementos del Paradigma OO - Atributo

Page 12: TEMA 4 - kybele.etsii.urjc.es · Ingeniería del Software - 2011/2012 Identificando Clases # La identificación de clases comienza con la lectura y comprensión de la especificación

Ingeniería del Software - 2011/2012

¿Cómo se piensa en objetos?

n Pensar en términos de objetos es similar a cómo lo haríamos en la vida real. ¨ Por ej: Coche

n  Diríamos que el coche es el elemento principal y tiene una serie de características como podría ser el color, el año de fabricación o el modelo.

n  Además tiene una serie de funcionalidades asociadas, como pueden ser ponerse en marcha o detenerse.

12

Page 13: TEMA 4 - kybele.etsii.urjc.es · Ingeniería del Software - 2011/2012 Identificando Clases # La identificación de clases comienza con la lectura y comprensión de la especificación

Ingeniería del Software - 2011/2012

Ejemplo - Objeto

13

n Objeto: TUNE

VOLUME TONE BALANCE

L H L H L H

ON OFF

FM AM

FM 88 90 93 97 100 102 Mhz

AM 530 650 850 900 1200 Khz

Estado: valor del volumen valor del tono AM/FM apagado/encendido frecuencia seleccionada

Comportamiento: Subir/bajar volumen Cambiar tono Cambiar banda Encender/Apagar Seleccionar frecuencia

Page 14: TEMA 4 - kybele.etsii.urjc.es · Ingeniería del Software - 2011/2012 Identificando Clases # La identificación de clases comienza con la lectura y comprensión de la especificación

Ingeniería del Software - 2011/2012

Elementos del Paradigma OO - Mensaje

14

n  Mensaje: Mecanismo por medio del cual se comunican los objetos para poder interactuar y colaborar unos con otros.

¨  Un objeto es el agente activo que lanza el mensaje y otro objeto es el agente pasivo que recibe el mensaje.

¨  El objeto que recibe el mensaje debe contemplar dicha operación entre las definidas por la clase a la que pertenece.

¨  Puede verse como la solicitud de un servicio a un objeto. ¨  Un objeto siempre devuelve un objeto como respuesta al mensaje (a

veces él mismo).

Page 15: TEMA 4 - kybele.etsii.urjc.es · Ingeniería del Software - 2011/2012 Identificando Clases # La identificación de clases comienza con la lectura y comprensión de la especificación

Ingeniería del Software - 2011/2012

Tipos de Mensajes

n  Se puede enviar mensajes a un objeto con diferentes propósitos: ¨  Para indagar el valor de alguno de sus atributos:

por ej. unaCuenta.obtenerSaldo(); ¨  Para asignar un valor a alguno de sus atributos:

por ej. unaCuenta.asignarSaldo(1000); ¨  Para solicitar la realización de una operación:

por ej. unaCuenta.depositar(unValor);

15

Page 16: TEMA 4 - kybele.etsii.urjc.es · Ingeniería del Software - 2011/2012 Identificando Clases # La identificación de clases comienza con la lectura y comprensión de la especificación

Ingeniería del Software - 2011/2012

Elementos del Paradigma OO - Método

16

n  Método: definición de una operación de una clase. ¨  Consiste en la descripción formal del comportamiento asociado a un

objeto. ¨  Puede entenderse como un servicio que ofrece el objeto.

n  Tipos: ¨  Producen un cambio en el estado del objeto sobre el que se

ejecuta el método. ¨  Aquellos que sin producir ningún cambio en el estado del

objeto calculan cierto valor. ¨  Métodos específicos para la inicialización y finalización de la

vida de un objeto (constructores y destructores)

n  Permiten la colaboración entre objetos: paso de parámetros/argumentos en los métodos (información del ‘exterior’)

Page 17: TEMA 4 - kybele.etsii.urjc.es · Ingeniería del Software - 2011/2012 Identificando Clases # La identificación de clases comienza con la lectura y comprensión de la especificación

Ingeniería del Software - 2011/2012

n  Herencia: ¨  Forma de estructurar tipos/clases según su comportamiento

mediante la creación de una jerarquía de clasificación

B

A

Clase padre/madre/base Superclase

Clase hija/extendida/derivada Subclase

Generalización

Especialización

A hereda de B A es un refinamiento de B A está más especializada que B A es una subclase de B B es superclase de A A “es un” B

Elementos del Paradigma OO - Herencia

Page 18: TEMA 4 - kybele.etsii.urjc.es · Ingeniería del Software - 2011/2012 Identificando Clases # La identificación de clases comienza con la lectura y comprensión de la especificación

Ingeniería del Software - 2011/2012

n  Propiedades de la herencia: ¨  Intuitivamente fácil de comprender ¨  Una subclase “extiende” las propiedades de su superclase ¨  Una subclase es una forma restringida de la superclase ¨  Un objeto de una subclase puede acceder a campos y métodos declarados en

su superclase à hereda sus atributos y operaciones

n  Propósitos ¨  Especificación: Si la superclase es un interfaz o una clase abstracta ¨  Especialización: La superclase proporciona funciones a las subclases, pero

éstas pueden redefinir los métodos adecuándolos a su comportamiento específico

¨  Extensión: La subclase añade nueva funcionalidad (métodos y campos) pero no modifica ni altera lo heredado à Subtipo

¨  Combinación múltiple: Se hereda de varias clases à herencia múltiple

Elementos del Paradigma OO - Herencia

Page 19: TEMA 4 - kybele.etsii.urjc.es · Ingeniería del Software - 2011/2012 Identificando Clases # La identificación de clases comienza con la lectura y comprensión de la especificación

Ingeniería del Software - 2011/2012

n  Beneficios de la herencia ¨  Reusabilidad del Software: se reutiliza el código heredado ¨  Mayor fiabilidad: al reusarse el código existente, hay más posibilidad de

encontrar errores y subsanarlos ¨  Consistencia de interfaces: la jerarquía de herencia asegura que

objetos similares tienen vistas públicas similares ¨  Prototipado rápido: al reutilizarse código se favorece este método de

desarrollo ¨  Ocultación de información: la disponibilidad de interfaces claras reduce

las interconexiones entre sistemas (clases padre como interfaz)

Elementos del Paradigma OO - Herencia

Page 20: TEMA 4 - kybele.etsii.urjc.es · Ingeniería del Software - 2011/2012 Identificando Clases # La identificación de clases comienza con la lectura y comprensión de la especificación

Ingeniería del Software - 2011/2012

n Herencia simple

à Figura: color rota, mueve, dibuja à F_cerrada: perímetro, área à Polígono: número_lados à Cuadrilátero: perímetro, área à Cuadrado: perímetro, área à Círculo: radio perímetro

Figura

F_abierta F_cerrada

Polígono

Triángulo Cuadrilátero

Cuadrado

Elipse

Círculo

- Todas las figuras se pueden: à rotar à escalar - Todas tienen un color - Clases abstractas: à Figura à F_Cerrada à F_Abierta à Polígono

Ejemplo - Herencia

Page 21: TEMA 4 - kybele.etsii.urjc.es · Ingeniería del Software - 2011/2012 Identificando Clases # La identificación de clases comienza con la lectura y comprensión de la especificación

Ingeniería del Software - 2011/2012

n  Herencia múltiple: ¨  Una clase hereda de más de un antecesor

¨  Problema: herencia repetida

Vehículo

Caravana

Casa

Ejemplo - Herencia

Page 22: TEMA 4 - kybele.etsii.urjc.es · Ingeniería del Software - 2011/2012 Identificando Clases # La identificación de clases comienza con la lectura y comprensión de la especificación

Ingeniería del Software - 2011/2012

n  Polimorfismo ¨  Posibilidad que tienen distintos objetos de actuar de una manera

diferente (desencadenar operaciones distintas) en respuesta a un mismo mensaje (una misma llamada a función)

Elementos del Paradigma OO - Polimorfismo

Page 23: TEMA 4 - kybele.etsii.urjc.es · Ingeniería del Software - 2011/2012 Identificando Clases # La identificación de clases comienza con la lectura y comprensión de la especificación

Ingeniería del Software - 2011/2012

n  Tipos de polimorfismo ¨  “Ad hoc” o estático:

n  Sobrecarga n  Coerción: conversión de objetos de una clase a otra (cast)

¨  Universal

n  Bases: ¨  Herencia: no se puede aplicar polimorfismo si no es con clases que

hereden de otras ¨  Instanciación dinámica: una referencia a un objeto A puede estar

haciendo referencia a distintos objetos derivados de la clase A à el polimorfismo siempre implica enlace dinámico

n  Beneficios: ¨  Abstracción: no es necesario conocer toda la jerarquía de clases

derivadas ¨  Extensibilidad: aumentar la funcionalidad del programa/sistema sin

tener que modificar el código ya escrito

Elementos del Paradigma OO - Polimorfismo

Page 24: TEMA 4 - kybele.etsii.urjc.es · Ingeniería del Software - 2011/2012 Identificando Clases # La identificación de clases comienza con la lectura y comprensión de la especificación

Ingeniería del Software - 2011/2012

n  Principios básicos (procesos a tener en cuenta) ¨  Abstracción ¨  Encapsulación u Ocultamiento ¨  Modularidad ¨  Jerarquía

Principios / Bases del Paradigma OO

Page 25: TEMA 4 - kybele.etsii.urjc.es · Ingeniería del Software - 2011/2012 Identificando Clases # La identificación de clases comienza con la lectura y comprensión de la especificación

Ingeniería del Software - 2011/2012

n  Abstracción ¨  Def.: “Proceso mental de extracción de las características esenciales (requisitos

o funciones) de algo, ignorando los detalles superfluos”

¨  Motivo: No es posible manejar todos los aspectos de un sistema al mismo tiempo à un individuo puede comprender 7 ± 2 detalles a la vez

¨  Fundamentalmente subjetiva (dependiendo del interés del observador) ¨  Punto de vista del “cliente” (usuario) ¨  Implementación en OO à Clases ¨  Ejemplos:

n  Autobús visto por un mecánico y un pasajero n  Persona en un historial clínico y en la universidad n  Radio como emisora o como aparato

Principios / Bases - Abstracción

Page 26: TEMA 4 - kybele.etsii.urjc.es · Ingeniería del Software - 2011/2012 Identificando Clases # La identificación de clases comienza con la lectura y comprensión de la especificación

Ingeniería del Software - 2011/2012

n  Encapsulación u ocultamiento ¨  Def.: “Proceso por el que se ocultan los detalles del soporte de las

características esenciales de una abstracción (cómo se realizan las funciones)”

n  Esencial: características del ‘mundo real’ à abstracción n  Superfluo: estructuras de datos y algoritmos

¨  Punto de vista del “desarrollador” (sistema)

¨  Ventajas: n  Delimita el área de búsqueda de errores n  Reduce la complejidad del sistema n  Facilita la modificación del sistema

¨  Implementación en OO n  Un objeto sólo tiene accesible su interfaz (servicios o métodos) n  Los atributos son siempre privados à Acceso por métodos de solicitud y

establecimiento de valor

Principios / Bases - Encapsulamiento

Page 27: TEMA 4 - kybele.etsii.urjc.es · Ingeniería del Software - 2011/2012 Identificando Clases # La identificación de clases comienza con la lectura y comprensión de la especificación

Ingeniería del Software - 2011/2012

n  Modularidad ¨  Def.: “Proceso de descomposición de un sistema en un conjunto

de piezas poco acopladas (independientes) y altamente cohesivas (con significado propio): módulos”

¨  Conceptos asociados: n  Acoplamiento: “fuerza” de la dependencia entre módulos

à ideal: bajo n  Cohesión: mide el grado de conectividad entre los elementos de un solo

módulo à ideal: alta

¨  Descomposición en OO: n  Descomponer para obtener las abstracciones claves del dominio del

problema n  El mundo es un conjunto de objetos agrupados que colaboran n  Cada objeto exhibe un comportamiento definido (no identificable,

necesariamente, con una función del sistema)

Principios / Bases - Modularidad

Page 28: TEMA 4 - kybele.etsii.urjc.es · Ingeniería del Software - 2011/2012 Identificando Clases # La identificación de clases comienza con la lectura y comprensión de la especificación

Ingeniería del Software - 2011/2012

n  Modularidad ¨  Ejemplo 1:

n  Sistema universitario (alumnos, profesores, rectores, personal administrativo, aulas, bibliotecas, estatutos, planes de estudios) è alta modularidad

¨  Cohesión: baja à se entienden por sí mismos ¨  Acoplamiento: bajoà no dependen unos de otros para existir

¨  Ejemplo 2: n  Ámbitos personales è baja modularidad

¨  Cohesión: alta à necesitan del entorno, costumbres sociales, cultura para “explicarse”

¨  Acoplamiento: alto à una pérdida en la familia repercute en el estado de ánimo de todos

Principios / Bases - Modularidad

Page 29: TEMA 4 - kybele.etsii.urjc.es · Ingeniería del Software - 2011/2012 Identificando Clases # La identificación de clases comienza con la lectura y comprensión de la especificación

Ingeniería del Software - 2011/2012

n  Jerarquía ¨  Def.: “Proceso de estructuración por el que se produce una

organización de un conjunto de elementos en grados o niveles de responsabilidad, de incumbencia o de composición entre otros”

¨  Tipos: 1.  Por grado de composición o de agregación: una abstracción o

módulo se compone de un conjunto de elementos

2.  Por grados de clasificación, clasificación de las distintas abstracciones de la más general a las más específicas

Principios / Bases – Jerarquía

Page 30: TEMA 4 - kybele.etsii.urjc.es · Ingeniería del Software - 2011/2012 Identificando Clases # La identificación de clases comienza con la lectura y comprensión de la especificación

Ingeniería del Software - 2011/2012

n  Jerarquía

Principios / Bases - Jerarquía

Univesidad

Rectorado Facultades

Departamentos Dirección

Profesores

Asociados Titulares

Interinos Funcionarios

Clasificación à

ß Composición

Page 31: TEMA 4 - kybele.etsii.urjc.es · Ingeniería del Software - 2011/2012 Identificando Clases # La identificación de clases comienza con la lectura y comprensión de la especificación

Ingeniería del Software - 2011/2012

n  Jerarquía ¨  Favorece la extensibilidad:

n  Facilidad con la que los productos software pueden ser adaptados a cambios incrementales de especificaciones.

n  Principios para facilitar la extensibilidad: ¨  Simplicidad de diseño ¨  Descentralización

n  Mecanismos para ayudar a conseguir la extensibilidad: ¨  Herencia ¨  Polimorfismo

¨  ¿Añadir una nueva funcionalidad? n  Identificar qué clase la soportará. n  Implementar la nueva funcionalidad en esta clase ¿Cómo?

¨  Modificar la definición original? ¨  Hacer copia y modificar la copia? ¨  Modificar la original por crecimiento?

n  Óptimo à por crecimiento: se crea una subclase que define las diferencias entre la clase existente y la nueva abstracción:

¨  La clase existente no resulta afectada. ¨  No hay código repetido

Principios / Bases del Paradigma Orientado a Objetos

Page 32: TEMA 4 - kybele.etsii.urjc.es · Ingeniería del Software - 2011/2012 Identificando Clases # La identificación de clases comienza con la lectura y comprensión de la especificación

Ingeniería del Software - 2011/2012

Concepto Definición Abstracción Crear clases para simplificar aspectos de la realidad

Clase Una descripción de la organización y acciones compartidas por uno o más objetos similares

Encapsulación Diseñar clases y objetos para restringir el acceso a los datos y comportamiento mediante la definición de un conjunto de mensajes que un objeto puede recibir

Herencia Los datos y comportamiento de una clase es incluido o usado como base de otra

Objeto Elemento individual, identificable, real o abstracto, que contiene datos sobre sí mismo y descripciones de cómo manipular dichos datos

Paso de mensajes Un objeto envía datos a otro o le solicita la invocación de un método

Método Forma de acceder, establecer o manipular la información de un objeto

Polimorfismo Diferentes clases pueden responder de forma diferente ante un mismo mensaje

Conclusión n  ¿Qué es la orientación a objetos? Organizar el software como una

colección de objetos que contiene tanto estructuras de datos como comportamiento.

Est

ruct

ura

Com

port.

Tabla extraída de The Quarks of Object-Oriented Development. Deborah J. Armstrong. Communications of the ACM. Vol.49/No.2 Febrero 2006

Page 33: TEMA 4 - kybele.etsii.urjc.es · Ingeniería del Software - 2011/2012 Identificando Clases # La identificación de clases comienza con la lectura y comprensión de la especificación

33

TEMA 4 : Conceptos básicos del paradigma Orientado a Objetos

Profesor: David Granada