Atributos y métodos

Siguiendo con el ejemplo de la presentación, en el paradigma de la programación orientada a objetos definiríamos un objeto al que podríamos llamar "persona", con una serie de características (nombre, edad, género...) y un conjunto de funciones propias como "modificar_departamento", o "asignar_plaza_de_garaje". Podríamos definir otro objeto para representar los departamentos (con información sobre su presupuesto, número de trabajadores...), otro objeto para la plaza de garaje (con información sobre la planta en la que se encuentra, su identificador, la persona a la que está asignada)... Cada uno de estos objetos tendría sus propias características (a las que llamamos atributos) y sus propias funciones (a las que llamamos métodos).

Todo el programa se desarrollaría asumiendo que estos objetos existen y que tienen la "interfaz" descrita (esos atributos y esos métodos). Cómo estén desarrollados dichos métodos es irrelevante (mientras funcionen y lo hagan de una forma razonablemente eficiente). Lo que nos importa es que, por ejemplo, si Alicia Arjona es transferida desde el departamento de finanzas al de marketing, si ejecuto el método "modificar_departamento" del objeto "persona" que representa a Alicia incluyendo como argumento el código "mkt" del departamento de marketing al que va transferida, dicho objeto va a actualizarse con la nueva información y va a comunicarse automáticamente con los objetos de tipo "departamento" que representan a "Finanzas" y a "Marketing" para eliminarlo del primero y añadirlo al segundo. Y, de nuevo: cómo esté cada objeto programado internamente no nos importa: no importa si internamente unas variables se almacenan como diccionario o como lista, no importan los nombres con los que dichas variables estén representadas internamente, y no nos importa cómo cada uno de esos métodos esté programado. Lo que nos importa es cómo esté definida la interfaz del objeto y su funcionalidad.

En estas condiciones, hacer un cambio como el descrito que afecte al tipo de estructura a usar para almacenar la información de una persona solo obliga a revisar el objeto que las representa, no todo el programa.