Entendi, obg eu estou começando em java e orientação tudo junto, estou ainda aprendendo, então fiz meio que como gambiarra, mas esse exercicio me confundiu pq tinha que fazer 3 classes, 1 interface, e uma classe main para chamar outra, sendo que nem precisava e isso me confundiu pacas, vlw man.
como ficou
1°
/**
* • Crie uma interface Lampada com métodos ligar() e desligar(), cujo contrato
significa simplesmente imprimir mensagens informativas na tela;
• Crie uma classe FabricaLampada que possui duas classes internas aninhadas que
implementam a interface Lampada: Incandescente e Fluorescente;
• Crie ainda um método construir(), que receba um parâmetro indicando o tipo de
lâmpada e retorne o objeto Lampada criado;
• Crie uma classe Exercicio24 com o método main(). Pergunte ao usuário qual
lâmpada ele quer construir, ligue e desligue a lâmpada.
*/
package exercicio26;
import java.util.Scanner;
public class Exercicio26 {
public static void main(String[] args) {
Scanner in= new Scanner(System.in);
Exercicio24 exe= new Exercicio24();
exe.construcao();
}
}
2°
package exercicio26;
import java.util.*;
public class Exercicio24 {
public static void main(String[] args) {
construcao();
}
public static void construcao(){
Scanner in= new Scanner(System.in);
FabricaLampada lampada = new FabricaLampada();
FabricaLampada.Incandescente lamp1 = lampada.new Incandescente();
FabricaLampada.Fluorescente lamp2 = lampada.new Fluorescente();
lampada.construir();
}
}
3°
package exercicio26;
public interface Lampada {
boolean ligar();
boolean desligar();
}
4°
package exercicio26;
import java.util.Scanner;
public class FabricaLampada {
Scanner in= new Scanner(System.in);
public class Incandescente implements Lampada{
@Override
public boolean ligar() {
return true;
}
@Override
public boolean desligar() {
return false;
}
}
public class Fluorescente implements Lampada{
@Override
public boolean ligar() {
return true;
}
@Override
public boolean desligar() {
return false;
}
}
private boolean status; //ligado ou não
public boolean getStatus() {
return status;
}
public void setStatus(boolean status) {
this.status = status;
}
public void construir(){
boolean ver= false;
do{
System.out.println("------CONSTRUÇÃO DE LAMPADA-----");
System.out.println("Digite qual lampada gostaria de criar");
System.out.println("1------------------------Fluorescente");
System.out.println("2------------------------Incandescente");
int opcao= in.nextInt();
if(opcao==1){
Fluorescente nova= new Fluorescente();
System.out.println("Lampada Fluorescente criada com sucesso");
in.nextLine();
System.out.println("Deseja ligar (S/N)");
String dado= in.nextLine();
if (dado.equalsIgnoreCase("s")){
nova.ligar();
this.setStatus(true);
System.out.println("Lampada ligada.");
System.out.println("Status:"+this.getStatus());
}else if(dado.equalsIgnoreCase("n")){
nova.desligar();
this.setStatus(false);
System.out.println("Lampada desligada.");
System.out.println("Status:"+this.getStatus());
}
ver= true;
}else if(opcao==2){
Incandescente nova= new Incandescente();
System.out.println("Lampada Incandescente criada com sucesso");
in.nextLine();
System.out.println("Deseja ligar (S/N)");
String dado= in.nextLine();
if (dado.equalsIgnoreCase("s")){
nova.ligar();
this.setStatus(true);
System.out.println("Lampada ligada.");
System.out.println("Status:"+this.getStatus());
}else if(dado.equalsIgnoreCase("n")){
nova.desligar();
this.setStatus(false);
System.out.println("Lampada desligada.");
System.out.println("Status:"+this.getStatus());
}
ver=true;
}else{
System.out.println("Número inválido");
ver= false;
}
}while(!ver);
}
}