Anda di halaman 1dari 16

Programacin Orientada

a Objetos
ndice
1. Tecnologa orientada a objetos
1. Una Perspectiva Histrica
2. Cules son las ventajas de un lenguaje orientado a objetos?
2. El modelo orientado a objetos
1. Objetos
2. Clases
3. Herencia
4. Envo de mensajes
3. Caractersticas asociadas a la POO
1. Abstraccin
2. Encapsulamiento
3. Ocultamiento
4. Lenguajes de programacin orientado a objetos
5. Anlisis y diseo orientado a objetos
6. Resumen

Tecnologa orientada a objetos


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


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

Los lenguajes basados en esta forma de programacin ofrecan ventajas al principio, pero el problema
ocurre cuando los sistemas se vuelven complejos. Estos programas escritos al estilo espaguetti 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 espaguetti 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
pequeas unidades lgicas de cdigo se les llama objetos. Los objetos son unidades independientes
que se comunican entre ellos mediante mensajes. Veamos con mayor detenimiento este tema.

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


Para entender este modelo vamos a revisar 4 conceptos bsicos:
Objetos
Clases
Herencia
Envo de mensajes

1. Objetos
Entender que es un objeto es la clave para entender cualquier lenguaje orientado a objetos.
Existen muchas definiciones que se le ha dado al Objeto. Primero empecemos entendiendo que es un
objeto del mundo real. Un objeto del mundo real es cualquier cosa que vemos a nuestro alrededor.
Digamos que para leer este artculo lo hacemos a travs del monitor y una computadora, ambos son
objetos, al igual que nuestro telfono celular, un rbol o un automvil.
Analicemos un poco ms a un objeto del mundo real, como la computadora. No necesitamos ser
expertos en hardware para saber que una computadora est compuesta internamente por varios
componentes: la tarjeta madre, el chip del procesador, un disco duro, una tarjeta de video, y otras
partes ms. El trabajo en conjunto de todos estos componentes hace operar a una computadora.
Internamente, cada uno de estos componentes puede ser sumamente complicado y puede ser
fabricado por diversas compaas con diversos mtodos de diseo. Pero nosotros no necesitamos
saber cmo trabajan cada uno de estos componentes, como saber que hace cada uno de los chips de
la tarjeta madre, o cmo funciona internamente el procesador. Cada componente es una unidad
autnoma, y todo lo que necesitamos saber de adentro es cmo interactan entre s los componentes,
saber por ejemplo si el procesador y las memorias son compatibles con la tarjeta madre, o conocer
donde se coloca la tarjeta de video. Cuando conocemos como interaccionan los componentes entre s,
podremos armar fcilmente una computadora.

Que tiene que ver esto con la programacin? La programacin orientada a objetos trabaja de esta
manera. Todo el programa est construido en base a diferentes componentes (Objetos), cada uno
tiene un rol especfico en el programa y todos los componentes pueden comunicarse entre ellos de
formas predefinidas.
Todo objeto del mundo real tiene 2 componentes: caractersticas y comportamiento.
Por ejemplo, los automviles tienen caractersticas (marca, modelo, color, velocidad mxima, etc.) y
comportamiento (frenar, acelerar, retroceder, llenar combustible, cambiar llantas, etc.).
Los Objetos de Software, al igual que los objetos del mundo real, tambin tienen caractersticas y
comportamientos. Un objeto de software mantiene sus caractersticas en una o ms "variables", e
implementa su comportamiento con "mtodos". Un mtodo es una funcin o subrutina asociada a un
objeto.

Para redondear estas ideas, imaginemos que tenemos estacionado en nuestra cochera un Ford Focus
color azul que corre hasta 260 km/h. Si pasamos ese objeto del mundo real al mundo del software,
tendremos un objeto Automvil con sus caractersticas predeterminadas:
Marca
Modelo
Color
Velocidad Mxima = 260 km/h

=
=
=

Ford
Focus
Azul

