Está en la página 1de 25

Programacin Orientada a Objetos

Paradigmas de programacin
Programacin imperativa (Basic, C, C++, Java). Programacin declarativa (Haskell, Prolog) Programacin funcional (Haskell, Miranda, F#). Programacin modular (Fortran, Basic, Pascal, C). Programacin estructurada (Pascal, C, Ada, C++). Programacin orientada a objetos (C++, C#, Java). Programacin orientada a aspectos.

El mundo est lleno de objetos


Nuestro mundo est lleno de objetos, de modo que parece natural la resolucin de problemas en trminos de objetos. Es decir, plantear una aplicacin en trminos de objetos se parece ms al mundo real. Esta es la idea base sobre la que se fundamenta la programacin orientada a objetos.

Qu es un objeto?
Un objeto es la representacin de una entidad del mundo real. Entidades fsicas: casa, automvil, producto, cliente, mascota. Entidades conceptuales: proceso qumico, transaccin bancaria, puesto de trabajo. Entidades de software: arreglo, lista enlazada, interfaz de usuario.

Qu es un objeto?
Los objetos del mundo real (complejos o no complejos) poseen:
Estado. Comportamiento. Identidad.

Un objeto posee estado


Lo que el objeto sabe. El estado de un objeto es una de las posibles condiciones en que el objeto puede existir. El estado normalmente cambia en el tiempo. El estado de un objeto es implementado por un conjunto de atributos, adems de las posibles conexiones que puede tener con otros objetos.

Un objeto posee comportamiento


Lo que el objeto puede hacer. El comportamiento de un objeto determina cmo ste acta y reacciona frente a las peticiones de otros objetos. Es modelado por un conjunto de mensajes a los que el objeto puede responder (operaciones que puede realizar). Se implementa mediante mtodos.

Un objeto posee identidad


Cada objeto tiene una identidad nica. Se diferencia unvocamente de cualquier otro objeto, incluso siendo del mismo tipo o si su estado es idntico al de otro objeto. Una persona, se diferencia de cualquier otra persona, incluso siendo gemelos. Un automvil, aunque sean de la misma marca, el mismo modelo, tendrn placas diferentes. Una casa, aunque sea exactamente igual a otra, an se diferenciar en su direccin.

Modelado de objetos
El enfoque orientado a objetos se basa en el hecho de modelar el problema usando objetos del mundo real o simulados. Cuando se escribe un programa orientado a objetos se est creando un modelo de una parte del mundo. Las partes que el modelo construye son objetos que aparecen en el dominio del problema.

Qu es una clase?
Una clase es una descripcin de un grupo de objetos con:
Caractersticas en comn (atributos). Comportamiento similar (mtodos). La misma forma de relacionarse (relaciones). Una semntica en comn (significan lo mismo).

Una clase es una plantilla para crear objetos de esa clase.

Clases vs. Objetos


Desde el punto de vista de la programacin la clase es un tipo de dato. Desde el punto de vista de la programacin un objeto es una variable de una clase. En POO a estas variables se les denomina instancias. Un objeto es una instancia de una clase. Los objetos son creados y destruidos en tiempo de ejecucin. Residen en memoria.

Ejemplo de un objeto

Representacin UML de una clase

Representacin UML de un objeto

Especificadores de acceso
(+) Publico, cualquier clase puede tener acceso a los miembros pblicos de otra clase. () Privado, slo la clase puede tener acceso a sus propios miembros privados. (#) Protegido, la clase y sus subclases pueden tener acceso a los miembros protegidos.

Encapsulamiento
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 implementacin interna. Permite exponer el estado del objeto slo a travs del comportamiento que le hayamos definido mediante miembros pblicos. Es til como punto de control/validacin y permite una mejor respuesta ante los cambios.

Abstraccin
Ignorancia selectiva. La abstraccin ayuda a trabajar con cosas complejas. Se enfoca en lo importante. Ignora lo que no es importante, simplifica. Una clase es una abstraccin en la que se enfatizan las caractersticas relevantes y se suprimen otras caractersticas. Una clase debe capturar una y slo una abstraccin clave.

Polimorfismo
Mediante polimorfismo es posible implementar mltiples formas de un mismo mtodo, donde cada uno depender de la clase sobre la que se realice la implementacin. Esto posibilita la llamada a una variedad de mtodos distintos (todos con el mismo nombre) utilizando exactamente el mismo medio de acceso.

Relaciones entre clases


Las clases no existen aisladas, sino que tienen dependencias (relaciones) entre ellas.
Dependencia. Asociacin. Agregacin y composicin. Generalizacin y especializacin.

Dependencia
Es una relacin de uso, es decir, una clase usa a otra para ejecutar algn proceso.

Asociacin
Es una relacin entre dos o ms clases durante un periodo determinado de tiempo. Es decir, las clases se conectan conceptualmente.

Agregacin y composicin
Es un tipo especial de asociacin que expresa un acoplamiento ms fuerte entre las clases.

Generalizacin y especializacin
Es una relacin entre una clase ms general (superclase) y un caso ms especfico de esa clase (subclase).

Muchas gracias por su atencin.

También podría gustarte