Tecnología Orientada a Objetos

67
Tecnología Orientada a Objetos Maestría en Desarrollo de Software ISC. Erivan Martínez Ovando

Transcript of Tecnología Orientada a Objetos

Page 1: Tecnología Orientada a Objetos

Tecnología Orientada a Objetos

Maestría en Desarrollo de Software

ISC. Erivan Martínez Ovando

Page 2: Tecnología Orientada a Objetos

Introducción

La Tecnología Orientada a Objetos se apoya en fundamentos de la ingeniería, cuyos elementos reciben el nombre global de modelo de objetos, el cual abarca los principios de abstracción, encapsulación, modularidad, jerarquía, concurrencia y persistencia.

Page 3: Tecnología Orientada a Objetos

Fundamentos de la TOO

• SIMULACIÓN

• ENCAPSULAMIENTO• MODULARIDAD• OCULTAMIENTO

• REUTILIZACIÓN

Page 4: Tecnología Orientada a Objetos

Introducción

• La TOO es un nuevo enfoque sobre la manera de organizar las diferentes piezas que conforman un sistema de información.

• TérminosPOOAOODOOBDOO

Page 5: Tecnología Orientada a Objetos

Introducción

• El concepto objeto y las operaciones relacionadas no son nuevos en la programación, sin embargo el DOO es poco explorado.

• En los inicios de la computación el nivel de abstracción que se utilizaba era muy bajo, los lenguajes ensambladores permitían el uso de instrucciones maquina

Page 6: Tecnología Orientada a Objetos

Introducción

• El siguiente nivel de abstracción se dio con la aparición de los lenguajes de alto nivel, los cuales permitieron el uso de estructuras de datos y de control predefinidas.

• La abstracción y el ocultamiento de información surgió en los años 70´s lo que dio lugar a métodos de diseño conducidos por los datos

Page 7: Tecnología Orientada a Objetos

Antecedentes

La TOO data de los años 60.En 1961 Krystin Nygaard crea Simula I.En 1967 se creó Simula 67 y con ello

nace por primera vez los conceptos de Clase, objetos y herencia.

En 1970 se crea SmallTalk dirigido por Allan Kay con interfaz gráfica y herramientas de desarrollo integradas. Visualizadores de Clases Inspeccionadores de código

Page 8: Tecnología Orientada a Objetos

Antecedentes

• Énfasis en la abstracción de datos y los problemas del mundo se representaban como un conjunto de objetos de datos para los que existían ciertas operaciones

Page 9: Tecnología Orientada a Objetos

Antecedentes

• El enfoque DOO se base en la abstracción, ocultamiento de la información y la modularidad.

• A finales de los 80´s el DOO se usaba en aplicaciones de software que iban desde las animaciones graficas hasta las telecomunicaciones

Page 10: Tecnología Orientada a Objetos

Antecedentes

• Las técnicas orientadas a objetos permiten que el software se construya a partir de objetos de comportamiento especifico

Page 11: Tecnología Orientada a Objetos

Antecedentes

• En el análisis de sistemas OO requiere estudiar los objetos en un ambiente, así como los eventos que interactúan con dichos objetos.

Page 12: Tecnología Orientada a Objetos

TOO (Perspectiva Histórica)

• Las técnicas OO se unen a otras tecnologías de software para lograr una correcta construcción de sistemas OO.

• Case, I case (integrated case)• Programación visual• Generadores de código• Repositorios• Bases de Datos OO• Lenguajes no procedimentales• Bibliotecas de Clase• Análisis Orientado a Objetos

Page 13: Tecnología Orientada a Objetos

TOO (Perspectiva Histórica)Estilos de programación

Estilo de programación Abstracción

• Orientado a Procedimientos - Algoritmos

• Orientados a Objetos - Clases y Objetos• Orientados a Lógica - Calculo de pred.• Orientados a Reglas - si...entonces

Page 14: Tecnología Orientada a Objetos

TOO (Perspectiva Histórica)Estilos de programación

• Cada estilo de programación es capaz de resolver cierto tipos de problemas, por lo que no hay un estilo de programación que sea el mejor.

• Cada estilo se basa en su propio marco de referencia conceptual, una actitud mental diferente.

Page 15: Tecnología Orientada a Objetos

TOO (Perspectiva Histórica)

• Hoy en día la TOO ya no se aplica solamente en los lenguajes de programación, además se aplica en el análisis y el diseño así como en las bases de datos

