You are on page 1of 16

Metodologa de Sistemas 3 Ao Carrera Analista en Sistemas de Computacin

Tecnologa de Objetos
El Modelo Basado en Objetos se ha convertido en uno de los impulsores de la Industria del
Software durante la dcada de los noventa.
A pesar de la reciente profusin de aplicaciones, herramientas y lenguajes que soportan,
emplean o se han construido tomando como base el Modelo de Objetos, los conceptos bsicos
del mismo se originaron en la dcada del 60.
Por ejemplo, el lenguaje SIMULA, uno de los precursores en el concepto de objetos fue
desarrollado en 1967.

Por qu la Orientacin a Objetos?


Proximidad de los conceptos de modelado respecto de las entidades del mundo real
Mejor captura y validacin de requisitos
Acerca el espacio del problema y el espacio de la solucin
Modelado integrado de propiedades estticas y dinmicas del mbito del problema
Facilita construccin, mantenimiento, reutilizacin; principalmente por su adaptacin
para el cambio

El Modelo de Objetos
Los conceptos bsicos del Modelo de Objetos se originaron con la definicin de lenguajes que
incorporan conceptos tales como:
Encapsulamiento
Modularidad
Abstraccin
Polimorfismo

El Enfoque Orientado a Objetos


El desarrollo orientado a objetos es ms una manera de pensar y no una tcnica de
programacin.
El Modelo de Objetos ha trascendido los sistemas de informacin 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 (elctricas, de flujo, etc.)
ingeniera de organizaciones y mtodos (re-ingeniera de empresas, etc.)
ingeniera de productos
control de trficos
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
Metodologa de Sistemas 3 Ao Carrera Analista en Sistemas de Computacin

El anlisis orientado a objetos es un mtodo de anlisis que examina los requisitos


desde las perspectivas de las clases y objetos que se encuentren en el vocabulario del
dominio del problema.
El diseo orientado a objetos es un mtodo de diseo que abarca el proceso de
descomposicin orientado a objetos y una notacin para describir los modelos lgicos
y fsicos, as como los modelos estticos y dinmicos del sistema que se disea.
La programacin orientada a objetos es un mtodo de
implementacin en el que los programas se organizan como colecciones cooperativas
de objetos, cada uno de los cuales representa una instancia de alguna clase, y cuyas
clases son, todas ellas, miembros de una jerarqua de clases unidas mediante
relaciones de herencia.

Paradigmas de Programacin
Un paradigma es una forma de representar y manipular el conocimiento. En nuestro contexto,
representa un enfoque particular o filosofa para la construccin del software.
Algunos ejemplos de paradigmas de programacin:
El paradigma estructurado es considerado el ms comn y est representado, por
ejemplo, por el C o por BASIC.
El paradigma funcional est representado por la familia de lenguajes LISP, en
particular Scheme.
El paradigma lgico, un ejemplo es PROLOG.
El paradigma orientado a objetos. Un lenguaje completamente
orientado a objetos es Smalltalk.

El Progreso de la Abstraccin
Todo paradigma de programacin implica cierta abstraccin
Evolucin de los paradigmas mayor nivel de abstraccin
Paradigma estructurado:
Abstraccin principal exige una asociacin entre modelo de mquina y modelo del
problema.
Modelo mental basado en el comportamiento (verbos)
Paradigma orientado a objetos:
Abstraccin consiste en modelar el mundo real (dominio del problema) ajustndose a
la perspectiva del pensamiento del ser humano.
Modelo basado en entidades, objetos (sustantivos)

Programacin Estructurada
La programacin estructurada tradicional, propia del paradigma imperativo, se basa
fundamentalmente en la ecuacin de Wirth:
Programas = Algoritmos + Estructuras de Datos
Enfoque sobre el diseo de los procedimientos, es decir, sobre el CMO.
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 informacin de un mdulo esta oculta al mundo
exterior.
2 AS Silvio Moschen
Metodologa de Sistemas 3 Ao Carrera Analista en Sistemas de Computacin

