Atividade de POO

Minha professora passou essa atividade e eu n entendi o que é para fazer ao certo alguém me explicar pgtlz

Em uma sistema de imobiliária, um imóvel representa um tipo que possui endereço. Casa e Apartamento são do tipo imóvel mas possuem características distintas. A casa possui um terreno, enquanto Apartamento apresenta a informação se possui ou não elevador, se pode ou não entrada de pet, lista de áreas comuns, a taxa de condomínio e o tamanho da área privativa. BancoDeDados representa o sistema da imobiliária que armazena uma coleção de imóveis. Nessa atividade, você deve implementar todas as entidades mencionadas. Em caso de ser do tipo Classe, também devem implementar os atributos e métodos principais (construtor, get, set, equals, tostring).

Qual é a linguagem? Java?

Você precisa criar 3 classes: Imóvel, Casa e Apartamento. (Apartamento e Casa estendem de Imóvel)

E adicionar os atributos pedidos, como endereço em Imóvel; terreno em Casa; disponibilidade de elevador em Apartamento, etc.

Tentei fazer assim mas deu erro com força :sweat_smile::woman_facepalming:

public class Apartamento extends Imovel{
public String dispoelevador;
public String entradapets;
public String areascomuns;
public double taxa;

public String getDispoelevador(){
return dispoelevador;
}

public void setDispoelevador(String de){
this.dispoelevador = de;
}

public String getEntradapets(){
return entradapets;
}

public void setEntradapets(String ep){
this.entradapets = ep;
}

public String getAreascomuns(){
return areascomuns;
}

public void setAreascomuns(String ac){
this.areascomuns = ac;
}

public double getTaxa(){
return taxa;
}

public void setTaxa(double tx){
this.taxa = tx;
}

public String toString(){
return “\nApartamento {”+"\nEndereço:"+endereco+"\nDisponibilidade de elevador:"+dispoelevador+"\nEntrada de pet:"+entradapets+"\nAreas comuns:"+areascomuns+"\nTaxa:"+taxa+"\n}";
}

}

public class Casa extends Imovel{
public String terreno;

public String getTerreno(){
return terreno;
}

public void setTerreno(String terreno){
this.terreno = terreno;
}

}

public class Imovel{
public String endereco;

public String getEndereco(){
return endereco;
}

public void setEndereco(String endereco){
this.endereco = endereco;
}

}

public class Bancodedados{
Set conjunto = new HashSet();

Imovel a = new Imovel("Rua João");
Imovel b = new Imovel("Rua Sousa");
Imovel c = new Imovel("Rua ra");
Imovel d = new Imovel("Rua sa");

conjunto.add(a);
conjunto.add(b);
conjunto.add(c);
conjunto.add(d);

}

Aqui deu erro porque a classe Imovel não tem construtor que aceite esse argumento.
Teria que ter algo assim:

public class Imovel {
    private String endereco;
    public Imovel(String endereco) {
        this.endereco = endereco;
    }
}

E formata seu código aqui no fórum, para ficar melhor de ler. É só colocar o código dentro de:
```
//Codigo aqui
```

ela acabou de mandar esse link me bugou geral https://docs.google.com/drawings/d/1sAHmKiDTR11Pvo2vV401hGw2AE9FaOAcc-pYIEJJRm8/edit?usp=sharing acho q n é mais extends é implements ai jesus

implements é usado para implementar interfaces.
Então sua classe Imovel deve ser uma Interface.

public interface Imovel {
    String getEndereco();

    void setEndereco(String endereco);
}

E nas classe Apartamento e Casa vc faz:
public class Apartamento implements Imovel
public class Casa implements Imovel

public interface Imovel{
  String getEndereco();
  void setEndereco(String endereco);
  
}

public class Apartamento implements Imovel{
  public String dispoelevador;
  public String entradapets;
  public String areascomuns;
  public double taxa;


  public String getDispoelevador(){
    return dispoelevador; 
  }

  public void setDispoelevador(String de){
    this.dispoelevador = de;
  }

  public String getEntradapets(){
    return entradapets; 
  }

  public void setEntradapets(String ep){
    this.entradapets = ep;
  }

  public String getAreascomuns(){
    return areascomuns; 
  }

  public void setAreascomuns(String ac){
    this.areascomuns = ac;
  }

  public double getTaxa(){
    return taxa; 
  }

  public void setTaxa(double tx){
    this.taxa = tx;
  }

  
  public String toString(){
    return "\nApartamento {"+"\nEndereço:"+endereco+"\nDisponibilidade de elevador:"+dispoelevador+"\nEntrada de pet:"+entradapets+"\nAreas comuns:"+areascomuns+"\nTaxa:"+taxa+"\n}";
  }

  
}

public class Casa implements Imovel{
  public String terreno;

 
  public String getTerreno(){
    return terreno;
  }

