Menu
Coddy logo textTech

בנאים בעלי שם

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

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

התחביר משתמש בשם המחלקה ואחריו נקודה ושם הבנאי:

class Point {
  int x;
  int y;

  // בנאי רגיל
  Point(this.x, this.y);

  // בנאי בעל שם לנקודת הראשית
  Point.origin() : x = 0, y = 0;

  // בנאי בעל שם המבוסס על ערך יחיד
  Point.diagonal(int value) : x = value, y = value;
}

כל בנאי בעל שם מספק דרך ברורה וקריאה ליצור אובייקטים:

Point p1 = Point(3, 5);
Point p2 = Point.origin();
Point p3 = Point.diagonal(10);

print('p1: (${p1.x}, ${p1.y})'); // p1: (3, 5)
print('p2: (${p2.x}, ${p2.y})'); // p2: (0, 0)
print('p3: (${p3.x}, ${p3.y})'); // p3: (10, 10)

בנאים בעלי שם הופכים את הקוד שלך לביטוי יותר. במקום לנחש מה המשמעות של Point(0, 0), ‏Point.origin() מעביר מיד את הכוונה. התבנית הזו נפוצה בספריות Dart ועוזרת ליצור קוד שמתעד את עצמו.

challenge icon

אתגר

קל

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

תארגנו את הקוד בשני קבצים:

  • temperature.dart: הגדירו מחלקת Temperature עם משתנה מופע double celsius. המחלקה שלכם צריכה לספק שלוש דרכים ליצירת טמפרטורה:
    • בנאי רגיל Temperature(this.celsius) שמקבל ישירות ערך במעלות צלזיוס
    • בנאי בעל שם Temperature.fromFahrenheit שמקבל ערך במעלות פרנהייט וממיר אותו למעלות צלזיוס באמצעות הנוסחה: (fahrenheit - 32) * 5 / 9
    • בנאי בעל שם Temperature.freezing() שיוצר טמפרטורה בנקודת הקיפאון (0 מעלות צלזיוס)
    הוסיפו מתודה display() שמדפיסה: [celsius]C
  • main.dart: ייבאו את מחלקת הטמפרטורה שלכם וצרו שלושה אובייקטים של טמפרטורה:
    • אחד באמצעות הבנאי הרגיל עם 25.0
    • אחד באמצעות fromFahrenheit עם 98.6
    • אחד באמצעות freezing()
    קראו ל-display() עבור כל טמפרטורה, לפי הסדר שמופיע למעלה.

פורמט הפלט הצפוי:

25.0C
37.0C
0.0C

נסו בעצמכם

import 'temperature.dart';

void main() {
  // TODO: ליצור אובייקט Temperature באמצעות הבנאי הרגיל עם 25.0
  
  // TODO: ליצור אובייקט Temperature באמצעות fromFahrenheit עם 98.6
  
  // TODO: ליצור אובייקט Temperature באמצעות freezing()
  
  // TODO: לקרוא ל-display() על כל אובייקט Temperature לפי הסדר
}
quiz iconבחנו את עצמכם

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

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

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