Você está na página 1de 14

Anlisis y Modelado de Sistemas de Informacin

Ingeniera Informtica Plan 2010

El modelo del proceso del software


1.1. Conceptualizacin de tecnologa orientada
Conceptos de la Programacin tradicional.

objetos.

En la programacin tradicional, tambin conocida como programacin estructurada, un


programa o aplicacin consta de mltiples datos y funciones
globales. El trmino global describe el hecho que todos los datos o funciones son
visibles en todo el programa y, por lo tanto pueden ser llamados desde cualquier
ubicacin en la aplicacin. Esta forma de programacin tiene sus orgenes en las primeras
computadoras modernas basadas en la arquitectura Von Neuman de 1945 donde las
instrucciones de un programa se guardaban en memoria creando el concepto de
programa almacenado. Las instrucciones de un programa definidas dentro defunciones o
procedimientos, eran ejecutadas por el procesador de manera secuencial afectando los
datos del programa, los cuales eran almacenados en otras secciones de la memoria. Esta
arquitectura es similar a la que actualmente se usa en la mayora de las computadoras
personales. Debido a esta separacin de funciones y datos en la memoria, se ha
desarrollado un gran nmero de lenguajes de programacin que explotan este concepto.
Sin embargo este tipo de programacin tiene dos problemas principales:
a) Que el programador debe organizar su programa de acuerdo a la arquitectura de la
computadora, o que piense como la mquina.
b) Los datos se vuelven globalmente visibles al estar separados de las funciones. Dado
esto cualquier cambio en la estructura de los datos pudiera llegar a requerir la
modificacin de todas las funciones del programa en correspondencia con los cambios en
los datos.
Conceptos de la Programacin Orientada a Objetos
A diferencia de la programacin tradicional, la orientada a objetos tiene una estructura de
ms alto nivel llamada objeto, que ofrece dos ventajas sobre la tradicional:
a) Permite al programador que organice su programa de acuerdo con abstracciones
de ms alto nivel, siendo stas ms cercanas a la manera de pensar de la gente.
En otras palabras, los objetos son las unidades de representacin de las
aplicaciones, por ejemplo, cuentas de bancos, reservaciones de vuelo, etc.
b) Los datos globales desaparecen, siendo stos junto con las funciones parte
interna de los objetos. Por lo tanto cualquier cambio en la estructura de alguno de
los datos solo deber afectar las funciones definidas en ese mismo objeto y no en
los dems. En general, un programa orientado a objetos, se define exclusivamente
en trminos de objetos y sus relaciones.

Anlisis y Modelado de Sistemas de Informacin


Ingeniera Informtica Plan 2010

Fig.1 Programacin orientada a objetos

Los datos y funciones se guardan dentro de los objetos, como se muestra en la figura.

Fig.2 Programacin orientada a objetos: objetos globales que contienen datos y funciones
locales

Hoy en da la tecnologa orientada a objetos ya no se aplica solamente a los lenguajes de


programacin, adems se viene aplicando en el anlisis y diseo con mucho xito, al igual
que en las bases de datos. Es que para hacer una buena programacin orientada a
objetos hay que desarrollar todo el sistema aplicando esta tecnologa, de ah la
importancia del anlisis y el diseo orientado a objetos.
La programacin orientada a objetos es una de las formas ms populares de programar y
viene teniendo gran acogida en el desarrollo de proyectos de software desde los ltimos
aos. Esta acogida se debe a sus grandes capacidades y ventajas frente a las antiguas
formas de programar.

Una Perspectiva Histrica

Anlisis y Modelado de Sistemas de Informacin


Ingeniera Informtica Plan 2010
Tradicionalmente, la programacin fue hecha en una manera secuencial o lineal, es decir
una serie de pasos consecutivos con estructuras consecutivas y bifurcaciones.

Estos programas escritos al estilo espagueti no ofrecen flexibilidad y el mantener una


