בעל חנות כולבו מעוניין למכור את מוצריו גם באופן מקוון (אונליין).
בשלב הראשון החליט בעל החנות למכור באופן מקוון רק חולצות ומכנסיים. לשם כך נבנו המחלקות האלה:
Clothing, המייצגת בגדShirt, המייצגת חולצהPants, המייצגת זוג מכנסיים(ראו קוד המחלקות. הניחו שיש פעולות Get ו-Set בעבור התכונות בכל המחלקות.)
בשלב השני החליט בעל החנות למכור באופן מקוון גם ספרים. לפניכם המחלקה Book המייצגת ספר:
java1public class Book { 2 private int id; // מספר זיהוי של המוצר 3 private String bookName; // שם הספר 4 private String author; // שם הסופר 5 private double price; // מחיר 6}
הניחו שיש פעולות Get ו-Set בעבור תכונות המחלקה.
כדי שהמערך arr במחלקה Cart יוכל להכיל גם ספרים, נעשו הפעולות האלה:
Product — מוצר.arr במחלקה Cart שוּנה ל-Product.Book) יחסי הורשה חדשים בינן ובין המחלקה Product.Book) הועברו למחלקה Product, בהתאם לעקרונות תכנות מונחה עצמים (מעבר לתכונות אלו אין תכונות נוספות במחלקה Product).בשלב האחרון החליט בעל החנות להכריז על מבצע זמני: ברכישה מקוונת כל המוצרים יימכרו בהנחה של 10%, ובעבור רכישת בגדים (חולצות ומכנסיים) תהיה הנחה נוספת של 10 שקלים (הַניחו שהמחיר נשאר חיובי לאחר ההנחה).
public double getDiscountPrice()public virtual double GetDiscountPrice()1public class Clothing {
2 private int id; // מספר זיהוי של המוצר
3 private String fabric; // סוג הבד
4 private String color; // צבע הבגד
5 private double price; // מחיר
6}
7
8public class Shirt extends Clothing {
9 private String size; // (S, M, L, XL, XXL) מידה
10}
11
12public class Pants extends Clothing {
13 private int length; // אורך באינצ'ים
14 private int width; // רוחב באינצ'ים
15}המחלקה Cart מייצגת סל קניות. למחלקה שלוש תכונות:
name — שם הקונהarr — מערך המכיל גם חולצות וגם מכנסייםcurrent — מספר המוצרים הנוכחי בקנייהכִּתבו את כותרת המחלקה Cart ואת התכונות שלה.
סרטטו תרשים הייררכייה המתאר את הקשר בין המחלקות: Clothing, Shirt, Pants, Cart. יש לסמן ירושה באמצעות החץ (◁———) והכלה באמצעות הסימן (◆——).
בעקבות השלב השני (הוספת ספרים והמחלקה Product — ראו תיאור המערכת): סרטטו תרשים הייררכייה מעודכן המתאר את הקשר בין המחלקות: Clothing, Shirt, Pants, Book, Product, Cart. יש לסמן ירושה באמצעות החץ (◁———) והכלה באמצעות הסימן (◆——).
כִּתבו את כותרת המחלקה Product ותכונותיה, וכִתבו מחדש את המחלקות שחל בהן שינוי בעקבות ההוספה של המחלקה Product.
שימו לב: יש להתייחס גם ליחסי הורשה חדשים וגם לשינוי שחל בתכונות המחלקות.
בעקבות המבצע (ראו שלב אחרון בתיאור המערכת) — נתונה הפעולה הפנימית GetDiscountPrice במחלקה Product (ראו פירוט הפעולות).
ממשו את הפעולה במחלקה Product, והוסיפו פעולה/ות במחלקה/ות המתאימה/ות כדי לבצע את הנדרש. ציינו בעבור כל פעולה שהוספתם באיזו מחלקה היא נוספה.
אין להשתמש בפעולה instanceof (ב-C#: is/as) ובפעולות המחלקה Object, ואין לשנות את תכונות המחלקות.
בעל חנות כולבו מעוניין למכור את מוצריו גם באופן מקוון (אונליין).
בשלב הראשון החליט בעל החנות למכור באופן מקוון רק חולצות ומכנסיים. לשם כך נבנו המחלקות האלה:
Clothing, המייצגת בגדShirt, המייצגת חולצהPants, המייצגת זוג מכנסיים(ראו קוד המחלקות. הניחו שיש פעולות Get ו-Set בעבור התכונות בכל המחלקות.)
בשלב השני החליט בעל החנות למכור באופן מקוון גם ספרים. לפניכם המחלקה Book המייצגת ספר:
java1public class Book { 2 private int id; // מספר זיהוי של המוצר 3 private String bookName; // שם הספר 4 private String author; // שם הסופר 5 private double price; // מחיר 6}
הניחו שיש פעולות Get ו-Set בעבור תכונות המחלקה.
כדי שהמערך arr במחלקה Cart יוכל להכיל גם ספרים, נעשו הפעולות האלה:
Product — מוצר.arr במחלקה Cart שוּנה ל-Product.Book) יחסי הורשה חדשים בינן ובין המחלקה Product.Book) הועברו למחלקה Product, בהתאם לעקרונות תכנות מונחה עצמים (מעבר לתכונות אלו אין תכונות נוספות במחלקה Product).בשלב האחרון החליט בעל החנות להכריז על מבצע זמני: ברכישה מקוונת כל המוצרים יימכרו בהנחה של 10%, ובעבור רכישת בגדים (חולצות ומכנסיים) תהיה הנחה נוספת של 10 שקלים (הַניחו שהמחיר נשאר חיובי לאחר ההנחה).
public double getDiscountPrice()public virtual double GetDiscountPrice()1public class Clothing {
2 private int id; // מספר זיהוי של המוצר
3 private String fabric; // סוג הבד
4 private String color; // צבע הבגד
5 private double price; // מחיר
6}
7
8public class Shirt extends Clothing {
9 private String size; // (S, M, L, XL, XXL) מידה
10}
11
12public class Pants extends Clothing {
13 private int length; // אורך באינצ'ים
14 private int width; // רוחב באינצ'ים
15}המחלקה Cart מייצגת סל קניות. למחלקה שלוש תכונות:
name — שם הקונהarr — מערך המכיל גם חולצות וגם מכנסייםcurrent — מספר המוצרים הנוכחי בקנייהכִּתבו את כותרת המחלקה Cart ואת התכונות שלה.
סרטטו תרשים הייררכייה המתאר את הקשר בין המחלקות: Clothing, Shirt, Pants, Cart. יש לסמן ירושה באמצעות החץ (◁———) והכלה באמצעות הסימן (◆——).
בעקבות השלב השני (הוספת ספרים והמחלקה Product — ראו תיאור המערכת): סרטטו תרשים הייררכייה מעודכן המתאר את הקשר בין המחלקות: Clothing, Shirt, Pants, Book, Product, Cart. יש לסמן ירושה באמצעות החץ (◁———) והכלה באמצעות הסימן (◆——).
כִּתבו את כותרת המחלקה Product ותכונותיה, וכִתבו מחדש את המחלקות שחל בהן שינוי בעקבות ההוספה של המחלקה Product.
שימו לב: יש להתייחס גם ליחסי הורשה חדשים וגם לשינוי שחל בתכונות המחלקות.
בעקבות המבצע (ראו שלב אחרון בתיאור המערכת) — נתונה הפעולה הפנימית GetDiscountPrice במחלקה Product (ראו פירוט הפעולות).
ממשו את הפעולה במחלקה Product, והוסיפו פעולה/ות במחלקה/ות המתאימה/ות כדי לבצע את הנדרש. ציינו בעבור כל פעולה שהוספתם באיזו מחלקה היא נוספה.
אין להשתמש בפעולה instanceof (ב-C#: is/as) ובפעולות המחלקה Object, ואין לשנות את תכונות המחלקות.