Si has hecho algo de programación para principiantes, o incluso has comenzado a ver diferentes idiomas, probablemente hayas encontrado la frase "programación orientada a objetos" (u "OOP").
Hay todo tipo de explicaciones técnicas sobre lo que es, pero hoy vamos a ver la definición de programación orientada a objetos de una manera sencilla.
Antes de comenzar: Lenguajes de procedimiento
Para entender qué es un lenguaje de programación orientado a objetos, necesita comprender qué reemplazó. Los primeros lenguajes de programación eran llamados procedimientos porque el programador definiría un conjunto muy específico de procedimientos que la computadora llevaría a cabo.
En los primeros días, los procedimientos se escribieron en tarjetas perforadas. Esos pasos tomaron datos, realizaron una secuencia de acciones en esos datos y luego generaron nuevos datos.
Los lenguajes de procedimiento funcionaron bien por un tiempo (y algunos todavía están en uso). Pero cuando desea programar algo más allá de una secuencia básica de pasos, los lenguajes de procedimiento pueden ser difíciles de administrar. Ahí es donde entra la programación orientada a objetos.
El objeto de la programación orientada a objetos
Entonces, ¿qué es la programación orientada a objetos?
El primer lenguaje orientado a objetos (generalmente aceptado como Simula) introdujo la idea de los objetos . Los objetos son colecciones de información que se tratan como una entidad singular.
Nos sumergiremos en lo que realmente significa en un segundo con un ejemplo, pero primero tenemos que hablar sobre las clases . Las clases son algo así como pre-objetos. Contienen una lista de atributos que, cuando se definen, se convierten en un objeto.
Tomemos el ejemplo de programar un juego de ajedrez. Podríamos tener una clase llamada Pieza. Dentro de Piece, tenemos una lista de atributos:
- Color
- Altura
- Forma
- Movimiento permitido
Un objeto simplemente define una instancia particular de una cosa que pertenece a esa clase.
Entonces podríamos tener un objeto llamado WhiteQueen. Ese objeto tendría definiciones para los cuatro atributos (blanco, alto, cilíndrico con almenas, cualquier cantidad de espacios en cualquier dirección). También podría tener métodos o funciones.
¿Qué hace que esto sea mucho mejor que el enfoque de procedimiento?
En resumen, los lenguajes de programación orientados a objetos (como Java) facilitan la organización de datos y códigos de una manera más versátil para proyectos más grandes.
Para discutirlo con un poco más de detalle, hablaremos sobre los cuatro aspectos básicos de la programación orientada a objetos.
Programación orientada a objetos: Abstracción
El hecho de que quiera usar algo no significa que necesite saber cómo funciona. Una máquina de espresso, por ejemplo, es compleja. Pero no necesitas saber cómo funciona. Solo necesita saber que cuando presione "Encendido", obtendrá espresso.
Lo mismo es cierto para los objetos en la programación orientada a objetos. En nuestro ejemplo de ajedrez, podemos tener un método move (). Ese método podría requerir una gran cantidad de datos y otros métodos. Puede necesitar las variables de posición inicial y posición final. Podría usar otro método para determinar si se captura una pieza.
Pero no necesitas saber eso. Todo lo que necesitas saber es que cuando le dices a la pieza que se mueva, se mueve. Eso es abstracción.
Programación orientada a objetos: encapsulación
La encapsulación es una de las formas en que la programación orientada a objetos crea abstracción. Cada objeto es una colección de datos que se trata como una sola entidad. Y dentro de esos objetos hay datos, tanto variables como métodos.
Las variables dentro de un objeto generalmente se mantienen privadas, lo que significa que otros objetos y métodos no pueden acceder a ellas. Los objetos solo pueden verse afectados al usar sus métodos.
Un objeto Bishop puede contener varias piezas de información. Por ejemplo, podría tener una variable llamada "posición". Esa variable es necesaria para usar el método move (). Y, por supuesto, tiene un color.
Al hacer que la posición sea privada y el método move () sea público, un programador protege la variable de movimiento de ser afectada por cualquier otra cosa. Y si el color es una variable privada, no hay forma de que otro objeto la modifique a menos que haya un método que permita el cambio. (Que probablemente no tendría, ya que el color de la pieza debe permanecer constante).
Estas variables y métodos se mantienen dentro del Objeto Bishop. Debido a que están encapsulados, un programador podría hacer un cambio en la estructura o el contenido del objeto sin preocuparse por la interfaz pública.
Programación Orientada a Objetos: Herencia
Además de las clases, los lenguajes de programación orientados a objetos también tienen subclases. Estos contienen todos los atributos de la clase principal, pero también pueden contener otros atributos.
En nuestro juego de ajedrez, las piezas de peón necesitan un método que pueda convertirlas en otras piezas si llegan al final del tablero. Lo llamaremos el método transformPiece ().
No todas las piezas necesitan el método transformPiece (). Entonces no queremos ponerlo en la clase de Pieza. En cambio, podemos crear una subclase llamada Peón. Debido a que es una subclase, hereda todos los atributos de Piece. Entonces, una instancia de la subclase Peón incluye un color, altura, forma y movimiento permitidos.
Pero también incluye el método transformPiece (). Ahora nunca tenemos que preocuparnos por usar accidentalmente esa función en una torre. Aquí hay una explicación técnica:
Crear subclases también ahorra mucho tiempo. En lugar de crear nuevas clases para todo, los programadores pueden crear una clase base y luego extenderla a nuevas subclases cuando lo necesiten. (Sin embargo, vale la pena señalar que la dependencia excesiva de la herencia es mala 10 Principios básicos de programación que todo programador debe seguir 10 Principios básicos de programación Todo programador debe seguir Escriba siempre el código que pueda mantener cualquier persona que pueda terminar trabajando en su software. fin, aquí hay varios principios de programación para ayudarlo a limpiar su acto. Lea más).
Programación orientada a objetos: polimorfismo
El polimorfismo es el resultado de la herencia. Entender completamente el polimorfismo requiere un poco de conocimiento de programación, por lo que nos limitaremos a lo básico aquí. En resumen, el polimorfismo permite a los programadores utilizar métodos del mismo nombre, pero con diferentes objetos .
Por ejemplo, nuestra clase Piece podría tener un método move () que mueva una pieza un espacio en cualquier dirección. Eso funciona para la pieza real, pero no para nada más. Para solucionar este problema, podemos definir el nuevo método move () en la subclase Rook que define el movimiento como un número ilimitado de espacios hacia adelante, hacia atrás, hacia la izquierda o hacia la derecha.
Ahora, cuando un programador invoca el método move () y usa una pieza como argumento, el programa sabrá exactamente cómo debe moverse la pieza. Esto ahorra mucho tiempo tratando de descubrir cuál de los muchos métodos diferentes debe usar.
Programación orientada a objetos en una cáscara de nuez
Si su cabeza está girando un poco después de las últimas cuatro definiciones, no se preocupe demasiado. Estas son las cosas principales que debe recordar:
- La programación orientada a objetos recoge información en entidades únicas llamadas objetos.
- Cada objeto es una instancia única de una clase.
- La abstracción oculta el funcionamiento interno de un objeto cuando no es necesario verlo.
- La encapsulación almacena variables y métodos relacionados dentro de los objetos y los protege.
- La herencia permite que las subclases utilicen atributos de las clases principales.
- El polimorfismo permite que los objetos y métodos manejen múltiples situaciones diferentes con una única interfaz.
Si puede recordar esos puntos, tendrá una buena idea de lo que es la programación orientada a objetos. Los cuatro aspectos básicos de la programación orientada a objetos, como mencioné, pueden ser un poco difíciles de manejar. Pero una vez que comiences a programar, se volverán más claros.
Recuerde que solo hemos discutido generalidades en este artículo. Los diferentes lenguajes orientados a objetos tendrán sus propios caprichos y maneras de hacer que las cosas sucedan. Una vez que elija el idioma correcto para usted ¿Busca los mejores lenguajes de programación? ¡Empieza aqui! Buscando los mejores lenguajes de programación? ¡Empieza aqui! Ya sea que sea completamente nuevo en lenguajes de programación o que desee incursionar en un nuevo tipo de programación, una de las preguntas más importantes es: "¿Qué lenguaje de programación es el adecuado para mí?" Lea más, comenzará a aprender cómo pone en práctica los principios de OOP.