Menu
Coddy logo textTech

סיכום – מערכת פרופילי משתמשים

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

challenge icon

אתגר

קל

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

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

  • user_profile.dart: הגדר מחלקה בשם UserProfile שמייצגת חשבון משתמש. חשוב איזה מידע חיוני (כמו שם משתמש) ואיזה מידע אופציונלי (כמו ביוגרפיה או מספר טלפון). המחלקה שלך צריכה לכלול:
    • String username שאינו יכול להיות null — לכל משתמש חייב להיות שם משתמש
    • String email שאינו יכול להיות null — לכל משתמש חייבת להיות כתובת אימייל
    • String? displayName שיכול להיות null — משתמשים עשויים להעדיף להציג שם אחר
    • String? bio שיכול להיות null — לא כולם כותבים ביוגרפיה
    • int? age שיכול להיות null — גיל הוא מידע אישי אופציונלי
    • בנאי המשתמש בפרמטרים בעלי שם עם required עבור username ו-email
    • מתודה getDisplayIdentity() שמחזירה את השם המוצג אם הוגדר, ואחרת מחזירה את שם המשתמש באמצעות ??
    • מתודה getBioPreview() שמחזירה את 20 התווים הראשונים של הביוגרפיה ואחריהם ... אם קיימת ביוגרפיה שאורכה עולה על 20 תווים, את הביוגרפיה המלאה אם אורכה 20 תווים או פחות, או null אם לא קיימת ביוגרפיה (השתמש ב-?. לגישה בטוחה)
    • מתודה setDefaultBio() שמגדירה את הביוגרפיה ל-'Hello, I am new here!' רק אם כרגע ערכה null, באמצעות ??=
    • מתודה printProfile() שמציגה את פרופיל המשתמש המלא
  • main.dart: ייבא את מחלקת פרופיל המשתמש שלך וצור כמה משתמשים כדי להדגים את כל טווח התכונות של בטיחות מפני null:
    • צור משתמש עם שם המשתמש 'alice_dev' וכתובת האימייל 'alice@code.com', ואז הגדר את השם המוצג ל-'Alice', את הביוגרפיה ל-'Software developer passionate about clean code and testing', ואת הגיל ל-28
    • צור משתמש עם שם המשתמש 'bob_builder' וכתובת האימייל 'bob@build.io', ואז הגדר רק את השם המוצג ל-'Bob'
    • צור משתמש עם שם המשתמש 'charlie99' וכתובת האימייל 'charlie@mail.net' (השאר את כל השדות האופציונליים כ-null)
    • קרא ל-setDefaultBio() עבור כל שלושת המשתמשים
    • עבור כל משתמש לפי הסדר, קרא ל-printProfile(), ואז הדפס Identity: [getDisplayIdentity()], ואז הדפס Bio preview: [getBioPreview()]

המתודה printProfile() צריכה להדפיס בפורמט הזה:

===== User Profile =====
Username: [username]
Email: [email]
Display Name: [displayName or "Not set"]
Bio: [bio or "No bio"]
Age: [age or "Not specified"]

שים לב שהביוגרפיה של Alice נשארת ללא שינוי לאחר setDefaultBio(), כי כבר יש לה ערך, בעוד ש-Charlie מקבל את הביוגרפיה כברירת מחדל. שים לב גם שתצוגת הביוגרפיה מקצרת את הביוגרפיה הארוכה יותר של Alice, אך מציגה במלואה את הביוגרפיה הקצרה יותר של Charlie, שהוגדרה כברירת מחדל.

פלט צפוי:

===== User Profile =====
Username: alice_dev
Email: alice@code.com
Display Name: Alice
Bio: Software developer passionate about clean code and testing
Age: 28
Identity: Alice
Bio preview: Software developer p...
===== User Profile =====
Username: bob_builder
Email: bob@build.io
Display Name: Bob
Bio: Hello, I am new here!
Age: Not specified
Identity: Bob
Bio preview: Hello, I am new here!
===== User Profile =====
Username: charlie99
Email: charlie@mail.net
Display Name: Not set
Bio: Hello, I am new here!
Age: Not specified
Identity: charlie99
Bio preview: Hello, I am new here!

נסו בעצמכם

import 'user_profile.dart';

void main() {
  // TODO: צרו משתמש 'alice_dev' עם כתובת אימייל 'alice@code.com'
  // הגדירו את displayName ל-'Alice'
  // הגדירו את bio ל-'Software developer passionate about clean code and testing'
  // הגדירו את age ל-28
  
  // TODO: צרו משתמש 'bob_builder' עם כתובת אימייל 'bob@build.io'
  // הגדירו רק את displayName ל-'Bob'
  
  // TODO: צרו משתמש 'charlie99' עם כתובת אימייל 'charlie@mail.net'
  // השאירו את כל השדות האופציונליים כ-null
  
  // TODO: קראו ל-setDefaultBio() עבור כל שלושת המשתמשים
  
  // TODO: עבור כל משתמש לפי הסדר (alice, bob, charlie):
  // 1. קראו ל-printProfile()
  // 2. הדפיסו "Identity: [getDisplayIdentity()]"
  // 3. הדפס "Bio preview: [getBioPreview()]"
}

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

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