Sunteți pe pagina 1din 5

19/2/2014 Fundamentos de la POO

http://msdn.microsoft.com/es-es/library/bb972232.aspx 1/5
Fundamentos de la POO
Personas que lo han encontrado til: 34 de 50
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
19/2/2014 Fundamentos de la POO
http://msdn.microsoft.com/es-es/library/bb972232.aspx 2/5
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.
19/2/2014 Fundamentos de la POO
http://msdn.microsoft.com/es-es/library/bb972232.aspx 3/5
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;
19/2/2014 Fundamentos de la POO
http://msdn.microsoft.com/es-es/library/bb972232.aspx 4/5
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).
19/2/2014 Fundamentos de la POO
http://msdn.microsoft.com/es-es/library/bb972232.aspx 5/5
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 o integer, 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; //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.
Luis Armando Canchala Fernndez es Tecnlogo en Sistemas de Informacin de la Universidad del
Valle de Cali-Colombia y est diplomado en POO en la misma Universidad. Trabaja desde hace 12
aos como Analista de Sistemas responsable de las reas de fbrica, maquinaria y financiera, sobre
plataforma Informix, Cobol, Genexus y Visual Basic. En los ltimos aos ha estado capacitndose
sobre tecnologa .net. Ha obtenido la 4a. Estrella del Programa Desarrollador Cinco Estrellas de
Microsoft.
Principio de la pgina
2014 Microsoft. Reservados todos los derechos.

S-ar putea să vă placă și