נושאים פעיליםנושאים פעילים  הצגת רשימה של חברי הפורוםרשימת משתמשים  חיפוש בפורוםחיפוש  עזרהעזרה
  הרשמההרשמה  התחברותהתחברות RSS עדכונים
תיכנות
RSS UnderWarrior Forums : RSS תיכנות
נושא

נושא: ירושה מרובה בC#

שליחת תגובהשליחת נושא חדש
כותב
הודעה << נושא קודם | נושא הבא >>
dudybou
משתמש מתחיל
משתמש מתחיל
סמל אישי

הצטרף / הצטרפה: 21 November 2011
מדינה: Israel
משתמש: מנותק/ת
הודעות: 4
נשלח בתאריך: 21 November 2011 בשעה 13:46 | IP רשוּם
ציטוט dudybou

שלום אנשים.
לא כ"כ הבנתי איך מחלקה יכולה לרשת מכמה מחלקות..
לצורך הדוגמה, יש לי מחלקה של ספר, ומחלקה של שואל ספר, ואני
רוצה לכתוב מחלקה שתירש משני המחלקות הנ"ל כדי ליצור רשימה
מקושרת של שואלים ועוד רשימה של ספרים.
מישהו יכול לכתוב לי מבנה של קוד כזה.. ?
הבנתי שזה קשור לinterface אבל לא הבנתי איך אני משתמש בזה
ומה זה בכלל..
(עיינתי בנושאים דומים אבל לא מצאתי תשובה לשאלתי..)

__________________
יום מקסים ומתוכנת היטב לכולם.. !
חזרה לתחילת העמוד הצג את כרטיס החבר של dudybou חפש הודעות אחרות של dudybou
 
חיימקה
משתמש חבר
משתמש חבר
סמל אישי

הצטרף / הצטרפה: 18 April 2010
מדינה: Israel
משתמש: מנותק/ת
הודעות: 243
נשלח בתאריך: 21 November 2011 בשעה 16:18 | IP רשוּם
ציטוט חיימקה

בס"ד

  1. א"א לרשת מכמה מחלקות, אלא מכמה interfaces.
  2. במקרה אותו אתה מציג אין הגיון לרשת ממחלקות כ"כ שונות מהותית - אדם ו ספר, אלא ליצור מחלקה שלישית ("ספריה", נניח), ובה מאפיין (משתנה, אובייקט) מסוג רשימה-מקושרת-ספר, ועוד אחד מסוג רשימה-מקושרת-שואל.

כדאי להבין טוב יותר את ההגיון שבמחלקות, וההגיון שבירושה.

מחלקה יורשת, היא כזו שיש לה קשר מהותי רעיוני למחלקת הבסיס, ולכן יש לה מאפיינים/שיטות זהים למחלקת הבסיס, ובמחלקה היורשת ישנם מאפיינים/מתודות נוספות על מחלקת הבסיס. למעשה הירושה היא כעין הרחבה של מחלקת הבסיס. (לא לחינם הירושה בשפת java נקראת הרחבה). למשל:

אם מחלקת הבסיס היא "רכב", מחלקה יורשת יכולה להיות "משאית". בשתיהן מאפיינים זהים: גלגלים, מנוע וכד'. לשתיהן מתודות זהות: התנע, עצור, החלף הילוך וכד'. ולכן מחלקת "משאית" יורשת את מחלקת הבסיס "רכב", ומוסיפה-מרחיבה דברים שייחודיים למשאית, כגון: מנוף (מאפיין) והרמת משאות (מתודה).
(וכמובן, גם המתודות הזהות לכאורה, אינן זהות לחלוטין. שהרי החלפת הילוך של מכונית שונה מהחלפת הילוך של משאית. ולכן ניתן להשתמש במתודות עם אותו שם, אך שונות במימוש, כלומר בתוכן. נושא קצת יותר מתקדם.)

עכשיו - קרא שוב את סעיף 2 בתחילת תגובתי.

מקוה שעזרתי, ובהצלחה!



__________________
אין יאוש בעולם כלל!
חזרה לתחילת העמוד הצג את כרטיס החבר של חיימקה חפש הודעות אחרות של חיימקה
 
NewMan
משתמש מתחיל
משתמש מתחיל


הצטרף / הצטרפה: 06 May 2011
מדינה: Israel
משתמש: מנותק/ת
הודעות: 29
נשלח בתאריך: 28 November 2011 בשעה 03:36 | IP רשוּם
ציטוט NewMan

למה לרשת משתי מחלקות- זה תלוי במה אתה רוצה לבצע. למשל מחלקה
שיורשת ממחלקה אחרת וגם מ MarshalByRefObject. כל מחלקה נותנת
לך יכולות שונות אך נחוצות. במצב הקיים אם מחלקת הבסיס לא
יורשת מ MarshalByRefObject אז לא יהיו לך היכולות של מעבר
בין תהליכים By Reference. סתם דוגמה.
חזרה לתחילת העמוד הצג את כרטיס החבר של NewMan חפש הודעות אחרות של NewMan
 
חיימקה
משתמש חבר
משתמש חבר
סמל אישי

הצטרף / הצטרפה: 18 April 2010
מדינה: Israel
משתמש: מנותק/ת
הודעות: 243
נשלח בתאריך: 30 November 2011 בשעה 02:41 | IP רשוּם
ציטוט חיימקה

בס"ד

ברור שצריך ותועלתי לרשת מכמה דברים. לא את זה טענתי.
טענתי שבמקרה שלך אין טעם לרשת מספר
ומאדם (- שואל-ספר)! (- איזה אובייקט הוא שילוב של
אדם ושל ספר? אדם שמראשו צומחים דפים במקום שערות?...
)

במקום זה אתה צריך שבמחלקה השלישית שלך יהיו משתנה מסוג אדם
(- שואל-ספר) ומשתנה מסוג ספר.

משהו כזה:

קוד:


/* שואל,מנוי */
class Subscriber
{
     string name;
     // And more...
}

/* ספר */
class Book
{
     string name;
     string author;
     int pages;
     string barcode;
     // And more...
}

/* הַשְׁאָלָה */
class Borrow
{
     // שים לב לשתי השורות הבאות

     Subscriber subscriber;
     Book book;

     DateTime dateTime;
     bool returned;
     // And more...
}



__________________
אין יאוש בעולם כלל!
חזרה לתחילת העמוד הצג את כרטיס החבר של חיימקה חפש הודעות אחרות של חיימקה
 

אם ברצונך להגיב לנושא זה עליך קודם להתחבר
אם אינך רשום/ה כבר עליך להרשם

  שליחת תגובהשליחת נושא חדש
גרסת הדפסה גרסת הדפסה

קפיצה לפורום
אינך יכול/ה לשלוח נושאים חדשים בפורום זה
אינך יכול/ה להגיב לנושאים בפורום זה
אינך יכול/ה למחוק את הודעותיך ותגוביך בפורום זה
אינך יכול/ה לערוך את הודעותיך ותגובותיך בפורום זה
אינך יכול/ה לצור סקרים בפורום זה
אינך יכול/ה להצביע בסקרים בפורום זה