Meu professor começou a dar aula de java com diagramas e mandou que pesquisasemos o padrão facade e implementasse:
Implemente um exemplo de Façade, utilize no mínimo 3 subsistemas que :
? Convertem a temperatura de Farenheit para Celsius
? Informam se é um dia quente ou dia frio
? Dá dicas de moda, por exemplo, se o dia for quente e for quarta-feira e o usuário for mulher usar vestido amarelo.
Eu modelei mais ou menos os diagramas , mas sou zero a esquerda no netbeans…
Preciso de um exemplo de um destes três tópicos pra eu saber como ele que que o netbeans apresente esta implementação…
Não sei muito de chamar metodos e classes ainda…
To meio perdido como fazer?!
:idea: Use if else que funciona :idea:
:thumbup:
Olá CristianoRSul!
Poste aqui o código que você tentou fazer.
Acredito que seu professor já tenha ensinado o básico (criar uma classe, método principal, etc).
Abraços!
Suelengc…fiz assim mas não sei como chamar no main…a estrutura é padrão facade.
Pensei em criar dois metodos e chamar no main…informando o tempo ex:
public class Main {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
System.out.println("O tempo...");
//como chamar o temppo aqui ???
}
}
class Tempo {
static void Esquentar(String string) {
System.out.println("O tempo ficou bommm..");
}
static void Esfriar(String string) {
System.out.println("O tempo piorou..");
}
}
public class TempoFacade {
public static void TipoTempoBom(){
Tempo.Esfriar("RUIM");
Tempo.Esquentar("BOM");
}
}
Olá CristianoRSul!
Respondendo sua pergunta (em comentário no código), para chamar o “tempo” você tem que:
Primeiro criar uma instância da classe (pois não se trata de uma classe estática):
TempoFacade tempoFacade = new TempoFacade();
Depois a partir do objeto criado, chamar o método:
tempoFacade.TipoTempoBom();
[color=red]Correção: Eu não tinha percebido (tinha tirado no meu teste rs) mas o KamikazeBr me avisou. O método TipoTempoBom é static então não precisa instanciar a classe, logo, a chamada ao método ficaria conforme abaixo:[/color]
TempoFacade.TipoTempoBom();
Detalhe: você pode usar outra IDE que não o Netbeans, tal como o Eclipse, isso vai de gosto pessoal.
Mas acho que este seu código não representa muito bem o padrão facade.
Eu fiz o abaixo, dá uma olhada (falta implementar uns pedaços) e vê se entende. Qualquer coisa pergunta aqui ok!?
public class TesteFacade {
public static void main(String[] args) {
Facade facade = new Facade();
facade.DiaDeHoje(70);
}
}
class SubSistemaTemperatura {
int ConverteFahenheitEmCelsius(int temperaturaEmFarenheit){
//faz a conversão e devolve a temperatura em celsius
int grausCelsius = 0;
System.out.println("A temperatura de hoje será de " + grausCelsius + " °C.");
return grausCelsius;
}
}
class SubSistemaClima {
void getClima(int temperaturaEmCelsius){
if (temperaturaEmCelsius > 19) {
System.out.println("O tempo hoje será quente.");
} else {
System.out.println("O tempo hoje será frio.");
}
}
}
class SubSistemaDicasDeModa {
void getDicasDeModa(){
//implementação aqui
System.out.println("As dicas de moda de hoje são...");
}
}
class Facade {
private SubSistemaClima subSistemaClima = new SubSistemaClima();
private SubSistemaTemperatura subSistemaTemperatura = new SubSistemaTemperatura();
private SubSistemaDicasDeModa subSistemaDicasDeModa = new SubSistemaDicasDeModa();
public void DiaDeHoje(int temperaturaEmFarenheit){
int temperaturaEmCelsius = 0;
//Faz conversão de °F para °C
temperaturaEmCelsius = subSistemaTemperatura.ConverteFahenheitEmCelsius(temperaturaEmFarenheit);
//Verifica o clima do dia
subSistemaClima.getClima(temperaturaEmCelsius);
//Busca dicas de moda
subSistemaDicasDeModa.getDicasDeModa();
}
}
Abraços!
creio que quando se trata de exercicios de faculdade e escolas técnicas, o ideal não seria ficar dando mastigado.
Bha…valeu…tive outra visão com a sua postagem!
Era muito alem do que eu imaginei…mas compreendi as chamadas dos metodos…algumas coisas vou dar uma pesquisada e ler mais sobre.
Muito Obrigado !!!
CristianoRSul,
Para entender melhor os padrões, primeiro entenda o que é um padrão efetivamente, para isso procure sobre Christopher Alexander (quem criou os primeiros padrões - não sobre software).
Sobre os padrões de projetos especificamente, tem o site DoFactory que tem muitos exemplos e é bem direto. Os exemplos estão em C# mas acredito que dá pra você entender. Segue o link sobre o Facade http://www.dofactory.com/Patterns/PatternFacade.aspx
JuniorMaia,
Concordo com você, e não foi essa minha intenção. Tanto que faltam algumas implementações no código. Mas talvez eu tenha mostrado um pouco mais do que devia… vou me policiar mais
Abraços!