Es el proceso de ocultar todos los secretos de un mdulo que no contribuyen a sus


caractersticas esenciales.

Es una tcnica de diseo para descomponer el Sistema en Mdulos


Decidir que MDULOS se requieren y particionar el programa de forma tal que losDATOS
queden OCULTOS EN LOS MDULOS

Ventajas del Encapsulamiento


Centralizacin de todos los datos de un cierto tipo Programacin paralela
Facilita el Mantenimiento y Extensin en los lenguajes de programacin clsicos los
mdulos se implementan mediante subprogramas (procedimientos, funciones y
subrutinas).
Esto, en general, orienta una formulacin Funcional del problema, organizndolo
mediante refinamientos sucesivos de los mdulos.

Abstraccin de Datos
La abstraccin de datos es la tcnica de programacin que permite definir nuevos tipos de
datos, adecuados para la aplicacin

Tipos de datos abstractos (TDA)


Encapsulamiento
+
Ocultamiento de la Informacin

Tipos de Datos Abstractos


Un TDA se compone de estructuras de datos (representacin) y las operaciones que la
manipulan

TDA = representacin + operaciones

Un lenguaje soportar la definicin de tipos de datos abstractos, si:


el usuario puede definir nuevos tipos de datos asociando explcitamente la estructura
de datos del mismo con las operaciones que lo manipulan
la representacin y las operaciones estn ocultas en el tipo de dato abstracto.

Tecnologa de Objetos
Disear programas empleando el concepto de TDA consiste en:
Decidir qu TIPOS SE REQUIEREN; y proveer un para cada uno de los mismos
Lenguajes que permiten definir tipos de datos abstractos:

Mecanismo

Simula 67 - clase
Modula2 - mdulo
Ada - paquete (package)
Smalltalk - clase
C++ - clase
Object Pascal - clase
Java - clase

3 AS Silvio Moschen
Metodologa de Sistemas 3 Ao Carrera Analista en Sistemas de Computacin

Programacin Orientada a Objetos


Basada en el concepto de Objetos como representaciones (simples/complejas)
(reales/imaginarias) de cosas que interactan entre ellos para llevar a cabo una actividad.
Representa acabadamente el concepto de TDA

Ventajas de la Orientacin a Objetos


Mantenibilidad (facilidad de mantenimiento). Los programas que se disean utilizando
el concepto de orientacin a objetos son ms fciles de leer y comprender y el control
de la complejidad del programa se consigue gracias a la ocultacin de la informacin
que permite dejar visibles slo los detalles ms relevantes.
Modificabilidad (facilidad para modificar los programas). Se pueden realizar aadidos
o supresiones a programas simplemente aadiendo, suprimiendo o modificando
objetos.
Reusabilidad Los objetos, si han sido correctamente diseados, se pueden usar
numerosas veces y en distintos proyectos.
Fiabilidad Los programas orientados a objetos suelen ser ms fiables ya que se basan
en el uso de objetos ya definidos que estn ampliamente testeados.

Conceptos Bsicos de la Orientacin a Objetos


Qu es un OBJETO?
Un objeto es una entidad que combina las propiedades de los procedimientos y de los
datos.
Un objeto ejecuta operaciones (comportamiento) y mantiene su estado local
(estructura).
Los procedimientos que incluye un objeto se denominan mtodos, los mtodos
describen el comportamiento del objeto.
La encapsulacin en un objeto permite una alta cohesin y un bajo acoplamiento.
Un objeto puede caracterizar una entidad fsica (coche) o abstracta (ecuacin
matemtica).

Los objetos encapsulan datos y operaciones (o procedimientos).

Un Objeto posee:
ESTADO
Nombre, Edad, Peso, Altura, Domicilio
COMPORTAMIENTO
Escala, Corre, Trabaja,
INDENTIDAD
perezanalia
4 AS Silvio Moschen
Metodologa de Sistemas 3 Ao Carrera Analista en Sistemas de Computacin

Cmo interactan los Objetos entre s?


