Вы находитесь на странице: 1из 8

Abstraccin.

La abstraccin es una de las principales herramientas con que combatimos la complejidad.


Una abstraccin denota las caractersticas esenciales de un objeto y proporciona lmites
conceptuales
definidos
respecto
a
la
perspectiva
del
observador.
En el modelo de objetos se persigue construir abstracciones que imiten directamente el
vocabulario de un determinado dominio de problema, por lo que el problema central del diseo
orientado a objetos es tomar la decisin acerca del conjunto adecuado de abstracciones para ese
dominio.
Comportamiento.
Los objetos no solamente poseen atributos, sino que tambin exhiben comportamientos que
manifiestan al interactuar con otros objetos en un esquema cliente/servidor, donde un cliente es
cualquier objeto que utiliza los recursos de otro objeto denominado servidor.
Abstraccin es un trmino del mundo real que podemos aplicar tal cual lo entendemos en el
mundo de la Programacin Orientada a Objetos. Algo abstracto es algo que est en el universo de
las ideas, los pensamientos, pero que no se puede concretar en algo material, que se pueda tocar.
Pues bien, una clase abstracta es aquella sobre la que no podemos crear especmenes concretos,
en la jerga de POO es aquella sobre la que no podemos instanciar objetos. Ahora bien, cul es el
motivo de la existencia de clases abstractas? o dicho de otra manera, por qu voy a necesitar
alguna vez declarar una clase como abstracta?, en qu casos debemos aplicarlas?

Encapsulamiento :

Significa reunir a todos los elementos que pueden considerarse

pertenecientes a una misma entidad, al mismo nivel de abstraccin. Esto permite aumentar
la cohesin de los componentes del sistema. Algunos autores confunden este concepto con el
principio de ocultacin, principalmente porque se suelen emplear conjuntamente.
La encapsulacin: Se refiere a la capacidad de agrupar y condensar en un entorno con lmites biendefinidos distintos elementos. Cuando hablemos de encapsulacin en general siempre nos
referiremos, pues, a encapsulacin abstracta. De manera informal, primero generalizamos (la
abstraccin) y luego decimos: la generalizacin est bien, pero dentro de un cierto orden: hay que
poner lmites (la encapsulacin), y dentro de esos lmites vamos a meter, a saco, todo lo
relacionado con lo abstrado: no slo datos, sino tambin mtodos, comportamientos, etc.
Por un lado es una abstraccin pues, de acuerdo con la definicin establecida anteriormente, es en
sta donde se definen las propiedades y atributos genricos de determinados objetos con
caractersticas comunes (recordemos el ejemplo de la sala de cine). La Clase es, por otro lado, una
encapsulacin porque constituye una cpsula o saco que encierra y amalgama de forma clara
tanto los datos de que constan los objetos como los procedimientos que permiten manipularlos.
Las Clases se constituyen, as, en abstracciones encapsuladas.

Concepto de polimorfismo
Esta caracterstica permite definir distintos comportamientos para un mtodo dependiendo de la
clase sobre la que se realice la implementacin. En todo momento tenemos un nico medio de
acceso, sin embargo se podr acceder a mtodos distintos.
Veamos el siguiente ejemplo, en el que se define una clase forma de la que se heredan las clases
crculo y cuadrado.

La clase forma define los mtodos dibujar y borrar. En la definicin de estos mtodos se
implementar el cdigo comn a todos los objetos de la clase. Sin embargo cuando definamos las
clases hijas, crculo y cuadrado, ser necesario modificar estos mtodos para adaptarlos a las
nuevas subclases. El mtodo de la clase padre implementa aquellas acciones comunes. Las clases
hijas aaden las operaciones particulares que necesiten. Cuando utilicemos los mtodos de la
clase forma no tendremos que hacer distincin entre cuadrados y crculos. Gracias al polimorfismo
se ejecutar el mtodo adecuado en funcin de la subclase a la que pertenezca el objeto.
En la declaracin de una clase estamos definiendo el conjunto de mtodos y campos que son
accesibles desde fuera de una clase o lo que a menudo se denomina contrato de la clase. Este
contrato determina cual va a ser la funcionalidad de la clase. Pero cuando extendemos una clase
para crear otra estamos ampliando este contrato aadiendo ms funcionalidades. Por tanto
cuando creamos esa nueva clase hacemos uso de dos mecanismos. Por un lado la herencia para
reutilizar las partes comunes de la sper-clase. Y por otro el polimorfismo, es decir el cambio en la
forma en la que se implementa el contrato de la superclase. Como vemos al escribir una subclase
podemos sobrescribir el contrato aadiendo nuevas funcionalidades, pero no cambiarlo.
A la hora de implementar el polimorfismo tendremos dos mecanismos de los que echar mano
para sobrescribir una clase: reemplazar la implementacin de un mtodo o aadir funcionalidades
a un mtodo.

Modularidad.
La Modularidad es la propiedad que permite subdividir una aplicacin en partes ms pequeas
(llamadas mdulos), cada una de las cuales debe ser tan independiente como sea posible de la
aplicacin en s y de las restantes partes.

