מבנה הפרויקט
חלק מהיחידה תכנות מונחה עצמים במסלול ה-C# של Coddy. שיעור 62 מתוך 70.
אתגר
קלבואו נבנה את הבסיס לפרויקט מערכת הספרייה שלך! תיצור מבנה קבצים בסיסי שיתפתח ליישום מלא לניהול ספרייה במהלך השיעורים הבאים.
תארגן את הקוד שלך בארבעה קבצים, שלכל אחד מהם אחריות מסוימת:
Book.cs: הקובץ הזה יכיל את מודל הספר שלך. לעת עתה, צור מחלקה בשםBookבמרחב השמותLibrarySystemעם שלוש תכונות אוטומטיות:Title(string),Author(string) ו-IsAvailable(bool, עם ערך ברירת מחדלtrue). הוסף בנאי שמקבל את הכותרת ואת שם המחבר כפרמטרים.User.cs: הקובץ הזה יכיל את מודל המשתמש שלך. צור מחלקה בשםUserבאותו מרחב שמות, עם שתי תכונות:Name(string) ו-MemberId(int). הוסף בנאי שמקבל את שני הערכים.Library.cs: כאן תמוקם הלוגיקה המרכזית שלך. צור מחלקה בשםLibraryעם תכונה בשםName(string) ובנאי שיקבע את הערך שלה. הוסף מתודה בשםGetInfo()שמחזירה מחרוזת בתבנית"{Name} Library System Initialized".Program.cs: כאן תחבר את הכול. זוהי נקודת הכניסה שלך, שבה תיצור מופעים של המחלקות ותוודא שהמבנה פועל כהלכה.
תקבל שלוש קלטים:
- שם הספרייה
- רשומת ספר בתבנית
title|author - רשומת משתמש בתבנית
name|memberId
צור מופע של Library עם השם שסופק, מופע של Book עם הכותרת ושם המחבר שסופקו, ומופע של User עם השם ומזהה החבר שסופקו. לאחר מכן הדפס שלוש שורות:
- התוצאה של קריאה ל-
GetInfo()עבור הספרייה שלך - פרטי הספר בתבנית
Book: {Title} by {Author} - Available: {IsAvailable} - פרטי המשתמש בתבנית
User: {Name} (ID: {MemberId})
לדוגמה, אם הקלטים הם:
City Central
The Great Gatsby|F. Scott Fitzgerald
Alice Johnson|1001הפלט צריך להיות:
City Central Library System Initialized
Book: The Great Gatsby by F. Scott Fitzgerald - Available: True
User: Alice Johnson (ID: 1001)המבנה הזה פועל לפי עקרון האחריות היחידה — כל קובץ מטפל בנושא מסוים אחד. בשיעורים הבאים תרחיב את המחלקות האלה עם לוגיקה להשאלת ספרים, יכולת חיפוש וממשק קונסולה מלא!
נסו בעצמכם
using System;
namespace LibrarySystem
{
class Program
{
public static void Main(string[] args)
{
// קראו את הקלטים
string libraryName = Console.ReadLine();
string bookInput = Console.ReadLine();
string userInput = Console.ReadLine();
// נתחו את קלט הספר (פורמט: title|author)
string[] bookParts = bookInput.Split('|');
string bookTitle = bookParts[0];
string bookAuthor = bookParts[1];
// נתחו את קלט המשתמש (פורמט: name|memberId)
string[] userParts = userInput.Split('|');
string userName = userParts[0];
int memberId = Convert.ToInt32(userParts[1]);
// TODO: צרו מופע של Library עם שם הספרייה
// TODO: צרו מופע של Book עם הכותרת והמחבר
// TODO: צרו מופע של User עם השם ומזהה החבר
// TODO: הדפיסו את פרטי הספרייה באמצעות GetInfo()
// TODO: הדפיסו את פרטי הספר בפורמט: Book: {Title} by {Author} - Available: {IsAvailable}
// TODO: הדפיסו את פרטי המשתמש בפורמט: User: {Name} (ID: {MemberId})
}
}
}
כל השיעורים ביחידה תכנות מונחה עצמים
1יסודות התכנות מונחה העצמים
קבצים חיצונייםמרחבי שמות והנחיותמבוא למחלקות ולאובייקטיםמילת המפתח 'this'מתודות ופרמטריםשדות לעומת מאפייניםבנאיםאתחול אובייקטיםסיכום – מחשבון פשוט4ירושה
תחביר ירושה בסיסית (:)מילת המפתח 'base'מילות המפתח Virtual ו-Overrideמחלקות Sealedמחלקת הבסיס 'object'סיכום – היררכיית עובדים7תכונות מתקדמות
העמסת אופרטוריםאינדקסרים (this[])דריסת ToString()מתודות הרחבהסיכום – רשימה מותאמת אישית2מאפיינים וחברים סטטיים
מאפיינים במימוש אוטומטימאפיינים לקריאה בלבד ולכתיבה בלבדשדות ומתודות סטטייםמחלקות סטטיותחברים עם גוף ביטוי5פולימורפיזם וממשקים
פולימורפיזם בזמן קומפילציה לעומת בזמן ריצהממשק לעומת מחלקה מופשטתממשקים מרוביםממשקים מפורשיםהמרה כלפי מעלה והמרה כלפי מטהחזרה: מחשבון צורות8מושגים מתקדמים בתכנות מונחה עצמים
קומפוזיציה במקום ירושהGenerics (מחלקות ומתודות)נציגים ואירועיםמאפיינים ורפלקציהIDisposable והצהרת usingיסודות הזרקת תלויותתרגלו בעצמכם: קומפיילר C# אונליין