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

Paradigma - Orientado a Objetos

PLANTEAMIENTO DEL PROBLEMA.


En la actualidad, la programacin utiliza un paradigma orientado a objetos, este se
popularizo a principios de 1990 y consiste en organizar los programas de modo que
reflejen la forma en que los objetos en el mundo real se encuentran organizados.
Quiz diariamente estamos en contacto con un equipo de cmputo, haciendo uso de sus
aplicaciones y programas, para facilitar nuestras tareas. Pero pocas veces nos ponemos a
pensar en la forma que fue creado y programado dichos software. Este es un buen
motivo para conocer lo importante que es la programacin Orientada a objetos. Aqu
nace el inters por conocer este paradigma de programacin, que actualmente es la ms
utilizada.


PARADIGMAS DE PROGRAMACIN
Un paradigma de programacin es una propuesta tecnolgica que es adoptada por una
comunidad de programadores cuyo ncleo central es incuestionable en cuanto a que
unvocamente trata de resolver uno o varios problemas claramente delimitados. La
resolucin de estos problemas debe suponer consecuentemente un avance significativo
en al menos un parmetro que afecte a la ingeniera de software. Tiene una estrecha
relacin con la formalizacin de determinados lenguajes en su momento de definicin.
Un paradigma de programacin est delimitado en el tiempo en cuanto a aceptacin y
uso ya que nuevos paradigmas aportan nuevas o mejores soluciones que la sustituyen
parcial o totalmente.
Los programas se pueden clasificar por el paradigma del lenguaje que se use para
producirlos. Los principales paradigmas son: imperativos, funcionales, lgicos,
declarativos y orientacin a objetos.

PROGRAMACIN ORIENTADA A OBJETOS.


La programacin orientada a objetos o POO (OOP segn sus siglas en ingls) es un
paradigma de programacin que usa objetos y sus interacciones, para disear
aplicaciones y programas informticos. Est basado en varias tcnicas, incluyendo
herencia, abstraccin, polimorfismo y encapsulamiento. Su uso se populariz a
principios de la dcada de los aos 1990. En la actualidad, existe variedad de lenguajes
de programacin que soportan la orientacin a objetos.
La programacin orientada a objetos, intenta simular el mundo real a travs del
significado de objetos que contiene caractersticas y funciones. Los lenguajes orientados
a objetos se clasifican como lenguajes de quinta generacin.
Como su mismo nombre indica, la programacin orientada a objetos se basa en la idea
de un objeto, que es una combinacin de variables locales y procedimientos llamados
mtodos que juntos conforman una entidad de programacin.
Origen de la POO.
La programacin orientada a objetos tom posicin como el estilo de programacin
dominante a mediados de los aos ochenta, en gran parte debido a la influencia de C++,
una extensin del lenguaje de programacin C. Su dominacin fue consolidada gracias
al auge de las Interfaces grficas de usuario, para las cuales la programacin orientada a
objetos est particularmente bien adaptada. En este caso, se habla tambin de
programacin dirigida por eventos.
Las caractersticas de orientacin a objetos fueron agregadas a muchos lenguajes
existentes durante ese tiempo, incluyendo Ada, BASIC, Lisp, Pascal, entre otros. La
adicin de estas caractersticas a los lenguajes que no fueron diseados inicialmente
para ellas condujo a menudo a problemas de compatibilidad y en la capacidad de
mantenimiento del cdigo. Los lenguajes orientados a objetos "puros", por su parte,
carecan de las caractersticas de las cuales muchos programadores haban venido a
depender. Para saltar este obstculo, se hicieron muchas tentativas para crear nuevos
lenguajes basados en mtodos orientados a objetos, pero permitiendo algunas
caractersticas imperativas de maneras "seguras".

Ventajas de la POO.
Fomenta la reutilizacin y extensin del cdigo.
Permite crear sistemas ms complejos.
Relacionar el sistema al mundo real.
Facilita la creacin de programas visuales.
Construccin de prototipos
Agiliza el desarrollo de software
Facilita el trabajo en equipo
Facilita el mantenimiento del software
Lo interesante de la POO es que proporciona conceptos y herramientas con las cuales
se modela y representa el mundo real tan fielmente como sea posible.

Modelos: La POO permite realizar un modelo de sistema casi independientemente de


