Tema 4 Introducción a la Orientación a Objetos. Ingeniería del Software I

Documentos relacionados
Tema X: Introducción al Paradigma Orientado. a Objetos. Diana Marcela Sánchez Fúquene Ingeniería del Software de Gestión.

Tema 1: Introducción

Programación Orientada a Objetos. Conceptos Básicos

Introducción a OOP. Programación Orientada a Objeto

HERENCIA Y TIPOS. Articulo. Video Audio Altavoces. Amplificador

Introducción al Paradigma Orientado a Objetos

La Orientación a Objetos. Diseño de Software Avanzado Departamento de Informática

Federico Peinado

Curso de Java POO: Programación orientada a objetos

Conceptos de Programación Orientada a Objetos

Ingeniería del Software Orientada a Objetos. Unidad 5: Conceptos del Paradigma Orientado a Objetos

Introducción a la Orientación a Objetos

Tema: Herencia en C#.

Cada enfoque tiene sus ventajas y desventajas Cada uno es más apropiado para ciertas cosas

Edwin Andrés Cubillos Vega

Programación Orientada a Objetos

Enfoque de Desarrollo de software OO

Programación Orientada a Objetos

Fundamentos de Programación Orientada a Objetos ( POO ) Parte 2 Desarrollo de Software

Tema 3: Relaciones entre objetos y clases

Curso de Java POO: Programación orientada a objetos

ANÁLISIS Y DISEÑO ORIENTADO A OBJETOS

Programación Orientada a Objetos

CAPÍTULO 2: CARACTERÍSTICAS DE LA PROGRAMACIÓN ORIENTADA A OBJETOS. ABSTRACCIÓN. ENCAPSULAMIENTO. PRINCIPIO DE OCULTACIÓN. HERENCIA. POLIMORFISMO.

Las clases están compuestas por un conjunto de miembros. (datos y funciones) también se conocen como (atributos y métodos)

obtenidos a partir de los objetos que manipula. un nuevo paradigma de programación, La POO es Clases su forma de módulo.

Tema: Funciones Virtuales y Polimorfismo.

Tema: Funciones Virtuales y Polimorfismo.

Tema 3. Diagramas de Clases y Objetos C H R I STO PHER E X P Ó S I TO I Z Q U I ERDO A I R A M E X P Ó S I TO M Á R Q UEZ I S R A E L LÓ P EZ P L ATA

Universidad Salesiana de Bolivia

Metodologías en la Ingeniería del Software Métodos Orientados a Objetos

Academia de computación de IE, ICA e ISISA. Unidad didáctica Programación Orientada a Objetos

Programación orientada a objetos I

Programación Orientada a Objetos. Integrantes: Santiago Hernández Bolívar Edwin Alexander Bohórquez

09/01/2008. Nombre de la clase. Atributos. Métodos/Operaciones

Universidad Nacional del Santa E.A.P. Sistemas e Informática Microcomputación III

Modularidad: Tipos abstractos de datos Programación Orientada a Objetos Tema 2: Modularidad

Tipos Abstractos de Datos (TAD) Lección 1

Introducción a la Ingeniería de Software

Unidad IV. Este tipo de codificación nos es permitido gracias a la sobrecarga, la cual se aplica a métodos y constructores.

TEMA 6: Lenguajes orientados a objetos. Fundamentos teóricos.

Tema: Funciones Virtuales y Polimorfismo.

PROGRAMACION II. Dr. Mario Rossainz López. Fac. de Cs. de la Computación Benemérita Universidad Autónoma de Puebla Primavera de 2017

Programación Orientada a Objetos

! Fundamentos de la POO. ! Comportamiento y estado. ! Clases y objetos en Java

UNIVERSIDAD AUTÓNOMA DE BAJA CALIFORNIA

Definiciones. Orientación a Objetos

Intuitivamente es el proceso que se trata de formular y evaluar una solución para un problema dado

Programación n de sistemas

UAA-DSE Programación 2 / C++ Eduardo Serna-Pérez

Introducción a la Orientación a Objetos

Evolución de la Programación Orientada a Objetos


Principios de Diseño Orientado a Objetos

Programación Orientada a Objetos

PROGRAMACIÓN EN JAVA

Programa Oficial de Asignatura. Ficha Técnica. Presentación. Competencias y/o resultados del aprendizaje. Contenidos Didácticos

Introducción. Introducción y conceptos de POO. En qué consiste la POO? Vocabulario. Definiciones

Tema 1. Introducción a la Programación Orientada a Objetos

Modelo de Orientación a Aspectos

Unidad I: Introducción a las estructuras de datos

TRABAJO PRÁCTICO 7: OBJETOS

Programación Orientada a Objetos. Introducción

Introducción y conceptos de POO

Programación Orientada a Objetos

PNFSI. Asignatura: Desarrollo de Software. Tema 1: Programación Orientada a Objetos

Herencia. Proceso mediante el cual una clase adquiere las propiedades (atributos) y comportamiento (métodos) de otra.

CLASE 9: DISEÑO CON PATRONES. Universidad Simón Bolívar. Ing. de Software. Prof. Ivette C. Martínez

Programación en Java. Horario: 3:00 PM 7:00PM

Diseño Basado en Componentes. Curso 2008 / 09

Diseño arquitectónico 1ª edición (2002)