Cuando a las caractersticas del objeto le ponemos valores decimos que el objeto tiene estados. Las
variables almacenan los estados de un objeto en un determinado momento.
Definicin terica: Un objeto es una unidad de cdigo compuesto de variables y mtodos relacionados.
2. Las Clases
En el mundo real, normalmente tenemos muchos objetos del mismo tipo. Por ejemplo, nuestro
telfono celular es slo uno de los miles que hay en el mundo. Si hablamos en trminos de la
programacin orientada a objetos, podemos decir que nuestro objeto celular es una instancia de una
clase conocida como "celular". Los celulares tienen caractersticas (marca, modelo, sistema operativo,
pantalla, teclado, etc.) y comportamientos (hacer y recibir llamadas, enviar mensajes multimedia,
transmisin de datos, etc.).

Cuando se fabrican los celulares, los fabricantes aprovechan el hecho de que los celulares comparten
esas caractersticas comunes y construyen modelos o plantillas comunes, para que a partir de esas se
puedan crear muchos equipos celulares del mismo modelo. A ese modelo o plantilla le llamamos
CLASE, y a los equipos que sacamos a partir de ella la llamamos OBJETOS.

Esto mismo se aplica a los objetos de software, se puede tener muchos objetos del mismo tipo y
mismas caractersticas.
Definicin terica: La clase es un modelo o prototipo que define las variables y mtodos comunes a
todos los objetos de cierta clase. Tambin se puede decir que una clase es una plantilla genrica para
un conjunto de objetos de similares caractersticas.
Por otro lado, una instancia de una clase es otra forma de llamar a un objeto. En realidad no existe
diferencia entre un objeto y una instancia. Slo que el objeto es un trmino ms general, pero los
objetos y las instancias son ambas representacin de una clase.
Definicin Terica: Una instancia es un objeto de una clase en particular.
3. Herencia
La herencia es uno de los conceptos ms cruciales en la POO. La herencia bsicamente consiste en
que una clase puede heredar sus variables y mtodos a varias subclases (la clase que hereda es
llamada superclase o clase padre). Esto significa que una subclase, aparte de los atributos y mtodos
propios, tiene incorporados los atributos y mtodos heredados de la superclase. De esta manera se
crea una jerarqua de herencia.
Por ejemplo, imaginemos que estamos haciendo el anlisis de un Sistema para una tienda que vende
y repara equipos celulares.

En el grfico vemos 2 Clases ms que posiblemente necesitemos para crear nuestro Sistema. Esas 2
Clases nuevas se construirn a partir de la Clase Celular existente. De esa forma utilizamos el
comportamiento de la SuperClase.
En general, podemos tener una gran jerarqua de Clases tal y como vemos en el siguiente grfico:

4. Envo de Mensajes
Un objeto es intil si est aislado. El medio empleado para que un objeto interacte con otro son los
mensajes. Hablando en trminos un poco ms tcnicos, los mensajes son invocaciones a los mtodos
de los objetos.

Caractersticas asociadas al POO


Abstraccin
La abstraccin consiste en captar las caractersticas esenciales de un objeto, as como su
comportamiento. Por ejemplo, volvamos al ejemplo de los automviles, Qu caractersticas podemos
abstraer de los automviles? O lo que es lo mismo Qu caractersticas semejantes tienen todos los
automviles? Todos tendrn una marca, un modelo, nmero de chasis, peso, llantas, puertas,
ventanas, etc. Y en cuanto a su comportamiento todos los automviles podrn acelerar, frenar,
retroceder, etc.

En los lenguajes de programacin orientada a objetos, el concepto de Clase es la representacin y el


mecanismo por el cual se gestionan las abstracciones.
Por ejemplo, en Java tenemos:
public
//
//
}

class

Automovil

