Upload
dangque
View
216
Download
0
Embed Size (px)
Citation preview
www.kybele.etsii.urjc.es Ingeniería del Software I – 2011/2012
Definición: Orientación a ObjetosParadigma de computación Define y organiza el software basándose en entidades denominadas objetos Los objetos combinan datos, comportamiento e identidad
ÁmbitosProgramaciónBases de datosProcesos de desarrolloArquitecturaComunicacionesEtc.
Introducción
www.kybele.etsii.urjc.es Ingeniería del Software I – 2011/2012
Elementos del paradigma O. O.
Mecanismos que permiten abstracción, encapsulación, modularización y jerarquización.
Objetos y clases
Mensajes y métodos
Estado y atributos
Herencia y polimorfismo
Elementos
del Paradigma Orientado a Objetos
www.kybele.etsii.urjc.es Ingeniería del Software I – 2011/2012
Objetos y ClasesClase: descripción de los datos (atributos) y de las operaciones que describen el comportamiento de un cierto conjunto de elementos homogéneos
Resultado del proceso de abstracción. Abstracción de los conceptos del dominio del problema.
“Molde” de infinitos objetos con ciertas características para crear en el dominio de la computadora un reflejo del mundo real
“Infinitud de objetos” no estrictamente necesaria (meses, universo)
Ej.: autobús, fracción, pila, radio, persona…
Elementos
del Paradigma Orientado a Objetos
www.kybele.etsii.urjc.es Ingeniería del Software I – 2011/2012
Objetos y ClasesClases:
Principio de encapsulación: vistas
• Pública o Interfaz: comportamiento (a qué operaciones responden los objetos de esta clase)
• 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
Elementos
del Paradigma Orientado a Objetos
www.kybele.etsii.urjc.es Ingeniería del Software I – 2011/2012
Objetos y Clases
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 la computadora
Características:
• Pueden ser: Tangibles (libros) o Intangibles (deudas)
• Todo objeto se identifica unívocamente
• Todo objeto tiene unos datos propios (atributos) y un comportamiento determinado
Ej: mi coche, pila nº 2, gastos/ingresos, radio del salón, autobús 518
Elementos
del Paradigma Orientado a Objetos
www.kybele.etsii.urjc.es Ingeniería del Software I – 2011/2012
Objeto:
Elementos
del Paradigma Orientado a Objetos
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 volumenvalor del tonoAM/FMapagado/encendidofrecuencia seleccionadaCD introducido
Comportamiento:Subir/bajar volumenCambiar tonoCambiar bandaEncender/ApagarSelecc. frecuenciaIntroducir CD
www.kybele.etsii.urjc.es Ingeniería del Software I – 2011/2012
Ejercicios: Definir e identificar Clases y ObjetosEj1.: Se desea crear un sistema software que permita realizar las operaciones de suma, resta, multiplicación y división. Se desea almacenar el conjunto de operaciones realizadas en un intervalo de tiempo determinado. Los números podrán ser reales o imaginarios.
Ej2.: Un reproductor MP3 consta de una pantalla de visualización y una serie de botones que permiten: cambiar de canción, subir el volumen, ver cuánta batería le queda al dispositivo y cambiar los colores de la pantalla.
Ej3.: La universidad desea almacenar la información de todos los profesores, las asignaturas de cada profesor, el campus en el que se imparten, las páginas Web de cada asignatura. También desea realizar la gestión de las nóminas de estos profesores en función del número de asignaturas y horas impartidas por cada profesor.
Ej4.: En un zoo se quiere implementar un sistema de venta de entradas interactivo. En él se podrá consultar la información de los animales que tiene el parque, los horarios y precios del zoo. Este sistema deberá ser accesible para los discapacitados visuales.
Ej5.: Se desea crear un sistema de intercambio de datos legales basado en la tecnología P2P. Para ello habrá que tener en cuenta el tipo de ficheros que se va a descargar, los protocolos de comunicaciones entre diferentes sistemas de la red P2P, los servidores a los que se conectan los clientes, el progreso de la descarga y un sistema de búsqueda eficiente de contenidos.
Elementos
del Paradigma Orientado a Objetos
www.kybele.etsii.urjc.es Ingeniería del Software I – 2011/2012
Mensajes y métodos
Mensaje: Es la invocación de una operación sobre un objeto
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)
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
Elementos
del Paradigma Orientado a Objetos
www.kybele.etsii.urjc.es Ingeniería del Software I – 2011/2012
Mensajes y métodosMétodo: 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)
Permiten la colaboración entre objetos: paso de parámetros/argumentos en los métodos (información del ‘exterior’)
Elementos
del Paradigma Orientado a Objetos
www.kybele.etsii.urjc.es Ingeniería del Software I – 2011/2012
Estado y atributosAtributo: cada uno de los datos de una clase
Representan las características que tiene un determinado objeto
Son definidas en la clase del objeto
Ej.:
• Coche: tipo de gasolina, capacidad del depósito, cilindrada, etc.
Estado: conjunto de los valores de los atributos que tiene un objeto, por pertenecer a una clase, en un instante dado
Ej.: mi coche con gasoil, depósito vacío, 1.200cc, etc.
Elementos
del Paradigma Orientado a Objetos
www.kybele.etsii.urjc.es Ingeniería del Software I – 2011/2012
Herencia y polimorfismoConcepto de herencia: Forma de estructurar tipos/clases según su comportamiento mediante la creación de una jerarquía de clasificación
Elementos
del Paradigma Orientado a Objetos
B
A
Clase padre/madre/base Superclase
Clase hija/extendida/derivada
Subclase
Generalización
Especialización
A hereda de BA es un refinamiento de BA está más especializada que BA es una subclase de BB es superclase de AA “es un” B
www.kybele.etsii.urjc.es Ingeniería del Software I – 2011/2012
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
PropósitosEspecificació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 Orientado a Objetos
www.kybele.etsii.urjc.es Ingeniería del Software I – 2011/2012
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 Orientado a Objetos
www.kybele.etsii.urjc.es Ingeniería del Software I – 2011/2012
Ejemplo: (herencia simple)
Elementos
del Paradigma Orientado a Objetos
Figura:colorrota, mueve, dibuja
F_cerrada:perímetro, área
Polígono:número_lados
Cuadrilátero:perímetro, área
Cuadrado:perímetro, área
Círculo:radioperí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
www.kybele.etsii.urjc.es Ingeniería del Software I – 2011/2012
Herencia múltiple:Una clase hereda de más de un antecesor
Problema: herencia repetida
Elementos
del Paradigma Orientado a Objetos
Vehículo
Caravana
Casa
Terrestre
Anfibio
Acuático
Vehículo
Lancha
www.kybele.etsii.urjc.es Ingeniería del Software I – 2011/2012
PolimorfismoPosibilidad 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)
Elementosdel Paradigma Orientado a Objetos
www.kybele.etsii.urjc.es Ingeniería del Software I – 2011/2012
Tipos de polimorfismo“Ad hoc” o estático: Sobrecarga Coerción: conversión de objetos de una clase a otra (cast)
Universal
Bases:Herencia: no se puede aplicar polimorfismo si no es con clases que hereden de otrasInstanciació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
Beneficios:Abstracción: no es necesario conocer toda la jerarquía de clases derivadasExtensibilidad: aumentar la funcionalidad del programa/sistema sin tener que modificar el código ya escrito
Elementos
del Paradigma Orientado a Objetos
www.kybele.etsii.urjc.es Ingeniería del Software I – 2011/2012
Principios básicos (procesos a tener en cuenta)Abstracción
Encapsulación u Ocultamiento
Modularidad
Jerarquía
Principios / Bases
del Paradigma Orientado a Objetos
www.kybele.etsii.urjc.es Ingeniería del Software I – 2011/2012
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:
Autobús visto por un mecánico y un pasajero
Persona en un historial clínico y en la universidad
Radio como emisora o como aparato
Principios / Bases
del Paradigma Orientado a Objetos
www.kybele.etsii.urjc.es Ingeniería del Software I – 2011/2012
Encapsulación u ocultamientoDef.: “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)” Esencial: características del ‘mundo real’ abstracción Superfluo: estructuras de datos y algoritmos
Punto de vista del “desarrollador” (sistema)
Ventajas: Delimita el área de búsqueda de errores Reduce la complejidad del sistema Facilita la modificación del sistema
Implementación en OO Un objeto sólo tiene accesible su interfaz (servicios o métodos) Los atributos son siempre privados Acceso por métodos de solicitud y
establecimiento de valor
Principios / Bases
del Paradigma Orientado a Objetos
www.kybele.etsii.urjc.es Ingeniería del Software I – 2011/2012
ModularidadDef.: “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: Acoplamiento: “fuerza” de la dependencia entre módulos ideal: bajo
Cohesión: mide el grado de conectividad entre los elementos de un solo módulo ideal: alta
Descomposición en OO: Descomponer para obtener las abstracciones claves del dominio del problema El mundo es un conjunto de objetos agrupados que colaboran Cada objeto exhibe un comportamiento definido (no identificable, necesariamente,
con una función del sistema)
Principios / Bases
del Paradigma Orientado a Objetos
www.kybele.etsii.urjc.es Ingeniería del Software I – 2011/2012
ModularidadEjemplo 1:
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:
Á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
del Paradigma Orientado a Objetos
www.kybele.etsii.urjc.es Ingeniería del Software I – 2011/2012
JerarquíaDef.: “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
del Paradigma Orientado a Objetos
www.kybele.etsii.urjc.es Ingeniería del Software I – 2011/2012
Jerarquía
Principios / Bases
del Paradigma Orientado a Objetos
Univesidad
Rectorado Facultades
Departamentos Dirección
Profesores
Asociados Titulares
Interinos Funcionarios
Clasificación
Composición
www.kybele.etsii.urjc.es Ingeniería del Software I – 2011/2012
JerarquíaFavorece la extensibilidad: Facilidad con la que los productos software pueden ser adaptados a cambios
incrementales de especificaciones. Principios para facilitar la extensibilidad:
• Simplicidad de diseño• Descentralización
Mecanismos para ayudar a conseguir la extensibilidad:• Herencia• Polimorfismo
¿Añadir una nueva funcionalidad? Identificar qué clase la soportará. 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?
Ó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
www.kybele.etsii.urjc.es Ingeniería del Software I – 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
¿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