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

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



  #3  
ישן 29-08-2006, 20:37
  טל חדד טל חדד אינו מחובר  
 
חבר מתאריך: 30.06.05
הודעות: 147
שלח הודעה דרך ICQ אל טל חדד שלח הודעה דרך MSN אל טל חדד
לגבי הראשונה אין בניהם קשר(חוץ מששניהם קשורים ב OOP)
בתגובה להודעה מספר 2 שנכתבה על ידי suncan שמתחילה ב "ועוד שאלה אחת.."

התחביר
new {הבנאי שאתה רוצה לקרוא לו}
מחזיר מצביע לאובקייט שנוצר מהבנאי
override וvirtual קשורים בהורשה. לדוגמא:
יש לך מחלקה A ומחלקה B. לשתהם יש מתודה בשם Print(מחזירה מחרוזת שמסכמת את האובקייט). כאשר מחלקה B תירש את A תהיה שגיאה משום שאי אפשר שיהיה שתי מתודות(Print) במחלקה אחת.
OOP מציע פיתרון:שימוש במתודות וירטואליות. כותבים Virtual במחלקה הבסיסית ביותר של עץ ההורשה שמישתמשת ב Virtual. בכל מחלקה שיורשת את הפונקציה ומשתמשת בה אחרת כותבים override.
_____________________________________

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

תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #8  
ישן 22-09-2006, 22:10
צלמית המשתמש של zeliran
  zeliran zeliran אינו מחובר  
 
חבר מתאריך: 22.09.06
הודעות: 83
שלח הודעה דרך MSN אל zeliran
בתגובה להודעה מספר 1 שנכתבה על ידי suncan שמתחילה ב "C# - משתנה סטטי בהורשה"

1) בדוט נט יש שני סוגי אובייקטים:

Refrence Type
Value Type

לא נתעמק בבדיוק מהם ההבדלים בין שני הסוגים, אבל הבסיס של ההבדל ביניהם הוא מקום ההקצאה שלהם בזיכרון. אובייקטים שהם ref type נשמרים ב heap, ולעומת זאת אובייקטים שהם value type נשמרים ב stack

ref type (מחלקות, למשל, הן מסוג ref), הם אובייקטים שאתה משתמש במצביע על מנת לגשת אליהם. כשאתה כותב את הקוד אתה לא מרגיש את זה, אבל ככה התוכנית שלך עובדת כשהיא רצה.
אז כשאתה עושה new למחלקה שלך, אתה בעצם מקצה לה מקום בזכרון. ונותן לאובייקט שלך את הכתובת בזכרון של בו הוא מאחסן ב heap או האובייקט הזה. (המצביע עצמו נמצא ב stack)
תוכל לשים לב למשל, שכשאתה יוצר אינסטנס של struct (שהוא value type), לא תצטרך להשתמש ב new

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

3) הורשה קשורה למבנה ולמימוש.. לא לערכים ששמורים בתוכה.

נערך לאחרונה ע"י zeliran בתאריך 22-09-2006 בשעה 22:15.
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #13  
ישן 19-01-2007, 16:44
צלמית המשתמש של zeliran
  zeliran zeliran אינו מחובר  
 
חבר מתאריך: 22.09.06
הודעות: 83
שלח הודעה דרך MSN אל zeliran
בתגובה להודעה מספר 12 שנכתבה על ידי BaBaLu שמתחילה ב "..."

אתה מתבלבל בין new בזמן יצירת אובייקט, לבין new בהגדרה של מטודה.
התשובה הנ"ל היתה לגבי יצירה של אובייקטים בעזרת new,
בכל הקשור למטודות שמוגדרות כ new, אז יש קשר.. אם יש לי מטודה וירטואלית print, אזי מחלקה שיורשת אותה יכולה לדרוס אותה ע"י override ולתת לה מימוש חדש (או בעצם לקרוא למימוש המקורי בעזרת base.print),
לעומת זאת, אם במחלקה היורשת תגדיר את print כ new, אזי אין קשר בינה לבין המטודה הנמצאת במחלקת הבסיס, ומדובר במטודה חדשה לכל דבר..

שנית, אל תתבלבל בין define לבין const ... כלל לא אותו הדבר.
ואכן.. משתני const למעשה אף פעם לא נוצרים. כי באמת אין להם צורך ממשי בתוכנית... להבדיל ממשתנים שהם read only, שאפשר לאתחל בתוך c-tor וכו' אבל בשום מקום מחוץ לו..
_____________________________________


תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
תגובה

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

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

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

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



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

הדף נוצר ב 0.05 שניות עם 10 שאילתות

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

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