Page 16: Tecnología Orientada a Objetos

TOO perspectiva histórica

• Programación lineal

• Programación estructurada

• Programación Orientada a Objetos

Page 17: Tecnología Orientada a Objetos

Modelo Orientado a Objetos

• Elementos básicos• Abstracción• Encapsulamiento• Jerarquía• Tipificación• Concurrencia• Persistencia

* Los tres primeros son necesarios para considerarse OO

Page 18: Tecnología Orientada a Objetos

Abstracción

• Proceso mental mediante el cual se extraen los rasgos esenciales de algo con el fin de representarlo mediante un lenguaje grafico.

• La abstracción depende del contexto mental de quien hace la dicha abstracción.

Page 19: Tecnología Orientada a Objetos

Abstracción

• Denota las características esenciales de un objeto que lo distinguen de todos los demás tipos de objetos y proporciona fronteras conceptuales definidas

Page 20: Tecnología Orientada a Objetos

Métodos de Abstracción

• Abstracción por parametrizacionLa identidad de los datos se sustituyen por

parámetros

• Abstracción por especificaciónPermite fijarnos en el comportamiento que son

necesarios al usuario

Page 21: Tecnología Orientada a Objetos

Abstracción de Datos

• Metodología que permite diseñar estructuras de datos bajo ciertos lineamientos, este proceso se olvida de los detalles de implementación de datos.

• Cuando se diseña una estructura de datos se llama tipo de datos abstracto (TDA)

Page 22: Tecnología Orientada a Objetos

Abstracción de Datos

• En la especificación de un TDA se indica la abstracción realizada al diseñar una estructura de datos y las reglas para poder usar el TDA.

Page 23: Tecnología Orientada a Objetos

AbstracciónEspecificación de un TDA

• La especificación de un TDA debe contener los siguientes datos;

1. Elementos que conforman la estructura2. Tipo de organización para guardar los

elementos:1. Lineal (1-1)2. Jerárquica (1-M)3. Red (M-M)4. Sin relación

3. Dominio de la estructura4. Descripción de las operaciones de la

estructura

Page 24: Tecnología Orientada a Objetos

AbstracciónEspecificación de un TDA

• Las operaciones deben incluir los siguientes puntos:• Nombre• Descripción• Datos de entrada• Datos de salida• Precondición• Postcondición

Page 25: Tecnología Orientada a Objetos

Abstracción Niveles de abstracción

• Nivel lógico o abstracto• Se definen las estructuras de datos y las

operaciones relacionadas

• Nivel físico o de implementación• Se decide el leng. de programación y se

implementa la estructura como un modulo.

• Nivel de aplicación o de uso• Uso del TDA para llamar a las operaciones.

Page 26: Tecnología Orientada a Objetos

Encapsulamiento

• Se consigue ocultado la información, es decir es el proceso de ocultar todos los secretos de un objeto.

La abstracción y el encapsulamiento son complementarios, la abstracción se centra en el comportamiento observable de los objetos y el encapsulamiento se centra en la implementación que da lugar a dicho comportamiento.

Page 27: Tecnología Orientada a Objetos

Encapsulamiento

• Proceso de almacenar en un mismo compartimiento los elementos de una abstracción que constituyen su estructura y su comportamiento.

Page 28: Tecnología Orientada a Objetos

Encapsulamiento

• El objeto esconde sus datos de los demás objetos y permite el acceso mediante sus propios métodos.

• Es más fácil modificar los programas que utilizan el encapsulado por que se modifica al mismo tiempo un tipo de objetos. El comportamiento se puede probar de manera independiente a los demás tipos de objetos.

Page 29: Tecnología Orientada a Objetos

Modularidad

• “El acto de fragmentar un programa en componentes individuales puede reducir su complejidad en algún grado...” Myers

Propiedad que tiene un sistema que ha sido descompuesto en un conjunto de módulos cohesivos y débilmente acoplados

Page 30: Tecnología Orientada a Objetos

Modularidad

• Implica que el software se divide en componentes con nombres y ubicaciones determinados que se denominan módulos y que se integran para satisfacer los requisitos del sistema.

Page 31: Tecnología Orientada a Objetos

Modularidad

• Los módulos pueden compilarse separadamente pero tienen conexiones con otros módulos.

Los lenguajes que soportan el concepto de modulo generalmente distinguen entre la interfaz y su implementación.

Page 32: Tecnología Orientada a Objetos

Modularidad

