Menu
Coddy logo textTech

יסודות הבנאי

חלק מהיחידה תכנות מונחה עצמים במסלול ה-Dart של Coddy. שיעור 8 מתוך 110.

בנאי הוא מתודה מיוחדת שרצה באופן אוטומטי כשאתם יוצרים אובייקט חדש. היא מאתחלת את משתני המופע של האובייקט ברגע יצירתו.

הנה דוגמה למחלקה עם בנאי:

class Dog {
  String name;
  String breed;

  Dog(String name, String breed) {
    this.name = name;
    this.breed = breed;
  }
}

לבנאי יש שם זהה לשם המחלקה. מעבירים פרמטרים כשיוצרים את האובייקט.

צרו אובייקטים באמצעות העברת ארגומנטים לבנאי:

Dog rex = Dog('Rex', 'German Shepherd');
Dog buddy = Dog('Buddy', 'Golden Retriever');

גשו למשתנים שהוגדרו על ידי הבנאי:

print(rex.name);
print(rex.breed);
print(buddy.name);
print(buddy.breed);

פלט:

Rex
German Shepherd
Buddy
Golden Retriever

Dart מציעה גם תחביר מקוצר לבנאי, שמשתמש ישירות ב-this.variableName ברשימת הפרמטרים:

class Dog {
  String name;
  String breed;

  // כתיב מקוצר: מקצה אוטומטית את הפרמטרים למשתני המופע
  Dog(this.name, this.breed);
}

שתי הגרסאות מפיקות את אותה תוצאה. הצורה המקוצרת היא תכונה פופולרית של Dart שמייתרת את הצורך לכתוב this.name = name באופן ידני.

אפשר גם להוסיף ערכי ברירת מחדל לפרמטרים:

class Cat {
  String name;
  int age;

  Cat(this.name, [this.age = 1]); // ערך ברירת המחדל של age הוא 1
}

Cat fluffy = Cat('Fluffy', 3);
Cat whiskers = Cat('Whiskers'); // ערך ברירת המחדל של age הוא 1

print('${fluffy.name} is ${fluffy.age}');    // Fluffy בן 3
print('${whiskers.name} is ${whiskers.age}'); // Whiskers בן 1

נקודה מרכזית: בנאים מבטיחים שכל אובייקט מאותחל כראוי בנתונים ברגע יצירתו, וכך חוסכים ממך להגדיר משתנים באופן ידני לאחר מכן.

challenge icon

אתגר

קל

ניתנו לך קובצי PHP (book.dart ו-driver.dart) כדי לממש מערכת ספרים.

המשימות שלך:

  • השלם את המחלקה Book בקובץ book.dart על ידי הוספת בנאי שמאתחל את title, את author ואת pages: השתמש בתחביר המקוצר של Dart Book(this.title, this.author, this.pages);
  • בקובץ driver.dart, צור אובייקט Book עבור 'Harry Potter' מאת 'J.K. Rowling' עם 400 עמודים

פעל לפי הערות TODO בכל קובץ.

נסו בעצמכם

import 'book.dart';

void main() {
  // TODO: צרו אובייקט Book עם:
  // title: 'Harry Potter', author: 'J.K. Rowling', pages: 400
  Book myBook = ?;

  print("'${myBook.title}' by ${myBook.author}, ${myBook.pages} pages");
}
quiz iconבחנו את עצמכם

השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.

כל השיעורים ביחידה תכנות מונחה עצמים

תרגלו בעצמכם: קומפיילר Dart אונליין