Python nos permite utilizar distintas metodologías de programación. Hemos implementado inicialmente programas utilizando la programación lineal, luego vimos funciones y trabajamos con programación estructurada.
Ahora introduciremos los conceptos de programación orientada a objetos. A partir de este concepto mostraremos en forma sencilla la metodología de Programación Orientada a Objetos.
Se irán introduciendo conceptos de objeto, clase, atributo, método etc. y de todos estos temas se irán planteando problemas resueltos.
Prácticamente todos los lenguajes desarrollados en los últimos 25 años implementan la posibilidad de trabajar con POO (Programación Orientada a Objetos)
El lenguaje Python tiene la característica de permitir programar con las siguientes metodologías:
Un objeto es una entidad independiente con sus propios datos y programación. Las ventanas, menúes, carpetas de archivos pueden ser identificados como objetos; el motor de un auto también es considerado un objeto, en este caso, sus datos (atributos) describen sus características físicas y su programación (métodos) describen el funcionamiento interno y su interrelación con otras partes del automóvil (también objetos).
El concepto renovador de la tecnología de Orientación a Objetos es la
suma de funciones a elementos de datos, a esta unión se le llama
encapsulamiento.
Por ejemplo, un objeto Auto contiene ruedas, motor, velocidad, color, etc,
llamados atributos. Encapsulados con estos datos se encuentran los
métodos para arrancar, detenerse, dobla, frenar etc.
La responsabilidad de un objeto auto consiste en realizar
las acciones apropiadas y mantener actualizados sus datos internos.
Cuando otra parte del programa (otros objetos) necesitan que el auto
realice alguna de estas tareas (por ejemplo, arrancar) le envía
un mensaje. A estos objetos que envían mensajes no les interesa la
manera en que el objeto auto lleva a cabo sus tareas ni las
estructuras de datos que maneja, por ello, están ocultos.
Entonces, un
objeto contiene información pública, lo que necesitan los otros objetos
para interactuar con él e información privada, interna, lo que necesita
el objeto para operar y que es irrelevante para los otros objetos de la
aplicación.