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 puede representar como tales en una
solucin computarizada. Las clases se relacionan entre s, de varias maneras diferentes, en este
apartado se destacan, la asociacin, agregacin, composicin y especializacin / generalizacin.
Diagramas de casos de uso: Un Diagrama de Casos de Uso muestra la relacin entre los
actores y los casos de uso del sistema
Diagrama de Secuencia: Un diagrama de Secuencia muestra una interaccin ordenada segn
la secuencia temporal de eventos
Diagrama de Colaboracin: Un Diagrama de Colaboracin muestra una interaccin organizada
basndose en los objetos que toman parte en la interaccin y los enlaces entre los mismos (en
cuanto a la interaccin se refiere).
Diagramas de Estado: Un Diagrama de Estados muestra la secuencia de estados por los que
pasa bien un caso de uso, bien un objeto a lo largo de su vida, o bien todo el sistema.
Diagramas de clase: Un diagrama de clases sirve para visualizar las relaciones entre las clases
que involucran el sistema, las cuales pueden ser asociativas, de herencia, de uso y de
consentimiento.
Concluyendo el tema cabe la pregunta pero por qu POO?, porque es ms parecido al mundo
real ya que nos permite realizar representaciones ms complejas excelentes para negocios de
clientes o por qu no, para nuestros propios negocios adems de que dos grandes plataformas ya
han adoptado este paradigma como son Java y .NET
Cuando se escribe un programa en un lenguaje orientado a objetos, definimos una plantilla o clase que
describe las caractersiticas y el comportamiento de un conjunto de objetos similares. La clase automvil
describe las caractersticas comunes de todos los automviles: sus atributos y su comportamiento. Los
atributos o propiedades se refieren a la marca o fabricante, el color, las dimensiones, si tienen dos, tres, cuatro
o ms puertas, la potencia, si utiliza como combustible la gasolina o gasoil, etc. El comportamiento se refiere
a la posibilidad de desplazarse por una carretera, frenar, acelerar, cambiar de marcha, girar, etc.
Luego, tenemos automviles concretos, por ejemplo el automvil propio de una determinada marca, color,
potencia, etc, el automvil del vecino de otra marca, de otro color, etc, , el automvil de un amigo, etc.
Una clase es por tanto una pantilla implementada en software que describe un conjunto de objetos con
atributos y comportamiento similares.
Una instancia u objeto de una clase es una representacin concreta y especfica de una clase y que reside en la
memoria del ordenador.
Atributos
Los atributos son las caractersiticas individuales que diferencian un objeto de otro y determinan su
apariencia, estado u otras cualidades. Los atributos se guardan en variables denominadas de instancia, y cada
objeto particular puede tener valores distintos para estas variables.
Las variables de instancia tambin denominados miembros dato, son declaradas en la clase pero sus valores
son fijados y cambiados en el objeto.
Adems de las variables de instancia hay variables de clase, las cuales se aplican a la clase y a todas sus
instancias. Por ejemplo, el nmero de ruedas de un automvil es el mismo cuatro, para todos los automviles.
Fundamentos
La POO es una tcnica para desarrollar soluciones computacionales utilizando
componentes de software (objetos desoftware).
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.
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 losinteger ...
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 o integer, se dice que tiene la propiedad de polimorfismo osubsumption. 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;
//Falla
f(myReCell);
//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.