Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save karabanovbs/673076cc38543f4826fc8a86ec5d7bf7 to your computer and use it in GitHub Desktop.
Save karabanovbs/673076cc38543f4826fc8a86ec5d7bf7 to your computer and use it in GitHub Desktop.
// 2.7 Миксины
// Для реализации используйте классы из предыдущего задания. Транспортные средства, наследуемые от класса Car приходят в движения от двигателя внутреннего сгорания. На велосипед двигатель установить нельзя.
// Напишите миксин, который реализует двигатель только у наследников Car
// Задайте свойство enginePower: int с произвольным значением - мощность двигателя
// Напишите функцию runEngine которая выводит строку "Двигатель работает. Максимальная скорость = мощности двигателя / вес автомобиля.
// В Truck и SportCar в методе run выполните метод runEngine
abstract class Car with Painter {
double weight;
void run();
}
class Truck extends Car with Engine {
Truck() {
setColor(Colors.blue);
enginePower = 1000;
}
@override
double get weight => 10;
@override
void run() {
runEngine();
}
@override
String toString() => "Грузовик $colorName";
}
class Sportcar extends Car with Engine {
@override
double get weight => 2;
@override
void run() {
runEngine();
}
Sportcar() {
setColor(Colors.red);
enginePower = 550;
}
String toString() => "Спорткар $colorName";
}
class Bike with Painter {
Bike() {
setColor(Colors.green);
}
String toString() => "Велосипед $colorName";
}
enum Colors { red, green, blue }
mixin Painter {
String colorName;
setColor(Colors color) {
switch (color) {
case Colors.red:
colorName = 'red';
break;
case Colors.green:
colorName = 'green';
break;
case Colors.blue:
colorName = 'blue';
break;
}
}
}
mixin Engine on Car {
int enginePower;
runEngine() {
print(
"Двигатель работает. Максимальная скорость = $enginePower / $weight.");
}
}
void main() {
print(Truck()..runEngine());
print(Sportcar()..runEngine());
print(Bike());
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment