You are on page 1of 8

PROGRAMACION ORIENTADA A OBJETOS

1. CARACTERISTICAS:

1.1 ABSTRACCION

Permite seleccionar las características relevantes dentro de un conjunto e


identificar comportamientos comunes para definir nuevos tipos de entidades en
el mundo real. La abstracción es clave en el proceso de análisis y diseño
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.

Ignorancia Selectiva

• La abstracción nos ayuda a trabajar con cosas complejas

• Se enfoca en lo importante

• Ignora lo que no es importante (simplifica)

Una clase es una abstracción en la que:

• Se enfatizan las características relevantes

• Se suprimen otras características

Una clase debe capturar una y solo una abstracción clave [1]

1.2 HERENCIA

La herencia es específica de la programación orientada a objetos, donde una


clase nueva se crea a partir de una clase existente. La herencia (a la que
habitualmente se denomina subclases) proviene del hecho de que la subclase
(la nueva clase creada) contiene las atributos y métodos de la clase primaria.
La principal ventaja de la herencia es la capacidad para definir atributos y
métodos nuevos para la subclase, que luego se aplican a los atributos y
métodos heredados.
Esta particularidad permite crear una estructura jerárquica de clases cada vez
más especializada. La gran ventaja es que uno ya no debe comenzar desde
cero cuando desea especializar una clase existente. Como resultado, se
pueden adquirir bibliotecas de clases que ofrecen una base que puede
especializarse a voluntad (la compañía que vende estas clases tiende a
proteger las datos miembro usando la encapsulación). [2]

Cabe aclarar además que hay dos tipos de herencias:

- Herencia Simple: una clase derivada puede heredar sólo de una clase
base (los lenguajes .NET soportan este tipo de herencia)
- Herencia Múltiple: una clase derivada puede heredar de una o más
clases base (C++ es un ejemplo de lenguaje que soporta este tipo de
herencia). [3]

1.3 ENCAPSULAMIENTO

El encapsulamiento consiste en unir en la Clase las características y


comportamientos, esto es, las variables y métodos. 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 abstracción y el ocultamiento que
veremos a continuación.

La utilidad del encapsulamiento va por la facilidad para manejar la complejidad,


ya que tendremos a las Clases como cajas negras donde sólo 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
cómo lo hace.[4]

 Principio que establece que los atributos propios de un objeto no deben


ser visibles desde otros objetos

- Deben ser declarados como privados

 Permite abstraer al resto del mundo de la complejidad de la


implementación interna

 Permite exponer el estado del objeto sólo a través del comportamiento


que le hayamos definido mediante miembros públicos

 ¿Por qué es útil?

- Punto de Control/Validación

- Mejor respuesta ante los Cambios[5]

1.4 POLIMORFISMO

Es la propiedad que tienen los objetos de permitir invocar genéricamente un


comportamiento (método) cuya implementación será delegada al objeto
correspondiente recién en tiempo de ejecución. El polimorfismo tiende a existir
en las relaciones de herencia, pero no siempre es así. [6]

Polimorfismo quiere decir "un objeto y muchas formas". Esta propiedad permite
que un objeto presente diferentes comportamientos en función del contexto en
que se encuentre. Por ejemplo un método puede presentar diferentes
implementaciones en función de los argumentos que recibe, recibir diferentes
números de parámetros para realizar una misma operación, y realizar
diferentes acciones dependiendo del nivel de abstracción en que sea
llamado.[7]

1.5 RELACIONES

Permiten que el objeto se inserte en la organización y están formadas


esencialmente por punteros a otros objetos.

1.5.1 RELACION DE ASOCIACION:

- Una asociación es una conexión entre dos clases que representa una
comunicación.
- Una asociación puede tener nombre
- La comunicación puede ser tanto uni como bi-direccional (por defecto)
- La multiplicidad es el número de instancias que participan en una
asociación

Ejemplo:

- Una Persona es Dueña de un Vehículo


- Un Vehículo Pertenece a una Persona

Persona -dueño Vehiculo

1.5.1.1 RELACION DE AGREGACION

