Programación Orientada A Objetos
Programación Orientada A Objetos
Objetos (POO)
1.1. Complejidad del software :
origen y tratamiento
Un paradigma de programación es un
modelo conceptual para desarrollar
programas. El uso de un paradigma se
refuerza por el lenguaje que se escoja
para realizar un programa concreto,
aunque en general, con mayor o menor
dificultad, se puede usar cualquier
lenguaje de programación para seguir
cualquier paradigma. Grady Booch cita
diferentes paradigmas:
• Orientado al procedimiento. Que se expresa
de manera imperativa en forma de algoritmos.
Por ejemplo C y Fortran.
• Orientado a funciones. Se basa en el
concepto matemático de función y se expresa
de manera declarativa. Por ejemplo Lisp, SML,
Hope, Hasckel.
• Orientado a la lógica. Que se expresa por
metas en forma de cálculo de predicados.
Utilizan reglas e inferencia lógica. Por ejemplo
Prolog.
• Orientado a objetos. Se expresa en forma de
relaciones entre objetos y responsabilidades de
cada uno. Por ejemplo SmallTalk o Java.
Cada uno de estos paradigmas tiene
ciertas ventajas. Así, el paradigma
procedimental aporta ventajas cuando son
tareas sencillas que se pueden describir
con unos pocos pasos, o cuando es
importante optimizar la velocidad de
ejecución. El uso del paradigma orientado
a la lógica facilita la implementación de
sistemas expertos en los que se deba
manejar una base de conocimiento. El
paradigma funcional permite construir
programas concisos, fáciles de probar y
paralelizar, lo cual es muy adecuado para
la prueba matemática de algoritmos y para
programas en los que se requiera un alto
grado de fiabilidad. El paradigma de
Programación Orientada a Objetos está
demostrando su utilidad en una amplia
variedad de problemas (interfaces gráficas,
simuladores, aplicaciones ofimáticas,
juegos...). Además, está demostrando que
puede ser un marco de alto nivel ideal para
integrar sistemas desarrollados siguiendo
diferentes paradigmas.
1.2. Programación orientada a objetos
Objeto. Un objeto es algo a lo que se le
puede enviar mensajes y que puede
responder a los mismos y que tiene un
estado, un comportamiento bien
definido y una identidad. El estado de
un objeto está definido por el valor de
ciertas variables internas al objeto. Este
estado puede cambiar dependiendo de los
mensajes que reciba desde el exterior o de
un cambio interno al propio objeto. El
comportamiento de un objeto varía en
función del estado en el que se encuentra,
y se percibe por los valores que devuelve
ante los mensajes que recibe y por los
cambios que produce en los objetos con
los que se relaciona. Finalmente, la
identidad de un objeto es aquello que lo
hace distinguible de otros objetos.
La Programación Orientada a Objetos: es
un método de desarrollo en el cual los
programas se organizan como colecciones de
objetos que cooperan para resolver un
problema. En general los objetos pueden
corresponderse a entidades del mundo real
(como un coche o un gato), a acciones (como
saltar o realizar una transacción bancaria) o a
procesos (como el vuelo o el aprendizaje).
La Programación Orientada a Objetos se basa
en el Modelo de Objetos. Este modelo se
fundamenta en el uso de 7 capacidades, 4 de
las cuales que se consideran principales y 3
secundarias. Los lenguajes de programación
orientados a objetos se caracterizan
porque proporcionan mecanismos que
dan soporte a estas capacidades.
Las capacidades principales son:
• Abstraer.
• Encapsular.
• Modularizar.
• Jerarquizar.
Las capacidades secundarias son:
• Tipo.
• Concurrencia y persistencia.
Lenguaje Unificado de Modelado
(Unified Modeling Language - UML )
UML es un lenguaje gráfico para
visualizar, especificar, construir y
documentar los artefactos de un sistema
software orientado a objetos.
1.2.1 Abstraer
Abstraer es la capacidad que permite distinguir
aquellas características fundamentales de un
objeto que lo hacen diferente del resto, y que
proporcionan límites conceptuales bien
definidos relativos a la perspectiva del que lo
visualiza. La abstracción surge de reconocer
las similitudes entre objetos, situaciones o
procesos en el mundo real, y la decisión de
concentrarse en esas similitudes e ignorar las
diferencias. Así, una abstracción se focaliza
sobre una posible vista, ayudando a separar el
comportamiento esencial de un objeto de su
implementación.
Los lenguajes de programación
orientados a objetos facilitan abstraer
gracias a que permiten definir interfaces
comunes para comunicarse con clases de
objetos. Estas interfaces están
compuestas por los métodos, que son
funciones que pueden aplicarse sobre el
objeto y que pueden verse como los
mensajes que es posible enviar al objeto.
Normalmente un objeto puede tener
varias interfaces, permiten concentrarnos
en ciertos aspectos y obviar el resto.
En algunos lenguajes de programación
orientados a objetos (como C++ o Java)
aparece el concepto de clase de objetos o
simplemente clase que une las interfaces
definidas en el proceso de abstracción con
la implementación del comportamiento
deseado. Otros lenguajes (como
SmallTalk o JavaScript) no permiten
definir clases de objetos, sino que se
basan en el concepto de prototipos (todo
objeto es un prototipo a partir del cual se
puede crear otro).
Las clases añaden a la definición de
métodos la implementación de los
mismos. También añaden las
propiedades, que son variables internas
al objeto o a la clase que definen el estado
del objeto. Así, los objetos que hay en un
sistema siempre pertenecen a una
determinada clase, la cual define su
comportamiento, la forma de
interaccionar con él y sus posibles
estados. Métodos y propiedades también
se conocen como miembros.
Entre los objetos se crea un
comportamiento cliente/servidor, de
forma que el cliente conoce el
comportamiento de una abstracción
servidora analizando los servicios que
presta. Estos servicios forman un
contrato que establece las
responsabilidades de un objeto respecto a
las operaciones que puede realizar. El
orden en que se deben aplicar las
operaciones se conoce como protocolo, y
pueden implicar precondiciones
y poscondiciones que deben ser
satisfechas. Cuando al enviar un mensaje
a un objeto se cumplen las precondiciones
pero el objeto no puede cumplir las
poscondiciones se produce una
excepción. Los lenguajes orientados a
objetos también suelen dar soporte al
manejo de excepciones.
Definición
Animal Planta
Mamífero Flor
Florista