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

Añadir una funcionalidad obligada para todas las Subclases

Imaginemos que hay una normativa de calidad tipo ISO para los televisores. Esta norma nos dice que todos los televisores a partir de ahora tienen que ofrecer a los usurarios la posibilidad de acceder a sus menús y que dichos menús pueden ser implementados de forma diferente en cada televisor.

A partir de ahora decidimos que el Televisor estándar ya no va a ser funcional por sí solo, sino que va a tomar el papel de plantilla para la creación de nuevos televisores. Este es el nuevo Diagrama de Clases de diseño

Este es el código de la Clase Televisor

package paqtvestandar;

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

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

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

  public void bajarCanal() {
    canal = 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();
  }

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

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

  private 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();
}

Compilamos la Clase Televisor.

Este es el código ampliado de la Clase TelevisorVirtual

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");
  }

}

Compilamos la Clase TelevisorVirtual.

Y este es el código de la Clase Aplicacion que interactúa con una instancia de tipo TelevisorVirtual

package paqtvestandar;

public class Aplicacion {

  public static void main(String[] args) {
    TelevisorVirtual tv = new TelevisorVirtual();
    tv.setCanal(3);
    System.out.println("El canal seleccionado es el: " + tv.getCanal());
    tv.subirColor();
    tv.setSonido(false);
    System.out.println("El telvisor 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();
  }
}

Al ejecutar la Clase Aplicacion vemos como el TelevisorVirtual utiliza el menu

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