Metodología de Sistemas – 3º Año Carrera “Analista en Sistemas de Computación”

Tecnología de Objetos
El Modelo Basado en Objetos se ha convertido en uno de los impulsores de la Industria del
Software durante la década de los noventa.
A pesar de la reciente profusión de aplicaciones, herramientas y lenguajes que soportan,
emplean o se han construido tomando como base el Modelo de Objetos, los conceptos básicos
del mismo se originaron en la década del ´60.
Por ejemplo, el lenguaje SIMULA, uno de los precursores en el concepto de objetos fue
desarrollado en 1967.

¿Por qué la Orientación a Objetos?
Proximidad de los conceptos de modelado respecto de las entidades del mundo real
• Mejor captura y validación de requisitos
• Acerca el “espacio del problema” y el “espacio de la solución”
Modelado integrado de propiedades estáticas y dinámicas del ámbito del problema
• Facilita construcción, mantenimiento, reutilización; principalmente por su adaptación
para el cambio

El Modelo de Objetos
Los conceptos básicos del Modelo de Objetos se originaron con la definición de lenguajes que
incorporan conceptos tales como:
• Encapsulamiento
• Modularidad
• Abstracción
• Polimorfismo

El Enfoque Orientado a Objetos
El desarrollo orientado a objetos es más una manera de pensar y no una técnica de
programación.
El Modelo de Objetos ha trascendido los sistemas de información y/o software en general, y se
está utilizando como una herramienta de modelado ingenieril de varios tipos de sistemas, por
ejemplo:
• distintos tipos de redes (eléctricas, de flujo, etc.)
• ingeniería de organizaciones y métodos (re-ingeniería de empresas, etc.)
• ingeniería de productos
• control de tráficos
En realidad se originó a partir de la necesidad de disponer de una herramienta simple para
Simular Sistemas (de cualquier tipo).

Etapas principales del Ciclo de Vida

1 AS Silvio Moschen

El Progreso de la Abstracción Todo paradigma de programación implica cierta abstracción Evolución de los paradigmas mayor nivel de abstracción • Paradigma estructurado: Abstracción principal exige una asociación entre modelo de máquina y modelo del problema.Metodología de Sistemas – 3º Año Carrera “Analista en Sistemas de Computación” • El análisis orientado a objetos es un método de análisis que examina los requisitos desde las perspectivas de las clases y objetos que se encuentren en el vocabulario del dominio del problema. cada uno de los cuales representa una instancia de alguna clase. un ejemplo es PROLOG. Modelo basado en entidades. Algunos ejemplos de paradigmas de programación: • El paradigma estructurado es considerado el más común y está representado. Paradigmas de Programación Un paradigma es una forma de representar y manipular el conocimiento. Problemas: • Dificultad para escribir programas complejos • Dificultad para modificar y extender los programas • Alto costo de mantenimiento • Dificultad para reutilizar programas Encapsulamiento • Es la propiedad que asegura que la información de un módulo esta oculta al mundo exterior. propia del paradigma imperativo. • El diseño orientado a objetos es un método de diseño que abarca el proceso de descomposición orientado a objetos y una notación para describir los modelos lógicos y físicos. En nuestro contexto. • El paradigma funcional está representado por la familia de lenguajes LISP. es decir. miembros de una jerarquía de clases unidas mediante relaciones de herencia. objetos (sustantivos) Programación Estructurada La programación estructurada tradicional. • El paradigma orientado a objetos. en particular Scheme. todas ellas. • La programación orientada a objetos es un método de • implementación en el que los programas se organizan como colecciones cooperativas de objetos. • El paradigma lógico. por ejemplo. 2 AS Silvio Moschen . sobre el CÓMO. se basa fundamentalmente en la ecuación de Wirth: Programas = Algoritmos + Estructuras de Datos Enfoque sobre el diseño de los procedimientos. por el C o por BASIC. Un lenguaje completamente • orientado a objetos es Smalltalk. representa un enfoque particular o filosofía para la construcción del software. y cuyas clases son. Modelo mental basado en el comportamiento (verbos) • Paradigma orientado a objetos: Abstracción consiste en modelar el mundo real (dominio del problema) ajustándose a la perspectiva del pensamiento del ser humano. así como los modelos estáticos y dinámicos del sistema que se diseña.