- La agregación es una forma especial de asociación donde un todo se


relaciona con sus partes
o También se conoce como “una parte de” o una relación de
contención
- Ejemplo:
o Una Puerta es una parte de un Vehículo
o El Vehículo es azul, la Puerta es Azul
o Mover el Vehículo implica mover la Puerta

Vehiculo Puerta
-color
+Mover()

[8]

1.5.1.1 RELACION DE COMPOSICION

Dos objetos están estrictamente limitados por una relación complementaria.


Uno no se entiende sin el otro, esto es, cada uno por separado no tiene
sentido.
El tiempo de vida de cada uno de los objetos es dependiente.

1.5.2 RELACION DE HERENCIA

Donde un objeto adquiere las propiedades y métodos de un objeto padre. Se


representa mediante un triángulo.
La relación de dependencia que se representa mediante una línea discontinua.
Utilizada fundamentalmente para la relación entre paquetes. [9]

2. ELEMENTOS

2.1 CLASE

Una clase es una descripción de un conjunto de objetos casi idénticos. Una


clase consta de métodos y datos que resumen las características comunes de
los objetos, incluyendo una descripción de cómo crear un nuevo objeto de la
clase. En otras palabras, las clases contienen los anteproyectos para crear
objetos.[10]

 Una clase es una descripción de un grupo de objetos con:


o Propiedades en común (atributos)
o Comportamiento similar (operaciones)
o La misma forma de relacionarse con otros objetos (relaciones)
o Una semántica en común (significan lo mismo)
 Una clase es una abstracción que:
o Enfatiza las características relevantes
o Suprime otras características (simplificación)
 Un objeto es una instancia de una clase

2.1.1 METODOS

Los métodos de clase son aquellos que no necesitan que una clase se
instancie para que los métodos de dicha clase puedan ser invocados, es decir,
no es necesario crear un objeto para invocar sus métodos.[11]

2.1.1.1 SOBRECARGA (OVERLOAD)


Una de las características que también nos ofrece los lenguajes orientados a
objetos es la posibilidad de definir varias funciones de las clases con un mismo
nombre, de esta forma, podremos crear versiones diferentes, por ejemplo para
que reciban argumentos de distintos tipos sin necesidad de cambiarle el
nombre.

Supongamos que queremos hacer una función que realice cualquier tipo de
operación sobre dos valores numéricos, sería lógico pensar que si esos
valores son de tipo entero, el resultado que devuelva la función también
debería ser de tipo entero, en caso de que los valores a usar en la operación
son de tipo flotante, el resultado podría devolverlo de ese mismo tipo.

En los lenguajes no orientado a objetos, tendríamos que crear dos funciones


con nombres diferentes, por ejemplo: sumaInt y sumaFloat. Pero la
sobrecarga nos permite crear dos funciones que se llamen suma y el
compilador utilizará la adecuada según el tipo de datos que pasemos como
argumentos.

El único requisito para poder crear sobrecargas de métodos es que las


diferentes versiones se diferencien en los argumentos, ya sea porque sean de
diferentes tipos de datos o porque el número de argumentos usados sea
diferente, de esa forma el compilador no tendrá ningún problema en saber cual
debe usar en cada ocasión. La sobrecarga la podemos aplicar tanto a los
constructores como a cualquier otro método de la clase.[12]

2.1.1.2 SOBRE ESCRITURA DE MÉTODOS


• La sobre escritura de métodos es una característica más de la herencia en
Java. Es decir, en Java las nuevas clases se pueden definir extendiendo clases
ya existentes. Aquí surgen los conceptos de
Subclase que sería la clase obtenida, y superclase, que sería la clase que está
siendo extendida, tal como también ya se ha explicado.
• Cuando una nueva clase se extiende desde otra que ya existía, todas las
variables y métodos que son miembros de la superclase (y todos aquellos
miembros de los antecesores de la superclase) serán también miembros de la
subclase.[13]

2.1.2 ATRIBUTOS

Los atributos son las características 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 también denominados miembros dato, son


