Está en la página 1de 66

El modelo orientado a objetos

:
Introducción

Humberto Cervantes Maceda
Alfonso Martínez Martínez
1

Abril 2005

Contenido

Historia
El modelo de objetos
La tecnología orientada a
objetos

2

HISTORIA

3

para la Oficina de Defensa Noruega Nygaard (1926-2002): investigador en ciencias Dahl (1931-2002): diseñador de lenguajes de programación e implementación 4 .Historia Finales de los 40’s y pricipio de los 50’s: Kristen Nygaard y Ole-Johan Dahl se unen a un proyecto de calculos de absorción por resonancia. para la construcción del primer reactor nuclear.

Ole-Johan Dahl 5 .

Ole-Johan Dahl & Kristen Nygaard 6 .

encontraron grandes dificultades en modelar la estructura y actividad de los sistemas en estudio En 1960 Nygaard se fue al “Norwegian Computing Center (NCC)” para hacerle frente al reto 7 .Historia Dentro del campo de la simulación.

Historia Posteriormente se unieron Dahl y Bjrn Myhrhaug Nygaard observó que varios proyectos (civiles) presentaban problemas metodológicos similares a los que ellos enfrentaban (en el ámbito militar) 8 .

Simula I Simula I fue la respuesta a la problemática en cuestión. fue soportada por una computadora UNIVAC 1107 con ALGOL 60 9 . relacionada a la descripción de sistemas La implementación de Simula I.

Dahl & Nygaard 10 .

Un esquema original de asignación de pila (stack) por proceso Aún sin el concepto de objeto 11 .Simula I: características Un preprocesador de Algol 60 Una biblioteca de subprogramas.

Conceptos madurados a partir de Simula I Construcciones de datos y acciones agrupados juntos: encapsulamiento y objeto Acceso externo a atributos de objetos (Hoare): seguridad en tiempo de ejecución con revisión económica en tiempo de compilación Reconocimiento de propiedades comunes: esquema de factorización o herencia 12 .

Conceptos madurados a partir de Simula I Reconocimiento de comportamiento abstracto similar entre clases. con comportamiento concreto completamente diferente: concepto de asociación dinámica (dynamic binding) Técnica de acción entrelazada para la simulación de concurrencia Estos conceptos llevaron al conocimiento de un nuevo lenguaje: Simula 67 13 .

Simula 67 Lenguaje de propósito general con capacidad de simulación. aplicando sus propios conceptos básicos Ha influenciado el desarrollo de lenguajes modernos en la programación orientada a objetos 14 .

15 Kristen Nygaard & Ole-Johan Dahl: ACM Turing award 2001 and IEEE John von Neumann Medal 2002 .

Lenguajes descendientes de Simula 67 Eiffel (Simula 85): diseñado por Bertrand Meyer. En algún momento. presidente de la “Association of Simula Users” Smalltalk: debe su existencia a Alan Kay. Un visionario cuyas perspectivas fueron influenciadas profundamente por las primeras implementaciones de Simula 16 .

Lenguajes descendientes de Simula 67 C++: desarrollado por Bjarne Stroustrup. Jean Ichbiah. otro viejo usuario de Simula. quién plasmó las características de éste en lenguaje ‘C’ Ada: su diseñador en jefe. lidereó a un grupo de desarrollo que implementó un subconjunto de simula 17 .

El modelo de objetos 18 .

Principios Simulación del mundo real: expresión de elementos del mundo real en la memoria de la computadora Atacar la complejidad en el desarrollo de systemas de software 19 .

Incidentes.Objetos El término Objeto fue formalmente utilizado por primera vez en Simula y se utilizó en sus programas para simular algunos aspectos de la realidad Los objetos representan entidades que. Especificaciones 20 . Interacciones. en terminos generales. Roles. se pueden clasificar en: Cosas tangibles.

Objetos: definiciones Un objeto representa elementos identificables. la estructura y comportamiento de objetos similares son expresadas a través de una clase. abstracción o cosa con fronteras bien ndefinidas y significado para el manejo del problema [Rumbaugh] Un objeto tiene estado. unidades o entidades. los terminos objeto e instancia son intercambiables [Booch] 21 . individuales. pero con rol bien definido en el dominio del problema [Smith and Tockey] Un objeto es un concepto. reales o abstractas. comportamiento e identidad.

