Desenvolva uma classe Televisão e uma classe ControleRemoto que podem controlar o volume e trocar os canais da televisão.
O controle de volume permite aumentar ou diminuir a potência do volume de som em uma unidade de cada vez, no intervalo de 0 a 50.
O controle de canal permite aumentar ou diminuir o número do canal em uma unidade, porém, também possibilita trocar para um canal específico, no intervalo de 1 a 500.
Os canais disponíveis são apenas os canais cujos números sejam divisíveis por 3 ou por 5. Caso o usuário selecione um canal inválido, a Televisão deverá selecionar o próximo canal válido.
Desenvolva a solução solicitada, apresentando a modelagem do projeto em Unified Modeling Language (UML) e a sua implementação.
/**
* Copyright (C) 2009/2024 - Cristiano Lehrer (cristiano@ybadoo.com.br)
* Ybadoo - Solucoes em Software Livre (www.ybadoo.com.br)
*
* Permission is granted to copy, distribute and/or modify this document
* under the terms of the GNU Free Documentation License, Version 1.3
* or any later version published by the Free Software Foundation; with
* no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
* A copy of the license is included in the section entitled "GNU
* Free Documentation License".
*/
package com.ybadoo.tutoriais.poo;
import java.io.Serializable;
/**
* Classe para representar uma televisao
*/
public class Televisao implements Serializable
{
/**
* Identificador de serialicacao da classe
*/
private static final long serialVersionUID = 1L;
/**
* Canal atual da televisao
*/
private int canal;
/**
* Volume atual da televisao
*/
private int volume;
/**
* Construtor padrao
*/
public Televisao()
{
this(0, 0);
}
/**
* Construtor para inicializar o canal e o volume da televisao
*
* @param canal canal atual da televisao
* @param volume volume atual da televisao
*/
public Televisao(int canal, int volume)
{
setCanal(canal);
setVolume(volume);
}
/**
* Incrementar o canal em uma unidade
*/
public void addCanal()
{
setCanal(getCanal() + 1);
}
/**
* Incrementar o volume em uma unidade
*/
public void addVolume()
{
setVolume(getVolume() + 1);
}
/**
* Retornar o canal atual da televisao
*
* @return canal atual da televisao
*/
public int getCanal()
{
return this.canal;
}
/**
* Retornar o volume atual da televisao
*
* @return volume atual da televisao
*/
public int getVolume()
{
return this.volume;
}
/**
* Configurar o canal atual da televisao
*
* @param canal canal atual da televisao
*/
public void setCanal(int canal)
{
if((canal < 1) || (canal > 500))
{
canal = 1;
}
for(int index = canal; index <= 500; index++)
{
if(((index % 3) == 0) || ((index % 5) == 0))
{
this.canal = index;
break;
}
}
System.out.println("Canal: " + getCanal());
}
/**
* Configurar o volume atual da televisao
*
* @param volume volume atual da televisao
*/
private void setVolume(int volume)
{
if((volume >= 0) && (volume <= 50))
{
this.volume = volume;
}
System.out.println("Volume: " + getVolume());
}
/**
* Decrementar o canal em uma unidade
*/
public void subCanal()
{
setCanal(getCanal() - 1);
}
/**
* Decrementar o volume em uma unidade
*/
public void subVolume()
{
setVolume(getVolume() - 1);
}
}
/**
* Copyright (C) 2009/2024 - Cristiano Lehrer (cristiano@ybadoo.com.br)
* Ybadoo - Solucoes em Software Livre (www.ybadoo.com.br)
*
* Permission is granted to copy, distribute and/or modify this document
* under the terms of the GNU Free Documentation License, Version 1.3
* or any later version published by the Free Software Foundation; with
* no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
* A copy of the license is included in the section entitled "GNU
* Free Documentation License".
*/
package com.ybadoo.tutoriais.poo;
import java.io.Serializable;
/**
* Classe para representar o controle remoto de uma televisao
*/
public class ControleRemoto implements Serializable
{
/**
* Identificador de serialicacao da classe
*/
private static final long serialVersionUID = 1L;
/**
* Instancia da televisao controlada pelo controle remoto
*/
private Televisao televisao;
/**
* Construtor padrao
*/
public ControleRemoto()
{
this.televisao = new Televisao();
}
/**
* Incrementar o canal em uma unidade
*/
public void addCanal()
{
this.televisao.addCanal();
}
/**
* Incrementar o volume em uma unidade
*/
public void addVolume()
{
this.televisao.addVolume();
}
/**
* Retornar o canal atual da televisao
*
* @return canal atual da televisao
*/
public int getCanal()
{
return this.televisao.getCanal();
}
/**
* Retornar o volume atual da televisao
*
* @return volume atual da televisao
*/
public int getVolume()
{
return this.televisao.getVolume();
}
/**
* Configurar o canal atual da televisao
*
* @param canal canal atual da televisao
*/
public void setCanal(int canal)
{
this.televisao.setCanal(canal);
}
/**
* Decrementar o canal em uma unidade
*/
public void subCanal()
{
this.televisao.subCanal();
}
/**
* Decrementar o volume em uma unidade
*/
public void subVolume()
{
this.televisao.subVolume();
}
/**
* Metodo principal da linguagem de programacao Java
*
* @param args argumentos da linha de comando (nao utilizado)
*/
public static void main(String[] args)
{
ControleRemoto controle = new ControleRemoto(); // Canal: 3 Volume: 0
controle.addCanal(); // Canal: 5
controle.addCanal(); // Canal: 6
controle.addCanal(); // Canal: 9
controle.addVolume(); // Volume: 1
controle.subVolume(); // Volume: 0
controle.subVolume(); // Volume: 0
controle.setCanal(499); // Canal: 500
controle.addCanal(); // Canal: 3
controle.addCanal(); // Canal: 5
}
}