los requisitos del proyecto.
La razn es que en la POO, la jerarqua la establecen los datos, en cambio en la
programacin estructurada la jerarqua viene definida por los programas. Este cambio
hace que los modelos se establezcan de forma similar al razonamiento humano y, por lo
tanto, resulte ms natural.
Modularidad: Un programa es modular si se compone de mdulos independientes y
robustos. Esto permite la reutilizacin y facilita la verificacin y depuracin de los
mismos. En POO, los mdulos estn directamente relacionados con los objetos. Los
objetos son mdulos naturales ya que corresponden a una imagen lgica de la realidad.
Extensibilidad: Durante el desarrollo de sistemas, ocurre la aparicin de nuevos
requisitos, por eso es deseable que las herramientas de desarrollo permitan aadirlos sin
modificar la estructura bsica del Diseo. En POO es posible lograr esto siempre y
cuando se hayan definido de forma adecuada la jerarqua de clases, los atributos y
mtodos.
Eliminacin de redundancia: En el desarrollo de sistemas se desea evitar la definicin
mltiple de datos y funciones comunes. En POO esto se logra mediante la herencia
(evita la definicin mltiple de propiedades comunes a muchos objetos) y el
polimorfismo (permite la modificacin de mtodos heredados). Solo hay que definir los
atributos y los mtodos en el antepasado ms lejano que los comparte.
Reutilizacin: La POO proporciona un marco perfecto para la reutilizacin de las clases.
El encapsulamiento y la modularidad nos permiten utilizar una y otra vez las mismas
clases en aplicaciones distintas. En efecto, el aislamiento entre distintas clases significa
que es posible aadir una nueva clase o un modulo nuevo (extensibilidad) sin afectar al
resto de la aplicacin.

Objeto.
Entender que es un objeto es la clave para entender cualquier lenguaje orientado a
objetos.
Existen muchas definiciones que se le ha dado al Objeto. Primero empecemos
entendiendo que es un objeto del mundo real. Un objeto del mundo real es cualquier
cosa que vemos a nuestro alrededor. Digamos que para leer este artculo lo hacemos a
travs del monitor y una computadora, ambos son objetos, al igual que nuestro telfono
celular, un rbol o un automvil.
Analicemos un poco ms a un objeto del mundo real, como la computadora. No
necesitamos ser expertos en hardware para saber que una computadora est compuesta
internamente por varios componentes: la tarjeta madre, el chip del procesador, un disco
duro, una tarjeta de video, y otras partes ms. El trabajo en conjunto de todos estos
componentes hace operar a una computadora.
Internamente, cada uno de estos componentes puede ser sumamente complicado y
puede ser fabricado por diversas compaas con diversos mtodos de diseo. Pero
nosotros no necesitamos saber cmo trabajan cada uno de estos componentes, como
saber que hace cada uno de los chips de la tarjeta madre, o cmo funciona internamente
el procesador. Cada componente es una unidad autnoma, y todo lo que necesitamos
saber de adentro es cmo interactan entre s los componentes, saber por ejemplo si el
procesador y las memorias son compatibles con la tarjeta madre, o conocer donde se
coloca la tarjeta de video. Cuando conocemos como interaccionan los componentes
entre s, podremos armar fcilmente una computadora.
Qu tiene que ver esto con la programacin? La programacin orientada a objetos
trabaja de esta manera. Todo el programa est construido en base a diferentes
componentes (Objetos), cada uno tiene un rol especfico en el programa y todos los
componentes pueden comunicarse entre ellos de formas predefinidas.
Todo objeto del mundo real tiene 2 componentes: caractersticas y comportamiento.
Por ejemplo, los automviles tienen caractersticas (marca, modelo, color, velocidad
mxima, etc.) y comportamiento (frenar, acelerar, retroceder, llenar combustible,
cambiar llantas, etc.).
Los Objetos de Software, al igual que los objetos del mundo real, tambin tienen
caractersticas y comportamientos. Un objeto de software mantiene sus caractersticas
en una o ms "variables", e implementa su comportamiento con "mtodos". Un mtodo
es una funcin o subrutina asociada a un objeto.
Para redondear estas ideas, imaginemos que tenemos estacionado en nuestra cochera un
Ford Focus color azul que corre hasta 260 km/h. Si pasamos ese objeto del mundo real
al mundo del software, tendremos un objeto Automvil con sus caractersticas
predeterminadas:
Marca = Ford
Modelo = Focus
Color = Azul
Velocidad Mxima = 260 km/h
Cuando a las caractersticas del objeto le ponemos valores decimos que el objeto tiene
estados. Las variables almacenan los estados de un objeto en un determinado momento.
Definicin terica: Un objeto es una unidad de cdigo compuesto de variables y
mtodos relacionados. Entidad provista de un conjunto de propiedades o atributos
(datos) y de comportamiento o funcionalidad (mtodos) los mismos que

