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

ahillel

New member
תכנות מונחה עצמים

מהו, בשפה פשוטה, תכנות מונחה עצמים? ומה ההבדל בינו לתכנות מונחה ארועים? VB מוגדר כתכנות מונחה ארועים, נכון?
 

freak2100

New member
נראה לי שVB לא מונחה עצמים

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

ahillel

New member
יש מאמרים... ../images/Emo13.gif

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

Ultra Spidey

New member
כן, VB מונחית ארועים

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

freak2100

New member
אה... events... תמיד יש את זה

זה לא או-או, תמיד אמור להיות main ויש את הevents, זה לא קשור אחד לשני...
 

ahillel

New member
כן, אבל

את המשמעות של מונחה אירועים אני מבין. אבל מה ההבדל שיוצר הMAIN ? בעבר לקחתי קורס ב C ואני זוכר שיש לולאה MAIN שפועלת כל עוד התוכנית פועלת. אבל גם שם השתמשנו בארועים (IF...THEN) כדי להפעיל כל מיני פונקציות משניות.
 

Reilak

New member
תכנות מונחה עצמים...

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

HackMachine

New member
נסיון

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

ahillel

New member
אני צריך הסבר קצת יותר ממשי

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

HackMachine

New member
זה כי

VB מנסה לממש תכנות מונחה עצמים. הוא לא עושה את זה הכי טוב אבל יש את זה שם.
 

freak2100

New member
גם בC אפשר לתכנת משהו מונחה עצמים

אבל זה הרבה הרבה הרבה יותר נח בCPP...
 

sandbird4

New member
הרבה סלט של אי דיוקים עשיתם פה!

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

sandbird4

New member
ועוד משהו קטן

ועוד לא נכנסנו לנושאים נוספים שהם היום להיטים גדולים בתחום התוכנה וכל שפה רצינית תומכת בהם (לפעמים בעזרת ספריה חיצונית): DESIGN PATTERNS REFLECTION וכו (אין לי מושג איך קוראים למושגים האלה בעברית)
 

voguemaster

New member
להיטים ?

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

voguemaster

New member
ל-GOTO אין שימוש

ואפילו אם תצליח לחשוב על שימוש ל-GOTO, תמיד יהיה לך עדיף למצוא דרך אחרת.
 
למעלה