gran cantidad de lneas de cdigo en slo bloque se vuelve una tarea complicada. Frente
a esta dificultad aparecieron los lenguajes basados en la programacin estructurada. La
idea principal de esta forma de programacin es separar las partes complejas del
programa en mdulos o segmentos que sean ejecutados conforme se requieran. De esta
manera tenemos un diseo modular, compuesto por mdulos independientes que puedan
comunicarse entre s. Poco a poco este
Estilo de programacin fue reemplazando al estilo espagueti impuesto por la
programacin lineal. Entonces, vemos que la evolucin que se fue dando en la
programacin se orientaba siempre a ir descomponiendo ms el programa. Este tipo de
descomposicin conduce directamente a la programacin orientada a objetos.
Pues la creciente tendencia de crear programas cada vez ms grandes y complejos llev
a los desarrolladores a crear una nueva forma de programar que les permita crear
sistemas de niveles empresariales y con reglas de negocios muy complejas. Para estas
necesidades ya no bastaba la programacin estructurada ni mucho menos la
programacin lineal. Es as como aparece la programacin orientada a objetos (POO). La
POO viene de la evolucin de la programacin estructurada; bsicamente la POO
simplifica la programacin con la nueva filosofa y nuevos conceptos que tiene. La POO
se basa en la dividir el programa en pequeas unidades lgicas de cdigo. A estas
3

Anlisis y Modelado de Sistemas de Informacin


Ingeniera Informtica Plan 2010
pequeas unidades lgicas de cdigo se les llama objetos. Los objetos son unidades
independientes que se comunican entre ellos mediante mensajes
Cules son las ventajas de un lenguaje orientado a objetos?

Fomenta la reutilizacin y extensin del cdigo.


Permite crear sistemas ms complejos.
Relacionar el sistema al mundo real.
Facilita la creacin de programas visuales.
Construccin de prototipos
Agiliza el desarrollo de software
Facilita el trabajo en equipo

Facilita el mantenimiento del software Lo interesante de la POO es que proporciona


conceptos y herramientas con las cuales se modela y representa el mundo real tan
fielmente como sea posible.
El modelo Orientado a Objetos
Conceptos bsicos: Objetos, Clases, Herencia, Envo de mensajes (mtodos).
La programacin orientada a objetos o POO (OOP segn sus siglas en ingls) es un
paradigma de programacin que usa objetos y sus interacciones, para disear
aplicaciones y programas informticos. Est basado en varias tcnicas, incluyendo
herencia, abstraccin, polimorfismo y encapsulamiento. Su uso se populariz a principios
de la dcada de los aos 1990. En la actualidad, existe variedad de lenguajes de
programacin que soportan la orientacin a objetos. Los objetos son entidades que tienen
un determinado comportamiento (mtodo) e identidad.

El estado est compuesto de datos, ser uno o varios atributos a los que se
habrn asignado unos valores concretos (datos).
El comportamiento est definido por los mtodos o mensajes a los que sabe
responder dicho objeto, es decir, qu operaciones se pueden realizar con l.
La identidad es una propiedad de un objeto que lo diferencia del resto, dicho con
otras palabras, es su identificador (concepto anlogo al de identificador de una
variable o una constante).

Un objeto contiene toda la informacin que permite definirlo e identificarlo frente a otros
objetos pertenecientes a otras clases e incluso frente a objetos de una misma clase, al
poder tener valores bien diferenciados en sus atributos. A su vez, los objetos disponen de
mecanismos de interaccin llamados mtodos, que favorecen la comunicacin entre ellos.
Esta comunicacin favorece a su vez el cambio de estado en los propios objetos. Esta
caracterstica lleva a tratarlos como unidades indivisibles, en las que no se separa el
estado y el comportamiento.
Los mtodos (comportamiento) y atributos (estado) estn estrechamente relacionados
por la propiedad de conjunto. Esta propiedad destaca que una clase requiere de mtodos
4

Anlisis y Modelado de Sistemas de Informacin


