GUJ Discussões   :   últimos tópicos   |   categorias   |   GUJ Respostas

Exercicio basico em java netbeans


#1

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?! :frowning:


#2

:idea: Use if else que funciona :idea:

:thumbup:


#3

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!


#4

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

#5

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][b]Correção:[/b] 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!


#6

creio que quando se trata de exercicios de faculdade e escolas técnicas, o ideal não seria ficar dando mastigado.


#7

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


#8

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 :wink:

Abraços!


#9