Tema 1: Introducción a la Ingeniería del Software · Def.1: Ejemplar concreto (instancia) de una...

28
Ingeniería del Software de Gestión www.kybele.es Tema 4a Introducción al Paradigma Orientado a Objetos Marcos López Sanz Ingeniería del Software de Gestión

Transcript of Tema 1: Introducción a la Ingeniería del Software · Def.1: Ejemplar concreto (instancia) de una...

Page 1: Tema 1: Introducción a la Ingeniería del Software · Def.1: Ejemplar concreto (instancia) de una clase que responde al comportamiento definido por las operaciones de la clase a

Ingeniería del Software de Gestión www.kybele.es

Tema 4aIntroducción al Paradigma Orientado a Objetos

Marcos López SanzIngeniería del Software de Gestión

Page 2: Tema 1: Introducción a la Ingeniería del Software · Def.1: Ejemplar concreto (instancia) de una clase que responde al comportamiento definido por las operaciones de la clase a

Ingeniería del Software de Gestión www.kybele.es

Índice

Introducción a la Orientación a Objetos

Elementos

Principios del paradigma OO

Otras consideraciones

Page 3: Tema 1: Introducción a la Ingeniería del Software · Def.1: Ejemplar concreto (instancia) de una clase que responde al comportamiento definido por las operaciones de la clase a

Ingeniería del Software de Gestión www.kybele.es

Introducción

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

denominadas objetos Los objetos combinan datos, comportamiento e identidad

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

Page 4: Tema 1: Introducción a la Ingeniería del Software · Def.1: Ejemplar concreto (instancia) de una clase que responde al comportamiento definido por las operaciones de la clase a

Ingeniería del Software de Gestión www.kybele.es

Elementosdel Paradigma Orientado a Objetos

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

Page 5: Tema 1: Introducción a la Ingeniería del Software · Def.1: Ejemplar concreto (instancia) de una clase que responde al comportamiento definido por las operaciones de la clase a

Ingeniería del Software de Gestión www.kybele.es

Elementosdel Paradigma Orientado a Objetos

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

“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.: coche, fracción, pila, radio, persona, autobús

Page 6: Tema 1: Introducción a la Ingeniería del Software · Def.1: Ejemplar concreto (instancia) de una clase que responde al comportamiento definido por las operaciones de la clase a

Ingeniería del Software de Gestión www.kybele.es

Elementosdel Paradigma Orientado a Objetos

Objetos y Clases Clases: Abstracción: conceptos del dominio del problema

Ppio. de encapsulación: vistas• Pública o Interfaz: comportamiento (= 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

No existe nada más que clases y sus objetos, ni constantes, tipos y datos “sueltos”, ni procedimientos y funciones “sueltas”, etc.

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

Page 7: Tema 1: Introducción a la Ingeniería del Software · Def.1: Ejemplar concreto (instancia) de una clase que responde al comportamiento definido por las operaciones de la clase a

Ingeniería del Software de Gestión www.kybele.es

Elementosdel Paradigma Orientado a Objetos

Objetos y ClasesObjeto: 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

Page 8: Tema 1: Introducción a la Ingeniería del Software · Def.1: Ejemplar concreto (instancia) de una clase que responde al comportamiento definido por las operaciones de la clase a

Ingeniería del Software de Gestión www.kybele.es

Elementos

del Paradigma Orientado a Objetos

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 volumenvalor del tonoAM/FMapagado/encendidofrecuencia seleccionadaCD introducido

Comportamiento:Subir/bajar volumenCambiar tonoCambiar bandaEncender/ApagarSelecc. frecuenciaIntroducir CD

Page 9: Tema 1: Introducción a la Ingeniería del Software · Def.1: Ejemplar concreto (instancia) de una clase que responde al comportamiento definido por las operaciones de la clase a

Ingeniería del Software de Gestión www.kybele.es

Elementos

del Paradigma Orientado a Objetos

Ejercicios: Definir e identificar Clases y Objetos Ej1.: 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.

Page 10: Tema 1: Introducción a la Ingeniería del Software · Def.1: Ejemplar concreto (instancia) de una clase que responde al comportamiento definido por las operaciones de la clase a

Ingeniería del Software de Gestión www.kybele.es

Elementosdel Paradigma Orientado a Objetos

Mensajes y métodosMensaje: 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

Page 11: Tema 1: Introducción a la Ingeniería del Software · Def.1: Ejemplar concreto (instancia) de una clase que responde al comportamiento definido por las operaciones de la clase a

Ingeniería del Software de Gestión www.kybele.es

Elementosdel Paradigma Orientado a Objetos

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’)

Page 12: Tema 1: Introducción a la Ingeniería del Software · Def.1: Ejemplar concreto (instancia) de una clase que responde al comportamiento definido por las operaciones de la clase a

Ingeniería del Software de Gestión www.kybele.es

Elementosdel Paradigma Orientado a Objetos

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.

Page 13: Tema 1: Introducción a la Ingeniería del Software · Def.1: Ejemplar concreto (instancia) de una clase que responde al comportamiento definido por las operaciones de la clase a

Ingeniería del Software de Gestión www.kybele.es

Elementos

del Paradigma Orientado a Objetos

Herencia y polimorfismo Concepto de 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 BA es un refinamiento de BA está más especializada que BA es una subclase de BB es superclase de AA “es un” B