• Los módulos sirven como contenedores físicos en los que se declaran las clases y los objetos del diseño lógico realizado.• Un modulo esta abierto si puede ser ampliado• Un modulo esta cerrado si está disponible para

su uso

Page 33: Tecnología Orientada a Objetos

Modularidad

• En el diseño estructurado, la popularización persigue el agrupamiento de subprogramas utilizando los criterios de acoplamiento y cohesión. En el DOO, la tarea es decidir donde empaquetar físicamente las clases y objetos

Page 34: Tecnología Orientada a Objetos

Modularidad

• Los módulos deben agrupar abstracciones con relaciones lógicas (cohesivos) y la dependencia entre módulos debe ser mínima (acoplamiento).

Page 35: Tecnología Orientada a Objetos

Jerarquía

“ Es una clasificación u ordenación de abstracciones”

• Las dos jerarquías más importantes en un sistema complejo son su estructura de clases (jerarquía de clases) y su estructura de objetos (jerarquía de partes).

Page 36: Tecnología Orientada a Objetos

Jerarquía

• Ejemplos de jerarquía:• Herencia Simple• Herencia Múltiple• Generalización

Page 37: Tecnología Orientada a Objetos

Jerarquía (Tipificación)

• Un tipo es una caracterización precisa de propiedades estructurales o de comportamiento que comparten una serie de entidades.

Los objetos de tipos

distintos no pueden

intercambiarse o solo de

formas muy restringidas.

Page 38: Tecnología Orientada a Objetos

Jerarquía (Tipificación)

• Los lenguajes de programación pueden tener comprobación estricta de tipos, comprobación débil, o incluso no tener tipos y aun así ser considerados como OO.

Page 39: Tecnología Orientada a Objetos

Concurrencia

• Capacidad de un sistema para manejar varios eventos (procesos) de forma simultanea

La concurrencia permite a varios objetos actuar al mismo tiempo.

• La concurrencia es la propiedad que distingue un objeto activo de uno no activo

Page 40: Tecnología Orientada a Objetos

Persistencia

La persistencia conserva el estado de un objeto en el tiempo y en el espacio

• La persistencia de objetos abarca lo siguiente:• Resultados transitorios• Variables locales• Variables propias• Datos que existen entre ejecuciones• Datos que existen entre versiones de un

programa• Datos que sobreviven al programa

Page 41: Tecnología Orientada a Objetos

Persistencia

• Los lenguajes de programación tratan los 3 primero tipos de persistencia, en tanto que los últimos pertenecen al dominio de las BDOO.

• En la practica las BD se construyen sobre tecnología contrastada, bd secuenciales, indexadas, jerárquicas, pero ofrecen una abstracción de la interfaz OO

Page 42: Tecnología Orientada a Objetos

Objetos

• Un objeto podría considerarse como:• Una cosa tangible y/o visible• Algo que puede comprenderse intelectualmente• Algo hacia lo que se dirige un pensamiento o

acción

Page 43: Tecnología Orientada a Objetos

Objetos

• Un objeto modela parte de la realidad, por ello, es algo que existe en el tiempo y el espacio.

• En el ámbito del software el termino objeto se utilizo por primera vez con el lenguaje simula.

Page 44: Tecnología Orientada a Objetos

Objetos

Un objeto representa un elemento, unidad o entidad individual e identificable, ya sea real o

abstracta, con un papel bien definido en el dominio del problema

Smith y Tockey

Page 45: Tecnología Orientada a Objetos

Objetos

• Definición del objeto: coche

Atributos• Color•Velocidad• Modelo• Cilindros

Funciones• Andar• Parar• Girar a la derecha•Girar a la izquierda

Page 46: Tecnología Orientada a Objetos

Objetos

• Los objetos se pueden manifestar en una de las siguientes formas:• Entidades externas: otros sistemas,

dispositivos que producen y consumen información.

• Cosas: Informes, visualizadores, forman parte del dominio de la información

Page 47: Tecnología Orientada a Objetos

Objetos

• Un objeto puede considerarse como una capsula dividida en tres partes:• Relaciones• Propiedades• Métodos

Page 48: Tecnología Orientada a Objetos

Objetos (Formato)

• Debe existir un formato que permita identificar a los objetos y sus elementos involucrados

Nombre del objeto

Propiedades

Operaciones

Page 49: Tecnología Orientada a Objetos

Objetos (Atributos)

• Los atributos describen un objeto seleccionado, los atributos definen en esencia un objeto

