1
resposta

[Projeto] Polimorfismo

void main() {
  Filme filme1 = Filme("shoping", 4, "3D", 20, "Guardioes da Galaxia", 122);
  Sala xd1 = Sala("shoping", 4, "XD", 20);
  Filme filme2 = Filme("shoping", 4, "normal", 10, "Shazam", 132);

  filme1.calcpreco("3D");
  filme1.apresentarsala();
  filme1.comecarofilme();
  xd1.calcpreco("XD");
  xd1.apresentarsala();
  filme2.apresentarsala();
  filme2.comecarofilme();



}
class Cinema{
  String local;
  int qtdsalas;

  Cinema(this.local,this.qtdsalas);
  cinemadados(){
    print("O cinema fica em $local e possui $qtdsalas a seu dispor");
  }
}
class Sala extends Cinema implements Filmeopc{
  String Tipodesala;
  int precoing;
  Sala(String local,int qtdsalas,this.Tipodesala,this.precoing) : super(local,qtdsalas);

  calcpreco(Tipodesala){
    if(Tipodesala == "3D" || Tipodesala == "XD"){
      precoing += 10 ;
    }
    return precoing;
  }
  @override
  void apresentarsala(){
    print("a sala é $Tipodesala e tem preco de ingresso a: $precoing");
  }

  @override
  void comecarofilme() {
    print("ainda nao ha filme para comecar");
  }
}
class Filme extends Sala {
  String nome;
  int duracao;

  Filme(String local,int qtdsalas,String Tipodesala,int precoing,this.nome,this.duracao) : super(local, qtdsalas, Tipodesala,precoing) ;

  @override
  void comecarofilme(){
    print("O filme $nome esta comecando");
  }
  @override
  void apresentarsala(){
    print("o filme $nome tem  duração de $duracao mins, e esta sendo exibido em uma sala $Tipodesala com ingresso a $precoing");
  }
}
abstract class Filmeopc{
  //apresentar sala
  void apresentarsala();
  //comecar o filme
  void comecarofilme();

}
1 resposta

Fala Yago, de boa ?

Cara, existe alguns pequenos problemas de lógica nessa implementação que tu fez, mas calma é super normal no começo a gente ir errando e tropeçando até pegar o fluxo das coisas...

Pensa assim, pra você usar herança, tu precisa falar que x coisa é um y coisa... por exemplo: Ortopedia é uma Especialização médica, então nesse cenário, eu teria uma classe Ortopedia que iria herdar de EspecializacaoMedica, faz sentido ?

Olhando teu caso agora, tu criou uma classe chamada Cinema, ai tu depois disse que Sala é um Cinema, percebe que não é bem isso ? Nesse caso o que você queria dizer é que no cinema você tem salas, esse tipo de evento que trás caracteristicas de um objeto, devemos transformar em atributos da classe, então na sua classe Cinema, devia ter uma lista de salas, e o mesmo padrão se repete para sua classe filme, no caso voce disse que é uma sala, mas no caso a sala tem um filme passando...