Ingeniera Informtica Plan 2010
para poder tratar los atributos con los que cuenta. El programador debe pensar
indistintamente en ambos conceptos, sin separar nadarle mayor importancia a alguno de
ellos. Hacerlo podra producir el hbito errneo de crear clases contenedoras de
informacin por un lado y clases con mtodos que manejen a las primeras por el otro. De
esta manera se estara realizando una programacin estructurada camuflada en un
lenguaje de programacin orientado a objetos. La POO difiere de la programacin
estructurada tradicional, en la que los datos y los procedimientos estn separados y sin
relacin, ya que lo nico que se busca es el procesamiento de unos datos de entrada para
obtener otros de salida. La programacin estructurada anima al programador a pensar
sobre todo en trminos de procedimientos o funciones, y en segundo lugar en las
estructuras de datos que esos procedimientos manejan. En la programacin estructurada
slo se escriben funciones que procesan datos. Los programadores que emplean POO,
en cambio, primero definen objetos para luego enviarles mensajes solicitndoles que
realicen sus mtodos por s mismos.
Conceptos fundamentales
La programacin orientada a objetos es una forma de programar que trata de encontrar
una solucin a estos problemas. Introduce nuevos conceptos, que superan y amplan
conceptos antiguos ya conocidos. Entre ellos destacan los siguientes:

Clase: definiciones de las propiedades y comportamiento de un tipo de objeto


concreto. La instanciacin es la lectura de estas definiciones y la creacin de un
objeto a partir de ellas.
Herencia: (por ejemplo, herencia de la clase C a la clase D) Es la facilidad
mediante la cual la clase D hereda en ella cada uno de los atributos y operaciones
de C, como si esos atributos y operaciones hubiesen sido definidos por la misma
D. Por lo tanto, puede usar los mismos mtodos y variables pblicas declaradas
en C. Los componentes registrados como privados" (private) tambin se heredan,
pero como no pertenecen a la clase, se mantienen escondidos al programador y
slo pueden ser accedidos a travs de otros mtodos pblicos. Esto es as para
mantener hegemnico el ideal de OOP.
Objeto: entidad provista de un conjunto de propiedades o atributos (datos) y de
comportamiento o funcionalidad (mtodos) los mismos que consecuentemente
reaccionan a eventos. Se corresponde con los objetos reales del mundo que nos
rodea, o a objetos internos del sistema (del programa). Es una instancia a una
clase.
Mtodo: Algoritmo asociado a un objeto (o a una clase de objetos), cuya ejecucin
se desencadena tras la recepcin de un "mensaje". Desde el punto de vista del
comportamiento, es lo que el objeto puede hacer. Un mtodo puede producir un
cambio en las propiedades del objeto, o la generacin de un "evento" con un
nuevo mensaje para otro objeto del sistema.
Evento: Es un suceso en el sistema (tal como una interaccin del usuario con la
mquina, o un mensaje enviado por un objeto). El sistema maneja el evento
enviando el mensaje adecuado al objeto pertinente. Tambin se puede definir
5

Anlisis y Modelado de Sistemas de Informacin


Ingeniera Informtica Plan 2010

como evento, a la reaccin que puede desencadenar un objeto, es decir la accin


que genera.
Mensaje: una comunicacin dirigida a un objeto, que le ordena que ejecute uno de
sus mtodos con ciertos parmetros asociados al evento que cogener.
Propiedad o atributo: contenedor de un tipo de datos asociados a un objeto (o a
una clase de objetos), que hace los datos visibles desde fuera del objeto y esto se
define como sus caractersticas predeterminadas, y cuyo valor puede ser alterado
por la ejecucin de algn mtodo.
Estado interno: es una variable que se declara privada, que puede
ser nicamente accedida y alterada por un mtodo del objeto, y que se utiliza para
indicar distintas situaciones posibles para el objeto (o clase de objetos). No es
visible al programador que maneja una instancia de la clase.
Componentes de un objeto: atributos, identidad, relaciones y mtodos.
Identificacin de un objeto: un objeto se representa por medio de una tabla o
entidad que est compuesta por sus atributos y funciones correspondientes.

En comparacin con un lenguaje imperativo, una "variable", no es ms que un contenedor


interno del atributo del objeto o de un estado interno, as como la funcin" es un
procedimiento interno del mtodo del objeto.
Caractersticas de la POO
Existe un acuerdo acerca de qu caractersticas contempla la "orientacin a objetos", las
caractersticas siguientes son las ms importantes:

Abstraccin: denota las caractersticas esenciales de un objeto, donde se capturan


