קטלוג ספרייה
חלק מהיחידה תכנות מונחה עצמים במסלול ה-Rust של Coddy. שיעור 60 מתוך 61.
אתגר
קלבואו נבנה מערכת קטלוג של ספרייה שמדגימה כיצד traits מאחדים סוגים שונים תחת ממשק משותף! תיצרו קטלוג שבו ספרים וכתבי עת, למרות המאפיינים השונים שלהם, יכולים כולם לתאר את עצמם באמצעות trait משותף.
תארגנו את הקוד שלכם בשלושה קבצים:
catalog.rs: הגדירו את ה-traitCatalogItemעם שיטה יחידה בשםdescriptionשמחזירהString. ה-trait הזה מגדיר את החוזה שכל פריטי הספרייה חייבים למלא.items.rs: צרו שתי structs שמממשות את ה-trait שלכם. ל-Bookישtitleו-author(שניהם Strings), ואילו ל-Magazineישname(String) ומספרissue(u32). כל struct צריכה לממש אתCatalogItemעם פורמט תיאור ייחודי משלה.main.rs: ייבאו את שני המודולים וצרו מופעים של Book ושל Magazine באמצעות הקלטים שסופקו. קראו לשיטהdescriptionעבור כל פריט והדפיסו את התוצאות.
התיאור של Book צריך להיות בפורמט הבא:
Book: {title} by {author}התיאור של Magazine צריך להיות בפורמט הבא:
Magazine: {name}, Issue {issue}לדוגמה, עם הקלטים 1984, George Orwell, Nature ו-42:
Book: 1984 by George Orwell
Magazine: Nature, Issue 42ועם הקלטים The Rust Book, Steve Klabnik, Science Weekly ו-156:
Book: The Rust Book by Steve Klabnik
Magazine: Science Weekly, Issue 156תקבלו ארבעה קלטים: כותרת הספר, מחבר הספר, שם כתב העת ומספר הגיליון של כתב העת (נתחו את האחרון כ-u32).
נסו בעצמכם
mod catalog;
mod items;
use catalog::CatalogItem;
use items::{Book, Magazine};
fn main() {
// קרא את הקלטים
let mut book_title = String::new();
std::io::stdin().read_line(&mut book_title).expect("Failed to read line");
let book_title = book_title.trim().to_string();
let mut book_author = String::new();
std::io::stdin().read_line(&mut book_author).expect("Failed to read line");
let book_author = book_author.trim().to_string();
let mut magazine_name = String::new();
std::io::stdin().read_line(&mut magazine_name).expect("Failed to read line");
let magazine_name = magazine_name.trim().to_string();
let mut issue_input = String::new();
std::io::stdin().read_line(&mut issue_input).expect("Failed to read line");
let magazine_issue: u32 = issue_input.trim().parse().expect("Failed to parse issue number");
// TODO: צור מופע של Book באמצעות book_title ו-book_author
// TODO: צור מופע של Magazine באמצעות magazine_name ו-magazine_issue
// TODO: קרא ל-description() עבור כל פריט והדפס את התוצאות
}
כל השיעורים ביחידה תכנות מונחה עצמים
1מתודות והתנהגות
מבוא לבלוקי מימושהפרמטר selfמתודות ניתנות לשינויפונקציות משויכותבלוקי מימוש מרוביםשרשור מתודותסיכום – פעולות מלבן4פרויקט: חיית מחמד וירטואלית
הגדרת חיית המחמדהאכלת חיית המחמדתרגלו בעצמכם: קומפיילר Rust אונליין