Menu
Coddy logo textTech

מערכת השאלות

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

challenge icon

אתגר

קל

בשיעור הקודם יצרת מחלקות Book ו-User עם מאפיינים בסיסיים. עכשיו הגיע הזמן לבנות מערכת השאלה מסודרת באמצעות מחלקה Library שמנהלת את כל תהליך ההשאלה.

תיצור קובץ חדש ותעדכן את הקבצים הקיימים כדי לממש את לוגיקת ההשאלה:

  • book.dart: השאר את המחלקה הקיימת Book עם isbn,‏ title,‏ author,‏ isAvailable ו-toString().
  • user.dart: השאר את המחלקה הקיימת User עם id,‏ name,‏ borrowedBooks ו-toString().
  • library.dart: צור מחלקה חדשה בשם Library שמנהלת ספרים ומשתמשים. עליה לכלול שתי רשימות: אחת עבור books ואחת עבור users. כלול את המתודות הבאות:
    • addBook(Book book) - מוסיפה ספר לאוסף הספרייה
    • registerUser(User user) - מוסיפה משתמש לספרייה
    • borrowBook(String isbn, String userId) - מוצאת את הספר ואת המשתמש, ואז אם הספר קיים וזמין והמשתמש קיים, מסמנת את הספר כלא זמין, מוסיפה אותו לספרים שהמשתמש שאל ומדפיסה userId borrowed "title". אם הספר לא קיים, הדפס Book not found. אם הספר אינו זמין, הדפס Book not available. אם המשתמש לא קיים, הדפס User not found.
    • returnBook(String isbn, String userId) - מוצאת את הספר ואת המשתמש, ואז אם שניהם קיימים והספר נמצא אצל המשתמש, מסמנת את הספר כזמין, מסירה אותו מהספרים שהמשתמש שאל ומדפיסה userId returned "title". אם הספר לא קיים, הדפס Book not found. אם המשתמש לא קיים, הדפס User not found.
  • main.dart: ייבא את כל הקבצים והדגם את מערכת ההשאלה. צור Library, הוסף שני ספרים (978-0-13-468599-1,‏ The Pragmatic Programmer,‏ David Thomas ו-978-0-596-51774-8,‏ JavaScript: The Good Parts,‏ Douglas Crockford) ורשום משתמש אחד (U001,‏ Alice Johnson). לאחר מכן:
    1. השאל את הספר הראשון לאליס
    2. נסה להשאיל את אותו הספר שוב (הפעולה אמורה להיכשל)
    3. השאל את הספר השני לאליס
    4. הדפס את אליס כדי להציג את מספר הספרים ששאלה
    5. החזר את הספר הראשון
    6. הדפס שוב את אליס כדי להציג את המספר המעודכן

פלט צפוי:

U001 borrowed "The Pragmatic Programmer"
Book not available
U001 borrowed "JavaScript: The Good Parts"
User U001: Alice Johnson (2 books borrowed)
U001 returned "The Pragmatic Programmer"
User U001: Alice Johnson (1 books borrowed)

נסו בעצמכם

import 'book.dart';
import 'user.dart';
import 'library.dart';

void main() {
  // TODO: צרו מופע של Library
  
  // TODO: צרו שני ספרים:
  // - ספר 1: isbn '978-0-13-468599-1', title 'The Pragmatic Programmer', author 'David Thomas'
  // - ספר 2: isbn '978-0-596-51774-8', title 'JavaScript: The Good Parts', author 'Douglas Crockford'
  
  // TODO: הוסיפו את שני הספרים לספרייה
  
  // TODO: צרו משתמש עם id 'U001' ועם השם 'Alice Johnson'
  
  // TODO: רשמו את המשתמש בספרייה
  
  // TODO: השאילו ל-Alice את הספר הראשון
  
  // TODO: נסו להשאיל שוב את אותו הספר (הפעולה אמורה להיכשל עם 'Book not available')
  
  // TODO: השאילו ל-Alice את הספר השני
  
  // TODO: הדפיסו את Alice כדי להציג את מספר הספרים ששאלה
  
  // TODO: החזירו את הספר הראשון
  
  // TODO: הדפס את Alice שוב כדי להציג את הספירה המעודכנת
}

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

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