Sie sind auf Seite 1von 8

Conceptos Fundamentales de la POO (Programacin Orientada a Objetos) EL POO es una tcnica para desarrollar soluciones computacionales utilizando componentes

de software (objetos de software). Objeto: Componente o cdigo de software, el cual contiene en s mismo tanto sus caractersticas (campos) como sus comportamientos (mtodos), el cual se accede a travs de su interfaz o signatura. Campos: 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 le 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, esta 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 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.

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

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 como 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 que 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 parmetros o ninguno, pero opera correctamente con cualquiera de ellos con que se 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.

VISION POO

La visin OO se basa en la siguiente analoga:

1) Construccin de un modelo 2) Construccin de un modelo mecnico de un sistema fsico a partir algortmico de un sistema fsico a partir de objetos concretos. de objetos de software Los objetos aqu seran, en un modelo de Los objetos aqu seran, rutinas de una pista de carreras: los autos, las conexion a DB, shorts, validacin de carreteras, las llegadas, las graderas, acceso, despliegue, impresiones, etc. espectadores, etc. En un modelo de un sistema planetario, tenemos los objetos concretos: los planetas, los orbitas, el sol, energa, 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 solo 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 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 la declarar un 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 complilador controla los das de los meses, acepta solo 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 del la POO, la cual se logra con: Encapsulacin de Informacin: Ocultamiento de informacin, datos o funciones especiales a los usuarios. En el caso de la programacin, hace 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 se construidos a partir de otros objetos; es recibir de una modulo superior, las caractersticas de l, 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 harn parte de su cuerpo como un todo. Nocin de self: unicidad de los objetos; son nicos y no se repite, aunque sean de la misma clase. As como puedo definir varias variables del tipo INT, cada una de las cuales es nica, puedo crear o instanciar varios objetos de una misma clase.

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, como color, tamao, longitud, bsico, etc, y con los mtodos se define su comportamiento, 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:

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.

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.

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

SubClases: 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 una subclase 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 al 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 tengo acceso a los atributos de la clase desde su interior; para acceder a los atributos de la clase padre se usa super.

Sumsubtion.

La subclase es un mecanismo para evitar re-escribir las definiciones de una clase que queremos usarla 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, mas grande es ms general).

Sea

c una superclase y c una subclase suya se cumple que:

Si c

<: c y

o : c entonces

o:c;

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, ose que los real 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 del 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 tambien el tipo Cell) y no solamente del Cell (donde solo cabr el Cell). Ejemplo:

1) 2) 3) 4) 5)

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.

De 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 como private, public, protected, etc para este manejo.

Das könnte Ihnen auch gefallen