Page 14: Tema 1: Introducción a la Ingeniería del Software · Def.1: Ejemplar concreto (instancia) de una clase que responde al comportamiento definido por las operaciones de la clase a

Ingeniería del Software de Gestión www.kybele.es

Elementos

del Paradigma Orientado a Objetos

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ó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

Page 15: Tema 1: Introducción a la Ingeniería del Software · Def.1: Ejemplar concreto (instancia) de una clase que responde al comportamiento definido por las operaciones de la clase a

Ingeniería del Software de Gestión www.kybele.es

Elementos

del Paradigma Orientado a Objetos

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)

Page 16: Tema 1: Introducción a la Ingeniería del Software · Def.1: Ejemplar concreto (instancia) de una clase que responde al comportamiento definido por las operaciones de la clase a

Ingeniería del Software de Gestión www.kybele.es

Elementos

del Paradigma Orientado a Objetos

Ejemplo: (herencia simple)

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

Page 17: Tema 1: Introducción a la Ingeniería del Software · Def.1: Ejemplar concreto (instancia) de una clase que responde al comportamiento definido por las operaciones de la clase a

Ingeniería del Software de Gestión www.kybele.es

Elementos

del Paradigma Orientado a Objetos

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

Problema: herencia repetida

Vehículo

Caravana

Casa

Terrestre

Anfibio

Acuático

Vehículo

Lancha

Page 18: Tema 1: Introducción a la Ingeniería del Software · Def.1: Ejemplar concreto (instancia) de una clase que responde al comportamiento definido por las operaciones de la clase a

Ingeniería del Software de Gestión www.kybele.es

Elementosdel Paradigma Orientado a Objetos

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)

Page 19: Tema 1: Introducción a la Ingeniería del Software · Def.1: Ejemplar concreto (instancia) de una clase que responde al comportamiento definido por las operaciones de la clase a

Ingeniería del Software de Gestión www.kybele.es

Elementos

del Paradigma Orientado a Objetos

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

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

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

Page 20: Tema 1: Introducción a la Ingeniería del Software · Def.1: Ejemplar concreto (instancia) de una clase que responde al comportamiento definido por las operaciones de la clase a

Ingeniería del Software de Gestión www.kybele.es

Principios / Bases

del Paradigma Orientado a Objetos

Principios básicos (procesos a tener en cuenta) Abstracción

Encapsulación u Ocultamiento

Modularidad

Jerarquía

Page 21: Tema 1: Introducción a la Ingeniería del Software · Def.1: Ejemplar concreto (instancia) de una clase que responde al comportamiento definido por las operaciones de la clase a

Ingeniería del Software de Gestión www.kybele.es

Principios / Bases

del Paradigma Orientado a Objetos

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

Page 22: Tema 1: Introducción a la Ingeniería del Software · Def.1: Ejemplar concreto (instancia) de una clase que responde al comportamiento definido por las operaciones de la clase a

Ingeniería del Software de Gestión www.kybele.es

Principios / Bases

del Paradigma Orientado a Objetos

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)” 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

Page 23: Tema 1: Introducción a la Ingeniería del Software · Def.1: Ejemplar concreto (instancia) de una clase que responde al comportamiento definido por las operaciones de la clase a

Ingeniería del Software de Gestión www.kybele.es

Principios / Bases

del Paradigma Orientado a Objetos

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: 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)

Page 24: Tema 1: Introducción a la Ingeniería del Software · Def.1: Ejemplar concreto (instancia) de una clase que responde al comportamiento definido por las operaciones de la clase a

Ingeniería del Software de Gestión www.kybele.es

Principios / Bases del Paradigma Orientado a Objetos

Modularidad Ejemplo 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: alto 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

Page 25: Tema 1: Introducción a la Ingeniería del Software · Def.1: Ejemplar concreto (instancia) de una clase que responde al comportamiento definido por las operaciones de la clase a

Ingeniería del Software de Gestión www.kybele.es

Principios / Bases

del Paradigma Orientado a Objetos

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

Page 26: Tema 1: Introducción a la Ingeniería del Software · Def.1: Ejemplar concreto (instancia) de una clase que responde al comportamiento definido por las operaciones de la clase a

Ingeniería del Software de Gestión www.kybele.es

Principios / Bases

del Paradigma Orientado a Objetos

Jerarquía

Univesidad

Rectorado Facultades

Departamentos Dirección

Profesores

Asociados Titulares

Interinos Funcionarios

Clasificación

Composición

Page 27: Tema 1: Introducción a la Ingeniería del Software · Def.1: Ejemplar concreto (instancia) de una clase que responde al comportamiento definido por las operaciones de la clase a

Ingeniería del Software de Gestión www.kybele.es

Principios / Bases

del Paradigma Orientado a Objetos

Jerarquía Favorece 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

Page 28: Tema 1: Introducción a la Ingeniería del Software · Def.1: Ejemplar concreto (instancia) de una clase que responde al comportamiento definido por las operaciones de la clase a

Ingeniería del Software de Gestión www.kybele.es

Conclusión

Concepto Definición

Abstracción Crear clases para simplificar aspectos de la realidad

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

EncapsulaciónDiseñ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

ObjetoElemento 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

¿Qué es la orientación a objetos?

Organizar el software como una colección de objetos que contiene tanto estructuras de datos como comportamiento.

Estr

uct

ura

Co

mp

ort

.

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