sus comportamientos. Cada objeto en el sistema sirve como modelo de un "agente"
abstracto que puede realizar trabajo, informar y cambiar su estado, y "comunicarse"
con otros objetos en el sistema sin revelar cmo se implementan estas caractersticas.
Los procesos, las funciones o los mtodos pueden tambin ser abstrados y cuando lo
estn, una variedad de tcnicas son requeridas para ampliar una abstraccin. El
proceso de abstraccin permite seleccionar las caractersticas relevantes dentro de un
conjunto e identificar comportamientos comunes para definir nuevos tipos de
entidades en el mundo real. La abstraccin es clave en el proceso de anlisis y diseo
orientado a objetos, ya que mediante ella podemos llegar a armar un conjunto de
clases que permitan modelar la realidad o el problema que se quiere atacar.
Encapsulamiento: Significa reunir a todos los elementos que pueden considerarse
pertenecientes a una misma entidad, al mismo nivel de abstraccin. Esto permite
aumentar la cohesin de los componentes del sistema. Algunos autores confunden
este concepto con el principio de ocultacin, principalmente porque se suelen emplear
conjuntamente.
Modularidad: Se denomina Modularidad a la propiedad que permite subdividir una
aplicacin en partes ms pequeas (llamadas mdulos), cada una de las cuales debe
ser tan independiente como sea posible de la aplicacin en s y de las restantes
partes. Estos mdulos se pueden compilar por separado, pero tienen conexiones con
6

Anlisis y Modelado de Sistemas de Informacin


Ingeniera Informtica Plan 2010

otros mdulos. Al igual que la encapsulacin, los lenguajes soportan la Modularidad


de diversas formas.
Principio de ocultacin: Cada objeto est aislado del exterior, es un mdulo natural,
y cada tipo de objeto expone una interfaz a otros objetos que especfica cmo pueden
interactuar con los objetos de la clase. El aislamiento protege a las propiedades de un
objeto contra su modificacin por quien no tenga derecho a acceder a ellas, solamente
los propios mtodos internos del objeto pueden acceder a su estado. Esto asegura
que otros objetos no pueden cambiar el estado interno de un objeto de maneras
inesperadas, eliminando efectos secundarios e interacciones inesperadas. Algunos
lenguajes relajan esto, permitiendo un acceso directo a los datos internos del objeto
de una manera controlada y limitando el grado de abstraccin. La aplicacin entera se
reduce a un agregado o rompecabezas de objetos.
Polimorfismo: la habilidad de tomar varias formas, en java es la habilidad de una
variable por referencia de cambiar su comportamiento en funcin de que instancia de
objeto posee. Esto permite tratar de la misma manera, como objetos de la superclase,
a mltiples objetos de la subclase, seleccionado en cada caso los mtodos
apropiados.
Por ejemplo, dada una clase Vehicular, la caracterstica de polimorfismo habilita al
programador para definir mtodos en sus subclases (por ejemplo: coche, camin y
moto). No importa qu tipo de Vehculo sea ya que si llamamos al mtodo
getNumeroruedas() llamara al propio de cada subclase, pero el objeto deja de ser
Vehculo tambin.
Herencia: las clases no estn aisladas, sino que se relacionan entre s, formando una
jerarqua de clasificacin. Los objetos heredan las propiedades y el comportamiento
de todas las clases a las que pertenecen. La herencia organiza y facilita el
polimorfismo y el encapsulamiento permitiendo a los objetos ser definidos y creados
como tipos especializados de objetos preexistentes. Estos pueden compartir (y
extender) su comportamiento sin tener que volver a implementarlo. Esto suele hacerse
habitualmente agrupando los objetos en clases y estas en rboles o enrejados que
reflejan un comportamiento comn. Cuando un objeto hereda de ms de una clase se
dice que hay herencia mltiple.
Recoleccin de basura: la recoleccin de basura o garbage collector (basurero) es la
tcnica por la cual el entorno de objetos se encarga de destruir automticamente, y
por tanto desvincular la memoria asociada, los objetos que hayan quedado sin
ninguna referencia a ellos. Esto significa que el programador no debe preocuparse por
la asignacin o liberacin de memoria, ya que el entorno la asignar al crear un nuevo
objeto y la liberar cuando nadie lo est usando. En la mayora de los lenguajes
hbridos que se extendieron para soportar el Paradigma de Programacin Orientada a
Objetos como C++ u Object Pascal, esta caracterstica no existe y la memoria debe
desasignarse manualmente. Repasando, la programacin orientada a objetos es un
paradigma que utiliza objetos como elementos fundamentales en la construccin de la
solucin. Surgen los aos 70. Un objeto es una abstraccin de algn hecho o ente del
mundo real que tiene atributos que representan sus caractersticas o propiedades y
mtodos que representan su comportamiento o acciones que realizan. Todas las
7