La modularizacin consiste en dividir un programa en mdulos que se puedan compilar por


separado, pero que tienen conexiones con otros mdulos. Al igual que la encapsulacin, los
lenguajes soportan la Modularidad de diversas formas.

La Modularidad es la propiedad de un sistema que permite su descomposicin en un conjunto de


mdulos cohesivos y dbilmente acoplados. Por supuesto no todos los mdulos son iguales: tomar
un programa monoltico y separarlo de forma aleatoria en archivos no es ptimo. Se debe tener en
cuenta los conceptos asociados de dependencia, acoplamiento, cohesin, interfaz, encapsulacin
y abstraccin. Una vez identificado lo que es un buen mdulo, se puede contemplar la reutilizacin
de un buen mdulo como componente.

El Mdulo A depende del Mdulo B si cualquier cambio en el Mdulo B implica que el Mdulo A
tambin tenga que ser modificado. A veces se dice que el Mdulo A es un cliente del Mdulo B, o
que el Mdulo B acta como servidor del Mdulo A. En general, es normal que un mismo mdulo
sea tanto cliente como servidor. Esto significa, que depende de algunos mdulos, mientras que
otros mdulos dependen de l. Incluso es posible que un par de mdulos se tengan uno al otro de
cliente; sin embargo, ste es un ejemplo de dependencia circular, que debe evitarse cuando sea
posible debido a que impide la reutilizacin.

La dependencia a veces se conoce como acoplamiento. Un sistema con muchas dependencias


tiene fuerte acoplamiento. Los buenos sistemas tienen dbil acoplamiento, porque en ese caso los
cambios en una parte del sistema son menos probables de propagarse a travs del sistema.

Los mdulos correctos a menudo tienen la propiedad de que sus interfaces proporcionan una
abstraccin de algn elemento conocido de manera intuitiva que puede, no obstante, ser difcil de
implementar. Este tipo de mdulos se dice que tienen una fuerte cohesin. El mdulo realiza un
conjunto coherente de cosas, pero dentro de lo posible el desarrollador del cliente est protegido
de la informacin irrelevante relativa a cmo el mdulo hace lo que hace.

Herencia
Es una propiedad que permite que los objetos sean creados a partir de otros ya existentes,
obteniendo caractersticas (mtodos y atributos) similares a los ya existentes. Es la relacin entre
una clase general y otra clase ms especfica. Es un mecanismo que nos permite crear clases
derivadas a partir de clase base, Nos permite compartir automticamente mtodos y datos entre
clases subclases y objetos. Por ejemplo: Si declaramos una clase prrafo derivada de una clase
texto todos los mtodos y variables asociadas con la clase texto son automticamente heredados
por la subclase prrafo.
Herencia: Este quizs es el tema que ms problemas causan al estudiante; sin embargo, no es
difcil en su concepcin.
El objeto Persona es un objeto muy genrico y limitado en s; as que se puede considerar como un
objeto Abstracto; ya que por si mismo no puede crear una persona completa; sin embargo, sus
funciones bsicas son las mismas en todos los seres humanos, con diferencias puntuales, as que
podemos crear dos objetos Hombre y Mujer, que hereden todas sus caractersticas genricas
como respirar, hablar, nombre, etc., del objeto Persona, y sea en la implementacin de cada
objeto donde empiezan las diferencias.

Jerarqua.
Segn el Dictionary of OT la jerarqua es cualquier clasificacin u ordenacin d e
abstracciones en una estructura de rbol. Algunos tipos de Jerarqua son:
Jerarqua de agregacin, jerarqua de clases, jerarqua de herencia, jerarqua de
particin, jerarqua de especializacin, jerarqua de tipo. s t e c o n c e p t o e s s u m a m e n t e
i m p o r t a n t e y a q u e c o n e l l o c o n o c e m o s l a importancia de dividir los problemas en una
jerarqua de ideas.
Los dos tipos importantes de jerarqua son: la de generalizacin/especializacin y la de
todo/parte.
La jerarqua de generalizacin/especializacin se basa en que las propiedades de una categora
general se trasmiten a todas las categoras que se especializan o subcategoras. En la OO,
la jerarqua de clases significa un conjunto de clases relacionadas por la jerarqua
de generalizacin/especializacin.

Paso de Mensajes

En orientacin al objeto, el cmputo de un sistema evoluciona conforme a mensajes. Los objetos


de un sistema manipulan otros objetos envindoles mensajes solicitando que realicen acciones
especficas. Estos mensajes invocan a funciones miembro apropiadas de las clases de objetos. Si
una funcin miembro deseada no se encuentra en la clase inmediata al objeto, entonces se busca
la funcin miembro en la clase base de ese objeto, y as sucesivamente.
Vinculacin Dinmica y Polimorfismo Si el sistema decide en tiempo de compilacin qu
implementacin de la operacin va a utilizar, realiza una vinculacin esttica. Si lo hace en tiempo
de ejecucin, entonces es una vinculacin dinmica.

Вам также может понравиться