Todas las acciones en POO resultan de enviar mensajes entre objetos.
Un mensaje es una solicitud para que un objeto ejecute una accin. Este responde
ejecutando mtodos, es decir, usando sus propios procedimientos.

Interaccin de Objetos a travs de mensajes


El objeto emisor debe asociar o enlazar al objeto receptor. El emisor del mensaje
solicita al receptor que realice la operacin que se especifica en el mensaje.
La llamada al mtodo siempre se produce en el contexto de un objeto concreto.
El envo de mensajes soporta un importante principio en programacin:
LA ABSTRACCIN DE DATOS

Interaccin de Objetos a travs de mensajes

Conceptos Bsicos de la Orientacin a Objetos


Ejemplo prctico
Calcular la suma de dos nmeros e imprimir el resultado.
Identificacin de los objetos
- nmero1: el primer nmero sumando.
- nmero2: el segundo nmero sumando.
5 AS Silvio Moschen
Metodologa de Sistemas 3 Ao Carrera Analista en Sistemas de Computacin

- suma: el resultado de la suma de dos nmeros


Identificacin de los mensajes
+ nmero2
El mensaje + con el parmetro nmero2 enviado a un receptor. El resultado de este mensaje
es un objeto suma representando
la suma del objeto receptor nmero1 y nmero2.
imprimir
Mensaje que presenta en la pantalla el valor del objeto receptor.

Conceptos Bsicos de la Orientacin a Objetos


Ejemplo prctico
Secuencia de los mensajes a los objetos
(nmero1 + nmero2) imprimir.
que equivale a:
suma = nmero1 + nmero2.
suma imprimir.

(3+4) imprimir
(numero1+numero2) imprimir

Clases y Variables de Instancia


Implementacin de Estructuras de Datos y sus Operaciones

Programacin Procedural Programacin OOP

#tipo de datos #clase


#valores #instancia
#operaciones #mtodos

Cmo Abstraer Conceptos en la OOP


En el paradigma de objetos existen dos ejes conceptuales para abstraer conceptos:
Clasificacin
Generalizacin /Especializacin

CLASIFICACIN
Naturalmente, muchos objetos tendrn caractersticas semejantes.

Debern ser agrupados de alguna forma.

El mecanismo que brinda la OOP para representar esta agrupacin es la


CLASE

6 AS Silvio Moschen
Metodologa de Sistemas 3 Ao Carrera Analista en Sistemas de Computacin

Qu es una Clase?
Una clase contiene la descripcin de las caractersticas comunes de todos los objetos que
pertenecen a ella:
la especificacin del comportamiento
la definicin de la estructura interna
la implementacin de los mtodos