Anlisis y Modelado de Sistemas de Informacin


Ingeniera Informtica Plan 2010
propiedades y mtodos comunes a los objetos se encapsulan o se agrupan en clases.
Una clase es una plantilla o un prototipo para crear objetos, por eso se dice que los
objetos son instancias de clases

Lenguajes orientados a objetos


Simula (1967) es aceptado como el primer lenguaje que posee las caractersticas
principales de un lenguaje orientado a objetos. Fue creado para hacer programas de
simulacin, en donde los "objetos" son la representacin de la informacin ms
importante. Smalltalk (1972 a 1980) es posiblemente el ejemplo cannico, y con el que
gran parte de la teora de la programacin orientada a objetos se ha desarrollado.
Entre los lenguajes orientados a objetos se destacan los siguientes:

ABAP
ABL Lenguaje de programacin de OpenEdge de Progress Software
ActionScript
ActionScript 3
Ada
C++
C#
Clarion
Clipper (lenguaje de programacin) (Versin 5.x con librera de objetosClass(y))
D
Object Pascal (Embarcadero Delphi)
Gambas
Harbour
Eiffel
Java
JavaScript (la herencia se realiza por medio de la programacin basada en
prototipos)
Lexico (en castellano)
Objective-C
Ocaml
Oz
R
Perl (soporta herencia mltiple. La resolucin se realiza en preorden,pero puede
modificarse al algoritmolinearization C3 por medio del mdulo Class::C3 en CPAN)
PHP (a partir de su versin 5)
PowerBuilder
Python
Ruby
Smalltalk (Entorno de objetos puro)
8

Anlisis y Modelado de Sistemas de Informacin


Ingeniera Informtica Plan 2010

Magik (SmallWorld)
Vala
VB.NET
Visual FoxPro (en su versin 6)
Visual Basic 6.0
Visual Objects
XBase++
Lenguaje DRP
Lenguajes de programacin Scala (lenguaje usado por Twitter)

Muchos de estos lenguajes de programacin no son puramente orientados a objetos, sino


que son hbridos que combinan la POO con otros paradigmas. Al igual que C++ otros
lenguajes, como OOCOBOL, OOLISP, OOPROLOG y Object REXX, han sido creados
aadiendo extensiones orientadas a objetos a un lenguaje de programacin clsico. Un
nuevo paso en la abstraccin de paradigmas de programacin es laProgramacin
Orientada a Aspectos (POA). Aunque es todava una metodologa en estado de
maduracin, cada vez atrae a ms investigadores e incluso proyectos comerciales en todo
el mundo.
Estructura de un objeto
Un objeto puede considerarse como una especie de cpsula dividida en tres partes:
relaciones, propiedades, mtodos. Cada uno de estos componentes desempea un papel
totalmente independiente:

Las relaciones permiten que el objeto se inserte en la organizacin y estn


formadas esencialmente por punteros a otros objetos.
Las propiedades distinguen un objeto determinado de los restantes que forman
parte de la misma organizacin y tiene valores que dependen de la propiedad de
que se trate. Las propiedades de un objeto pueden ser heredadas a sus
descendientes en la organizacin.
Los mtodos son las operaciones que pueden realizarse sobre el objeto, que
normalmente estarn incorporados en forma de programas (cdigo)que el objeto
es capaz de ejecutar y que tambin pone a disposicin de sus descendientes a
travs de la herencia.

Encapsulamiento y ocultacin
Como hemos visto, cada objeto es una estructura compleja en cuyo interior hay datos y
programas, todos ellos relacionados entre s, como si estuvieran encerrados
conjuntamente en una cpsula. Esta propiedad (encapsulamiento), es una de las
caractersticas fundamentales en la OOP. Los objetos son inaccesibles, e impiden que
otros objetos, los usuarios, o incluso los programadores conozcan cmo est distribuida la
informacin o qu informacin hay disponible. Esta propiedad de los objetos se denomina
9

