tema 3. sistemas y programación orientada a objetos en c++ · pdf filesistemas y...

21
1 Tema 3. Sistemas y programación orientada a objetos en C++ Expositores: Dr. Deni Torres Román CINVESTAV del IPN Unidad Guadalajara Objetos 3.1 Fundamentos de los sistemas orientados a objetos Caracterización de los SOO Fases del desarrollo del software: sus características Principios del modelo orientado a objetos según Booch

Upload: duongduong

Post on 06-Feb-2018

224 views

Category:

Documents


0 download

TRANSCRIPT

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.