consecuentemente reaccionan a eventos. Se corresponde con los objetos reales del


mundo que nos rodea, o a objetos internos del sistema (del programa). Es una instancia
a una clase.
Clases.
En el mundo real, normalmente tenemos muchos objetos del mismo tipo. Por ejemplo,
nuestro telfono celular es slo uno de los miles que hay en el mundo. Si hablamos en
trminos de la programacin orientada a objetos, podemos decir que nuestro objeto
celular es una instancia de una clase conocida como "celular". Los celulares tienen
caractersticas (marca, modelo, sistema operativo, pantalla, teclado, etc.) y
comportamientos (hacer y recibir llamadas, enviar mensajes multimedia, transmisin de
datos, etc.).
Cuando se fabrican los celulares, los fabricantes aprovechan el hecho de que los
celulares comparten esas caractersticas comunes y construyen modelos o plantillas
comunes, para que a partir de esas se puedan crear muchos equipos celulares del mismo
modelo. A ese modelo o plantilla le llamamos CLASE, y a los equipos que sacamos a
partir de ella la llamamos OBJETOS.
Esto mismo se aplica a los objetos de software, se puede tener muchos objetos del
mismo tipo y mismas caractersticas.
Definicin terica: La clase es un modelo o prototipo que define las variables y mtodos
comunes a todos los objetos de cierta clase. Tambin se puede decir que una clase es
una plantilla genrica para un conjunto de objetos de similares caractersticas.
Por otro lado, una instancia de una clase es otra forma de llamar a un objeto. En realidad
no existe diferencia entre un objeto y una instancia. Slo que el objeto es un trmino
ms general, pero los objetos y las instancias son ambas representacin de una clase.
Definicin Terica: Una instancia es un objeto de una clase en particular. Definiciones
de las propiedades y comportamiento de un tipo de objeto concreto. La instanciacin es
la lectura de estas definiciones y la creacin de un objeto a partir de ellas.
Herencia.
Por ejemplo, herencia de la clase C a la clase D; es la facilidad mediante la cual la clase
D hereda en ella cada uno de los atributos y operaciones de C, como si esos atributos y
operaciones hubiesen sido definidos por la misma D. Por lo tanto, puede usar los
mismos mtodos y variables pblicas declaradas en C. Los componentes registrados
como "privados" (private) tambin se heredan, pero como no pertenecen a la clase, se
mantienen escondidos al programador y slo pueden ser accedidos a travs de otros
mtodos pblicos. Esto es as para mantener hegemnico el ideal de OOP.

Mtodo.
Algoritmo asociado a un objeto (o a una clase de objetos), cuya ejecucin se
desencadena tras la recepcin de un "mensaje". Desde el punto de vista del
comportamiento, es lo que el objeto puede hacer. Un mtodo puede producir un cambio
en las propiedades del objeto, o la generacin de un "evento" con un nuevo mensaje
para otro objeto del sistema.
Evento.
Es un suceso en el sistema (tal como una interaccin del usuario con la mquina, o un
mensaje enviado por un objeto). El sistema maneja el evento enviando el mensaje
adecuado al objeto pertinente. Tambin se puede definir como evento, a la reaccin que
puede desencadenar un objeto, es decir la accin que genera.
Mensaje.
Una comunicacin dirigida a un objeto, que le ordena que ejecute uno de sus mtodos
con ciertos parmetros asociados al evento que lo gener. Un objeto es intil si est
aislado. El medio empleado para que un objeto interacte con otro son los mensajes.
Hablando en trminos un poco ms tcnicos, los mensajes son invocaciones a los
mtodos de los objetos.
Propiedad o atributo.
Contenedor de un tipo de datos asociados a un objeto (o a una clase de objetos), que
hace los datos visibles desde fuera del objeto y esto se define como sus caractersticas
predeterminadas, y cuyo valor puede ser alterado por la ejecucin de algn mtodo.
Estado interno.
Es una variable que se declara privada, que puede ser nicamente accedida y alterada
por un mtodo del objeto, y que se utiliza para indicar distintas situaciones posibles para
el objeto (o clase de objetos). No es visible al programador que maneja una instancia de
la clase.
Componentes de un objeto.
Atributos, identidad, relaciones y mtodos.
Identificacin de un objeto: un objeto se representa por medio de una tabla o entidad
que est compuesta por sus atributos y funciones correspondientes.