Anlisis y Modelado de Sistemas de Informacin


Ingeniera Informtica Plan 2010
ocultacin de la informacin. Esto no quiere decir, sin embargo, que sea imposible
conocer lo necesario respecto a un objeto y a lo que contiene. Si as fuera no se podra
hacer gran cosa con l. Lo que sucede es que las peticiones de informacin a un objeto.
Deben realizarse a travs de mensajes dirigidos a l, con la orden de realizar la operacin
pertinente. La respuesta a estas rdenes ser la informacin requerida, siempre que el
objeto considere que quien enva el mensaje est autorizado para obtenerla. El hecho de
que cada objeto sea una cpsula facilita enormemente que un objeto determinado pueda
ser transportado a otro punto de la organizacin, o incluso a otra organizacin totalmente
diferente que precise de l. Si el objeto ha sido bien construido, sus mtodos seguirn
funcionando en el nuevo entorno sin problemas. Esta cualidad hace que la OOP sea muy
apta para la reutilizacin de programas.
Organizacin de los objetos
En principio, los objetos forman siempre una organizacin jerrquica, en el sentido de que
ciertos objetos son superiores a otros de cierto modo.
Existen varios tipos de jerarquas: sern simples cuando su estructura pueda ser
representada por medio de un "rbol". En otros casos puede ser ms compleja.
En cualquier caso, sea la estructura simple o compleja, podrn distinguirse en ella tres
niveles de objetos.
La raz de la jerarqua. Se trata de un objeto nico y especial. Este se caracteriza por
estar en el nivel ms alto de la estructura y suele recibir un nombre muy genrico, que
indica su categora especial, como por ejemplo objeto madre, Raz o Entidad.
Los objetos intermedios. Son aquellos que descienden directamente de la raz y que a su
vez tienen descendientes. Representan conjuntos o clases de objetos, que pueden ser
muy generales o muy especializados, segn la aplicacin. Normalmente reciben nombres
genricos que denotan al conjunto de objetos que representan, por ejemplo, VENTANA,
CUENTA, FICHERO. En un conjunto reciben el nombre de clases o tipos si descienden
de otra clase o subclase.
Los objetos terminales. Son todos aquellos que descienden de una clase o subclase y no
tienen descendientes. Suelen llamarse casos particulares, instancias o tems porque
representan los elementos del conjunto representado por la clase o subclase a la que
pertenecen.
Veamos ahora en detalle los tres elementos mencionados en "Estructura de un Objeto".
1. Relaciones. Las relaciones entre objetos son, precisamente, los enlaces que permiten
a un objeto relacionarse con aquellos que forman parte de la misma organizacin. Las hay
de dos tipos fundamentales:

a. Relaciones jerrquicas. Son esenciales para la existencia misma de la


aplicacin porque la construyen. Son bidireccionales, es decir, un objeto es padre
10

Anlisis y Modelado de Sistemas de Informacin


Ingeniera Informtica Plan 2010

de otro cuando el primer objeto se encuentra situado inmediatamente encima del


segundo en la organizacin en la que ambos forman parte; asimismo, si un objeto
es padre de otro, el segundo es hijo del primero (en la fig. 2, B es padre de D,E y
F, es decir, D,E y F son hijos de B; en la fig. 3, los objetos B y C son padres de F,
que a su vez es hijo de ambos). Una organizacin jerrquica simple puede
definirse como aquella en la que un objeto puede tener un solo padre, mientras
que en una organizacin jerrquica compleja un hijo puede tener varios padres).
b. Relaciones semnticas. Se refieren a las relaciones que no tienen nada que
ver con la organizacin de la que forman parte los objetos que las establecen. Sus
propiedades y consecuencia solo dependen de los objetos en s mismos (de su
significado) y no de su posicin en la organizacin. Se puede ver mejor con un
ejemplo: supongamos que vamos a construir un diccionario informatizado que
permita al usuario obtener la definicin de una palabra cualquiera. Supongamos
que, en dicho diccionario, las palabras son objetos y que la organizacin jerrquica
es la que proviene de forma natural de la estructura de nuestros conocimientos
sobre el mundo. La raz del diccionario podra llamarse TEMAS. De ste trmino
genrico descendern tres grandes ramas de objetos llamadas VIDA, MUNDO y
HOMBRE.