en términos de sus cambios de estado y paso de mensajes Identidad: Son las propiedades de los objetos que los distinguen de los demás 22 .Objetos: características Estado: Abarca todas las propiedades del objeto (normalmente estáticas) y los valores de sus propiedades (normalmente dinámicas) Comportamiento: Consiste en la forma de actuar y reaccionar de un objeto.

es utilizada para el manejo de objetos migrantes en forma transparente y distribuida 23 .Objetos: características La implementación de objetos puede ser clasificada como: basada en descriptores. basada en capacidad y estática Basada en descriptores (Smalltalk) permite una tipificación dinámica poderosa Basada en capacidad es encontrada frecuentemente en bases de datos orientadas a objetos y sistemas operativos (object id's) La aproximación estática es encontrada en lenguajes como C++ Una aproximación basada en un "proxy" que contiene una capa de indirecciones. para manejadore de Smalltalk.

Objetos: relaciones
Enlace o liga: denota un tipo de asociación a
través de la cual un objeto (cliente), utiliza los
servicios de otro (servidor), estableciendo una
comunicación
Agregación: se presenta cuando un objeto
forma parte del estado de otro. De esta forma
se expresa una jerarquía Todo/Partes entre
objetos.
El envío de mensajes entre objetos puede
establecerse cuando a través de su relación un
objeto está al alcance de otro
24

Objetos: ejemplo

25

Objeto producto de una tienda de autoservicio
Estado
Nombre= “Jabón de tocador”
Marca= “Palmolive”
Peso= 100 gr.
Tipo= “normal”
Precio=$4.59
Comportamiento
Cambiar precio
Cambiar marca
Etc.
Identidad
A una instancia de producto se le puede
nombrar j

Clase
Es una especificación de estructura (variables
de instancia), comportamiento (métodos), y
herencia (padres o estructura y
comportamiento recursivos) para objetos
Una clase puede especificar también permisos
de acceso a clientes y clases derivadas,
visibilidad y classes can also specify access
permissions for clients and derived classes,
visibilidad y resolución en búsqueda de
miembros
Una clase es un descriptor/constructor de
objetos
26

Privado . relaciones y semántica Nombre [visibilidad] nombre [multiplicidad] [: tipo][=valor-inicial] [{propiedades}] Atributos [visibilidad] nombre ([lista de parm.]) [: tipo que regresa][{propiedades}] Operaciones Nombre Itálico = operación abstracta 27 Nombre: tipo <<estereotipo>> Nombre Itálico = clase abstracta Visibilidad: + Público # Protegido .Representación en UML Clase: descripción de un conjunto de objetos que comparten los mismos atributos.

ofreciendo fronteras conceptuales bien definidas desde la perspectiva del observador Encapsulamiento: es un mecanismo que permite separar la interfaz de una abstracción. de su implementación. además de no permitir el acceso directo a su estructura (atributos) 28 .¿Cómo especificar una clase? Abstracción: establece las características esenciales de un objeto que lo distingue de los demás.

En ambos casos no tiene sentido describir el color de sus ojos o la forma de su voca. por ejemplo. en forma arbitraria . ocultando el como lo hace. puede definirse un método para calcular su edad.Ejemplo de una clase persona Se puede describir a una persona en forma diferente: como empleado de una empresa ó como estudiante de la UAM. También no es conveniente que algún cliente de un objeto de la abstracción de persona cambie su nombre. ¡esta información no es esencial! 29 Sin embargo.

ID: string + calcularEdad( ): Integer + cambiarNombre( ) + mostrarDatos( ) 30 .Especificación de una clase persona con UML Persona # Nombre: string # FechaNac: date .

Relaciones entre clases Dependencia Generalización Asociación Realización 31 .

. * Control Multiplicidad .Relaciones entre clases • Conexiones entre clases Dependencia Ventana e>> Configuración # tamaño: integer Realización Generalización (herencia) Consola 32 + configurar() + abrir() + cerrar() + mover() + mostrar() + manejarEvento() CajaDialogo Evento Asociación 1 1.

pueden afectar a otra clase que la usa • Generalización: Es una relación entre una clase general (superclase) y otra específica (subclase) 33 .Relaciones entre clases • Dependencia: es una relación de uso en donde los cambios en la especificación de una clase.

Relaciones entre clases • Asociación: es una relación estructural que expresa la conexión reciproca entre objetos de de 2 clases distintas • Realización: relación semántica entre clasificadores en donde un clasificador especifica un contrato que otro clasificador garantiza realizar 34 .

sin traslape de estructura o comportamiento Semánticamente la relación se puede verificar comprobando si la subclase es un tipo de su padre 35 .Relación de generalización Herencia simple: una subclase tiene exactamente un padre Herencia múltiple: una subclase hereda de varios padres.

Relación de generalización Restricciones estándar: implentation: el hijo hereda la implementación del padre pero no la hace pública ni soporta sus interfases incomplete: en la generalización no todos los hijos se han especificado. permitiéndose hijos adicionales disjoint: los objetos del padre no pueden tener mas que uno de los hijos como tipo Overlapping: los objetos del padre pueden tener mas de uno de los hijos como tipo 36 .

clave contraseña .Relación de asociación: propiedades Navegación: • Puede ser bidireccional o direccional Usuario 1 * contraseña Visibilidad: Grupo * * + usuario Usuario 1 + propietario Visibilidad 37 * .

Relación de asociación: propiedades Agregación simple: relación todo/partes en donde una clase representa el todo y otra una de sus partes Todo Organización 1 Agregación Parte * Departamento 38 .

Todo Window 1 Parte Composición * Frame 39 . con fuerte pertenencia y tiempo de vida coincidente como parte del todo.Relación de asociación: propiedades Composición: es una forma de agregación.

.Relación de asociación: propiedades Clases de asociación: es una asociación entre dos clases a través de una tercera clase Persona 1.* Empleador Empresa Roles Clase de asociación Trabajo 40 * Empleado .

Relación de realización • Se puede considerar también como una combinación entre dependencia y generalización entre una interfaz y una clase Realización <<interface>> Contenedor Lista agregarElem() consultarElem() eliminarElem() iterarEnOrden() 41 Arbol .

La tecnología orientada a objetos 42 .

Lenguajes de programación Orientados a Objetos 43 .

ha impactado en el desarrollo de lenguajes de programación orientada a objetos: Estáticamente tipificados Dinámicamente tipificados Ambos 44 . desde su creación.Lenguajes de programación Simula 67.

Lenguajes estáticamente tipificados Add 1 To Cobol giving Cobol with Objects C++ Classic-Ada Dragoon Emerald/Jade Object Pascal Trellis/Owl 45 .

Lenguajes dinámicamente tipificados Actors Languages C+@ Flavors Phyton Self Smalltalk 46 .

Lenguajes con tipificación estática y dinámica Actor CLOS Ada95 Eiffel BETA Java C++ (With RTTI) Modula-3 Cecil Objective-C Sather 47 .

Tecnología de Objetos en la Integración Web 48 .

desde su creación La tecnología de objetos ha estado impactando los desarrollos en Web en áreas como: scripting. Componentes Multimedia “Embebidos”. Componentes para servidores Web y Agentes con código movil 49 .Integración Web La Web es un sistema complejo distribuido y la tecnología de objetos ha sido una parte importante en el manejo de la complejidad.

ha sido una de las áreas de investigación y experimentación desde el inicio de la Web Su uso actual requiere de soporte para interoperabilidad: Document Object Model HTML with scripting markup 50 .Scripting Para aplicaciones cliente.

Partes OpenDoc. Applets de Java . Controles ActiveX .Componentes Multimedia “Embebidos” L a Web es un medio natural para la tecnología de componentes de software a través de: Plug-Ins. 51 .

ISAPI (Internet Server API): Progress y Microsoft SAPI (Server Application Development Interface ) Apache API 52 . aunque en algunos casos su rendimiento es limitado.Componentes para servidores Web CGI junto con HTML y “forms”. son una parte importante de las tecnologías para plataformas utilizadas en aplicaciones para servicios Web. Para hacer frente a este problema se están utilizando diversos mecanismos para interfazar aplicaciones a un servidor web: Fast-CGI: modelo de programación CGI con conexiones de red multiplexadas ILU Requestor: objetos distribuidos NSAPI (Netscape Server API): software para servidor de Netscape.

Agentes con código movil El código movil es utilizado para automatizar el acceso a la información: búsqueda. “brokering” Algunas herramientas para estos propósitos son: Inferno de Lucent Technologies Java Safe-Tcl Penguin (perl5) Python 53 .

Tecnología de objetos distribuidos 54 .

Net y J2EE tendrán en el mercado el 40% de los sistemas distribuidos (Gartner report) Corba (y posiblemente C++ Web Services) podrían caer al 20% 55 .Tecnología de objetos distribuidos J2EE y .Net se han convertido en los estándares preferidos para programación Web duistribuida y sistemas orientados a objetos: dentro de pocos años .

Bea Weblogic entre otros. Incluye JSP para vistas en HTML dinámico del lado del servidor. Software open source integrable(Apache Jakarta). [Alur 03]. IBM/Websphere.J2EE J2EE ha sido adoptado por Sun. [Marinescu 02]. 56 Java Data Objects (JDO) . y beans and EJB lógica de negocio Trabajos reciemntes se han direccionado hacia patrones J2EE: Core Patterns. servlets para control.

J#. Java.Net es dependiente de plataforma 57 Se está proponiendo una versión open source: “mono” . y VB Su objetivo principal es ofrecer un ambiente de desarrollo robusto que facilite la creación de aplicaciones en ambientes distribuidos .Net Plataforma de Microsoft para el soporte de programación distribuida y servicios Web Su lenguaje de programación principal es C# (similar a Java and C++ con extensiones) También soporta C++..

con una alta confiabilidad Los servicios CORBA ofrecen una forma estándar para pasar referencias de objetos en una red de objetos CORBA 58 .CORBA (Common Object Request Broker Architecture) Es considerado como un midleware desarrollado por la OMG (Object Management Group) Las aplicaciones CORBA están compuestas por objetos que normalmente expresan alguna cosa en el mundo real Uno de sus usos importantes es en servidores que deben manipular un gran número de clientes.

Bases de Datos Orientadas a Objetos 59 .

soporte de métodos y herencia Es posible ofrecer operaciones relacionales en una base de datos orientada a objetos OODBs ofrecen todos los beneficios de orientación a objetos Mantienen una fuerte equivalencia en el desarrollo de aplicaciones orientadas a objetos 60 .Bases de Datos Orientadas a Objectos Son bases de datos que soportan objetos y clases Son diferentes de las bases de datos relacionales: sub-objetos estructurados. cada objeto posee identidad.

que soporta SQL-3. sintaxis relacional estándar y operaciones en tablas CLOSQL (University of Lancaster): es un prototipo de OODB en investigación Oggetto: base de datos Orientada a Objetos. organizada en 3 capas de almacenamiento 61 .OODBs: Ejemplos POSTGRES (Berkeley): es un manejador de base de datos relacional-extendido Illustra (Information Technologies Ltd): es un manejador de base de datos Objeto-Relacional.

Sistemas Operativos Orientados a Objetos 62 .

en algunos casos. por lo que los recursos del sistema solo se pueden accesar si la capacidad de los objetos está disponible para los programas 63 . la arquitectura del sistema se localiza sobre el hardware Son sistemas distribuidos casi siempre. permitiendo el libre intercambio de objetos entre máquinas Regularmente su capacidad se basa a partir de objetos.Sistemas Operativos Orientados a Objectos Proporcionan los recursos a través de objetos.

really message-based) NachOS (written in C++. written in C++) PenPoint OS (Go. C++. written in Object Assembler. COOL) Choices (research OS.3. written in C++) 64 .Sistemas Operativos Orientados a Objectos: ejemplos Apertos (Meta-Object-based Mikro-Kernel) Chorus Micro-kernel (written in C++. OO superset of 8086) Mach (CMU. UofI. OS teaching/learning OS) Ouverture Project (ESPRIT funded OMG IDL defines inter-module interfaces) Peace (OO family-based parallel OS) SOS Spring (Sun. supports SVR4) GEOS (GeoWorks'. supports BSD 4.

Tecnología de objetos: otras áreas de aplicación 65 .

Otras áreas de aplicación Herramientas CASE (Basados en UML) Middleware Ambientes de desarrollo integrados (IDEs & APIs) Procesos de desarrollo de software Componentes y Arquitecturas de software 66 .