void main() {
Nozes macadamia = Nozes(
nome: 'Macadâmia',
peso: 2.0,
cor: 'Branco amarelado',
diasDesdeColheita: 20,
pctOleoNatural: 50,
sabor: 'Doce',
);
Fruta banana = Fruta(
nome: 'Banana',
peso: 75,
cor: 'Amarela',
diasDesdeColheita: 20,
sabor: 'Doce',
isMadura: true,
);
Citricas limao = Citricas(
nome: 'Limão',
peso: 100,
cor: 'Verde',
diasDesdeColheita: 5,
sabor: 'Azedo',
nivelDeAzedo: 10,
);
Legume macaxeira = Legume(
nome: 'Macaxeira',
peso: 1200,
cor: 'Marrom',
);
macadamia.caracteristicasAlimento();
banana.caracteristicasAlimento();
limao.caracteristicasAlimento();
macaxeira.caracteristicasAlimento();
macaxeira.cozinharLegume();
limao.fazerSuco();
//usando os métodos abstrados
banana.pegarIngrediente();
banana.misturarIngredientes();
banana.assar();
}
class Alimento {
String nome, cor;
double peso;
Alimento({required this.nome, required this.peso, required this.cor});
void caracteristicasAlimento() {
print('Este(a) $nome pesa $peso gramas e é $cor');
}
}
class Fruta extends Alimento implements Bolo {
String sabor;
int diasDesdeColheita;
bool? isMadura;
Fruta({
required super.nome,
required super.peso,
required super.cor,
required this.diasDesdeColheita,
required this.sabor,
this.isMadura,
});
void fazerSuco() {
print('Você fez um ótimo suco de $nome');
}
@override
void pegarIngrediente() {
print('Colhendo a $nome do pé!');
}
@override
void misturarIngredientes() {
print('Hora de misturar o $nome com os outros ingredientes do bolo!');
}
@override
void assar() {
print('Hora de colocar o bolo de $nome para assar');
}
}
class Citricas extends Fruta {
int nivelDeAzedo;
Citricas({
required super.nome,
required super.peso,
required super.cor,
required super.diasDesdeColheita,
required super.sabor,
required this.nivelDeAzedo,
});
void mostrarNivelDeAzedo() {
print('Você fez um ótimo suco de $nome');
}
}
class Legume extends Alimento {
bool? isPrecisaCozinhar;
Legume({
required super.nome,
required super.peso,
required super.cor,
this.isPrecisaCozinhar,
});
void cozinharLegume() {
print('Pronto! o $nome está cozinhando');
}
}
class Nozes extends Fruta {
double pctOleoNatural;
Nozes(
{required super.nome,
required super.peso,
required super.cor,
required super.diasDesdeColheita,
required super.sabor,
required this.pctOleoNatural});
}
abstract class Bolo {
void pegarIngrediente();
void misturarIngredientes();
void assar();
}