Sobes.tech
Junior

Jaké aspekty objektově orientovaného programování jsou přítomny v jazyce Dart?

sobes.tech AI

Odpověď od AI

V Dartu jsou následující aspekty OOP:

  • Třídy a objekty: Možnost definovat třídy s poli a metodami, vytvářet instance tříd (objekty).
  • Zapouzdření: Skrýt detaily implementace pomocí modifikátorů přístupu (_ pro soukromé členy) a getter/setter metod.
  • Dědičnost: Rozšířit funkčnost stávajících tříd pomocí klíčového slova extends.
  • Polymorfismus: Možnost zpracovávat objekty různých tříd jednotně přes společné rozhraní nebo základní třídu.
  • Abstrakce: Vytváření abstraktních tříd a rozhraní pro definování kontraktů.

Příklad třídy v Dart:

class Animal {
  String _name; // Privátní pole

  Animal(this._name); // Konstruktor

  String get name => _name; // Getter

  void makeSound() {
    print('Obecný zvuk zvířete'); // Metoda
  }
}

Příklad dědičnosti:

class Dog extends Animal {
  Dog(String name) : super(name); // Volání konstruktoru základní třídy

  @override // Přepsání metody základní třídy
  void makeSound() {
    print('Haf!');
  }
}

Příklad polymorfismu:

void makeAnimalSound(Animal animal) {
  animal.makeSound(); // Volání metody makeSound(), která může být odlišná pro různé typy Animal
}

// Použití:
// makeAnimalSound(Dog('Buddy')); // Vytiskne "Haf!"

Dart také podporuje mixiny pomocí klíčového slova with, což umožňuje opakované použití kódu tříd bez přímé dědičnosti.