Mueble

Dimensiones

Costos

Peso

Color

Page 50: Tecnología Orientada a Objetos

Objetos

• Un objeto tiene estado, comportamiento e identidad; la estructura y comportamiento de objetos similares están definidos en su clase común.

Page 51: Tecnología Orientada a Objetos

Objetos (Estado)

El estado de un objeto abarca todas las propiedades (normalmente estáticas) del

mismo más los valores actuales (normalmente dinámicos) de cada una de

esas propiedades

Page 52: Tecnología Orientada a Objetos

Objetos (Comportamiento)

• Ningún objeto existe de forma aislada, los objetos reciben acciones y actúan sobre otros objetos.

El comportamiento es como actúa y reacciona un objeto, en términos de sus cambios de estados y paso de mensajes

Page 53: Tecnología Orientada a Objetos

Objetos (comportamiento)

• Los objetos se comunican mediante mensajes

Page 54: Tecnología Orientada a Objetos

Objetos (Comportamiento)

• En los lenguajes de POO las operaciones que se pueden realizar sobre un objeto suelen declararse como métodos, que forman parte de la declaración de clase

Page 55: Tecnología Orientada a Objetos

Objetos (Comportamiento)

• El comportamiento de un objeto es función de su estado así como de la operación que se realiza sobre el.

Page 56: Tecnología Orientada a Objetos

Objetos (Operaciones)

• Una operación denota un servicio que una clase ofrece a sus clientes:• Modificador: Altera el estado de un objeto• Selector: Accede al estado de un objeto• Iterador: Accede a las partes de un objeto en

un orden establecido• Constructor• Destructor

Page 57: Tecnología Orientada a Objetos

Objetos (Métodos)

• Los métodos especifican la forma en que se controlan los datos de un objeto.

• Los métodos en un tipo de objeto solo hacen referencia a la estructura de datos de dicho objeto

Page 58: Tecnología Orientada a Objetos

Objetos (operaciones vs métodos)

• Una operación es un tipo de servicio solicitado y el método es el código de programación asociado

• Operación: Promedio

• Método: forma de calcular el promedio

Page 59: Tecnología Orientada a Objetos

Objetos (Encapsulación y Ocultamiento)

• Los objetos son estructuras complejas que contienen datos y programas relacionados entre si, dicha estructura encierra estos elementos. (encapsulación).

Page 60: Tecnología Orientada a Objetos

Objetos (Encapsulación y Ocultamiento)

• Los objetos son inaccesibles e impiden que otros objetos o los usuarios conozcan como está distribuida la información, la única forma de accesar un objeto es a través de sus métodos

Page 61: Tecnología Orientada a Objetos

Objetos (identidad)

Es la propiedad de un objeto que lo distingue de todos los demás objetos

• En la mayoría de los lenguajes se utilizan nombres de variables para distinguir objetos.• Se debe reconocer la diferencia

entre el nombre de un objeto y el objeto en si mismo

Page 62: Tecnología Orientada a Objetos

Objetos

• Los objetos con estados y comportamientos similares se agrupan en clases

Page 63: Tecnología Orientada a Objetos

Clases

• Los términos objeto y clase están relacionados, sin embargo una clase representa sólo una abstracción de un objeto

Una clase es un conjunto de objetos que comparten una

estructura común y un comportamiento común

Page 64: Tecnología Orientada a Objetos

Clases (consideraciones)

• Un objeto es la instancia de una clase

• Un objeto no es un clase, pero una clase puede ser un objeto

• Una clase es necesaria pero no suficiente para la descomposición

Page 65: Tecnología Orientada a Objetos

Clase (interfaz)

• Una clase sirve como vinculo entre una abstracción y todos sus clientes.

• La interfaz de una clase proporciona su visión externa, es decir, oculta la estructura y los detalles del comportamiento de un objeto.

• La implementación de una clase proporciona su visión interna

Page 66: Tecnología Orientada a Objetos

Clases (interfaz)

• Se puede dividir la interfaz de una clase en tres partes:

• Public (publica) Accesible por todos los clientes

• Protected (protegida) Accesible por la propia clase, subclases y clases amigas

• Private (privada) Accesible solo por la propia clase y sus clases amigas

Page 67: Tecnología Orientada a Objetos

Clases (relaciones)

• Las clases, al igual que los objetos no existen en forma aislada; las relaciones entre clases se dan dos razones:

• Comparten elementos• Conexión semántica