{Estado =
finalizado
ifTrue: [self
Archivar];
.
.

Comparacin entre Clase y Objeto


Las clases son definiciones estticas que se pueden utilizar para entender todos los
objetos de una clase.
Los objetos son entidades dinmicas que existen en el mundo real.
Instancia: Es una manifestacin concreta de una clase (un objeto con valores concretos).
Tambin se le suele llamar ocurrencia.

Clases Instancias (Objetos)


* define atributos * tienen valores
* define mtodos * ejecutan mtodos
* puede generar instancias

7 AS Silvio Moschen
Metodologa de Sistemas 3 Ao Carrera Analista en Sistemas de Computacin

Caractersticas de un Objeto
ATRIBUTOS (dato privado): son variables para las cuales el almacenamiento local est
disponible en las instancias. Todos los objetos que son instancias de la clase
comparten la misma descripcin de la variable.
ATRIBUTOS DE CLASE (dato compartido): son variables almacenadas en la clase, cuyo
valor es compartido por todas las instancias de esa clase.
CONJUNTO DE MTODOS todos los objetos que son instancias de una clase dada
tienen los mismos mtodos, por lo tanto, respondern al mismo conjunto de
mensajes.

Protocolo de Mensaje
Es el conjunto de mensajes a los cuales un objeto puede responder.
Las formas en las cuales un objeto puede actuar y reaccionar, constituyen la vista
exterior del mismo.

8 AS Silvio Moschen
Metodologa de Sistemas 3 Ao Carrera Analista en Sistemas de Computacin

Generalizacin / Especializacin
Un conjunto de clases que poseen caractersticas generales (que pertenecen a ms de una
clase), y caractersticas particulares (que pertenecen a algunas)

Debern estar organizadas en una estructura jerrquica

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, con unos pocos cambios.
Una clase C definida como heredera de una clase A, tiene todas las caractersticas de
A, a las que puede agregar las propias.
Herencia es la capacidad de una clase C de acceder a los componentes de otra ms
general A (nivel superior en la jerarqua) considerndolos como propios e inclusive
pudiendo redefinirlos.

Un caso de Herencia

Es el proceso de modificacin de un concepto genrico para un uso especfico.


Es la nocin que una clase de objetos es un caso especial de otra.
Por ejemplo:
B es una especializacin de A
Los metales preciosos son una especializacin de los metales
Las novelas de misterio son una especializacin de los libros

9 AS Silvio Moschen
Metodologa de Sistemas 3 Ao Carrera Analista en Sistemas de Computacin

Clases Concretas y Abstractas


Clase Abstracta
No posee instancias
Sus subclases incorporan estructura y comportamiento
Admite implementacin parcial de algunas operaciones (mtodos)
Clase Concreta
Clase ms especializada
Poseen instancias

Tipos de Herencia
HERENCIA SIMPLE
En una jerarqua, una clase es definida en trminos de una sola superclase inmediatamente
superior

HERENCIA MULTIPLE
Es el caso en que una clase hereda de dos o ms clases, que no estn relacionadas como una
superclase y una subclase una de otra.
Problemas de la herencia mltiple
* Las superclases definen operaciones para el mismo mensaje
* Las superclases heredan de una superclase comn

Un ejemplo de Herencia Mltiple

10 AS Silvio Moschen
Metodologa de Sistemas 3 Ao Carrera Analista en Sistemas de Computacin

Polimorfismo
Es la capacidad de las diferentes clases de objetos para responder al mismo protocolo.
Habilita al programador para tratar uniformemente objetos que provienen de clases
diferentes.
Permite enviar el mismo mensaje a objetos diferentes y que cada uno responda en la
forma apropiada segn el tipo de objeto que sea, ejecutando su mtodo.
El polimorfismo est asociado a la ligadura dinmica. La asociacin de un mtodo con su
nombre no se determina hasta el momento de su ejecucin.

Los objetos se modelan como abstracciones


Un objeto se modela como una representacin abstracta de un objeto del mundo real.
Slo deben modelarse los atributos y mtodos que sean relevantes en el contexto del
problema.
Contexto: Catlogo de productos
Atributos / Mtodos a modelar:
Atributos: modelo, fabricante, precio
Mtodos: Cambiar precio
Atributos / Mtodos que no se desean modelar:
Atributos: color de tinta
Mtodos: rellenar tinta, cambiar color, escribir
Objetos Compuestos
Es un objeto compuesto por otros objetos interconectados por la relacin parte-de que son
instanciados juntos.
Es una extensin recursiva de la nocin de objetos.
Un auto puede ser descripto estructuralmente como consistente de un cuerpo, un sistema
de arranque y energa, un sistema elctrico, etc.
AUTO es-un OBJETO COMPUESTO
El cuerpo, a su vez, tiene: 2 puertas, un techo, un chasis y otras partes.
CUERPO es-un OBJETO COMPUESTO
11 AS Silvio Moschen
Metodologa de Sistemas 3 Ao Carrera Analista en Sistemas de Computacin

Objetos Compuestos
Estn especificados por una clase que contiene la descripcin que indica las clases de
las partes y las interconexiones.
El proceso de instanciacin crea las instancias correspondientes a todas las partes de la
descripcin.
El proceso de instanciacin es recursivo, por lo tanto, un objeto compuesto puede ser
usado a su vez como componente.
Es posible especializar una descripcin por la adicin de nuevas partes o substitucin
de partes existentes.

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, de alguna forma, las clases se relacionan entre s.
Las mismas pueden describirse como:
Asociaciones
Herencia
Dependencia

Asociaciones
Esta Relacin se da cuando dos Clases se conectan entre si en forma conceptual.
Indica relaciones de mandatos bidireccionales. No establece una direccin de dependencia.
Tiene Cardinalidad.

Una asociacin entre Empleado y Departamento, podr caracterizar la asociacin con la frase:
un empleado trabaja en un departamento

Asociaciones Inversas
En un Diagrama de Clases se puede mostrar direcciones en ambos sentidos, podramos
representar al relacin anterior como:
Una asociacin entre Empleado y Departamento, podr mostrar ambas asociaciones con un
tringulo relleno que indique la direccin de cada asociacin.

12 AS Silvio Moschen
Metodologa de Sistemas 3 Ao Carrera Analista en Sistemas de Computacin

un empleado trabaja en un departamento


en un departamento trabajan empleados

Asociaciones Complejas
Las Asociaciones pueden ser ms complejas que tan solo una clase conectada a otra.

Restricciones en las Asociaciones


En ocasiones, la Asociacin entre dos clases debe seguir cierta regla. Esta se indica al
establecer una restriccin en la lnea de la asociacin. Por ejemplo: un Cajero atiene a un
Cliente, pero cada Cliente es atendido de acuerdo al orden que se encuentre en la formacin.
Puede capturar este modelo colocando la palabra ordenado entre llaves (para indicar la
restriccin) junto a la clase Cliente.

La Restriccin {Or}
Se utiliza para aquellos casos que una Clase tenga una relacin con una u otra. Por ejemplo: un
estudiante de nivel medio puede elegir por un curso acadmico u otro.

Clases de Asociacin
Una Asociacin, al igual que una Clase, puede contener Atributos y Operaciones. De hecho,
cuando esto se da usted tiene una clase de asociacin.
Puede concebir a una clase de asociacin de la misma forma en que lo hara con una clase
estndar, y utilizar una lnea discontinua para conectarla en la lnea de asociacin.

13 AS Silvio Moschen
Metodologa de Sistemas 3 Ao Carrera Analista en Sistemas de Computacin

Vnculos
Un vnculo es la instancia de la asociacin. Conecta a los objetos en lugar de las clases. Deber
subrayar el nombre del vnculo, como se hace con el nombre de un objeto.

Multiplicidad
La multiplicidad seala la cantidad de objetos de una clase que pueden relacionarse con un
objeto de una clase asociada

Agregacin, composicin, interfaces y realizacin


Los conceptos de Asociacin, Multiplicidad y Herencia permiten crear diagramas de clases
significativos. La meta final es crear una idea esttica de un sistema, con todas las conexiones
de clases que lo conforman.
Esta idea se cierra con los conceptos de:
* Agregacin
* Composicin
* Interfaces
* Realizacin
14 AS Silvio Moschen
Metodologa de Sistemas 3 Ao Carrera Analista en Sistemas de Computacin

Agregaciones
La Agregacin es una relacin que indica que una Clase se compone de otras Clases. Los
componentes y las Clases que constituyen son una asociacin que conforma un todo.

Restricciones en las Agregaciones


Puede utilizarse una restriccin de Agregacin para mostrarse que un componente u otro es
parte de un todo.

Composiciones
En una Composicin es un tipo muy representativo de asociacin. Cada componente dentro de
una composicin puede pertenecer tan solo a un todo.

Interfaces y Realizaciones
Una vez que haya creado varias clases, tal vez se d cuenta que no pertenecen a una clase
principal, pero su comportamiento debe incluir algunas de las mismas firmas de la primera
clase. Podra codificar las operaciones en una clase y reutilizarlas en otras.
15 AS Silvio Moschen
Metodologa de Sistemas 3 Ao Carrera Analista en Sistemas de Computacin

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.

16 AS Silvio Moschen