Qué es SGBD? Mencionar 4 tipos de SGBD. SGBD de red. Román Gutiérrez Sosa. SGBD jerárquicos. Modelo de datos relacionales.

OOP y C++ Indice. 0.1 Análisis orientado a objetos(1/4) Análisis orientado a objetos(2/4) 0.- OOP 1.- INTRODUCCIÓN.

PROGRAMACIÓN ORIENTADA A OBJETOS

PATRONES DE DISEÑO DE CREACIÓN. Abstract Factory Builder Factory Method Prototype

Guía del Curso IFCD052PO PROGRAMACIÓN EN JAVA

Programación Orientada por Objetos. Prof. Yudith Cardinale Universidad Simón Bolívar Dpto de Computación y Tecnología de la Información

UNT INGENIERIA INDUSTRIAL INGENIERIA DE SOFTWARE

Java Avanzado Facultad de Ingeniería. Escuela de computación.

Programa Oficial de Asignatura. Ficha Técnica. Presentación. Competencias y/o resultados del aprendizaje. Fundamentos de Programación

B.- Ejercicio de Herencia y Polimorfismo: FORMAS

Tema 1. Herencia y Polimorfismo

UNIVERSIDAD AUTÓNOMA DE CHIAPAS LICENCIATURA EN SISTEMAS COMPUTACIONALES

ProgramaciónDeclarativa

PROGRAMACIÓN ORIENTADA A OBJETOS. Dr. Noé Alejandro Castro Sánchez

Programación Orientada a Objetos y Patrón MVC en PHP5. Pablo Ramirez A.

Tema 2. Diseño Modular.

Tema 1.- Conceptos básicos de la OO

UNIVERSIDAD DE SAN CARLOS DE GUATEMALA FACULTAD DE INGENIERIA ESCUELA DE CIENCIAS Y SISTEMAS

Definición. Mónica E. García García Feb 07

INGENIERÍA DEL SOFTWARE

ARQUITECTURAS DE SOFTWARE

Derechos de Acceso: COMPOSICION

Unidad IV: Modelo de Diseño 4.1. Estrategias de diseño

Programación Orientada a Objetos (POO)

Diseño: Arquitectura de Software. IF 7100 Ingeniería del Software

PROGRAMACION ORIENTADA A OBJETOS EN C++

Programación orientada a objetos. Resumen de Temas Unidad 5: Herencia

PROCESOS DE DESARROLLO DE SOFTWARE UNPA UARG (Versión 0.9)

ARQUITECTURAS. Carlos Reveco D. IN73J Arquitectura, Diseño y Construcción de un Negocio con Apoyo TI.

Transcripción:

Tema 4 Introducción a la Orientación a Objetos Ingeniería del Software I feliu.trias@urjc.es

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. Introducción

Elementos 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

Objetos y Clases Elementos Clase: 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

Objetos y Clases Clases: Elementos 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 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 Objeto: TUNE ON OFF FM 88 90 93 97 100 102 Mhz FM AM AM 530 650 850 900 1200 Khz L H L H L H VOLUME TONE BALANCE Estado: valor del volumen valor del tono AM/FM apagado/encendido frecuencia seleccionada CD introducido Comportamiento: Subir/bajar volumen Cambiar tono Cambiar banda Encender/Apagar Selecc. frecuencia Introducir CD

Elementos 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.

Elementos 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

Mensajes y métodos Método: Tipos Elementos 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 )

Estado y atributos Atributo: 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.: Elementos 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 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 Clase padre/madre/base Superclase Clase hija/extendida/derivada Subclase B A 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 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

Elementos 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 Ejemplo: (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 Elipse Triángulo Cuadrilátero Cuadrado Círculo - Todas las figuras se pueden: rotar escalar - Todas tienen un color - Clases abstractas: Figura F_Cerrada F_Abierta Polígono

Herencia múltiple: Elementos Una clase hereda de más de un antecesor Vehículo Casa Problema: herencia repetida Caravana Vehículo Terrestre Acuático Anfibio Lancha

Polimorfismo Elementos 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 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

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

Principios / Bases 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 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

Principios / Bases 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)

Modularidad Ejemplo 1: Principios / Bases 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

Jerarquía Principios / Bases 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

Jerarquía Principios / Bases Univesidad Facultades Rectorado Composición Departamentos Dirección Profesores Clasificación Titulares Asociados Interinos Funcionarios

Principios / Bases 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

Comport. Estructura 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. Concepto Abstracción Clase Encapsulación Definición Crear clases para simplificar aspectos de la realidad Una descripción de la organización y acciones compartidas por uno o más objetos similares 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 Objeto Paso de mensajes Los datos y comportamiento de una clase es incluido o usado como base de otra Elemento individual, identificable, real o abstracto, que contiene datos sobre sí mismo y descripciones de cómo manipular dichos datos Un objeto envía datos a otro o le solicita la invocación de un método Método Polimorfismo Forma de acceder, establecer o manipular la información de un objeto Diferentes clases pueden responder de forma diferente ante un mismo mensaje Tabla extraída de The Quarks of Object-Oriented Development. Deborah J. Armstrong. Communications of the ACM. Vol.49/No.2 Febrero 2006

Tema 4 Introducción a la Orientación a Objetos Ingeniería del Software I feliu.trias@urjc.es