Sobes.tech
Junior

Кои аспекти на обектно-ориентираното програмиране присъстват в езика Dart?

sobes.tech AI

Отговор от AI

В Dart съществуват следните аспекти на ООП:

  • Класове и обекти: Възможност за дефиниране на класове с полета и методи, създаване на екземпляри от класове (обекти).
  • Инкапсулация: Скриване на детайлите за реализация чрез модификатори за достъп (_ за частни членове) и гетъри/сетъри.
  • Наследяване: Разширяване на функционалността на съществуващи класове с помощта на ключовата дума extends.
  • Полиморфизъм: Възможност за обработка на обекти от различни класове по единен начин чрез общ интерфейс или базов клас.
  • Абстракция: Създаване на абстрактни класове и интерфейси за определяне на договори.

Пример за клас в Dart:

class Animal {
  String _name; // Частно поле

  Animal(this._name); // Конструктор

  String get name => _name; // Геттер

  void makeSound() {
    print('Общ звук на животно'); // Метод
  }
}

Пример за наследяване:

class Dog extends Animal {
  Dog(String name) : super(name); // Вика конструктора на базовия клас

  @override // Презаписване на метода на базовия клас
  void makeSound() {
    print('Ууф!');
  }
}

Пример за полиморфизъм:

void makeAnimalSound(Animal animal) {
  animal.makeSound(); // Вика метода makeSound(), който може да е различен за различните типове Animal
}

// Използване:
// makeAnimalSound(Dog('Buddy')); // Ще изведе "Ууф!"

Dart също поддържа миксини с помощта на ключовата дума with, което позволява повторно използване на код на класове без директно наследяване.