El primero (vida) comprender las ciencias biolgicas: Biologa y Medicina.


El segundo (mundo), las ciencias de la naturaleza inerte: las Matemticas,
la Fsica, la Qumica y la Geologa.
El tercero (hombre) comprender las ciencias humanas: la Geografa, la
Historia, etc.

2. Propiedades. Todo objeto puede tener cierto nmero de propiedades, cada una
de las cuales tendr, a su vez, uno o varios valores. En OOP, las propiedades
corresponden a las clsicas "variables" de la programacin estructurada. Son, por
lo tanto, datos encapsulados dentro del objeto, junto con los mtodos (programas)
y las relaciones (punteros a otros objetos). Las propiedades de un objeto pueden
tener un valor nico o pueden contener un conjunto de valores ms o menos
estructurados (matrices, vectores, listas, etc.). Adems, los valores pueden ser de
cualquier tipo (numrico, alfabtico, etc.) si el sistema de programacin lo permite.
Pero existe una diferencia con las "variables", y es que las propiedades se pueden
heredar de unos objetos a otros. En consecuencia, un objeto puede tener una
propiedad de maneras diferentes:

Propiedades propias. Estn formadas dentro de la cpsula del objeto.


Propiedades heredadas. Estn definidas en un objeto diferente, antepasado
de ste (padre, "abuelo", etc.). A veces estas propiedades se llaman

11

Anlisis y Modelado de Sistemas de Informacin


Ingeniera Informtica Plan 2010

propiedad miembro porque el objeto las posee por el mero hecho de ser
miembro de una clase.
3. Mtodos. Una operacin que realiza acceso a los datos. Podemos definir
mtodo como un programa procedimental o procedural escrito en cualquier
lenguaje, que est asociado a un objeto determinado y cuya ejecucin slo puede
desencadenarse a travs de un mensaje recibido por ste o por sus
descendientes.
Son sinnimos de 'mtodo' todos aquellos trminos que se han aplicado
tradicionalmente a los programas, como procedimiento, funcin, rutina, etc. Sin
embargo, es conveniente utilizar el trmino 'mtodo' para que se distingan
claramente las propiedades especiales que adquiere un programa en el entorno
OOP, que afectan fundamentalmente a la forma de invocarlo (nicamente a travs
de un mensaje) y a su campo de accin, limitado a un objeto y a sus
descendientes, aunque posiblemente no a todos.
Si los mtodos son programas, se deduce que podran tener argumentos, o
parmetros. Puesto que los mtodos pueden heredarse de unos objetos a otros,
un objeto puede disponer de un mtodo de dos maneras diferentes:

Mtodos propios. Estn incluidos dentro de la cpsula del objeto.


Mtodos heredados. Estn definidos en un objeto diferente, antepasado de
ste (padre, "abuelo", etc.). A veces estos mtodos se llaman mtodos
miembro porque el objeto los posee por el mero hecho de ser miembro de una
clase.

Polimorfsmo
Una de las caractersticas fundamentales de la OOP es el polimorfsmo, que no es
otra cosa que la posibilidad de construir varios mtodos con el mismo nombre,
pero con relacin a la clase a la que pertenece cada uno, con comportamientos
diferentes. Esto conlleva la habilidad de enviar un mismo mensaje a objetos de
clases diferentes. Estos objetos recibiran el mismo mensaje global pero
responderan a l de formas diferentes; por ejemplo, un mensaje "+" a un objeto
ENTERO significara suma, mientras que para un objeto STRING significara
concatenacin ("pegar" strings uno seguido al otro)
Beneficios que se obtienen del desarrollo con OOP
Da a da los costos del Hardware decrecen. As surgen nuevas reas de
aplicacin cotidianamente: procesamiento de imgenes y sonido, bases de datos
12

Anlisis y Modelado de Sistemas de Informacin


Ingeniera Informtica Plan 2010

multimediales, automatizacin de oficinas, ambientes de ingeniera de software,


