Anda di halaman 1dari 9

Fundamentos de la Programacin Orientada a Objetos (FPOO)

Por: Felipe Ignacio Gmez Benavides


Ingeniero en Informtica

Una pequea introduccin para empezar a familiarizarnos con los conceptos, Qu es la


programacin orientada a objetos? Segn Wikipedia es un paradigma de programacin que usa
objetos y sus interacciones, para disear aplicaciones y programas informticos. Pero por qu es
importante. Porque nos permite escribir lneas de cdigo menos propensas a errores adems de
poder reutilizar el mismo para nuestra propia conveniencia.
Fundamentos de la POO:
La programacin orientada a objetos tiene como conceptos fundamentales los conceptos de objeto
y clase.
Un objeto es un ente que posee sus caractersticas propias (propiedades) y un conjunto de
acciones que es capaz de realizar (mtodos).
Una clase es un ente abstracto que permite declarar las propiedades y los mtodos de objetos
similares.
Un lenguaje de programacin orientado a objetos debe permitir al programador realizar definiciones
de clases, y construir objetos a partir de esas clases.
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.
Esta manera de representar los problemas nuestros problemas cotidianos tiene caractersticas
propias las cuales detallo a continuacin:
Encapsulacin
Herencia
Polimorfismo
Encapsulacin: se refiera a la capacidad de unir los datos y para poder manipularlos, estos no
necesariamente estn a la vista de todo el mundo. Bsicamente lo que se hace es ocultar cierta
parte de la informacin para exponer solamente lo ms importante o con lo que el usuario
interactuara por ejemplo, cuando yo prendo la tele lo que veo es la pantalla ya sea ver una pelcula,
jugar algn juego de video o simplemente ver tu programa de televisin favorito, en este caso a mi
como usuario no me interesa ver como hace la televisin para mostrarme las imgenes lo que a m
me importa es que realice ese procedimiento, la TV tiene una especie de encapsulamiento ya que

muestra solo lo realmente importante y no como lo realiza.


Herencia: se refiere a la capacidad de crear nuevas clases que estn basadas en otras de manera
que la nueva herede todas o algunas caractersticas de la clase que ha heredado, pudiendo incluso
cambiar el comportamiento de algunas de caractersticas propias de la clase base, por ejemplo, la
clase mamfero seria nuestra clase base, de el podemos desprender dos sub-clases que podran
ser gato y perro, ambos heredan caractersticas propias tales como patas cola garras, etc. sin
embargo, no son el mismo tipo y esas son las caractersticas que pueden variar en cada tipo de
representacin que se haga.
Polimorfismo: es la capacidad de implementar de forma peculiar algunas de las caractersticas
que tienen las clases, de forma que cuando necesitemos usarlas no nos preocupe la
implementacin interna que posean, lo que realmente nos interesa o nos debe importar es que
podemos usar esas caractersticas, por ejemplo, tenemos clase Animal de ella desprendo las
clases mamferos y aves. Yo puedo darle una instruccin a ambas que sea mover, es el mismo
mensaje para ambas, sin embargo, lo harn de igual manera? A eso se refiere el polimorfismo a
ocultar el estado de los objetos.
Pero... Qu son los objetos?
Un Objeto es una entidad de la vida real, podemos mirar a nuestro alrededor y darnos cuenta que
muchos de los lugares que nos parecen cotidianos pueden ser objeto de anlisis y en los cuales
podemos determinar entidades clases atributos y ver sus relaciones. Para aclarar ms el punto
puedo decir que los objetos poseen estados, comportamientos e identidades.
Clases
Una clase es una definicin abstracta de un objeto, define la estructura y el comportamiento
compartidos por los objetos. Sirven como modelos para la creacin de objetos.
De cierta forma, las clases se pueden ver como plantillas, moldes o esquemas de un conjunto de
entidades de la cual se crearan instancias (objetos)
Mtodos
Los mtodos nos indican el comportamiento o estado que un objeto tiene para realizar y el conjunto
de mtodos nos indican la accin que va a realizar como por ejemplo el objeto baln tiene distintas
acciones como rodar, moverse, botar.
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 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.

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 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.

Anda mungkin juga menyukai