CARACTERSTICAS DE LA POO.
Existe un acuerdo acerca de qu caractersticas contempla la "orientacin a objetos", las
caractersticas siguientes son las ms importantes:
Abstraccin.
Denota las caractersticas esenciales de un objeto, donde se capturan sus
comportamientos. Cada objeto en el sistema sirve como modelo de un "agente"
abstracto que puede realizar trabajo, informar y cambiar su estado, y "comunicarse" con
otros objetos en el sistema sin revelar cmo se implementan estas caractersticas.
Los procesos, las funciones o los mtodos pueden tambin ser abstrados y cuando lo
estn, una variedad de tcnicas son requeridas para ampliar una abstraccin.
El proceso de abstraccin permite seleccionar las caractersticas relevantes dentro de un
conjunto e identificar comportamientos comunes para definir nuevos tipos de entidades
en el mundo real. La abstraccin es clave en el proceso de anlisis y diseo orientado a
objetos, ya que mediante ella podemos llegar a armar un conjunto de clases que
permitan modelar la realidad o el problema que se quiere atacar.
Por ejemplo, volvamos al ejemplo de los automviles, Qu caractersticas podemos
abstraer de los automviles? O lo que es lo mismo Qu caractersticas semejantes
tienen todos los automviles? Todos tendrn una marca, un modelo, nmero de chasis,
peso, llantas, puertas, ventanas, etc. Y en cuanto a su comportamiento todos los
automviles podrn acelerar, frenar, retroceder, etc.
En los lenguajes de programacin orientada a objetos, el concepto de Clase es la
representacin y el mecanismo por el cual se gestionan las abstracciones.
Por ejemplo, en Java tenemos:
public class Automovil {
// variables
// mtodos
}
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.
El encapsulamiento consiste en unir en la Clase las caractersticas y comportamientos,
esto es, las variables y mtodos. Es tener todo esto es una sola entidad. En los lenguajes
estructurados esto era imposible. Es evidente que el encapsulamiento se logra gracias a
la abstraccin y el ocultamiento que veremos a continuacin.
La utilidad del encapsulamiento va por la facilidad para manejar la complejidad, ya que
tendremos a las Clases como cajas negras donde slo se conoce el comportamiento pero
no los detalles internos, y esto es conveniente porque nos interesar ser conocer qu
hace la Clase pero no ser necesario saber cmo lo hace.

