OOP

concretepass

New member
OOP

שלום,
יש לי מחלקה אבסטראקטית של animal
וכמה מחלקות שיורשות אותה כגון hawk / butterfly / dog וכו...
המחלקה animal מכילה פונקציות לפעולות שכל בעלי החיים עושים כגון sleep, eat וכדו

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

אני יצרתי פונקציה של animal שנקראת move
ולמחלקה כלב יצרתי פונקציה שנקראת walk ובתוכה היא קוראת לפונקציה move
משהו דומה עשיתי לפרפר - יצרתי פונקציית fly אשר קוראת לפונקציה move
התחלתי להתלבט כשגיליתי של נץ אני בעצם משתמש באותה הפונקציה כמו של פרפר ולא הייתי בטוח מה תהיה הדרך הנכונה לא לכתוב את אותו הקוד פעמיים...

תודה לעוזרים!
 

amosexy

New member
אתה לא אמור לכתוב פונקציות בשם שונה לכולם ואז

אתה לא אמור לכתוב פונקיות שונות לכולם ואז לקרוא לMOVE שלהם

MOVE מגדיר תנועה של הבעל חיים הזה

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

itaym02

New member
רגע, אז אם אני מפעיל move על ציפור

היא תלך או תעוף?
 

zeshe shoel

New member


 

fat fish

New member
והמשך...

כאשר בעל חיים נע (בין אם עף, הולך, או שוחה) אין זה משנה לנו. ההתקדמות היא מנקודה X לנקודה Y בקצב Z.
לכן, גם move אמור להיות מימוש זהה לכולם פחות או יותר, כאשר השוני הוא בפרמטרים (לדוגמה, קצב התקדמות)
פרמטר נוסף לדוגמה הוא היכן בעל החיים יכול לנוע (במים, ביבשה, באוויר או כל שילוב שלהם).

השוני מגיע כאשר אנו מעוניינים להציג את התנועה.
והדבר הזה בכלל לא ב-scope של אובייקט בעל החיים. אלא של אובייקט תצוגה שיודע לקבל בעל חיים ולתאר את תנועתו (שחייה, מעוף וכו...)

בהצלחה,
 

intval

New member
צור עוד מחלקה אבטרקטית של flyingAnimal

צור עוד מחלקה אבטרקטית של flyingAnimal שיורשת מ animal וכל מה שעף יורש ממנה.
חוץ מזה, פשוט תממש בצורה שונה לכל אחת מהחיות את המטודה move. לא צריך באחת לקרוא לה fly ובשניה לקרוא לה walk.
בכולם תקרא לה move ותעשה דבר שונה אצל כל אחת מהן.
 
למעלה