תכנות מונחה עצמים OOP

תכנות מונחה עצמים OOP

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

Zack DA

New member
בשביל שאלות כאלה יש גוגל ../images/Emo13.gif

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

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

Zack DA

New member
מה כאן מונחה עצמים ?

המחלקות שלך יודעות לעשות הרבה דברים. זה הכל. קרא על OO בגוגל...
 
מחלקות לא "עושות" דברים

אם המחלקות שלך "עושות" דברים ספציפיים, התכנון שלך לקוי. על רגל אחת - מחלקה צריכה להיות ADT ומכילה בתוכה את כל הפעולות שקשורות לאותו טיפוס. אתה אומר שיש לך קצת ניסיון בתיכנות ב-++C. אני מציע לך שלא תקרא לעת עתה ספר כללי על OO אלא תקרא ספר טוב על ++C. למשל הספר של Bruce Eckel שיתן לך תמונה בהחלט טובה על OO
 

neko

New member
../images/Emo45.gif אם מחלקה "עושה" משהו, היא

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

vinney

Well-known member
hold it

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

neko

New member
ודאי, אבל הסיבה ללכת וליצור מחלקה

היא בשביל לעטוף מידע (זו תובנה שקיבלתי מהספר של MEYER ד"א), ולא בשביל "לעשות משהו". זו דרך אחרת להגיד שזה עבור ADT.
 

vinney

Well-known member
לא

לא רק מידע, אלא כל מה שקשור למידע ADT כולל את המידע והפעולות עליו.
 

neko

New member
ודאייייייייי, תקרא שוב את המשפט:

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

gmorphus

New member
לי גם היה נראה משהו לא תקין בהודעה

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