declaradas en la clase pero sus valores son fijados y cambiados en el objeto.

Además de las variables de instancia hay variables de clase, las cuales se


aplican a la clase y a todas sus instancias. Por ejemplo, el número de ruedas
de un automóvil es el mismo cuatro, para todos los automóviles.[14]
2.1.3 PROPIEDADES

Las propiedades permiten implementar el encapsulamiento, impidiendo el


acceso directo a los atributos de una clase y proporcionando un mecanismo
para poder obtener y asignar sus valores.

Nótese que como VB.NET no distingue entre mayúsculas y minúsculas no es


posible utilizar para el miembro de la clase el mismo nombre que para la
Propiedad. Sin embargo, es importante que ambos tengan nombres
significativos para la lógica de la aplicación. No se recomienda el agregado de
prefijos o sufijos a los nombres.[15]

2.2 OBJETOS

La programación orientada a objetos consiste en ordenar datos en conjuntos


modulares de elementos de información del mundo real (denominado un
dominio). Estos elementos de datos se llaman objetos. Estos datos se agrupan
de acuerdo a las características principales del mundo real de estos elementos
(tamaño, color, etc.).
El enfoque de objetos es una idea que se ha probado con creces. Simula fue el
primer lenguaje de programación en implementar el concepto de clases en
1967. En 1976, Smalltalk implementó los conceptos de encapsulación,
agrupación y herencia (los conceptos principales de la programación orientada
a objetos). Por otra parte, se han implementado varios lenguajes de
programación orientada a objetos a escala global (Eiffel, Objective C, Loops,
etc.).
La dificultad que presenta este enfoque es la creación de una representación
abstracta, en forma de objetos, de entidades que realmente existen (perro,
auto, lámpara eléctrica...) o que existen virtualmente (seguridad social, clima...).
[16]

2.3 INTERFACES

Una interface es una clase sin datos miembro que solo está hecha de
funciones sin implementación (prototipos de funciones sin cuerpo). Cualquier
clase que derive de una interface debe implementar el cuerpo de las funciones
de la interface.

Las interfaces pueden ser descriptas como abstractas porque siempre


requieren de una implementación. Por ser abstractas las interfaces tienen
mayor parecido a lo que hacen las plantillas que a lo que hacen las clases.

A diferencia de las clases, no pueden nunca ser usadas tal cual, solo tienen
significado en el contexto de la herencia. Dado que las interfaces carecen de
una implementación solo puede actuar como un modelo para la creación de
una clase derivada.[17]

WEBGRAFIA

[1] http://www.mslatam.com/latam/msdn/comunidad/dce2005

[2] http://es.kioskea.net/contents/poo/heritage.php3

[3] http://www.mslatam.com/latam/msdn/comunidad/dce2005

[4] http://java.ciberaula.com/articulo/tecnologia_orientada_objetos/

[5], http://www.mslatam.com/latam/msdn/comunidad/dce2005

[6] http://pisuerga.inf.ubu.es/lsi/Invest/Java/Tuto/I_1.htm

[7], http://www.mslatam.com/latam/msdn/comunidad/dce2005

[8], http://www.mslatam.com/latam/msdn/comunidad/dce2005
[9] http://tensores.blogspot.com/2007/08/relacin-de-agregacin-vs-
composicin.html

[10]
http://www.pol.una.py/archivos/asi/paradigmas/programacion_orientada_objeto
s.pdf

[11] http://sophia.javeriana.edu.co/~lfranky/poo/sem04-c2-
AtributosMetodosJava.pdf

[12]http://www.elguille.info/NET/dotnet/POO_VB_NET_tp6.htm

[13]http://www.sc.ehu.es/sbweb/fisica/cursoJava/fundamentos/clases1/clases.ht
m

[15] http://www.mslatam.com/latam/msdn/comunidad/dce2005

[16] http://es.kioskea.net/contents/poo/objet.php3

[17]http://www.clubdesarrolladores.com/articulos/mostrar/54-la-programacion-
orientada-a-objetos-oop-en-php-5

You might also like