לוגו אתר Fresh          
 
 
  אפשרות תפריט  ראשי     אפשרות תפריט  צ'אט     אפשרות תפריט  מבזקים     אפשרות תפריט  צור קשר     חץ שמאלה ‎print ‎"Hello World!"; if‎ ‎not rules.‎know ‎then rules.‎read(); חץ ימינה  

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



  #1  
ישן 09-02-2007, 21:38
  משתמש זכר eXtruct eXtruct אינו מחובר  
 
חבר מתאריך: 27.10.05
הודעות: 1,067
הורשה במחלקות סי++? מה מתי ולמה?

יש לי שאלה: בשביל מה בעצם צריך הורשה של מחלקות? מתי משתמשים בזה?
האם בדוגמא הבאה יש צורך בהורשת מחלקות?:
ברצוני לבנות מפת משחק, המפה מורכבת מ"בלוקים" בגודל X*Y, לכל בלוק יש את התמונה שלו נקודות ציון (X,Y) משלו ונגיד מצב האם הבלוק פעיל לא פעיל, האם ניתן לעבור דרכו או לא ניתן וכו'.
אני יוצר מחלקה אשר מטפלת בבלוק אחד ויחיד!. אך ברצוני לבנות מפה זוכרים? בשביל לבנות מפה אני צריך אוסף של בלוקים. נגיד אני משתמש במערך של 10*10 בלוקים וסך הכל יש לי מפה של 100 בלוקים. למפה יש פונקציות משלה כגון, drawmap, initmap וכו'. האם יש צורך לאסוף את כל המשתנים של המפה וכל הפונקציה שלה למחלקה שתירש מהמחלקה "בלוק"? או שמפסיק ליצור מחלקה חדשה עצמאית? או אולי בכלל אין צורך במחלקה?

כמו כן אבקש פירוט מתי כן משתמשים/לא משתמשים בהורשת מחלקות.
תודה רבה מראש.
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #3  
ישן 10-02-2007, 03:58
  משתמש זכר LinkBomber LinkBomber אינו מחובר  
 
חבר מתאריך: 31.03.02
הודעות: 400
בתגובה להודעה מספר 1 שנכתבה על ידי eXtruct שמתחילה ב "הורשה במחלקות סי++? מה מתי ולמה?"

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

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

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

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

מקווה שההסבר היותר ארוך הזה מסביר קצת את העניין.

בהצלחה.
_____________________________________
סרטוני הנהיגה שלי

[התמונה הבאה מגיעה מקישור שלא מתחיל ב https ולכן לא הוטמעה בדף כדי לשמור על https תקין: http://www.fresh.co.il/scripts/birthday.php?date=29/04/1987]


נערך לאחרונה ע"י LinkBomber בתאריך 10-02-2007 בשעה 04:01.
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #6  
ישן 10-02-2007, 10:18
  danben danben אינו מחובר  
 
חבר מתאריך: 19.06.03
הודעות: 549
לא ציפיתי שתסכים איתי
בתגובה להודעה מספר 5 שנכתבה על ידי yoavmatchulsky שמתחילה ב "לכל דבר אתה יכול ל"התאים"..."

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

מחלקת בסיס משותפת למפה ולבלוק לדעתי ממש מתבקשת במקרה הזה.

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

בכל מקרה - תחשוב על זה שבלוק של מפה הוא בעצם מפה.
מפה היא אסופה של בלוקים. אבל היא מפה.

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

ברור מן הסתם שאפשר גם בלי הורשה. אבל זה אולי מקרה קלאסי בו הורשה "אינה מתבקשת" ע"פ הגדרת התרגיל, אבל בהחלט עשויה להשתלם.

אסור לפחד מהורשה. זה אחד הכלים ששפות OO נותנות וכדאי לדעת לנצל אותו.

נערך לאחרונה ע"י danben בתאריך 10-02-2007 בשעה 10:20.
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
תגובה

כלי אשכול חפש באשכול זה
חפש באשכול זה:

חיפוש מתקדם
מצבי תצוגה דרג אשכול זה
דרג אשכול זה:

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

קוד vB פעיל
קוד [IMG] פעיל
קוד HTML כבוי
מעבר לפורום



כל הזמנים המוצגים בדף זה הם לפי איזור זמן GMT +2. השעה כעת היא 21:06

הדף נוצר ב 0.04 שניות עם 12 שאילתות

הפורום מבוסס על vBulletin, גירסא 3.0.6
כל הזכויות לתוכנת הפורומים שמורות © 2024 - 2000 לחברת Jelsoft Enterprises.
כל הזכויות שמורות ל Fresh.co.il ©

צור קשר | תקנון האתר