Sobes.tech
Junior

Koji aspekti objektno-orijentisanog programiranja su prisutni u jeziku Dart?

sobes.tech АИ

Одговор од АИ

U Dart-u postoje sledeći aspekti OOP:

  • Klase i objekti: Mogućnost definisanja klasa sa poljima i metodama, kreiranje instanci klasa (objekata).
  • Enkapsulacija: Sakrivanje detalja implementacije pomoću modifikatora pristupa (_ za privatne članove) i getter/setter metoda.
  • Nasleđivanje: Proširenje funkcionalnosti postojećih klasa pomoću ključne reči extends.
  • Polimorfizam: Mogućnost da se objekti različitih klasa obrađuju na jedinstven način putem zajedničkog interfejsa ili osnovne klase.
  • Apstrakcija: Kreiranje apstraktnih klasa i interfejsa za definisanje ugovora.

Primer klase u Dart-u:

class Animal {
  String _name; // Privatno polje

  Animal(this._name); // Konstruktor

  String get name => _name; // Getter

  void makeSound() {
    print('Neki opšti zvuk životinje'); // Metod
  }
}

Primer nasleđivanja:

class Dog extends Animal {
  Dog(String name) : super(name); // Pozivanje konstruktora osnovne klase

  @override // Prepisivanje metode osnovne klase
  void makeSound() {
    print('Vuf!');
  }
}

Primer polimorfizma:

void makeAnimalSound(Animal animal) {
  animal.makeSound(); // Pozivanje metode makeSound(), koja može biti različita za različite tipove Animal
}

// Upotreba:
// makeAnimalSound(Dog('Buddy')); // Ispisaće "Vuf!"

Dart takođe podržava mixine pomoću ključne reči with, što omogućava ponovno korišćenje koda klasa bez direktnog nasleđivanja.