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 16: Operativa

La palabra reservada final aplicada a un método

El televisor estándar funciona perfectamente, pero nos hemos olvidado de dos funcionalidades importantes en todo televisor. Estas son el poder encenderlo y apagarlo

Este es el Diagrama de Clases de diseño con los dos nuevos métodos

Esta es la Clase Televisor nuevamente modificada

package paqtvestandar;

public abstract class Televisor {
 private int canal;
 private int volumen = 5;

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

 public void subirCanal() {
  setCanal(canal + 1);
 }

 public void bajarCanal() {
  setCanal(canal - 1);
 }

 public int getCanal() {
  return canal;
 }

 public void setCanal(int canal) {
  if (canal < 0){
  
this.canal = 0;
 
 }
  else {
  
this.canal = canal;
 
 }
 }

 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 int getVolumen() {
  return volumen;
 }

 public abstract void usarMenu();

 public final void encender(){
  System.out.println("Televisor - encender(): estoy encendiendo el televisor");
 }

 public
final void apagar(){
  System.out.println("Televisor - apagar(): estoy apagando el televisor");
 }

}

Compilamos la Clase Televisor.

Ahora vamos a forzar un error intentando sobrescribir el método encender() en la Clase TelevisorVirtual. Descomenta dicho método y verás como el compilador se queja

package paqtvestandar;

public class TelevisorVirtual extends Televisor {
 private boolean sonido = true;

 public void setSonido(boolean valorSonido){
  sonido = valorSonido;
 }

 public boolean isSonido(){
  return sonido;
 }

 public void subirVolumen() {
  super.subirVolumen();
  if (this.isSonido() == false){
   setSonido(true);
  }
 }

 public void bajarVolumen() {
  super.bajarVolumen();
  if (isSonido() == false){
   setSonido(true);
  }
 }

 public void usarMenu(){
  System.out.println("TelevisorVirtual - usarMenu(): utilizo el menu");
 }

 public void encender(){
  System.out.println("TelevisorVirtual - encender(): estoy encendiendo el tv");
 }
}

Como podemos ver el compilador se queja diciéndonos que no podemos sobreescribir el método encender() porque éste ya está declarado como final en la Clase Televisor

Ahora comentamos el método encender() de la Clase TelevisorVirtual y compilamos la mencionada Clase.

Y finalmente añadimos la invocación a los métodos encencer() y apagar() en la Clase Aplicacion del paquete paqtvestandar

package paqtvestandar;
public class Aplicacion {

 public static void main(String[] args) {
  TelevisorVirtual tv = new TelevisorVirtual();
  tv.encender();
  tv.setCanal(3);
  System.out.println("El canal seleccionado es el: " + tv.getCanal());
  tv.subirColor();
  tv.setSonido(false);
  System.out.println("El televisor tiene el sonido: " + tv.isSonido());
  tv.subirVolumen();
  System.out.println("La posición del volumen es: " + tv.getVolumen());
  System.out.println("El televisor tiene el sonido: " + tv.isSonido());
  tv.usarMenu();
  tv.apagar();
 }
}

Al ejecutar la Clase Aplicacion nos encontramos con la siguiente salida

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 ...