  public void setTerreno(String terreno){
    this.terreno = terreno;
  }

}

public class Bancodedados{
  Set<Imovel> conjunto = new HashSet<Imovel>();

    Imovel a = new Imovel("Rua João");
    Imovel b = new Imovel("Rua Sousa");
    Imovel c = new Imovel("Rua ra");
    Imovel d = new Imovel("Rua sa");
    
    conjunto.add(a);
    conjunto.add(b);
    conjunto.add(c);
    conjunto.add(d);

    
}

ainda deu erro

Não pode instanciar interface. Tem que fazer isso com Casa ou Apartamento.

E você não implementou os métodos getEndereco e setEndereco nas classes.

como que faz isso plmds

Todos os métodos de uma interface são abstratos. Significa que toda classe que implementar uma certa interface, também terá que implementar todos os métodos disponíveis na mesma.

public interface Imovel{
  String getEndereco(); //método abstrato
  void setEndereco(String endereco); //método abstrato

Note: não escrevemos o que esses métodos fazem, só assinamos eles. Devemos escrever o que esses métodos fazem na classe que implementar essa interface.

public class Apartamento implements Imovel{ //implementa a interface Imovel
//demais implementacoes omitidas

@Override //essa anotação serve para dizer ao compilador que
//o método abaixo já existe e está sendo reescrito
String getEndereco(){ //aqui nos dizemos o que o método getEndereco deve fazer
   //codigo
}
@Override
void setEndereco(){ //mesma coisa
   //codigo
}

Imovel é uma interface, portando você não pode instancia-la (Quando você usa a palavra-chave new, você está instanciando uma classe).
Você deve instanciar as classes que implementam Imovel. Por exemplo, a classe Apartamento.

Especifique o erro que está aparecendo.

import java.util.*;

class Main {
  public static void main(String[] args) {

  
    List<Apartamento> conjunto = new ArrayList<Apartamento>();

    Apartamento a = new Apartamento("Rua João","ola","sim","Glossela,entrada",2.90f);
    Apartamento b = new Apartamento("Rua Sousa","ola","sim","Glossela,entrada",2.90f);
    Apartamento c = new Apartamento("Rua ra","ola","sim","Glossela,entrada",2.90f);
    Apartamento d = new Apartamento("Rua sa","ola","sim","Glossela,entrada",2.90f);
    
    conjunto.add(a);
    conjunto.add(b);
    conjunto.add(c);
    conjunto.add(d);
    
  }
}

public class Apartamento implements Imovel{
  private String dispoelevador;
  private String entradapets;
  private String areascomuns;
  private double taxa;

  public Apartamento(String endereco,String dispoelevador,String entradapets,String areascomuns,double taxa){
    this.endereco = endereco;
    this.dispoelevador = dispoelevador;
    this.entradapets = entradapets;
    this.areascomuns = areascomuns;
    this.taxa = taxa;

  }
  

  @Override
  public  String getEndereco(){
    return endereco;
  }

  @Override
  public void setEndereco(String endereco){
    this.endereco = endereco;
  }

  public String getDispoelevador(){
    return dispoelevador; 
  }

  public void setDispoelevador(String de){
    this.dispoelevador = de;
  }

  public String getEntradapets(){
    return entradapets; 
  }

  public void setEntradapets(String ep){
    this.entradapets = ep;
  }

  public String getAreascomuns(){
    return areascomuns; 
  }

  public void setAreascomuns(String ac){
    this.areascomuns = ac;
  }

  public double getTaxa(){
    return taxa; 
  }

  public void setTaxa(double tx){
    this.taxa = tx;
  }

  
  public String toString(){
    return "\nApartamento {"+"\nEndereço:"+getEndereco()+"\nDisponibilidade de elevador:"+dispoelevador+"\nEntrada de pet:"+entradapets+"\nAreas comuns:"+areascomuns+"\nTaxa:"+taxa+"\n}";
  }
  
}

public class Casa implements Imovel{
 private String terreno;

  @Override
  public String getEndereco(){
    return endereco;
  }

  @Override
  public void setEndereco(String endereco){
    this.endereco = endereco;
  }

  
  public String getTerreno(){
    return terreno;
  }

  public void setTerreno(String terreno){
    this.terreno = terreno;
  }

}

public interface Imovel{
  
  String getEndereco();
  void setEndereco(String endereco);
  
}


Aparece o error: cannot find symbol nas linhas 8,19,24 da classe Apartamento e nas linhas 6 e 11 da classe Casa