Descripción general
La programación orientada a objetos (POO) es un paradigma de programación basado en el concepto de «objetos», que pueden contener datos, en forma de campos, a menudo conocidos como atributos; y código, en forma de procedimientos, a menudo conocidos como métodos. Una característica de los objetos es que los procedimientos de un objeto pueden acceder y a menudo modificar los campos de datos del objeto al que están asociados (los objetos tienen una noción de «esto» o «yo»). Existe una gran diversidad de lenguajes OOP, pero los más populares están basados en clases, lo que significa que los objetos son instancias de clases, que normalmente también determinan su tipo.
Discusión
Hasta ahora, nos hemos centrado en la programación procedimental. Basada en la programación estructurada, los procedimientos (rutinas, subrutinas o funciones) contienen una serie de pasos computacionales a realizar. Cualquier procedimiento puede ser llamado en cualquier momento durante la ejecución de un programa, incluso por otros procedimientos o por él mismo. El objetivo de la programación procedimental es dividir una tarea de programación en una colección de variables, estructuras de datos y subrutinas. Los programas pequeños y los scripts tienden a ser más fáciles de desarrollar utilizando un enfoque de procedimiento simple.
La programación orientada a objetos, en cambio, descompone una tarea de programación en objetos que exponen el comportamiento (métodos) y los datos (miembros o atributos) utilizando interfaces. La distinción más importante es que, mientras que la programación procedimental utiliza procedimientos para operar sobre estructuras de datos separadas, la programación orientada a objetos agrupa ambas cosas, de modo que un «objeto», que es una instancia de una clase, opera sobre su «propia» estructura de datos. Los programas más grandes se benefician de un mejor aislamiento y reutilización del código y los datos que proporciona un enfoque orientado a objetos.
Los objetos y las clases suelen estar diseñados para representar objetos del mundo real. Considere una puerta como ejemplo de un objeto del mundo real. La mayoría de las puertas tienen una funcionalidad limitada. Pueden abrirse y cerrarse, y bloquearse y desbloquearse. En la programación procedimental, podríamos diseñar funciones para abrir, cerrar, bloquear y desbloquear una puerta, como:
Procedural Programming - FunctionsOpenDoor(door)CloseDoor(door)LockDoor(door)UnlockDoor(door)
La programación orientada a objetos combina el código y los datos, de modo que, en lugar de tener funciones separadas que actúan sobre las puertas, diseñamos puertas que tienen métodos que pueden actuar sobre sí mismas. Los métodos representan algo que el objeto puede hacer, y se definen típicamente usando verbos. El pseudocódigo de las puertas orientadas a objetos podría ser:
Object-Oriented Programming - Methodsdoor.Open()door.Close()door.Lock()door.Unlock()
Los objetos también pueden tener atributos, algo que el objeto es o tiene, y se definen típicamente usando sustantivos o adjetivos. Los atributos de una puerta pueden ser:
Object-Oriented Programming - Attributesdoor.Heightdoor.Widthdoor.Colordoor.Closeddoor.Locked
Cuando escribimos código para definir una puerta genérica, creamos una clase puerta. La clase puerta contendría todos los métodos que una puerta puede realizar y todos los atributos que una puerta podría tener. A continuación, crearíamos instancias de la clase (objetos) para representar puertas específicas, como una puerta delantera, una puerta trasera o una puerta de habitación en una casa, o una puerta izquierda y una puerta derecha en un coche.
Términos clave
atributo Una especificación que define una propiedad de un objeto. clase Una plantilla de código de programa extensible para crear objetos, proporcionando valores iniciales para el estado (variables miembro) e implementaciones de comportamiento (funciones miembro o métodos). instancia :Una ocurrencia concreta de un objeto. método Una especificación que define un procedimiento o comportamiento de un objeto. objeto Una instancia particular de una clase donde el objeto puede ser una combinación de variables, funciones y estructuras de datos. this, self, o Me Palabras clave utilizadas en algunos lenguajes de programación informática para referirse al objeto, clase u otra entidad de la que forma parte el código que se está ejecutando actualmente.