Introducción a la programación orientada a objetos
Los avances de la programación de computadoras han permitido pasar de la atroz y nada gloriosa “programación espagueti”, a la Programación Modular y de ahí a la Programación Orientada a Objetos. En esta entrada hablaré sobre conceptos introductorios de éste paradigma de la programación.
¿Qué es la Programación Orientada a Objetos?
La Programación Orientada a Objetos (POO) es un paradigma de programación que define los programas en términos de “clases de objetos”.
Un paradigma (palabra que proviene del griego del griego parádeigma.= Modelo, tipo, Ejemplo) es un conjunto de teorías cuyo núcleo central se acepta sin cuestionar y que suministra la base y modelo para resolver problemas y avanzar en el conocimiento. (link: http://dle.rae.es/?id=RpXSRZJ) Por ejemplo, durante muchos años la humanidad se regía por el paradigma de que la Tierra era plana. Al comenzar con los viajes de exploración, como los de Cristóbal Colón, se descubrió que la Tierra es en efecto, redonda. Esto generó un nuevo modelo (paradigma) para resolver problemas de transportación, por ejemplo, y permitió avances en el conocimiento.
En la programación de computadoras sucedió lo mismo. Durante mucho tiempo, el paradigma de los lenguajes procedimentales se impuso y se mantenía como el modelo para resolver problemas. Uno de estos lenguajes es el lenguaje C, cuya unidad fundamental es la función (lo que en Java equivale a un método). Los lenguajes procedimentales están orientados a acciones, y consideran que los datos existen para apoyar las acciones que las funciones realizan.
En cambio, los lenguajes orientados a objetos, tienen como unidad fundamental la clase. En una clase, se encapsulan tanto los datos, como las acciones que se realizarán con los datos.
¿Por qué es necesaria la Programación Orientada a Objetos?
Bueno, primeramente, porque los sistemas y/o aplicaciones cada vez son más grandes y complejos. Esa característica del software actual hace que ahora se requiera más de un equipo de desarrollo estructurado y organizado. Y por lo tanto, también se necesita reutilizar código. Al crear clases, un programador está creando un nuevo tipo de datos que podrá utilizar en un futuro.
Además, las clases son en esencia, una plantilla, un modelo para crear objetos de ese tipo. Para ello, retomaré el ejemplo que Deitel desarrolla en su clásico libro “Cómo programar en Java”, con un pequeño giro. Considera que tienes un smarthphone. Ese Smartphone tiene una touch-screen por la que tu puedes navegar en tus aplicaciones, contestar una llamada o escribir un mensaje de texto. Como usuario del teléfono: ¿te interesa cómo se construyó esa pantalla? Realmente no, sólo te interesa que funcione. Pero para que haya llegado a tus manos este dispositivo, además de las cadenas de distribución, tuvo que haber existido una idea, materializada en varios diagramas esquemáticos. Alguien diseñó ese dispositivo, hizo diagramas sobre la forma del dispositivo, en donde se colocarían los botones de apagado, volumen, además del micrófono y la cámara.
Podemos pensar que alguien creó un método para que cuando tu oprimes el botón de volumen, éste suba. Sin embargo, en realidad no puedes oprimir el botón de volumen del esquema, sino del dispositivo. ¿Entonces es más importante el esquema o el dispositivo? ¡Los dos! Sin el esquema no existiría el dispositivo. Pero sin el dispositivo físico, el smarthphone diseñado es sólo una idea. Y cómo te puedes imaginar, gracias al esquema se pueden construir miles de dispositivos iguales alrededor del mundo. Tú podrías tener un smarthphone marca X, y tu amig@ también. Funcionan igual, pero no son el mismo dispositivo.
Clase
Como puedes deducir de la sección anterior, la clase es un esquemático que define como se comportarán los objetos creados a partir de ésta. Una definición más formal obtenida de este sitio, sería:
Una clase es un tipo definido por el usuario que describe los atributos y los métodos de los objetos que se crearán a partir de la misma.
Los atributos, también conocidos como propiedades, campos y/o miembros de la clase, definen el estado de un objeto. Los métodos en cambio, son las operaciones que definen su comportamiento. En la figura 1 puedes apreciar los componentes de una clase.

Figura 1. Estructura de una clase
Los miembros de la clase
A los miembros de la clase también se les conoce como atributos, propiedades y/o campos de la clase, y es un conjunto de “variables” que pueden ser de los tipos primitivos de datos (int, char, boolean, float, double) o incluso de tipos creados por el usuario (cómo otra clase).
Para favorecer el principio de encapsulamiento de los miembros de una clase, se busca que estos tengan acceso privado (private).
El constructor de la clase
El constructor de la clase es un método que permite inicializar el objeto al momento de su creación. Este método es llamado cuando se crea un objeto. Las características del constructor son las siguientes:
- El tipo de acceso debe ser público
- No tiene tipo de método, ya que sólo es llamado para construir el objeto.
- Su nombre es igual al nombre de la clase
- Puede o no recibir una lista de parámetros para inicializar el objeto.
En la figura 2 te muestro un ejemplo de un método constructor.

Figura 2 – El método constructor
Los métodos setters y getters.
Como ya mencioné, para favorecer el principio de encapsulamiento de los miembros de una clase, se declararán tipo private, lo que obligará a que su uso no pueda darse a través del operador punto, sino únicamente a través de métodos específicamente diseñados para acceder a los valores de los atributos. Estos son los métodos setters y getters, de los cuales existirá un juego (get y set) por cada miembro de la clase.
Métodos modificadores o setters.
Los métodos setters tienen como objetivo establecer el valor de los miembros de la clase (del inglés set: poner, colocar, establecer). Estos métodos:
- Generalmente reciben un parámetro que se colocará en el atributo de la clase que se está estableciendo.
- Son de tipo void, puesto que no regresan valores.
- Su acceso es público. Dado que el atributo debe tener acceso privado, el método con el que se puede modificar su valor debe tener acceso público.
Métodos consultores o getters.
Estos son métodos que devuelven información sobre el contenido de los atributos del objeto sin modificar el valor de estos (del inglés get:obtener) Estos métodos:
- Generalmente no reciben parámetros.
- Son del mismo tipo que el atributo a consultar. Por ejemplo, si la clase ha declarado un atributo:
int cantidad;
Entonces existirá un método get con el siguiente encabezado de método:
private int getCantidad(){
- Su acceso es público, a través de este método otras clases podrán acceder a su valor.
El método sobrecargado toString()
Éste método tiene como objetivo mostrar toda la información del objeto, es decir, los valores de los miembros del objeto. Debemos recordar que todas las clases que se crean en el universo de clases de Java (JU) heredan de la clase Object (la superclase de Java). La clase Object viene equipada con un método toString.
Se le llama método sobrecargado porque al diseñarlo en tu propia clase, estás “encimando” el método toString original y adecuándolo a la información que quieres que muestre.
Si tu no creas el método toString a la clase que estás diseñando, recuerda que de todos modos ya lo tiene integrado, por heredar de la clase Object.
Objetos.
La definición clásica de un objeto dice que:
Un objeto es una instancia de una clase
Pero me he encontrado que much@s de mis estudiantes no entienden que quiere decir la palabra “instancia”. Por ello definiré a un objeto como:
Una entidad existente en la memoria de una computadora que se crean a partir del molde de una clase
Entonces una clase es el molde con el que se fabrican los objetos. En la figura 3 muestro varias alegorías que describen la relación entre objeto y clase.

Figura 3 – Analogía de variable y objeto.
Es común entre l@s estudiantes nóveles, confundir el concepto de un objeto y una variable, incluso confunden su comportamiento y la forma correcta de utilizarlos. Recuerda que:
- Una variable es un espacio de almacenamiento de datos.
- Un objeto, además de contener datos (propiedades) contiene los métodos con los que se van a manipular los datos.
En ese sentido, un objeto es más amplio que una variable. Por ejemplo, considera una caja de herramientas. Una variable sería el equivalente a un clavo: muy útil CUANDO se tiene la herramienta necesaria, pero sino sólo es un clavo. Ahora si piensas en una caja de herramientas que contiene clavos, martillos, desarmadores, etc., entonces puedes realmente realizar un trabajo de reparación y/o construcción. El poseer una caja de herramientas te habilita para una serie de actividades diversas. El poseer sólo un clavo no.
Declaración y construcción de un objeto.
Una vez que ya has definido una clase, puedes proceder a crear un objeto de ésta. Para ello:
- Debes declararlo indicando que se trata de un objeto de esta clase
- Debes construirlo, invocando al constructor de la clase.
Por ejemplo, si ya has creado la clase CuentaBancaria, puedes crear muchos objetos de esa clase como se aprecia en la figura 4.

Figura 4 – Declaración de objetos
Y posteriormente deberías instanciar cada objeto invocando al constructor de la clase de la siguiente forma:
cuenta1 = new CuentaBancaria("Filomena Meléndez", "Calle Hidalgo # 14", "101BC-2016");cuenta2 = new CuentaBancaria("Pancrasio Martínez", "Boulevard del Maestro #215", "102AD-2015");cuenta3 = new CuentaBancaria("Renata Montiel", "Avenida Siempre Viva #934", "103BD-2016");cuenta4 = new CuentaBancaria(nomb, direc, "102CB-2017");
O bien declarar y construir el objeto en una sola línea de código como se aprecia en la figura 5.

Figura 5 – Declaración e instanciación de un objeto.
El acceso a propiedades y métodos de un objeto
Cuando ya has creado un objeto, puedes acceder a sus propiedades y/o métodos utilizando el operador punto, como se ilustra en la figura 6.

Figura 6 – Acceso a propiedades y métodos de una clase.
Sin embargo, el acceso se puede o no dar dependiendo del modificador de acceso con el que fue declarado ya sea el método o la propiedad en la clase.
Los modificadores de acceso.
El acceso a los atributos y métodos se podrá realizar dependiendo del tipo de modificador de acceso que se le haya establecido a cada uno de ellos. Observa la tabla de la figura 7 en la que se muestran los tres tipos de modificadores con los que cuenta Java.

Figura 7 – Modificadores de acceso.
Esto quiere decir que si en la clase CuentaBancaria se han declarado los siguientes atributos de la clase:
public class CuentaBancaria(){ public String cliente; private double saldo;
El acceso al campo cliente desde otra clase puede ser utilizando el operador punto, puesto que etá declarado tipo public, de la siguiente forma:
CuentBancaria cuenta1 = new CuentaBancaria();cuenta1.cliente = "Sinforosa Juárez Torres";
Pero en cambio, dado que el atributo saldo está declarado como tipo private, intentar acceder a este miembro con el operador punto generará un error de sintaxis,puesto que el atributo tiene acceso privado. Entonces, para este tipo de propiedades, lo correcto es acceder a sus datos a través de los métodos consultores o modificadores, según sea el caso, como se muestra a continuación:
cuenta1.setSaldo(2550.50);double s = cuenta1.getSaldo();
Comparte el conocimiento.
Hasta aquí llegó mi introducción a la Programación Orientada a Objetos. Estaré escribiendo más artículos sobre la POO más adelante.
Recuerda que si te pareció interesante el artículo, no olvides compartirlo en tus redes sociales.
¡Hasta la próxima!
Una variable es un espacio de almacenamiento de datos.
Un objeto, además de contener datos (propiedades) contiene los métodos con los que se van a manipular los datos.
:v
👍🏻
Leído…
Leído
Los lenguajes orientados a objetos, tienen como unidad fundamental la clase. Las clases son en esencia, una plantilla, un modelo para crear objetos en ellas se encapsulan tanto los datos, como las acciones que se realizarán con los datos.
Existen métodos específicamente diseñados para acceder a los valores de los atributos son:
Los métodos settes: tienen como objetivo establecer el valor de los miembros de la clase
Los Métodos getters: Son métodos que devuelven información sobre el contenido de los atributos del objeto sin modificar el valor de estos.
El método sobrecargado toString () tiene como objetivo mostrar toda la información del objeto.
Un objeto es una entidad existente en la memoria de una computadora que se crean a partir del molde de una clase.
La programación orientada a objetos es necesaria porque los sistemas y/o aplicaciones cada vez son más grandes y complejos. Por medio de este tipo de programación se permite reciclar código.
Leìdo
leído
leido
Leido
Leído, pero más q nada me ayudo a resolver algunas duda que tenia por ejemplo como se utiliza el modificador de acceso private y también a repasar todo sobre sol setters y los getters.