בית פורומים למתכנתים שבינינו

מושגי יסוד של פיתוח מונחה עצמים

שלום אורח. באפשרותך להתחבר או להירשם
הצג 15 הודעות בעמוד הוסף לדף האישי  דווח למנהל שלח לחבר
נשלח ב-7/9/2011 22:45 לינק ישיר 

אוף, נראה לי לפי התכנה שציינת שלא הבנתי כלל על מה מדובר...:(
חשבתי שאתה מתאר את OOP כלומר #C הלא כן..?!
כי זה ממש אותו דבר-לבנתיים!



דדווח על תוכן פוגעני

סמל אישי
מנותק
נשלח ב-11/9/2011 05:53 לינק ישיר 

פונץ, אכן מדובר ב-C#, אבל באותו מידה בC++, או בג'אווה. כשעושים ניתוח, או לומדים מושגי יסוד, יש יתרון מובהק לראות את הדברים. הדרך לראות את הדברים הוא על ידי שימוש בשפה ויזואלית, שהיא UML. התרגום מ-UML, לכל שפת תיכנות נעשה כמעט בלי מאמץ.



דדווח על תוכן פוגעני

מחובר
נשלח ב-11/9/2011 23:45 לינק ישיר 

כן, היום אחזתי ששפת OOP מתאימה לVB , , ועוד ולא רק לשפת #C ... לא נורא עם החזרה שלי על החומר נדע עוד מהנשכחות...



דדווח על תוכן פוגעני

סמל אישי
מנותק
נשלח ב-12/9/2011 00:17 לינק ישיר 

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

אנסה להתייחס לשני הבטים אלו, ואיך דרכם אנחנו מסוגלים לבנות מערכות טובות יותר.

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



נשמע ממש כואב לעשות שינויים. ומאמר יפה



דדווח על תוכן פוגעני

מנותק
נשלח ב-12/9/2011 07:18 לינק ישיר 

ליטאי613 כתב:
נשמע ממש כואב לעשות שינויים.

כשתנסה, תבין.



דדווח על תוכן פוגעני

סמל אישי
מנותק
נשלח ב-19/9/2011 17:49 לינק ישיר 

מנתחמערכות כתב:


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

אז בדוגמא שלנו, בכלי כתיבה של חנות יש מחלקה כלי כתיבה, שהוגדרו בתוכו את ה-ATTRIBUTES האלו

עלותמחיר
חיי מדף
שם ספק

ואילו OPERATIONS יהיו למחלקה עט?

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

אם למחלקה אין שום תחום אחריות, אז אין לו התנהגות, והוא סך הכל STRUCT, מבנה נתונים.

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

סתתתתתם.
אמרנו שאובייקט הוא הפשטה של המציאות, לא המציאות ממש.

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

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

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



דדווח על תוכן פוגעני

מחובר
נשלח ב-19/9/2011 17:58 לינק ישיר 

אחריות מוגדר מה שאובייקט צריך לעשות מיוזמתו, ותפקיד זה הפעולות שאובייקט מתבקש על ידי אחרים לעשות.
אם הגדרנו שתפקידו של כלי כתיבה היא להתריע חודשיים לפני תום תקופת חיי המדף שלו, אז נוכל להגדיר תפקידו לחשב את המחיר שלו.
GET ו SET של ה-ATTRIBUTES של האובייקט הם לא באמת תפקידים. בכדי  להגן על המאפיינים מפני שינוי לא רצוי מבחוץ, מגדירים את רוב ה-ATTRIBUTES כ- PRIVATE, ומאפשרים גישה דרך ה-ACCESSORS, ו - MUTATOR.

תפקיד צריך להיות משהו יותר רחב.

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

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

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







דדווח על תוכן פוגעני

מחובר
   
בית > פורומים > אינטרנט ומחשבים > למתכנתים שבינינו > מושגי יסוד של פיתוח מונחה עצמים
מנהל לחץ כאן לנעילת האשכול
הוסף לעמוד האישי  דווח למנהל שלח לחבר
לדף הקודם 1 2 3 סך הכל 3 דפים.

bholext