Post on 11-Apr-2020
1
TEMA 4 : Conceptos básicos del paradigma Orientado a Objetos
Profesor: David Granada
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.
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
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
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
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…
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
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
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
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
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
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
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
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).
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
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’)
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
33
TEMA 4 : Conceptos básicos del paradigma Orientado a Objetos
Profesor: David Granada