JavaDabbaDoo.org -Tu comunidad Java parlante Fundamentos
Inicio | Cursos infosintesis.net liberados | JavaSE | Iniciación a la Orientación a Objetos paso a paso
Creación de un Televisor estándar
Paso 15: Operativa

La palabra reservada final aplicada a un atributo

Un operador de televisión por cable en sus instalaciones comerciales en una calle céntrica de una gran ciudad ha decidido emplazar varios televisores en su escaparate para que los viandantes puedan ver los programas que ofrece este operador durante las 24 horas del día.

En el mundo de los Objetos esto se puede realizar utilizando la palabra reservada final.

Este es el Diagrama de Clases de diseño que enfoca este planteamiento

Para ver en nuestro caso como el compilador se queja cuando intentamos modificar la variable de instancia CANAL, tenemos que descomentar las interacciones que intentan modificar el valor de CANAL. Este es el código una vez más modificado correspondiente a la Clase Televisor

package paqtvestandar;

public abstract class Televisor {
 private static final int CANAL=15;
 private int volumen = 5;

 public Televisor() {
 }
  
 public Televisor(int canal) {
 
setCanal(canal);
 
 

 public void subirCanal() {
  // setCanal(CANAL + 1);
 }

 public void bajarCanal() {
  // setCanal(CANAL - 1;
 }

 public int getCanal() {
  return CANAL;
 }

 public static void setCanal(int valorCanal) {
  if (valorCanal < 0){
   
// CANAL = 0;
  
}
  else {
   
// CANAL = valorCanal;
  
}
 }

 public void subirColor(){
  System.out.println("Televisor - subirColor(): estoy subiendo el color");
  subirColorAyuda();
 }

 protected void subirColorAyuda() {
  System.out.println("Televisor - subirColorAyuda(): sigo subiendo el color");
 }

 public void bajarColor(){
  System.out.println("Televisor - subirColor(): estoy bajando el color");
  bajarColorAyuda();
 }

 protected void bajarColorAyuda() {
  System.out.println("Televisor - bajarColorAyuda(): sigo bajando el color");
 }

 public void subirVolumen() {
  volumen = volumen + 1;
 }

 public void bajarVolumen() {
  volumen = volumen - 1;
 }

 public void setVolumen(int volumen) {
  if (volumen < 0){
   this.volumen = 0;
  }
  else {
   this.volumen = volumen;
  }
 }

 public int getVolumen() {
  return volumen;
 }

 public abstract void usarMenu();
}

Compilamos la Clase Televisor.

Ahora vamos a quitar los comentarios del método setCanal(...) de la Clase Televisor

 public static void setCanal(int valorCanal) {
  if (valorCanal < 0){
   
CANAL = 0;
  
}
  else {
   
CANAL = valorCanal;
  
}
 }

Como podemos ver el compilador nos indica que a una variable de tipo final no se le puede reasignar su valor

Volvemos a comentar las dos líneas que utilizan la variable de clase CANAL del método setCanal(...) de la Clase Televisor.

Ahora nos creamos un nuevo paquete llamado paqoperadorcable y una Clase llamada Aplicacion.

Este es el código correspondiente a la Clase Aplicacion del paquete paqoperadorcable

package paqoperadorcable;
import paqtvestandar.Televisor;
import paqtvestandar.TelevisorVirtual;
import paqtvfabricante.TelevisorPlasma;

public class Aplicacion {

 public static void main(String[] args) {
  TelevisorVirtual tv1 = new TelevisorVirtual();
  TelevisorVirtual tv2 = new TelevisorVirtual();
  TelevisorPlasma tv3 = new TelevisorPlasma();
  TelevisorPlasma tv4 = new TelevisorPlasma();

  
// Televisor.setCanal(5);

  System.out.println("El canal del televisor tv1 es el: " + tv1.getCanal());
  System.out.println("El canal del televisor tv3 es el: " + tv3.getCanal());

  
// tv1.subirCanal();

  System.out.println("El canal del televisor tv1 es el: " + tv1.getCanal());
  System.out.println("El canal del televisor tv3 es el: " + tv3.getCanal());
 }
}

Como podemos ver todos los televisores expuestos en el escaparate están sintonizados con el canal 15

Página anterior
Ignasi Pérez Valls
Infosintesis Solutions Group


Diciembre 2008
Dudas y comentarios: Foro [1-02] Iniciación a la Orientación a Objetos
 
 
 
 
JavaDabbaDoo.org
Tu comunidad Java parlante. Cursos abiertos, tutoriales y mucho mucho más ...