Sobes.tech
Junior

Ποια στοιχεία αντικειμενοστραφούς προγραμματισμού υπάρχουν στη γλώσσα Dart;

sobes.tech AI

Απάντηση από AI

Στο Dart, υπάρχουν τα ακόλουθα στοιχεία αντικειμενοστραφούς προγραμματισμού:

  • Κλάσεις και αντικείμενα: Η δυνατότητα ορισμού κλάσεων με πεδία και μεθόδους, δημιουργία στιγμιότυπων κλάσεων (αντικειμένων).
  • Εγκλεισμός: Απόκρυψη λεπτομερειών υλοποίησης μέσω τροποποιητών πρόσβασης (_ για ιδιωτικά μέλη) και μεθόδων 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, που επιτρέπει την επανάχρηση κώδικα κλάσεων χωρίς άμεση κληρονομικότητα.