{
variables
mtodos

Encapsulamiento
El encapsulamiento consiste en unir en la Clase las caractersticas y comportamientos, esto es, las
variables y mtodos. Es tener todo esto es una sola entidad. En los lenguajes estructurados esto era
imposible. Es evidente que el encapsulamiento se logra gracias a la abstraccin y el ocultamiento que
veremos a continuacin.
La utilidad del encapsulamiento va por la facilidad para manejar la complejidad, ya que tendremos a
las Clases como cajas negras donde slo se conoce el comportamiento pero no los detalles internos, y
esto es conveniente porque nos interesar ser conocer qu hace la Clase pero no ser necesario
saber cmo lo hace.
Ocultamiento
Es la capacidad de ocultar los detalles internos del comportamiento de una Clase y exponer slo los
detalles que sean necesarios para el resto del sistema.
El ocultamiento permite 2 cosas: restringir y controlar el uso de la Clase. Restringir porque habr
cierto comportamiento privado de la Clase que no podr ser accedido por otras Clases. Y controlar
porque daremos ciertos mecanismos para modificar el estado de nuestra Clase y es en estos
mecanismos dnde se validarn que algunas condiciones se cumplan. En Java el ocultamiento se logra
usando las palabras reservadas: public, private y protected delante de las variables y mtodos.

Lenguajes de Programacin Orientado a Objetos


En 1985, E. Stroustrup extendi el lenguaje de programacin C a C++, es decir C con conceptos de
clases y objetos, tambin por esas fechas se creo desde sus bases el lenguaje EIFFEL.
En 1995 apareci el ms reciente lenguaje OO, Java desarrollado por SUN, que hereda conceptos de
C++.
El lenguaje de desarrollo ms extendido para aplicaciones Web, el PHP 5, trae todas las caractersticas
necesarias para desarrollar software orientado a objetos.
Adems de otros lenguajes que fueron evolucionando, como el Pascal a Delphi.
Finalmente tambin otros lenguajes script como el ActionScript que si bien no es totalmente orientado
a objetos pero s posee las caractersticas.

Anlisis y diseo Orientado a Objetos


Para el desarrollo de software orientado a objetos no basta usar un lenguaje orientado a objetos.
Tambin se necesitar realizar un anlisis y diseo orientado a objetos.

El modelamiento visual es la clave para realizar el anlisis OO. Desde los inicios del desarrollo de
software OO han existido diferentes metodologas para hacer esto del modelamiento, pero sin lugar a
duda, el Lenguaje de Modelamiento Unificado (UML) puso fin a la guerra de metodologas.
Segn los mismos diseadores del lenguaje UML, ste tiene como fin modelar cualquier tipo de
sistemas (no solamente de software) usando los conceptos de la orientacin a objetos. Y adems, este
lenguaje debe ser entendible para los humanos y mquinas.
Actualmente en la industria del desarrollo de software tenemos al UML como un estndar para el
modelamiento de sistemas OO. Fue la empresa Racional que cre estas definiciones y especificaciones
del estndar UML, y lo abri al mercado. La misma empresa cre uno de los programas ms conocidos
hoy en da para este fin; el Racional Rose, pero tambin existen otros programas como el Poseidon
que trae licencias del tipo community edition que permiten su uso libremente.
El UML consta de todos los elementos y diagramas que permiten modelar los sistemas en base al
paradigma orientado a objetos. Los modelos orientados a objetos cuando se construyen en forma
correcta, son fciles de comunicar, cambiar, expandir, validar y verificar. Este modelamiento en UML es
flexible al cambio y permite crear componentes plenamente reutilizables.

Resumen
Por qu seguimos buscando nuevas tcnicas de desarrollo? Por el aumento de la complejidad
de los sistemas.
En un programa orientado a objetos tendremos a un conjunto de objetos colaborando entre
ellos.
La orientacin a objetos es paradigma de que est de moda para el desarrollo de software.
Un objeto es una abstraccin conceptual del mundo real que se puede traducir a un lenguaje
de programacin orientado a objetos.
Un objeto del mundo real tiene caractersticas y comportamientos, y de la misma manera, un
objeto del mundo del software tiene variables y mtodos.
Una Clase es una plantilla que define las variables y mtodos a ser incluidas en un tipo de
objeto especfico.
Los objetos tambin son llamados instancias de la Clase. Los objetos slo almacenan su
estado. De dice que un objeto tiene estado cuando tiene valores en sus variables.
Los objetos se comunican entre ellos usando los mensajes. Un mensaje es la invocacin de un
mtodo del objeto.
La orientacin a objetos requiere de una metodologa que integre el proceso de desarrollo y
un lenguaje de modelamiento con herramientas y tcnicas adecuadas.

Fundamentos de la POO
Personas que lo han encontrado til: 42 de 63 - Valorar este tema
Por Armando Canchala

Contenido
Fundamentos
Modularidad
Reutilizacin
Visin POO
Lenguajes basados en clases
Modelo de embebimiento:
Modelo de Delegacin:
El mtodo lookup:
Subclases

Fundamentos
La POO es una tcnica para desarrollar soluciones computacionales utilizando
componentes de software (objetos de software).
Objeto: Componente o cdigo de software que contiene en s mismo tanto sus
caractersticas (campos) como sus comportamientos (mtodos); se accede a travs de
su interfaz o signatura.
Campo: Es una caracterstica de un objeto, que ayuda a definir su estructura y permite
diferenciarlo de otros objetos. Se define con un identificador y un tipo, el cual indica los
valores que puede almacenar. El conjunto de valores de los campos definen el estado
del objeto.
Mtodo: Es la implementacin de un algoritmo que representa una operacin o
funcin que un objeto realiza. El conjunto de los mtodos de un objeto determinan el
comportamiento del objeto.
La POO es un paradigma de la programacin de computadores; esto hace referencia al
conjunto de teoras, estndares, modelos y mtodos que permiten organizar el
conocimiento, proporcionando un medio bien definido para visualizar el dominio del
problema e implementar en un lenguaje de programacin la solucin a ese problema.
La POO se basa en el modelo objeto donde el elemento principal es el objeto, el cual es
una unidad que contiene todas sus caractersticas y comportamientos en s misma, lo
cual lo hace como un todo independiente pero que se interrelaciona con objetos de su
misma clase o de otras clase, como sucede en el mundo real.
Anterior al paradigma de objetos, est el paradigma algortmico o de procesos, el cual
se fundamenta en los procesos o funciones que se llevan a cabo en el mundo real
dentro del dominio del problema analizado. Se refiere a lo que entra, como lo maneja el
proceso, y lo que sale del proceso. La programacin tradicional la sustentan los
procesos, algoritmos, bloques de construccin modulares cuya abstraccin va de lo
general a lo particular, mientras que en la POO tiene como marco de referencia

conceptual el objeto, el cual pertenece a una clase que agrupa a todos compaeros con
las mismas caractersticas y un comportamiento similar.
Una ventaja de la POO frente al paradigma algortmico es la facilidad que brinda a
travs de sus herramientas, de concebir, analizar, modelar, disear e implementar el
mundo real de manera fiel a como se presenta en la realidad; el paso que hay desde la
concepcin y asimilacin del problema hasta la implementacin del mismo es un
proceso que se hace de manera casi natural. Esto porque el mundo est lleno de
objetos reales, los cuales se pueden representar como tales en una solucin
computarizada.
Principio de la pgina

Modularidad
Proceso de crear partes de un todo que se integran perfectamente entre s para que
funcionen por un objetivo general, y a las cuales se les pueden agregar ms
componentes que se acoplen perfectamente al todo, o extraerle componentes sin
afectar su funcionamiento. En el caso que se requiera actualizar un mdulo, no hay
necesidad de hacer cambios en otras partes del todo. Un ejemplo clsico es un
conjunto de mdulos que, al integrarlos conforman un armario, el cual puede agregarle
ms funcionalidad si se le agregan ms mdulos, o al contrario. Tambin se puede
cambiar su finalidad si se acomodan esos mdulos para darle otro objetivo: volverlo
una mesa.
Esto ayuda a la descomposicin de problemas en subproblemas, es decir, a la solucin
de problemas por composicin de soluciones a subproblemas.
Principio de la pgina

Reutilizacin
Capacidad de usar un mismo cdigo para varias implementaciones o necesidades
(desarrollos); para esto se debe tener en cuenta:

Polimorfismo: Esta propiedad indica que un elemento puede tomar distintas


formas. Podemos definirlo como el uso de varios tipos en un mismo componente
o funcin. Por ejemplo, una funcin que sume dos operandos, la cual maneja, o
dos nmeros o dos cadenas, para retornar un total de una suma o de una
concatenacin. Tambin se denomina subsumption (ms delante de detalla este
concepto).

Genericidad: Usar algoritmos genricos para resolver varias situaciones, como


acceso a varios motores de bases de datos de forma transparente, como el
PEAR de PHP. Consiste en parametrizar una funcin con varios tipos de datos
donde ella misma en su cuerpo decida cmo operar, como la ut0110.4gl.

Operaciones Relacionadas: Todas las operaciones de un mdulo deben estar


dentro de l, como parte de su cuerpo ...

Caja negra: Saber qu entra y qu sale (la interfaz del mdulo: signatura) y no
cmo lo hace (su implementacin), como la co0020.4gl.

Sobrecarga: Modalidad de herencia que permite usar el mismo mdulo para


diferentes implementaciones de una operacin, es decir, usando diferente
signatura: una funcin que pueda recibir un parmetro, o dos, o ninguno; pero
opera correctamente con cualquiera de ellos con que se lo invoque, est
sobrecargada; por ejemplo, la funcin saludar(), cuando va sin parmetros
retorna la cadena Hola, cuando se invoque con un nombre,
(saludar(var_nombre)), retorna Hola $var_nombre, y as sucesivamente. Esto
debe manejarse por cdigo dentro de la funcin.

Principio de la pgina

Visin POO
La visin OO se basa en la siguiente analoga:
1. Construccin de un modelo mecnico de un sistema fsico a partir de
objetos concretos. Los objetos aqu seran, en un modelo de una pista de
carreras: los autos, las carreteras, las llegadas, las graderas, espectadores, etc.
En un modelo de un sistema planetario, tenemos los objetos concretos: los
planetas, los rbitas, el sol, la energa, etc.
2. Construccin de un modelo algortmico de un sistema fsico a partir de
objetos de software. Los objetos aqu seran: rutinas de conexin a
DB, shorts, validacin de acceso, despliegue, impresiones, etc.
Este concepto de POO se puede ver como una intuitiva correspondencia entre
un software de simulacin de un sistema fsico y el sistema fsico en s (o su modelo
mecnico).
Modelo algortmico: Anlisis, diseo e implementacin de un software usando
objetos de software.
Objetos de software : Componentes que integran o conforman el modelo; pueden
ser unidades de cdigo para resolver situaciones especficas, shorts, uso de DB, prints,
funciones, vectores, etc.
Modelo mecnico: Anlisis, diseo e implementacin de prototipo a escala de un
sistema fsico usando objetos concretos.
Objetos concretos: Partes fsicas del modelo mecnico, ojo del modelo, no del
sistema real; o sea, los objetos planeta no son los planetas reales.

Modelo: Es una vista de un sistema del mundo real, es decir, una abstraccin de
dicho sistema considerando un cierto propsito. As, el modelo describe
completamente aquellos aspectos del sistema que son relevantes al propsito del
modelo y a un apropiado nivel de detalle.
Diagrama: Representacin grfica de un modelo.
Abstraccin: Capacidad del ser humano para entender una situacin excluyendo
detalles y slo vindola a alto nivel. El hombre ha comprendido el mundo con la
abstraccin. Esta propiedad permite distinguir a un objeto de los dems, observando
sus caractersticas y comportamientos, pensando en qu es y no en cmo se codificara
en un lenguaje. Con la abstraccin se destaca lo importante y se ignora lo irrelevante,
o sea, hay ocultamiento de informacin. Hay abstraccin de datos al declarar una
variable tipo integer, ya que internamente el compilador lo implementa en 2 bytes, lo
cual es transparente al programador, o al declarar una variable date, el compilador
controla los das de los meses, acepta slo operaciones vlidas entre las fechas,
permitiendo al programador abstraerse de esos detalles. Estos tipos de datos
abstractos coleccionan valores y operaciones, los cuales se usan transparentemente
sin importar su implementacin: otro lo implementa y yo lo uso.
La reutilizacin es la principal caracterstica de la POO, la cual se logra mediante:

Encapsulacin de informacin: Ocultamiento de informacin, datos o


funciones especiales a los usuarios. En el caso de la programacin, el
encapsulamiento es lo que permite que tanto la estructura (campos) como el
comportamiento (mtodos) se encuentren dentro del mismo cuerpo de cdigo
de la clase con la que se crean los objetos. Dentro de la clase se deben agrupar
tanto la informacin o datos de los campos como las operaciones o mtodos o
funciones que operan sobre esta informacin.

Herencia: Propiedad que permite a los objetos ser construidos a partir de otros;
es recibir de un mdulo superior sus caractersticas, tales como atributos o
funciones (campos y mtodos o comportamientos), para usarlos en el mdulo
actual. Heredar es compartir atributos.

Sobreescritura ( override ): Posibilidad de heredar un mtodo de un mdulo


y cambiarle el comportamiento en el heredero, con la opcin de poder usar el
original, si se desea.

Mtodos unidos a los objetos: los mtodos de un objeto son inseparables y


siempre formarn parte de su cuerpo, como un todo.

Nocin de self : unicidad de los objetos; son nicos y no se repiten, aunque


sean de la misma clase. As como se puede definir varias variables del tipo INT
cada una de las cuales es nica, se puede crear o instanciar varios objetos de
una misma clase.

Principio de la pgina

Lenguajes basados en clases


Utilizan las clases como estructuras para la creacin de los objetos. Una clase se define
como la descripcin de los atributos (campos y mtodos) de los objetos. Con los
campos se define el estado del objeto en un momento dado, tales como color, tamao,
longitud, bsico, etc., y con los mtodos se define su comportamiento, tal como
abrirDB(), validarAcceso(), insertar(), actualizar(), eliminar(), listar(), frenar(),
arrancar(), etc. El proceso de crear un objeto significa crear su estructura (atributos; es
decir, campos + mtodos) en la memoria, donde guardar el contenido de sus campos
y el cdigo de sus mtodos. Ejemplo:
// Definicin de la clase cell:
Class cell is
var contents: Integer :=0;
method get(): Integer is;
return self.contents;
end;
method set(n:integer) is
self.contents:=n;
end;
end;
// Creacion de objetos tipo cell:
objCell1 = new cell;
objCell2 = new cell;

Esta creacin de objetos est determinada por dos modelos:


Principio de la pgina

Modelo de embebimiento:

Cuando cada objeto tiene un rea de memoria independiente para guardar


tanto sus campos como sus mtodos. Es muy eficiente en la bsqueda del
cdigo, pero consume muchos recursos en memoria.

Principio de la pgina

Modelo de Delegacin:

Cuando varios objetos de una misma clase comparten el cdigo de sus mtodos
(no sus campos), pues es el mismo para todos. Esto ahorra memoria, pero
puede traer otras situaciones, ya que un cambio en uno de los objetos, afecta a
todos sus congneres.

Principio de la pgina

El mtodo lookup:
Es un mtodo o funcin especial de los compiladores que se encarga de buscar en el
rbol de mtodos en memoria (suite de mtodos) cul es el correspondiente a ejecutar.
Este proceso se denomina dispatch (despacho), y puede definirse ya sea en el
momento de compilacin o en el de ejecucin, dependiendo de la informacin que se
tenga.
Principio de la pgina

Subclases
Es la descripcin de una clase basada en la estructura de otra clase, la cual se
denomina superclase. Se puede mirar como una extensin de la superclase, donde se
pueden tomar las caractersticas de la superclase, y adicionarle nuevas caractersticas.
Este concepto suele confundirse con el concepto de herencia, pero no siempre puede
decirse que una subclase es una herencia, ya que sta puede redefinir (override) todo
lo de su superclase, luego no heredara nada. En la herencia se reciben las definiciones
de la superclase y se usan conjuntamente con nuevas definiciones; heredar es
compartir atributos entre una clase y sus subclases; si no comparte, no hay herencia.
Ejemplo:
// Definicin de la subclase recell
SubClass reCell of Cell is
var backup:integer:=0;
override set (n:integer) is
self.backup:=self.contents;
super.set(n);
end;
method restore() is
Self.contents:=self.backup;
end;
end;
// Creacin de objetos tipo reCell:
objRecell1 new reCell;
objRecell2 new reCell;

Con self tenemos acceso a los atributos de la clase desde su interior; para acceder a
los atributos de la clase padre, se usa super. La subclase es un mecanismo para evitar
reescribir las definiciones de una clase que queremos usar en esa subclase. De acuerdo
a esto tenemos que una subclase es mayor (o igual) que la superclase, ya que la
subclase contiene todo lo que tenga su superclase y an ms. Por esto, se dice que una
subclase es una especializacin de la superclase; de forma anloga, una superclase es
una generalizacin de una subclase (ms pequeo es ms especfico, ms grande es
ms general).

Sea c una superclase y c una subclase suya, se cumple:


Si c <: c y o : c entonces o : c;
Esto se lee: Si "c prima" es subclase de "c" y "o" es un objeto de c prima, entonces
"o" tambin es un objeto de "c".
Esta ley tambin aplica para los tipos de datos convencionales o primitivos, ya que
como sabemos un real es ms que un entero, lo que significa que un entero puede
manejarse como real (pero al revs por que se truncaran los fracciones; habra
coercin):
Real <: integer, lo que indica que un int se puede incluir entre los reales, osea que los
reales son un subtipo de los integer ...
Con esto se concluye que una subclase es lo mismo que un subtipo, y cuando se
implementa un mtodo que puede procesar transparentemente un valor, el cual puede
ser real ointeger, se dice que tiene la propiedad de polimorfismo o subsumption. Eso se
logra por esa relacin de clase/subclase y tipo/subtipo, ya que de otra forma fallara,
pues el mtodo esperara un dato exactamente del tipo con que se defini trabajar. O
sea, que si yo soy del tipo A, y A es mayor que el tipo B, entonces yo tambin soy del
tipo B, as:
Si a : A y A <: B entonces a : B.
En el caso de nuestro ejemplo, de la superclase Cell y la subclase reCell, se puede decir
que un objeto de tipo reCell (obj1reCell) es del mismo tipo que un
objeto Cell (obj1Cell), por lo tanto puedo usar una funcin para cualquiera de los dos
objetos siempre que esta funcin acepte objetos del tipo reCell (donde cabr tambin
el tipo Cell) y no solamente del Cell (donde solo cabr el Cell).
Ejemplo:
myCell = new cell;
myReCell = reCell;
procedure f(x:Cell)
myCell = myReCell;
f(myReCell);

...
//Falla
//Falla

Las lneas 4y5 son prohibidas porque en la 4 se defini el argumento tipo Cell; si se le
define tipo ReCell, ya puedo llamar f envindole una Cell o una ReCell sin problema.
Esto es polimorfismo o subsumption por subtipos.
Por otro lado, si analizamos la clase y subclase definidas arriba, vemos que el
mtodo restore solo es accedido por los objetos ReCell, ms no por los objetos Cell,
quienes no lo ven; luego hay ocultamiento de informacin; as mismo el

mtodo get es comn a ambos, y el mtodo set tiene diferente comportamiento por
haber sido redefinido. En los lenguajes modernos existen modificadores tales
como private, public, protected, etc. para este manejo.

Anda mungkin juga menyukai