Date post: | 06-Feb-2018 |
Category: |
Documents |
Upload: | duongduong |
View: | 224 times |
Download: | 0 times |
1
Tema 3. Sistemas y programación orientada a objetos en C++
Expositores:Dr. Deni Torres RománCINVESTAV del IPN Unidad Guadalajara
Objetos
3.1 Fundamentos de los sistemas orientados a objetos
Caracterización de los SOOFases del desarrollo del software: sus característicasPrincipios del modelo orientado a objetos según Booch
2
Objetos
Una metodología de desarrollo de software
Una metodología de desarrollo de software
Definición del problemaPlaneamiento del proyectoEspecificación de los requerimientos de softwareDiseñoImplementaciónPruebas, integración y entregaMantenimiento
Definición del problemaPlaneamiento del proyectoEspecificación de los requerimientos de softwareDiseñoImplementaciónPruebas, integración y entregaMantenimiento
Sistemas: Orientación a objetos (I)Sistemas: Orientación a objetos (I)Desarrollo basado en una organización de entes físicos y conceptuales que colaboran entre sí– objetos: abstracciones del mundo real– estructura y comportamiento de un objeto son
encapsulados– características comunes: herencia
Objetos– estructura– comportamiento– relaciones
Construcción de sistemas bien definidos– componentes,– interfaces,– pruebas -componentes ”testable”-– mantenimiento
Desarrollo basado en una organización de entes físicos y conceptuales que colaboran entre sí– objetos: abstracciones del mundo real– estructura y comportamiento de un objeto son
encapsulados– características comunes: herencia
Objetos– estructura– comportamiento– relaciones
Construcción de sistemas bien definidos– componentes,– interfaces,– pruebas -componentes ”testable”-– mantenimiento
3
Objetos
Sistemas: Orientación a objetos (II)Sistemas: Orientación a objetos (II)Agrupación o composición– componentes de granularidades diferentes– mejor manejo de la complejidad– ayuda a la reusabilidad– ayuda a la modularidad
Facilidades de reuso y fácil de modificar– reusabilidad– mantenimiento
GeneralidadTecnología de objetos: – Aplicación de conceptos, métodos y herramientas
orientados a objetos, con el objetivo de crear un sistema orientado a objetos
Agrupación o composición– componentes de granularidades diferentes– mejor manejo de la complejidad– ayuda a la reusabilidad– ayuda a la modularidad
Facilidades de reuso y fácil de modificar– reusabilidad– mantenimiento
GeneralidadTecnología de objetos: – Aplicación de conceptos, métodos y herramientas
orientados a objetos, con el objetivo de crear un sistema orientado a objetos
Objetos
Fases del desarrollo de software OOFases del desarrollo de software OOFases del desarrollo de software OO
ConceptualizaciónAnálisis Diseño Evolución– Implementación– Pruebas– Reuso– Próxima versión
Mantenimiento
ConceptualizaciónAnálisis Diseño Evolución– Implementación– Pruebas– Reuso– Próxima versión
Mantenimiento
4
Objetos
ConceptualizaciónImportancia de la conceptualización– ¿Es este sistema el correcto a desarrollar?
Formas de conceptualización– formal– informal
Definición: – Aplicación de una metodología OO al proceso iterativo de
formular una idea para un sistema, generando especificaciones que son las entradas al análisis
Objetivos– permite establecer el núcleo de los requerimientos,– establece una visión de la idea, validando y rechazando
hipótesis,– identificar riesgos
Objetos
AnálisisAplicación de una metodología OO para entender, comunicar y desarrollar los requerimientos del sistemaHallar clases: casos de uso -use cases-, escenariosAtributos y operaciones de las clases: comportamiento, diagramas de escenariosHallar las relaciones entre objetos: asociación, herencia, agrupación, uso,Crear diccionario del problemaComportamiento de los objetos: diagramas de transición de estadosValidación de hipótesisObjetivo: modelar el comportamiento deseado del sistema
5
DiseñoAplicación de una metodología OO para definir o crear una arquitectura para una implementación evolutiva y establecer estrategias tácticas comunes para ser usadas en el sistema– múltiples vistas: estática, dinámica, funcional, lógica– colecciones de clases o categorías de clases– partición en subsistemas
Planeación de iteraciones– planificación de versiones arquitectónicas– examen detallado de escenarios y casos de uso
Uso de clases comerciales– selección de una o más librerías– añadir clases comerciales al modelo
Aspectos estáticos y dinámicos del sistemaObjetivo: crear una arquitectura
Objetos
Evolución
Construir una arquitecturaIdentificar clases y objetosIdentificar las relaciones entre objetosImplementación de las clasesGeneración de códigoPruebas– clases, unidades o módulos– subsistemas– sistema
ReusoDocumentación para la entrega
6
Objetos
Mantenimiento
Continuación de la fase de evoluciónMejoramiento contínuo del producto partiendo del reporte de defectos -“bugs”-Recolección de defectos para posible mejoramiento, nueva versiónAnálisis de costosPróxima versión
Objetos
Principios del modelo OOConceptos claves– abstracción y clasificación– encapsulamiento y ocultar la información– composición y agrupación o agregación– generalización, especialización y herencia
Propiedades– entendible– estable– más productivo que el modelo de
descomposición funcional -MDF-– más confiable que MDF
7
Objetos
Principios del modelo orientado a objetos de Booch
AbstracciAbstraccióónnEncapsulamientoEncapsulamientoModularidadModularidadJerarquJerarquííaaTipificaciTipificacióónnParalelismoParalelismoPersistenciaPersistencia
Objetos
AbstracciAbstraccióónnDescripción– Características esenciales de un objeto, que lo distingue
de todos los demás y que proporciona fronteras bien definidas
Idea central:– invariancia -atributos u operaciones-
Pre- y post condiciones en operaciones sobre objetosPropiedades estáticas y dinámicas de las abstraccionesEjemplo– sensor de temperatura– SensorTemperatura
8
Objetos
EncapsulamientoEncapsulamientoDescripción– Proceso de agrupar los elementos de una abstracción,
sirve para ocultar la información y que el acceso a la misma sea mediante determinados interfaces
Idea central:– ocultamiento dela información -information hiding-– uso de la información mediante interfaces
Ejemplo– Calentador: sus funciones
• void Activar( );• void Desactivar ( );• bool Encendido ( ); ?
Objetos
ModularidadModularidadDescripción– Propiedad de un sistema para ser descompuesto en un
conjunto cohesivo de módulos débilmente acoplados
Idea central:– independencia relativa del módulo– ciertas propiedades del módulo visibles a otros– implementación mediante clases
Ejemplo– dispositivo integrado por calentadores, sensores de
temperatura y el software necesario, que hace funcionar a los calentadores para mantener una temperatura constante o en cierto rango, en cierto espacio cerrado
– ControlDeTemperatura
9
Objetos
JerarquJerarquííaaDescripción– Propiedad de ordenamiento o clasificación de las
abstraccionesIdea central:– clasificación por niveles o granularidad– derivar objetos (clases) de otros– polimorfismo– “es un(a)”?, “tiene un(a)” o “es parte de”?
Ejemplo– para controlar la temperatura en una habitación se requiere
de un dispositivo específico– ControlDeTemperaturaHabitación:ControlDeTemperatura
Objetos
TipificaciTipificacióónnDescripción– Un tipo es una caracterización precisa de propiedades
estructurales o de comportamiento, compartidas por un grupo de entes
Idea central:– crear tipos abstractos de datos– implementación en clases– tipos son elementos esenciales bien diferenciados uno del
otro– polimorfismo
Ejemplo– una vez creados los sensores de temperatura, estos se
tipifican, ¿qué es tipificar?– SensorTemperatura st1, st2;
10
Objetos
ConcurrenciaConcurrenciaDescripción– Propiedad de distinguir en un conjunto de objetos uno
activo de aquellos que no lo están
Idea central:– manejar diferentes eventos simultáneamente– manejar múltiples objetos de control– sincronización
Ejemplo– si tenemos varios ControlDeTemperaturaHabitación en una
casa y son manejados por un sistema o subsistema, entonces cada uno de ellos constituye un objeto activo que ejecuta un proceso concurrentemente con los demás
Objetos
PersistenciaPersistenciaDescripción– Propiedad de un objeto de que su existencia trascienda
en tiempo y/o espacio
Idea central:– un objeto exista después de su creador, almacenamiento– trasladar un objeto de una posición a otra
Ejemplos– objetos de las bases de datos– objetos en archivos– llevar registros periódicos del comportamiento del sistema de
control de la temperatura en las habitaciones– AlmacenarStatusTemperatura
11
Objetos
3.2 Clases y objetos
Definir las características de un objetoDefinir las características de una claseRelaciones entre objetosRelaciones entre clasesMultiplicidad o cardinalidadPartes integrantes de una claseUso de la palabra reservada friend en métodos y clases
Objetos
ObjetosConceptos de objeto– una cosa tangible o visible,– cosas que se pueden comprender intelectualmente,– cosas hacia las cuales se dirigen pensamientos o
accionesDefinición de objeto– un objeto tiene un estado, un comportamiento y
una identidad; la estructura y el comportamiento de objetos similares son definidos en su clase común, los términos instancias y objetos son intercambiables
– caracterice estado, comportamiento e identidadPapeles de un objeto en su relación con otros– actor, servidor, y agente
12
Objetos
Características de un objeto
estructura atributoscomportamiento operacionesidentidad unicidadaplicabilidad¿cómo hallar objetos?tipos de objetos– del dominio– de la aplicación– de la implementación
identificar objetosEjemplos
Objetos
ClasesConceptos de clase– grupo de elementos comunes o similares,– patrón de objetos
Definición de clase– una clase representa un conjunto de objetos que
comparten una estructura común y que tienen un comportamiento también común,
– caracterice estado, comportamiento e identidadInterfaz e implementación de una claseRelaciones entre clases: asociación, herencia, agrupación, uso, instanciación, superclase
13
Objetos
Características de la claserepresentar un grupo de objetos– estructura común y comportamiento común
crear un tipo abstracto de datos– nuevos tipos orientados al problema definidos
formal o informalmenteser modular– el concepto de clase ayuda a la modularidad
ser completa– captura de abstracciones significantes
permitir el encapsulamiento– atributos y métodos encapsulados
Objetos
Características de clases bien diseñadas
acoplamiento– objetos-clases, módulos, subsistemas– débil vs fuerte
cohesión– conectividad entre elementos de un solo módulo
suficiencia– captura de suficientes características de la abstracción
ser completa– interfaz de la clase captura todas las características
significativas de la abstracción
primitiva– métodos o funciones miembro deben ser primitivas
14
Objetos
Relaciones entre objetosDados dos objetos, ¿cómo interactúa uno con el otro?Enlaces– asociación específica por la cual un objeto utiliza los
servicios de otro o se comunica con él– papeles: actor, servidor, y agente– visibilidad entre los objetos participantes– sincronización– acoplamiento débil entre objetos
Agregación o agrupación– asociación donde un objeto contiene al otro física o
conceptualmente– mayor acoplamiento que en los enlaces
Ejemplos
Objetos
Relaciones entre clasesTipos básicos de relaciones– es un(a)– es parte de– está asociada de alguna forma con
asociación,herencia, agregación o agrupación, uso,instanciación, superclase, metaclase, clase baseEjemplos
15
Objetos
Multiplicidad en las relaciones
Número de objetos de una clase que se relaciona con un simple objeto de la clase asociadaFormas– uno a uno– uno a uno opcional– uno a muchos– uno exactamente a n– muchos a muchos
Ejemplos
Objetos
Interacción entre clases y objetos
Clases-Objetos– instancias estáticas y dinámicas
Clases y objetos en el análisis y diseño– identificar las clases y objetos que forman el vocabulario
dominio del problema - abstracciones esenciales-– crear estructuras para que conjuntos de objetos trabajan
juntos para lograr los comportamientos que satisfacen los requerimientos del problema - mecanismos-
– interés en las generalidades de estas abstracciones esenciales y de los mecanismos
Clases y objetos en la implementación– interior de las abstracciones esenciales y los
mecanismos
16
Objetos
Estructura general de una clase
class NombreDeLaClase {private:
Datos o atributospublic:
Funciones miembros();};significado de las palabras reservadas– private– protected– public
Objetos
Estructura específica de una clase
class NombreDeLaClase {private:
Datospublic:
NombreDeLaClase( ); //Constructor 1NombreDeLaClase ( int, int ); //Constructor 2ret Funcion1(...);ret Funcion2(...);ret Funcion3(...);
~NombreDeLaClase( ); //Destructor
};
17
Objetos
Clasificación de los métodos o funciones miembros de una clase
modificadora– función que altera el estado del objeto
selectora (uso del const)– función que accesa al estado, pero no altera su
estadoiteradora– función que accede a todas las partes del objeto
en un orden pre-establecido
Objetos
Constructores y destructores
SintaxisNombreDeLaClase( );//Constructor 1
NombreDeLaClase(int, int);//Constructor 2
Descripción– permite crear el objeto,– incializarlo– conversor de tipo
Sintaxis~NombreDeLaClase( );
//Destructor
Descripción– liberar memoria– destruir el objeto
18
Identificación de objetos y clases en el análisis orientado a objetos
Variante 1cosas tangiblespapeleseventosinteracciones
Variante 2estructurasotros sistemasdispositivoseventospapeleslocalizacionesorganizaciones o grupos
Objetos
Uso de la palabra reservada friendclass UnaClase {private:
int dato1;public:
ret Funcion1(...);ret Funcion2(...);friend void Modificar (UnaClase& u; int x);
};puede modificar el valor de los datos de la sección privada de UnaClasevoid Modificar (UnaClase& u; int x) {
u.dato1=x;}
19
Objetos
Uso de la palabra reservada friendClase amiga
class Lista {..
};class Nodo{
friend class Lista;};
Todos los métodos o funciones de la clase Lista tienen acceso ilimitado a los miembros de la clase Nodo
Objetos
Reglas sobre el uso de la palabra friend
funciones y clases friend tienen acceso a elementos privados de las clasesel uso del friend debe restringirse a situaciones muy específicas.en general, el uso del friend en funciones y sobre todo en clases es un signo de mal diseño.indique un caso positivo de una función friend ?
20
Objetos
La notación
1 Lenguaje de comunicación de decisiones que o bien no son evidentes o que no pueden ser inferidas del código.
2 Proporciona la semántica necesaria para capturar todas las decisiones estratégicas y tácticas
3 Proporciona una forma concreta para argumentar y a las herramientas para trabajar.
Objetos
La notación: Diagramas
Diagramas de clasesDiagramas de objetos y mensajesDiagramas de interacción entre objetosDiagramas de transición de estadosDiagramas de módulos Refinamientos
21
Objetos
Pruebas o “Testing”
ConsistenciaSatisfacción de requerimientosSatisfacción del clienteSuficienciaNecesidadFlexibilidadFormatos estandarizadosDocumentación
Objetos
Problemas
1 Diseñar un sistema de control de la temperatura en tres habitaciones de un hotel. Cada habitación tiene tres sensores.
2 Diseñar un sistema de control automático de la iluminación de una casa, empleando sensores. La casa tiene 2 habitaciones, sala, comedor, cocina, cochera, 2 baños, patio, y en ella viven 3 personas.