class Animal {
String hierarquia = "";
Animal() {
hierarquia = "Animal";
}
}
class Passaro extends Animal {
String qualFamilia() {
return "Passaro";
}
Passaro() {
hierarquia = "Passaro filho de " + super.hierarquia;
}
}
class Papagaio extends Passaro {
String quemEh() => "Papagaio";
}
class Pardal extends Passaro {
String quemEh() => "Pardal";
Pardal() {
print(
hierarquia = runtimeType.toString() + " filho de " + super.hierarquia);
}
}
class Mamifero extends Animal {
String qualFamilia() => "Mamifero";
}
class Cachorro extends Mamifero {
String quemEh() => "Cachorro";
}
class Baleia extends Mamifero {
String quemEh() => "Baleia";
}
class Leao extends Mamifero {
String quemEh() => "Leao";
Leao() {
print(
hierarquia = runtimeType.toString() + " filho de " + super.hierarquia);
}
}
void main(List<String> args) {
Animal x0125 = Animal();
print(x0125.hierarquia);
Passaro canarinho = Passaro();
print(canarinho.hierarquia);
//Leao y1254 = Leao();
//print(y1254.quemEh());
//print(y1254.qualFamilia());
Pardal tigre = Pardal();
}
Abstract Factory
Foto por Toa Heftiba em Unsplash Imagine que você está criando um simulador de loja de mobílias. Seu código consiste de classes que representam: Uma família de produtos relacionados, como: Cadeira, Sofá e MesaDeCentroVárias variantes dessa família: Moderno, Vitoriano...