Está en la página 1de 4

TEMA 2.

PROGRAMACION ORIENTADA A OBJETOS


La programación orientada a objetos (POO) es un tipo de programación que descienda del
paradigma de programación imperativa. Esta última emplea funciones para modificar el
programa, es decir controla un proceso para que produzca el resultado deseado.

Características:

- La POO enfoca los problemas de forma más intuitiva. Mientras en la programación


estructurada datos y códigos van separados, en la POO ambos están mezclados.
- La POO busca un acercamiento al mundo real, en el que los objetos interaccionan
entre sí.
- La POO permite generar programas modulares muy escalables.
- Es una opción muy buena para desarrollar programas con interfaces gráficas.

Características de la programación orientada a objetos:


La POO permite generar código de más calidad, facilitar el desarrollo y reutilizar de forma
práctica el código desarrollado previamente.
La POO permite controlar los eventos que se producen en las interfaces gráficas.

Elementos:
- Clase:
Es el elemento base de la programación en el paradigma orientado a objetos. En una
clase de describen un conjunto de datos, métodos, constructores y destructores.
A partir de una clase se pueden instanciar tantos objetos como sean necesarios. Actúa
como si fuera una plantilla a partir de la cual definir y crear objetos.
Su representación en UML (Unified Modeling Language, lenguaje de modelado
estandarizado consistente en diagramas de ayuda al desarrollo del software), consiste en
una caja dividida en tres áreas:

Área superior, donde se muestra el nombre de la clase.


Área intermedia, con se recogen los campos de la clase.

Área inferior, donde se indican los métodos asociados a la clase.


Dentro de la clase podemos diferenciar los siguientes elementos:

 Campo, son elementos que se comportan como una variable propiedad de cada
instancia de una clase. Define un atributo de un objeto.
Dependiendo de la visibilidad que se le quieta dar al campo éste puede ser accedido
como si de una variable se tratase.
Pueden ser de cualquier tipo, incluso de otra clase.
 Propiedad, también define un atributo de un objeto. Pero mientras el campo dispone
de un área de almacenamiento directamente accesible, la propiedad no tiene
reservado un espacio en memoria para su almacenamiento. Solo se puede acceder a
su área de almacenamiento por medio de un método creado para ello. Otra forma de
acceso es mediante un campo definido previamente para tal fin.
Se declaran con un nombre representativo del dato que contendrá y los métodos
para su acceso serán nombrados con ese nombre, precedidos de los prefijos get o
set.

 Método, es un algoritmo aplicable a las instancias de la clase. Puede o no manejar


los datos contenidos en la clase.
Si el método retorna un valor tendrá forma de función, si por el contrario realiza
una seria de acciones sin devolver un valor tendrá la forma de procedimiento.
Dependiendo del lenguaje empleado puede que se use o no los procedimientos.

 Constructor, es un método especial que se usa para instanciar objetos de una clase.
Pueden declararse varios métodos constructor en una clase o no existir ninguno. Si
bien toda clase tiene asociado un método constructor.
 Destructor, es un método que se encarga de destruir el objeto creado con el método
constructor. Al igual que con los métodos constructor, pueden existir varios o
ninguno, aunque cada clase dispone de un método destructor por defecto.
Algunos lenguajes pueden no disponer de métodos destructor.

- Objeto:
Es una instancia de una clase determinada. Es el resultado de crear en tiempo de
ejecución un conjunto de datos que se almacenan en memoria, con una estructura como
la descrita en la clase.
Los campos, propiedades y métodos asociados e un objeto pueden estar declarados en
una única clase o en varias, es decir, un objeto puede heredar campos de una clase
ancestra.
Dentro de los objetos podemos hacer dos diferencias según sean simples o compuestos.
En el primer caso estará compuesto por datos primitivos (carácter, dígito, booleano,
etc.) y en el segundo estarán compuestos además por otros objetos.
El hecho de que dos objetos tengan los mismos datos no significa que sean iguales, ya
que cada uno puede tener reservado un espacio diferente en memoria y por tanto ser
independientes. Es similar a decir que dos variables que tengan el mismo valor sean
iguales.
- Encapsulación:
Es la agrupación en un mismo elemento de los datos y las operaciones relacionadas con
ellos, como ocurre en la clase. Los datos encapsulados son ocultados para que
únicamente se pueda acceder a ellos a través de las interfaces definidas.

- Abstracción:
Es un mecanismo de reducción de la complejidad minimizando la información de un
objeto a sus aspectos más relevantes. Es decir se obvian los aspectos insustanciales para
el resultado. Estos aspectos lo único que harían es dificultar el desarrollo.

- Reutilización o reusabilidad:
La POO permite reutilizar de formar ágil el código escrito con anterioridad sin
necesidad de duplicarlo. Ello facilita el desarrollo disminuyendo la posibilidad de
cometer errores y facilitando el mantenimiento. Para logarlos emplea las técnicas de
herencia y composición de objetos.

- Visibilidad:
Contrariamente a la encapsulación y abstracción, la visibilidad establece la forma en
que el objeto será accedió desde los diferentes puntos del programa.
Existen diferente tipos de visibilidad:

 Privada, representada mediante el signo -. Los miembros declarados con visibilidad


privada solo serán visibles desde la misma clase en la que se han declarado.
 Pública, se representa con el signo +. Los miembros declarados con visibilidad
pública son visibles desde cualquier punto del programa.
 Protegida, se representa con #. Estos miembros son visibles únicamente desde la
clase en la que se han declarado y en las clases herederas de ella.
Según el lenguaje elegido para el desarrollo pueden existir más niveles de visibilidad.

Relaciones entre clases:


- Herencia, es una propiedad de las clases que permite la declaración de nuevas clases a
partir de otras existentes. La clase origen, desde la que se hereda, se denomina ancestra,
clase base o superclase. La clase que hereda es denominada clase extendida, hija o
subclase.
Si una clase B, hereda de una clase A, todos los miembros de la clase A son transferidos
a la clase B, salvo los constructores y destructores.
Pueden existir herencias múltiples, es decir una clase hereda de más de una clase
ancestra. Son pocos los lenguajes que permiten la herencia múltiple.
En el caso de heredar una clase hija solo tendrá accesible los miembros visibles de la
clase padre.
- Asociación
Es un tipo de relación entre objetos de una a varias clases que interactúan entre sí. Se
representa con una línea continua.
- Agregación
Es una asociación opcional, los componentes pueden existir pos sí mismo e incluso
formar parte de otras relaciones de composición con otros objetos. También son
llamadas como composición débil. Se representan con un rombo sin fondo.

- Composición
Representan una asociación obligatoria. Los componentes con dependientes del
compuesto y no tiene sentido en ausencia de éste. Por ello el objeto compuesto debe
hacerse cargo de la destrucción de los componentes cuando es destruido. Se representa
con un rombo con fondo negro.
Polimorfismo
Es la propiedad de los objetos de adoptar diferentes formas en tiempo de ejecución. Está
estrechamente relacionado con la herencia, y junto con ella establece uno de los pilares
de la POO.
Existen diversas formas de polimorfismo:

 Asignación polimórfica, que se presenta cuando se almacena en un elemento


declarado con un tipo A (clase base) un objeto de un tipo B (clase derivada).
 Ejecución polimórfica, se presenta cuando se invocan métodos del mismo nombre
sobre instancias de diferente clase sin reparar en ello.

También podría gustarte