Sobes.tech
Junior

Aké aspekty objektovo orientovaného programovania sú prítomné v jazyku Dart?

sobes.tech AI

Odpoveď od AI

V Dartu existujú nasledujúce aspekty objektovo orientovaného programovania:

  • Triedy a objekty: Možnosť definovať triedy s poľami a metódami, vytvárať inštancie tried (objekty).
  • Zapuzdrovanie: Skrytie detailov implementácie pomocou modifikátorov prístupu (_ pre súkromné členy) a getter/setter metód.
  • Dedičstvo: Rozšírenie funkčnosti existujúcich tried pomocou kľúčového slova extends.
  • Polymorfizmus: Možnosť spracovávať objekty rôznych tried jednotne cez spoločné rozhranie alebo základnú triedu.
  • Abstrakcia: Vytváranie abstraktných tried a rozhraní na definovanie zmlúv.

Príklad triedy v Dart:

class Animal {
  String _name; // Súkromné pole

  Animal(this._name); // Konštruktor

  String get name => _name; // Getter

  void makeSound() {
    print('Všeobecný zvuk zvieraťa'); // Metóda
  }
}

Príklad dedičstva:

class Dog extends Animal {
  Dog(String name) : super(name); // Volanie konštruktora základnej triedy

  @override // Prepisovanie metódy základnej triedy
  void makeSound() {
    print('Haf!');
  }
}

Príklad polymorfizmu:

void makeAnimalSound(Animal animal) {
  animal.makeSound(); // Volanie metódy makeSound(), ktorá môže byť odlišná pre rôzne typy Animal
}

// Použitie:
// makeAnimalSound(Dog('Buddy')); // Vypíše "Haf!"

Dart tiež podporuje mixiny pomocou kľúčového slova with, čo umožňuje opakovane používať kód tried bez priameho dedičstva.