¿Qué es la programación orientada a objetos? Los conceptos básicos explicados en términos de Layman
Si has hecho alguna programación para principiantes, o incluso has empezado a ver diferentes idiomas, probablemente hayas encontrado la frase “programación orientada a objetos” (o “OOP”).
Hay todo tipo de explicaciones técnicas sobre lo que es, pero hoy vamos a echar un vistazo a la definición de la programación orientada a objetos de una manera sencilla..
Antes de que comencemos: lenguajes procesales
Para entender qué es un lenguaje de programación orientado a objetos, necesita entender qué reemplazó. Los lenguajes de programación tempranos fueron llamados de procedimiento porque el programador definiría un conjunto muy específico de procedimientos que la computadora emprendería..
En los primeros días, los procedimientos se escribían en tarjetas perforadas. Esos pasos tomaron los datos, realizaron una secuencia de acciones en esos datos y luego generaron nuevos datos..
Los idiomas de procedimiento funcionaron bien durante 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 manejar. 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 objetos. Los objetos son colecciones de información que son tratadas como una entidad singular..
Profundizaremos en lo que realmente significa en un segundo con un ejemplo, pero primero tenemos que hablar sobre 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 la programación de un juego de ajedrez. Podríamos tener una clase llamada Piece. 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.
Así podríamos tener un objeto llamado WhiteQueen. Ese objeto tendría definiciones para los cuatro atributos (blanco, alto, cilíndrico con almenas, cualquier número 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 analizarlo con un poco más de detalle, hablaremos de los cuatro conceptos 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 deba saber cómo funciona. Una máquina de espresso, por ejemplo, es compleja. Pero no necesitas saber cómo funciona. Solo necesitas saber que cuando golpeas “En,” vas a tomar un espresso.
Lo mismo ocurre con 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. Es posible que necesite las variables de posición inicial y posición final. Podría usar otro método para determinar si ha capturado 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 ser afectados usando sus métodos..
Un objeto del obispo 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 variable de posición sea privada y el método move () público, un programador evita que la variable de movimiento sea afectada por cualquier otra cosa. Y si el color es una variable privada, no hay forma de que otro objeto lo cambie a menos que haya un método que permita el cambio. (Lo que probablemente no tendrías, ya que el color de la pieza debe permanecer constante).
Estas variables y métodos se mantienen dentro del objeto del obispo. Debido a que están encapsulados, un programador podría realizar 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 (). Así que no querríamos ponerlo en la clase Piece. En su lugar, podemos crear una subclase llamada Peón. Debido a que es una subclase, hereda todos los atributos de Piece. Así que 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 debemos preocuparnos por el uso accidental de esa función en una torre. Aquí hay una explicación técnica:
La creación de 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 el exceso de confianza en la herencia es malo. 10 Principios básicos de programación Cada programador debe seguir 10 Principios básicos de programación que cada programador debe seguir Siempre escriba un código que pueda ser mantenido por cualquier persona que pueda terminar trabajando en su software. Finalmente, 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 un resultado de la herencia. Comprender completamente el polimorfismo requiere algunos conocimientos de programación, por lo que vamos a seguir con 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 de piezas podría tener un método move () que mueva una pieza un espacio en cualquier dirección. Eso funciona para la pieza del rey, pero no para nada más. Para solucionar este problema, podemos definir un 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 un montón de tiempo al tratar de averiguar cuál de los muchos métodos diferentes debe usar.
Programación orientada a objetos en pocas palabras
Si su cabeza gira un poco después de las últimas cuatro definiciones, no se preocupe demasiado. Estas son las principales cosas que debe recordar:
- La programación orientada a objetos recopila información en entidades individuales 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 a las subclases usar atributos de las clases primarias.
- El polimorfismo permite que los objetos y métodos se ocupen de múltiples situaciones diferentes con una sola interfaz.
Si puede recordar esos puntos, tendrá un buen control sobre qué es la programación orientada a objetos. Los cuatro conceptos 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..
Recuerda que solo hemos discutido las generalidades en este artículo. Los diferentes lenguajes orientados a objetos tendrán sus propias peculiaridades y formas de hacer que las cosas sucedan. Una vez que elija el idioma adecuado 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 esté buscando saltar a un nuevo tipo de programación, una de las preguntas más importantes que debe hacer es: "¿Qué lenguaje de programación es el adecuado para mí?" Leer más, comenzarás a aprender cómo pone en práctica los principios de OOP..
Explorar más sobre: Tutoriales de codificación, programación orientada a objetos.