Metodología de Sistemas – 3º Año Carrera “Analista en Sistemas de Computación” • Es el proceso de ocultar todos los secretos de un módulo que no contribuyen a sus características esenciales. Abstracción de Datos La abstracción de datos es la técnica de programación que permite definir nuevos tipos de datos. en general.clase • Modula–2 . si: • el usuario puede definir nuevos tipos de datos asociando explícitamente la estructura de datos del mismo con las operaciones que lo manipulan • la representación y las operaciones están ocultas en el tipo de dato abstracto.clase 3 AS Silvio Moschen .módulo • Ada . adecuados para la aplicación Tipos de datos abstractos (TDA) Encapsulamiento + Ocultamiento de la Información Tipos de Datos Abstractos Un TDA se compone de estructuras de datos (representación) y las operaciones que la manipulan TDA = representación + operaciones Un lenguaje soportará la definición de tipos de datos abstractos.clase • Java . funciones y subrutinas). organizándolo mediante refinamientos sucesivos de los módulos.clase • Object Pascal . Es una técnica de diseño para descomponer el Sistema en Módulos Decidir que MÓDULOS se requieren… y particionar el programa de forma tal que losDATOS queden OCULTOS EN LOS MÓDULOS Ventajas del Encapsulamiento • Centralización de todos los datos de un cierto tipo Programación paralela • Facilita el Mantenimiento y Extensión en los lenguajes de programación clásicos los módulos se implementan mediante subprogramas (procedimientos. orienta una formulación Funcional del problema. y proveer un para cada uno de los mismos Lenguajes que permiten definir tipos de datos abstractos: Mecanismo • Simula 67 . • Esto. Tecnología de Objetos Diseñar programas empleando el concepto de TDA consiste en: Decidir qué TIPOS SE REQUIEREN.paquete (package) • Smalltalk .clase • C++ .

Edad. • Reusabilidad Los objetos. Se pueden realizar añadidos o supresiones a programas simplemente añadiendo. • La encapsulación en un objeto permite una alta cohesión y un bajo acoplamiento. si han sido correctamente diseñados. se pueden usar numerosas veces y en distintos proyectos. Representa acabadamente el concepto de TDA Ventajas de la Orientación a Objetos • Mantenibilidad (facilidad de mantenimiento). • Los procedimientos que incluye un objeto se denominan métodos. • Un objeto puede caracterizar una entidad física (coche) o abstracta (ecuación matemática). Domicilio COMPORTAMIENTO Escala. Altura. • Modificabilidad (facilidad para modificar los programas). los métodos describen el comportamiento del objeto. suprimiendo o modificando objetos. Corre. • Fiabilidad Los programas orientados a objetos suelen ser más fiables ya que se basan en el uso de objetos ya definidos que están ampliamente testeados. Los objetos encapsulan datos y operaciones (o procedimientos). Un Objeto posee: ESTADO Nombre.Metodología de Sistemas – 3º Año Carrera “Analista en Sistemas de Computación” Programación Orientada a Objetos Basada en el concepto de Objetos como representaciones (simples/complejas) (reales/imaginarias) de cosas que interactúan entre ellos para llevar a cabo una actividad. Los programas que se diseñan utilizando el concepto de orientación a objetos son más fáciles de leer y comprender y el control de la complejidad del programa se consigue gracias a la ocultación de la información que permite dejar visibles sólo los detalles más relevantes. Peso. Trabaja. … INDENTIDAD perezanalia 4 AS Silvio Moschen . • Un objeto ejecuta operaciones (comportamiento) y mantiene su estado local (estructura). Conceptos Básicos de la Orientación a Objetos ¿Qué es un OBJETO? • Un objeto es una entidad que combina las propiedades de los procedimientos y de los datos.

Interacción de Objetos a través de mensajes • El objeto emisor debe asociar o enlazar al objeto receptor. • La llamada al método siempre se produce en el contexto de un objeto concreto. • Identificación de los objetos . El emisor del mensaje solicita al receptor que realice la operación que se especifica en el mensaje. • Un mensaje es una solicitud para que un objeto ejecute una acción. • El envío de mensajes soporta un importante principio en programación: LA ABSTRACCIÓN DE DATOS Interacción de Objetos a través de mensajes Conceptos Básicos de la Orientación a Objetos • Ejemplo práctico Calcular la suma de dos números e imprimir el resultado. 5 AS Silvio Moschen .número1: el primer número sumando. Este responde ejecutando métodos.Metodología de Sistemas – 3º Año Carrera “Analista en Sistemas de Computación” ¿Cómo interactúan los Objetos entre sí? • Todas las acciones en POO resultan de enviar mensajes entre objetos. usando sus propios procedimientos. es decir. .número2: el segundo número sumando.

que equivale a: suma = número1 + número2. Conceptos Básicos de la Orientación a Objetos • Ejemplo práctico Secuencia de los mensajes a los objetos (número1 + número2) imprimir.suma: el resultado de la suma de dos números • Identificación de los mensajes + número2 El mensaje + con el parámetro número2 enviado a un receptor.Metodología de Sistemas – 3º Año Carrera “Analista en Sistemas de Computación” . El resultado de este mensaje es un objeto suma representando la suma del objeto receptor número1 y número2. suma imprimir. Deberán ser agrupados de alguna forma. muchos objetos tendrán características semejantes. • imprimir Mensaje que presenta en la pantalla el valor del objeto receptor. (3+4) imprimir (numero1+numero2) imprimir Clases y Variables de Instancia Implementación de Estructuras de Datos y sus Operaciones Programación Procedural Programación OOP #tipo de datos #clase #valores #instancia #operaciones #métodos Cómo Abstraer Conceptos en la OOP • En el paradigma de objetos existen dos ejes conceptuales para abstraer conceptos: ◦ Clasificación ◦ Generalización /Especialización CLASIFICACIÓN Naturalmente. El mecanismo que brinda la OOP para representar esta agrupación es la CLASE 6 AS Silvio Moschen .

Metodología de Sistemas – 3º Año Carrera “Analista en Sistemas de Computación” ¿Qué es una Clase? Una clase contiene la descripción de las características comunes de todos los objetos que pertenecen a ella: • la especificación del comportamiento • la definición de la estructura interna • la implementación de los métodos {Estado = ‘finalizado’ ifTrue: [self Archivar]. Comparación entre Clase y Objeto • Las clases son definiciones estáticas que se pueden utilizar para entender todos los objetos de una clase. • Los objetos son entidades dinámicas que existen en el mundo real. También se le suele llamar ocurrencia. Instancia: Es una manifestación concreta de una clase (un objeto con valores concretos). …………. Clases Instancias (Objetos) * define atributos * tienen valores * define métodos * ejecutan métodos * puede generar instancias 7 AS Silvio Moschen . ………….

• Las formas en las cuales un objeto puede actuar y reaccionar. cuyo valor es compartido por todas las instancias de esa clase. Protocolo de Mensaje • Es el conjunto de mensajes a los cuales un objeto puede responder. responderán al mismo conjunto de mensajes. • ATRIBUTOS DE CLASE (dato compartido): son variables almacenadas en la clase. constituyen la vista exterior del mismo.Metodología de Sistemas – 3º Año Carrera “Analista en Sistemas de Computación” Características de un Objeto • ATRIBUTOS (dato privado): son variables para las cuales el almacenamiento local está disponible en las instancias. 8 AS Silvio Moschen . Todos los objetos que son instancias de la clase comparten la misma descripción de la variable. por lo tanto. • CONJUNTO DE MÉTODOS todos los objetos que son instancias de una clase dada tienen los mismos métodos.

Un caso de Herencia • Es el proceso de modificación de un concepto genérico para un uso específico.Metodología de Sistemas – 3º Año Carrera “Analista en Sistemas de Computación” Generalización / Especialización Un conjunto de clases que poseen características generales (que pertenecen a más de una clase). con unos pocos cambios. • Una clase C definida como heredera de una clase A. • Es la noción que una clase de objetos es un caso especial de otra. Por ejemplo: ◦ B es una especialización de A ◦ Los metales preciosos son una especialización de los metales ◦ Las novelas de misterio son una especialización de los libros 9 AS Silvio Moschen . a las que puede agregar las propias. tiene todas las características de A. y características particulares (que pertenecen a algunas) Deberán estar organizadas en una estructura jerárquica Herencia de Clases Herencia • Es el concepto en Lenguajes Orientados a Objetos (LOO) que es usado para definir objetos que son "casi como" otros ya existentes. • Herencia es la capacidad de una clase C de acceder a los componentes de otra más general A (nivel superior en la jerarquía) considerándolos como propios e inclusive pudiendo redefinirlos.

una clase es definida en términos de una sola superclase inmediatamente superior HERENCIA MULTIPLE Es el caso en que una clase hereda de dos o más clases. Problemas de la herencia múltiple * Las superclases definen operaciones para el mismo mensaje * Las superclases heredan de una superclase común Un ejemplo de Herencia Múltiple 10 AS Silvio Moschen .Metodología de Sistemas – 3º Año Carrera “Analista en Sistemas de Computación” Clases Concretas y Abstractas Clase Abstracta No posee instancias Sus subclases incorporan estructura y comportamiento Admite implementación parcial de algunas operaciones (métodos) Clase Concreta Clase más especializada Poseen instancias Tipos de Herencia HERENCIA SIMPLE En una jerarquía. que no están relacionadas como una superclase y una subclase una de otra.

AUTO es-un OBJETO COMPUESTO • El cuerpo. un techo. precio Métodos: Cambiar precio Atributos / Métodos que no se desean modelar: Atributos: color de tinta Métodos: rellenar tinta. La asociación de un método con su nombre no se determina hasta el momento de su ejecución. Contexto: Catálogo de productos Atributos / Métodos a modelar: Atributos: modelo. escribir Objetos Compuestos Es un objeto compuesto por otros objetos interconectados por la relación parte-de que son instanciados juntos. fabricante.Metodología de Sistemas – 3º Año Carrera “Analista en Sistemas de Computación” Polimorfismo Es la capacidad de las diferentes clases de objetos para responder al mismo protocolo. ejecutando su método. • Habilita al programador para tratar uniformemente objetos que provienen de clases diferentes. un sistema de arranque y energía. El polimorfismo está asociado a la ligadura dinámica. • Sólo deben modelarse los atributos y métodos que sean relevantes en el contexto del problema. un chasis y otras partes. • Permite enviar el mismo mensaje a objetos diferentes y que cada uno responda en la forma apropiada según el tipo de objeto que sea. Es una extensión recursiva de la noción de objetos. Los objetos se modelan como abstracciones • Un objeto se modela como una representación abstracta de un objeto del mundo real. tiene: 2 puertas. cambiar color. • Un auto puede ser descripto estructuralmente como consistente de un cuerpo. CUERPO es-un OBJETO COMPUESTO 11 AS Silvio Moschen . un sistema eléctrico. etc. a su vez.

Indica relaciones de mandatos bidireccionales.Metodología de Sistemas – 3º Año Carrera “Analista en Sistemas de Computación” Objetos Compuestos • Están especificados por una clase que contiene la descripción que indica las clases de las partes y las interconexiones. de alguna forma. podrá caracterizar la asociación con la frase: “un empleado trabaja en un departamento” Asociaciones Inversas En un Diagrama de Clases se puede mostrar direcciones en ambos sentidos. No establece una dirección de dependencia. las clases se relacionan entre sí. • Es posible especializar una descripción por la adición de nuevas partes o substitución de partes existentes. Tiene Cardinalidad. un objeto compuesto puede ser usado a su vez como componente. • El proceso de instanciación es recursivo. por lo tanto. • El proceso de instanciación crea las instancias correspondientes a todas las partes de la descripción. 12 AS Silvio Moschen . Lenguajes Orientados a Objetos • Smalltalk (basado en SIMULA) • C++ (basado en C) • Object Pascal (basado en Pascal) • ExperCommonLisp (basado en Lisp) • CLOS (basado en Lisp) • Eiffel • Flamingo • Java (basado en C++) • Delphi (basado en Object-Pascal) Relaciones entre Clases En la OOP. Una asociación entre Empleado y Departamento. Las mismas pueden describirse como: • Asociaciones • Herencia • Dependencia Asociaciones Esta Relación se da cuando dos Clases se conectan entre si en forma conceptual. podríamos representar al relación anterior como: Una asociación entre Empleado y Departamento. podrá mostrar ambas asociaciones con un triángulo relleno que indique la dirección de cada asociación.

puede contener Atributos y Operaciones. Restricciones en las Asociaciones En ocasiones. 13 AS Silvio Moschen . La Restricción {Or} Se utiliza para aquellos casos que una Clase tenga una relación con una u otra. De hecho. pero cada Cliente es atendido de acuerdo al orden que se encuentre en la formación. la Asociación entre dos clases debe seguir cierta regla. Puede capturar este modelo colocando la palabra ordenado entre llaves (para indicar la restricción) junto a la clase Cliente. al igual que una Clase. cuando esto se da usted tiene una clase de asociación. Clases de Asociación Una Asociación. Esta se indica al establecer una restricción en la línea de la asociación. y utilizará una línea discontinua para conectarla en la línea de asociación. Puede concebir a una clase de asociación de la misma forma en que lo haría con una clase estándar.Metodología de Sistemas – 3º Año Carrera “Analista en Sistemas de Computación” “un empleado trabaja en un departamento” “en un departamento trabajan empleados” Asociaciones Complejas Las Asociaciones pueden ser más complejas que tan solo una clase conectada a otra. Por ejemplo: un Cajero atiene a un Cliente. Por ejemplo: un estudiante de nivel medio puede elegir por un curso académico u otro.

Conecta a los objetos en lugar de las clases. con todas las conexiones de clases que lo conforman. La meta final es crear una idea estática de un sistema. interfaces y realización Los conceptos de Asociación.Metodología de Sistemas – 3º Año Carrera “Analista en Sistemas de Computación” Vínculos Un vínculo es la instancia de la asociación. Deberá subrayar el nombre del vínculo. composición. como se hace con el nombre de un objeto. Multiplicidad y Herencia permiten crear diagramas de clases significativos. Esta idea se cierra con los conceptos de: * Agregación * Composición * Interfaces * Realización 14 AS Silvio Moschen . Multiplicidad La multiplicidad señala la cantidad de objetos de una clase que pueden relacionarse con un objeto de una clase asociada Agregación.

Restricciones en las Agregaciones Puede utilizarse una restricción de Agregación para mostrarse que un componente u otro es parte de un todo. Interfaces y Realizaciones Una vez que haya creado varias clases. tal vez se dé cuenta que no pertenecen a una clase principal. Los componentes y las Clases que constituyen son una asociación que conforma un todo. Composiciones En una Composición es un tipo muy representativo de asociación.Metodología de Sistemas – 3º Año Carrera “Analista en Sistemas de Computación” Agregaciones La Agregación es una relación que indica que una Clase se compone de otras Clases. Cada componente dentro de una composición puede pertenecer tan solo a un todo. Podría codificar las operaciones en una clase y reutilizarlas en otras. 15 AS Silvio Moschen . pero su comportamiento debe incluir algunas de las mismas firmas de la primera clase.

16 AS Silvio Moschen .Metodología de Sistemas – 3º Año Carrera “Analista en Sistemas de Computación” Una interfaz es un conjunto de operaciones que especifica cierto aspecto de la funcionalidad de una clase. y es un conjunto de operaciones que una clase presenta a otras.