etc. An en las aplicaciones tradicionales encontramos que definir interfaces
hombre-mquina "a-la-Windows" suele ser bastante conveniente.
Lamentablemente, los costos de produccin de software siguen aumentando; el
mantenimiento y la modificacin de sistemas complejos suele ser una tarea
trabajosa; cada aplicacin, (aunque tenga aspectos similares a otra) suele
encararse como un proyecto nuevo, etc.
Todos estos problemas an no han sido solucionados en forma completa. Pero
como los objetos son portables (tericamente) mientras que la herencia permite la
reusabilidad del cdigo orientado a objetos, es ms sencillo modificar cdigo
existente porque los objetos no interaccionan excepto a travs de mensajes; en
consecuencia un cambio en la codificacin de un objeto no afectar la operacin
con otro objeto siempre que los mtodos respectivos permanezcan intactos. La
introduccin de tecnologa de objetos como una herramienta conceptual para
analizar, disear e implementar aplicaciones permite obtener aplicaciones ms
modificables, fcilmente extendibles y a partir de componentes reusables. Esta
reusabilidad del cdigo disminuye el tiempo que se utiliza en el desarrollo y hace
que el desarrollo del software sea ms intuitivo porque la gente piensa
naturalmente en trminos de objetos ms que en trminos de algoritmos de
software.
Problemas derivados de la utilizacin de OOP en la actualidad
Un sistema orientado a objetos, por lo visto, puede parecer un paraso virtual. El
problema sin embargo surge en la implementacin de tal sistema. Muchas
compaas oyen acerca de los beneficios de un sistema orientado a objetos e
invierten gran cantidad de recursos luego comienzan a darse cuenta que han
impuesto una nueva cultura que es ajena a los programadores actuales.
Especficamente los siguientes temas suelen aparecer repetidamente:
Curvas de aprendizaje largas. Un sistema orientado a objetos ve al mundo en
una forma nica. Involucra la conceptualizacin de todos los elementos de un
programa, desde subsistemas a los datos, en la forma de objetos. Toda la
comunicacin entre los objetos debe realizarse en la forma de mensajes. Esta no
es la forma en que estn escritos los programas orientados a objetos actualmente;
al hacer la transicin a un sistema orientado a objetos la mayora de los
programadores deben capacitarse nuevamente antes de poder usarlo.
Dependencia del lenguaje. A pesar de la portabilidad conceptual de los objetos
en un sistema orientado a objetos, en la prctica existen muchas dependencias.
Muchos lenguajes orientados a objetos estn compitiendo actualmente para
13

Anlisis y Modelado de Sistemas de Informacin


Ingeniera Informtica Plan 2010

dominar el mercado. Cambiar el lenguaje de implementacin de un sistema


orientado a objetos no es una tarea sencilla; por ejemplo C++ soporta el concepto
de herencia mltiple mientras que SmallTalk no lo soporta; en consecuencia la
eleccin de un lenguaje tiene ramificaciones de diseo muy importantes.
Determinacin de las clases. Una clase es un molde que se utiliza para crear
nuevos objetos. En consecuencia es importante crear el conjunto de clases
adecuado para un proyecto. Desafortunadamente la definicin de las clases es
ms un arte que una ciencia. Si bien hay muchas jerarquas de clase predefinidas
usualmente se deben crear clases especficas para la aplicacin que se est
desarrollando. Luego, en 6 meses 1 ao se da cuenta que las clases que se
establecieron no son posibles; en ese caso ser necesario reestructurar la
jerarqua de clases devastando totalmente la planificacin original.
Performance. En un sistema donde todo es un objeto y toda interaccin es a
travs de mensajes, el trfico de mensajes afecta la performance. A medida que la
tecnologa avanza y la velocidad de micro procesamiento, potencia y tamao de la
memoria aumentan, la situacin mejorar; pero en la situacin actual, un diseo
de una aplicacin orientada a objetos que no tiene en cuenta la performance no
ser viable comercialmente.
Idealmente, habra una forma de atacar estos problemas eficientemente al mismo
tiempo que se obtienen los beneficios del desarrollo de una estrategia orientada a
objetos. Debera existir una metodologa fcil de aprender e independiente del
lenguaje, y fcil de reestructurar que no drene la performance del sistema.

14

Você também pode gostar