Conceptos previos¶
Java es un lenguaje orientado a objetos, es decir su paradigma principal (modelo o estilo de programación) es la POO (Programación Orientada a Objetos). La POO permite abstraernos un nivel más y construir sistemas de mayor complejidad de una forma sencilla y organizada dividiendo el problema en subproblemas más simples.
Está división se realiza en objetos, de forma que cada objeto funcione de forma totalmente independiente. Un objeto es un elemento del programa que posee sus propios datos y su propio funcionamiento. Es decir, un objeto está formado por datos (propiedades) y funciones que es capaz de realizar (métodos). Antes de poder utilizar un objeto, se debe definir su clase. La clase es la definición de un tipo de objeto. Al definir una clase lo que se hace es indicar cómo funciona un determinado tipo de objetos. Luego, a partir de la clase, podremos crear objetos de ella.
Conceptos básicos¶
Encapsulación o encapsulamiento. Una clase es una encapsulación porque constituye una caja negra que encierra tanto los datos que almacena cada objeto como los métodos que permiten manipularlos. De hecho, no se pueden definir variables (ni funciones) fuera de una clase (es decir no hay variables globales).
Abstracción u ocultación. Por medio de la abstracción conseguimos no detenernos en los detalles concretos de las cosas que no interesen en cada momento, sino generalizar y centrarse en los aspectos que permitan tener una visión global del problema.
Concepto de objeto¶
Un objeto es cualquier entidad representable en un programa informático, bien sea físico (mesa, coche) o bien sea un concepto (transferencia, educación). Un objeto en un sistema posee: una identidad, un estado y un comportamiento.
La identidad determina que cada objeto es único, aunque tengan el mismo valor. No existen dos objetos iguales. Lo que sí puede existir es dos referencias al mismo objeto.
El estado marca las condiciones de existencia del objeto dentro del programa. Lógicamente este estado puede cambiar. Un coche puede estar parado, en marcha, estropeado, funcionando, sin gasolina, etc.
El comportamiento determina cómo responde el objeto ante peticiones de otros objetos. Por ejemplo, un objeto conductor puede lanzar el mensaje arrancar a un coche. El comportamiento determina qué es lo que hará el objeto.
Los objetos se manejan por referencias, existirá una referencia a un objeto. De modo que esa referencia permitirá cambiar los atributos del objeto. Incluso puede haber varias referencias al mismo objeto, de modo que, si una referencia cambia el estado del objeto, el resto (lógicamente) mostrará esos cambios.
Los objetos pasados por valor no emplean referencias, sino que usan copias de valores concretos. En Java estos objetos son los tipos simples o primitivos: int
, char
, byte
, short
, long
, float
, double
y boolean
. El resto son todos objetos pasados por referencia (incluidos los arrays
y Strings
).