Clases y Objetos

POO (Programación Orientada a Objetos)

La POO (Programación Orientada a Objetos) trabaja con una colección de objetos que se crean, interaccionan entre sí y dejan de existir cuando ya no son útiles durante la ejecución de un programa. Las aplicaciones informáticas, con el paso del tiempo han ido adquiriendo más complejidad, la cual es más manejable cuando se descompone y se organiza en piezas pequeñas y simples: los objetos.

Un programa en Java usa clases y objetos. Las clases se pueden ver como una plantilla que representa un esquema simplificado. Una clase equivale a una representación abstracta de un conjunto de objetos que comparten los mismos atributos y comportamientos.

Un objeto es una instancia de una clase, que tiene una identidad propia y un estado. La identidad del objeto se define a través de su identificador, mientras que el estado se define por el valor de sus atributos. El comportamiento de un objeto viene determinado por el comportamiento de la clase a la que pertenece.

Clases

Una clase se define mediante el uso de la palabra reservada class seguido del nombre que vayamos a dar a la clase, con restricciones; el nombre de la clase debe empezar por una letra o carácter en mayúscula. En caso de usar nombres compuestos cada palabra, su primer carácter será en mayúscula. Por ejemplo imagina las clases Circulo, Persona, Coche …. O bien VagonTren.

Por ejemplo vamos a definir la clase Circulo, la cual se va a componer de tres atributos básicos que son: radio y coordenadas (x,y) tal y  como se puede ver a continuación:

Una vez que hemos definido la clase es cuando se pueden crear objetos a partir de la clase. A la creación de un objeto se le conoce con el nombre de instanciación. De ahí que anteriormente se dijo que un objeto es una instancia de una clase y el término instancia y objeto se usan indistintamente. Por ejemplo observa el siguiente código:

Pero para crear y asignar un espacio en memoria al objeto es necesario realizar la instanciación haciendo uso del operador new tal y como se ve a continuación:

Objetos

Un objeto es un recurso dinámico que se crea y se almacena en memoria durante un tiempo determinado. A los objetos también se les conoce con el nombre de instancias de clase porque realmente esto es lo que son, una copia de la clase con unos valores determinados.

Una clase la podríamos definir como la plantilla a partir de la cual se va a generar el objeto.

Como  ejemplo,  podríamos  definir  una clase  Cliente  donde  declararíamos  todas  las propiedades y métodos comunes a todos los clientes. Pues bien, un objeto o instancia de  tipo  cliente  sería  un  cliente  personalizado  con  su  propio  Nif,  su  nombre,  su dirección, …etc.

La  clase  es  el archivo  .java  para  definir  un  cliente  y los  objetos  son  los recursos dinámicos que se generan en la memoria.

El ciclo de vida de un objeto comienza con su declaración, su instanciación y su uso en los programas java, hasta que finalmente desaparece. Cuando el objeto desaparece, Java libera la memoria asignada al mismo y la reutiliza. El programador o desarrollador no debe de preocuparse en liberar la memoria que usan los objetos.

DECLARACION  DE CLASES

Para declarar una clase nos debemos ajustar a la sintaxis de Java. Dicha sintaxis nos indica que el archivo en el cual declaramos la clase  se debe seguir este orden.

  • Declaración del  paquete;  Un  paquete  cumple  una  función  similar  a  una carpeta en Windows. El paquete nos sirve para organizar nuestros recursos y además poder implementar niveles de acceso como veremos más adelante.
  • Importaciones; En una clase podremos utilizar otras clases ya creadas. Estas pueden ser  del  propio  API    o  también  clases  desarrolladas  por  terceras personas. Para poder acceder a otras clases es necesario importarlas previamente.
  • Declaración de la clase; Aquí se definirán los recursos de la clase.

 

Como vemos en el ejemplo, una clase puede tener los siguientes recursos:

Propiedades;  Las propiedades  o también llamadas atributos o campos recogen las características de la clase. Según nuestro ejemplo una persona se representa por su nombre, teléfono nif  y edad.

Constructores; Los constructores son un tipo de método especifico que se invocará cada vez que vayamos a crear un objeto o instancia de tipo persona.

Métodos;  Son las acciones  que podremos  llevar a cabo sobre  una persona.  En este caso, imprimir en consola sus datos.

Declaración de propiedades

Una propiedad se entiende como una variable global a la cual se puede acceder desde cualquier otro recurso dentro de la misma clase y dependiendo del modo de acceso, también se podrá acceder a ella desde otras clases.

La sintaxis para declarar una propiedad es la siguiente:

acceso tipo nombreAtributo;

El acceso puede ser:

  • prívate.- son aquellos que solamente se pueden acceder desde la propia clase que los define.
  • protected .- son aquellos que se pueden acceder desde la propia clase que los define y desde sus subclases.
  • public – son aquellos que se pueden acceder libremente desde otras clases.

El tipo puede ser un tipo primitivo de Java o un identificar de  una clase.

El nombre del atributo debe de cumplir las normas de los identificadores y se recomienda usar sustantivos que representen la información que almacenan.

Declaración de métodos

Utilizamos  los  métodos  para  introducir  el  código  de  nuestra  aplicación.  Podremos invocar  a  un  método  tantas  veces  como  se  quiera  por  lo  cual  nos  permite  una reutilización de código para aquellas tareas repetitivas.

Igual que ocurre con las propiedades, un método se puede invocar desde otro recurso declarado en la misma clase y dependiendo de su acceso, se podrá llamar desde otras clases.

La sintaxis para declarar un método es la siguiente:

1.- si el método no devuelve ningún dato:

acceso void nombreMetodo(){
}

Ejemplos:

 

2.- si el método devuelve un dato:

acceso tipoDevuelto nombreMetodo(){
}

Ejemplos:

Como observamos en los ejemplos, cuando un método devuelve un dato incluimos la clausula return. Esta instrucción lo que hace es devolver un dato a la sentencia que ha invocado al método.

En el ejemplo del método sumar, se han incluido dos argumentos en el método. Los argumentos son los valores que recibe el método para procesarlos. Los argumentos no son obligatorios, es decir, hay métodos que declaran argumentos y métodos que no. En este último caso los paréntesis siguen siendo obligatorios.

También destacamos que todo el cuerpo del método (lógica de negocio) va encerrado entre llaves.

Al igual que los atributos los métodos también tienen visibilidad.

Visibilidad de acceso

Para  declarar  el acceso  a un miembro  de la clase  podemos  utilizar  los siguientes modos:

 

* Default es cuando no ponemos ponemos ningún identificador de acceso.

Como podemos observar están organizados de mayor a menor acceso. Expliquemos cada uno de ellos:

  • public; un  recurso  definido  como  public  se  considera  público  por  lo  cual permite el acceso desde cualquier otro recurso ya sea declarado en la misma clase, en otra clase del mismo paquete, desde una subclase (herencia que se verá   posteriormente)   o  incluso   desde   otras   clases   declaradas   en  otros paquetes.
  • protected; un recurso  definido  como protected  se considera  protegido.  Este modo permite el acceso desde cualquier otro recurso ya sea declarado en la misma clase, en otra clase del mismo paquete, desde una subclase. En este último caso es lo mismo si la subclase se encuentra en el mismo paquete o en otro.
  • default; significa  no establecer  un modo  de acceso.  De esta forma  solo se podrá invocar el recurso desde la misma clase o desde otra clase declarada en el mismo paquete.
  • private; un recurso privado solo permite el acceso desde la misma clase donde ha sido declarado.

 

 

Publicada el
Categorizado como POO