Modularidad.
Se denomina Modularidad a 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. Estos
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.
Principio de ocultacin.
Cada objeto est aislado del exterior, es un mdulo natural, y cada tipo de objeto expone
una interfaz a otros objetos que especfica cmo pueden interactuar con los objetos de la
clase. El aislamiento protege a las propiedades de un objeto contra su modificacin por
quien no tenga derecho a acceder a ellas, solamente los propios mtodos internos del
objeto pueden acceder a su estado. Esto asegura que otros objetos no pueden cambiar el
estado interno de un objeto de maneras inesperadas, eliminando efectos secundarios e
interacciones inesperadas. Algunos lenguajes relajan esto, permitiendo un acceso directo
a los datos internos del objeto de una manera controlada y limitando el grado de
abstraccin. La aplicacin entera se reduce a un agregado o rompecabezas de objetos.
Es la capacidad de ocultar los detalles internos del comportamiento de una Clase y
exponer slo los detalles que sean necesarios para el resto del sistema.
El ocultamiento permite 2 cosas: restringir y controlar el uso de la Clase. Restringir
porque habr cierto comportamiento privado de la Clase que no podr ser accedido por
otras Clases. Y controlar porque daremos ciertos mecanismos para modificar el estado
de nuestra Clase y es en estos mecanismos dnde se validarn que algunas condiciones
se cumplan. En Java el ocultamiento se logra usando las palabras reservadas: public,
private y protected delante de las variables y mtodos.
Polimorfismo.
Comportamientos diferentes, asociados a objetos distintos, pueden compartir el mismo
nombre, al llamarlos por ese nombre se utilizar el comportamiento correspondiente al
objeto que se est usando. O dicho de otro modo, las referencias y las colecciones de
objetos pueden contener objetos de diferentes tipos, y la invocacin de un
comportamiento en una referencia producir el comportamiento correcto para el tipo
real del objeto referenciado. Cuando esto ocurre en "tiempo de ejecucin", esta ltima
caracterstica se llama asignacin tarda o asignacin dinmica. Algunos lenguajes
proporcionan medios ms estticos (en "tiempo de compilacin" de polimorfismo, tales
como las plantillas y la sobrecarga de operadores de C++.

Herencia.
Las clases no estn aisladas, sino que se relacionan entre s, formando una jerarqua de
clasificacin. Los objetos heredan las propiedades y el comportamiento de todas las
clases a las que pertenecen. La herencia organiza y facilita el polimorfismo y el
encapsulamiento permitiendo a los objetos ser definidos y creados como tipos
especializados de objetos preexistentes. Estos pueden compartir (y extender) su
comportamiento sin tener que volver a implementarlo. Esto suele hacerse habitualmente
agrupando los objetos en clases y estas en rboles o enrejados que reflejan un
comportamiento comn. Cuando un objeto hereda de ms de una clase se dice que hay
herencia mltiple.
La herencia es uno de los conceptos ms cruciales en la POO. La herencia bsicamente
consiste en que una clase puede heredar sus variables y mtodos a varias subclases (la
clase que hereda es llamada superclase o clase padre). Esto significa que una subclase,
aparte de los atributos y mtodos propios, tiene incorporados los atributos y mtodos
heredados de la superclase. De esta manera se crea una jerarqua de herencia.
Por ejemplo, imaginemos que estamos haciendo el anlisis de un Sistema para una
tienda que vende y repara equipos celulares.

SINTAXIS
A la forma visible de un lenguaje de programacin se le conoce como sintaxis. La
mayora de los lenguajes de programacin son puramente textuales, es decir, utilizan
secuencias de texto que incluyen palabras, nmeros y puntuacin, de manera similar a
los lenguajes naturales escritos. Por otra parte, hay algunos lenguajes de programacin
que son ms grficos en su naturaleza, utilizando relaciones visuales entre smbolos
para especificar un programa.
La sintaxis de un lenguaje de programacin describe las combinaciones posibles de los
smbolos que forman un programa sintcticamente correcto. El significado que se le da
a una combinacin de smbolos es manejado por su semntica (ya sea formal o como
parte del cdigo duro de la referencia de implementacin). Dado que la mayora de los
lenguajes son textuales, este artculo trata de la sintaxis textual.
Sintaxis de una clase Java.
[public] [final/abstract] class nombre_clase [extends clase_madre]
[implements interface1, [interface2,...]...]
{
[lista de atributos];
[lista de metodos];
};
Modificadores de acceso a miembros de clases.
Existen 3 tipos de usuarios de una clase:
La propia clase.
Usuarios genricos (otras clases, metodos, etc.)
Clases derivadas.
Cada usuario tiene distintos privilegios o niveles de acceso.
Java:
Private: Solo puede ser accedida por metodos propios de la clase.
Private-protected: Pueden ser accedidos por las sub-clases, sin importar el paquete al
que pertenezcan. Sin embargo, las sub-clases solo pueden modificar estos atributos para
objetos de la sub-clase, no de la clase madre.
Protected: Permite el acceso a las sub-clases y a las clases del mismo paquete.
Friendly: Es el valor por defecto. Permite el acceso solo a clases del mismo paquete.
Public: Pueden ser accedidas por todos.

CONCLUSIN
En un programa orientado a objetos tendremos a un conjunto de objetos colaborando
entre ellos.
La orientacin a objetos es el paradigma que est de moda para el desarrollo de
software.
Un objeto es una abstraccin conceptual del mundo real que se puede traducir a un
lenguaje de programacin orientado a objetos.
Un objeto del mundo real tiene caractersticas y comportamientos, y de la misma
manera, un objeto del mundo del software tiene variables y mtodos.
Los objetos se comunican entre ellos usando los mensajes. Un mensaje es la
invocacin de un mtodo del objeto.
La orientacin a objetos requiere de una metodologa que integre el proceso de
desarrollo y un lenguaje de modelamiento con herramientas y tcnicas adecuadas.
Sin embargo; en lo personal, considero que la investigacin ha cumplido con sus
objetivos, ya que me brindo los fundamentos bsicos del paradigma orientado a objetos,
conozco las principales caractersticas de la POO y la forma en que se relaciona con los
objetos de nuestro mundo real. Pero lo ms importante de todo, es que me ha motivado
a conocer ms sobre este paradigma de la programacin, ya que actualmente es muy
utilizada y es muy interesante.

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