P Es un método de implementación en el que los programas... objetos, cada uno de los cuales representa una instancia de...

Anuncio
Programación Orientada a Objetos (P.O.O.)
Es un método de implementación en el que los programas se organizan como colecciones cooperativas de
objetos, cada uno de los cuales representa una instancia de alguna clase, y cuyas clases son miembros de una
jerarquía de clases unidas mediante relaciones de herencia.
¿Cómo se relacionan la A.O.O, D.O.O y P.O.O. ? Los resultados del análisis O.O. sirven como modelos
iniciales para un diseño O.O. y éstos a su vez se pueden utilizar como ante proyectos para la implementación
completa de un sistema utilizando técnicas de programación O.O.
Objetos
Como su nombre lo indica la P.O.O se basa fuertemente el concepto de objeto. En nuestras vidas diarias
estamos familiarizados con cualquier tipo de objetos: televisores, lámparas, cuadernos, etc. Pero cuando
encendemos el televisor, no distinguimos entre sus elementos físicos (selector de canal, tubo de imagen,
antena), y su comportamiento (proporcionar sonido e imagen). Simplemente lo encendemos y seleccionamos
un canal.
Al igual que el televisor, los objetos hacen que los programas sean un reflejo más fiel de la realidad. Para
conseguir esta cualidad los objetos dependen de tres conceptos fundamentales. (1) combinación de código y
datos (2) herencia (3) encapsulamiento.
En la P.O.O., los datos y los procedimientos se combinan en objetos. Un objeto es una entidad que contiene
características (sus datos) y comportamiento (sus procedimientos). Así combinando características más
comportamiento, el objeto puede realizar cualquier actividad para la cual haya sido definido. Ejemplo: Un
avión se puede describir en términos físicos − nº de pasajeros que puede transportar, fuerza de empuje, nº
turbinas, etc. − así como también en términos funcionales, − despega, asciende, desciende, aterriza, gira, etc. −
. Ni la descripción física ni la funcional captan por separado la esencia de lo que es un avión (son necesarias
ambas descripciones).
En Pascal tradicional, las características físicas de un avión podrían definirse como una estructura similar a
ésta:
Type
avion = RECORD
velocidad: integer;
altitud: integer;
flaps : (arriba, abajo)
end;
Y el comportamiento se definiría mediante procedimientos y funciones:
Procedure acelera;
Procedure desacelera;
Begin
Begin
1
......
......
End;
Procedure bajaflaps;
End;
Procedure bajaflaps;
Begin
Begin
......
......
End;
End;
En la P.O.O., las características (datos) y comportamiento (funciones y procedimientos) se combinan en una
entidad única llamada objeto. El objeto contiene declaraciones tanto de los datos como de los procedimientos.
En el lenguaje de la P.O.O., los procedimiento y funciones declarados dentro del objeto se denominan
métodos. Observe que en Pascal Object la definición del objeto avión sería la sgte.:
Type
avion = OBJECT
velocidad: integer;
altitud: integer;
flaps : (arriba, abajo);
procedure init;
procedure acelera;
procedure desacelera;
procedure asciende;
procedure desciende;
procedure subeflaps;
procedure bajaflaps;
end;
Una vez definido el objeto, se pueden declarar variables usando el nombre del objeto:
var
a: avion;
En el programa es posible escribir sentencias como : a.inic; a.asciende, a.subeflaps, etc.que activan el
comportamiento de cada uno de los objetos.
Métodos
Como se ha señalado, los métodos corresponden al comportamiento o protocolo que se encarga de ejecutar las
acciones que se requieren para que un objeto realice su trabajo.
Pensemos en un objetos real, una pelota, la cual posee características propias, tener color, ser redonda o estar
inflada. Ahora consideremos cada método como una forma en podemos manipularla: lanzarla, hacerla rodar,
2
inflarla etc.
Clases
Una clase es una descripción que agrupa a un conjunto de objetos que comparten una estructura y un
comportamiento. Considere el sgte. Ejemplo :
class Perro{
int peso;
char nombre[20];
char raza[15];
void dormir (int tiempo){delay(tiempo);}
void comer (int cantidad){peso +=cantidad;}
};
La clase perro describe el conjunto de características (peso, nombre, raza) y comportamiento (dormir, comer)
para un conjunto de mascotas que pertenezcan a dicha clase. Esta descripción sólo es una plantilla para el
objeto, pero no genera objetos por sí sola, para ello es necesario definir una variable de la clase definida:
Perro Cachupín, Pluto;
Tras esta declaración se han creado dos objetos de la clase Perro, Cachupín y Pluto quienes quedan
disponibles para ser utilizados en el programa donde fueron declarados.
Teniendo la definición de clase se puede deducir que todos los objetos son ejemplares de una clase y además
que éstas pueden organizarse en un árbol jerárquico. Por ejemplo:
Herencia
En términos simples la herencia en la P.O.O. es la capacidad que tiene los objetos para heredar todas o
algunas de sus características (datos) y comportamiento (procedimientos) a sus descendientes o herederos,
permitiendo así la reutilización de código lo que en la práctica se traduce en una herramienta muy potente de
programación.
Esta herencia puede ser a nivel de estado (características) o protocolo (métodos y procedimientos) o ambas.
La herencia en la P.O.O tiene sus raíces en el concepto de registros anidados:
Type
edades: 0..150;
InfPersona = RECORD
Apellido: integer;
Nombre: integer;
Edad: edades;
end;
3
grados: 0..12;
InfEstudiante= RECORD
persona: InfPersona;
grado: Grados;
Profesor: string (30);
end;
El registro InfPersona contiene campos que se utilizan para describir a cualquier persona. El segundo registro
InfEstudiante, incluye el campo Persona, que contiene los campos del registro InfPersona. En la P.O.O., se
utiliza el mismo concepto para construir incrementalmente objetos que son capaces de heredar algunas o todas
las características de sus ascendientes (objetos padres).
Encapsulamiento
Uno de los objetivos primordiales de la P.O.O., es la creación de objetos que funcionen como entidades
complejas, es decir autosuficientes, una de las reglas del encapsulamiento es que el programador nunca
necesita acceder directamente a los datos de un objeto, en vez de ésto se deben definir métodos dentro del
objeto que gobiernen toda la manipulación de datos. El encapsulamiento está referido, también, a los métodos
de cada objeto en el sentido que su código interno debe ser transparente a la hora de activarse.
Mensajes
Corresponde a la forma que tienen los objetos para comunicarse entre sí, de esta forma, el objeto que activa el
mensaje se llama objeto emisor y el que lo recibe objeto receptor. Cabe señalar que un mensaje debe ser
activado o generado desde un método hacia un objeto. En términos generales equivale a la llamada a un
procedimiento o función.
Forma general de un mensaje:
receptor_mensaje.selector_mensaje [(parámetros)]
p/e ventana_editor.maximizar; documento1.imprimir(2);
Polimorfismo
Se refiere a la capacidad que tiene el objeto para hacer lo adecuado después de haber recibido un mensaje,
independientemente de quién lo haya enviado. Hay que tener en cuenta que el polimorfismo se mueve a través
de la herencia, dicho de otra forma trata de hacer posible enviar mensajes genéricos a objetos y que éstos
realicen lo estipulado de acuerdo a su codificación interna, es decir, la acción varía en relación al receptor del
mensaje.
Ejemplo: Se desea enviar un mensaje a dos objetos distintos (Triángulo y Rectángulo) los cuales podrían ser
descendientes de la clase polígono, sin embargo cuando el triángulo reciba la orden area, la ejecución de este
método se obtendrá a partir de (b*h)/2 en cambio si se ctiva el mismo método para el rectángulo el valor se
calculará a partir de ð *r2 , aún cuando ambos objetos recibieron la misma orden.
4
Descargar