1.
La programación orientada a objetos se basa en el concepto de crear un
modelo del problema de destino en sus programas. La programación orientada a objetos
disminuye los errores y promociona la reutilización del código. Python es un lenguaje
orientado a objetos. Los objetos definidos en Python tienen las características
siguientes:
Identidad. Cada objeto debe ser distinguido y ello debe poder demostrarse mediante
pruebas. Las pruebas is e is not existen para este fin.
Estado Cada objeto debe ser capaz de almacenar el estado. Para este fin, existen
atributos, tales como variables de instancias y campos.
Comportamiento. Cada objeto debe ser capaz de manipular su estado. Para este fin
existen métodos.
Python incluye las características siguientes para dar soporte a la programación orientada
a objetos:
Creación de objetos basada en clases. Las clases son plantillas para la creación de
objetos. Los objetos son estructuras de datos con el comportamiento asociado.
Herencia con polimorfismo. Python da soporte a la herencia individual y múltiple. Todos
los métodos de instancias de Python son polimórficos y se pueden alterar temporalmente
mediante subclases.
Encapsulación con ocultación de datos. Python permite ocultar los atributos. Cuando
se ocultan los atributos, se puede acceder a los mismos desde fuera de la clase
únicamente mediante los métodos de la clase. Las clases implementan métodos para
modificar los datos.
3 UNA FORMA NUEVA DE PENSAR
Es muy importante destacar que cuando hacemos referencia a la programación orientada
a objetos no estamos hablando de unas cuantas características nuevas añadidas a
un lenguaje de programación. Estamos hablando de una nueva forma de pensar acerca
del proceso de descomposición de problemas y de desarrollo de soluciones de
programación.
La programación orientada a objetos surge en la historia como un intento para dominar la
complejidad que, de forma innata, posee el software. Tradicionalmente, la forma de
enfrentarse a esta complejidad ha sido empleando lo que llamamos programación
estructurada, que consiste en descomponer el problema objeto de resolución en
subproblemas y más subproblemas hasta llegar a acciones muy simples y fáciles
de codificar. Se trata de descomponer el problema en acciones, en verbos. En el ejemplo
de un programa que resuelva ecuaciones de segundo grado, descomponíamos el
problema en las siguientes acciones: primero, pedir el valor de los coeficientes a, b y c;
después, calcular el valor del discriminante; y por último, en función del signo del
discriminante, calcular ninguna, una o dos raíces.
Como podemos ver, descomponíamos el problema en acciones, en verbos; por ejemplo el
verbo pedir, el verbo hallar, el verbo comprobar, el verbo calcular...
La programación orientada a objetos es otra forma de descomponer problemas.
Este nuevo método de descomposición es la descomposición en objetos; vamos a fijarnos
no en lo que hay que hacer en el problema, sino en cuál es el escenario real del mismo, y
vamos a intentar simular ese escenario en nuestro programa
UN PRIMER EJEMPLO
Si nos detenemos a pensar sobre cómo se nos plantea un problema cualquiera en la
realidad podremos ver que lo que hay en la realidad son entidades (otros nombres que
podríamos usar para describir lo que aquí llamo entidades son "agentes" u "objetos").
Estas entidades poseen un conjunto de propiedades o atributos, y un conjunto de
métodos mediante los cuales muestran su comportamiento. Y no sólo eso, también
podremos descubrir, a poco que nos fijemos, todo un conjunto de interrelaciones entre las
entidades, guiadas por el intercambio de mensajes; las entidades del problema responden
a estos mensajes mediante la ejecución de ciertas acciones. El siguiente ejemplo, aunque
pueda parecer un poco extraño, creo que aclarará algunos conceptos y nos servirá como
introducción para desarrollarlos con profundidad.
2. Elementos del Modelo de Objetos
Se utilizan varios estilos de programación desde orientado procedimientos, objetos,
lógica, reglas y restricciones, los cuales el tipo de abstracción que se usa son los
siguientes en su respectivo orden: algoritmos, clases y objetos, objetivos expresados
como cálculo de predicados, reglas si-entonces, relaciones
invariantes. (Invariante: condición booleana cuyo valor de verdad debe mantenerse)
Para todo lo orientado a objetos el marco de referencia conceptual es el MODELO DE
OBJETOS, para ello tenemos 4 elementos FUNDAMENTALES los cuales son:
1. Abstracción
2. Encapsulamiento
3. Modularidad
4. Jerarquía
3.