Sobes.tech
Junior

Кадом ҷиҳатҳои барномасозии объектӣ дар забони Dart мавҷуданд?

sobes.tech AI

Ҷавоб аз AI

Дартда дарҳолги объектӣ-бағоятӣ равишҳои зерин мавҷуданд:

  • Классҳо ва объектҳо: Имконият барои муайян кардани классҳо бо майдонҳо ва методҳо, эҷоди намунаҳои классҳо (объектҳо).
  • Инкапсулятсия: Гузоштани тафсилоти иҷроиш тавассути модификаторҳои дастрасӣ (_ барои аъзои хусусӣ) ва методҳои getter/setter.
  • Мерос: Тавсеъ додани функсионалӣ ба классҳои мавҷуда бо истифода аз калимаи калидии extends.
  • Полиформизм: Имконият барои коркарди объектҳои класи гуногун ба таври якхела тавассути интерфейси умумӣ ё класс асосӣ.
  • Абстраксия: Эҷоди классҳои абстрактӣ ва интерфейсҳо барои муайян кардани шартномаҳо.

Масали класс дар Dart:

class Animal {
  String _name; // Майдони хусусӣ

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

  String get name => _name; // Getter

  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 инчунин қолаби mixins бо истифода аз калимаи калидии with дастгирӣ мешавад, ки имкон медиҳад кодҳои классҳоро бидуни мероси мустақим такрор истифода бурдан.