27
OOP Methodology

OOP Methodology. 2 OOP, Why? התפתחות שפות תכנות דור ראשון - שפת מכונה. דור שני Assembly -. דור שלישי - COBOL, Basic, Pascal, Smalltalk,

  • View
    227

  • Download
    2

Embed Size (px)

Citation preview

Page 1: OOP Methodology. 2 OOP, Why? התפתחות שפות תכנות דור ראשון - שפת מכונה. דור שני Assembly -. דור שלישי - COBOL, Basic, Pascal, Smalltalk,

OOP Methodology

Page 2: OOP Methodology. 2 OOP, Why? התפתחות שפות תכנות דור ראשון - שפת מכונה. דור שני Assembly -. דור שלישי - COBOL, Basic, Pascal, Smalltalk,

2

OOP, Why?התפתחות שפות תכנות

דור ראשון - שפת מכונה .•. -Assemblyדור שני • .++…COBOL, Basic, Pascal, Smalltalk, C, Cדור שלישי - •RAD (VB, Delphi, C#, VB.NET, Java…)דור רביעי –•

הראשונות. OOPהדור השלישי מתאפיין בשפות

Page 3: OOP Methodology. 2 OOP, Why? התפתחות שפות תכנות דור ראשון - שפת מכונה. דור שני Assembly -. דור שלישי - COBOL, Basic, Pascal, Smalltalk,

3

OOP, Why?התפתחות המחשבים

, Batch – משמשים בעיקר בתעשייה הביטחונית, עיבודים מבוססים 1950•הפצה מאוד מוגבלת, תוכנות מופעלות על ידי מומחים, מדענים וכו'.

) , עיבוד מקבילי, מסדי נתונים, Multi-user – ריבוי משתמשים (1960•חברות אזרחיות מתעניינות במיחשוב.

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

- משרד ההגנה האמריקאי1968

משבר

התוכנה

Page 4: OOP Methodology. 2 OOP, Why? התפתחות שפות תכנות דור ראשון - שפת מכונה. דור שני Assembly -. דור שלישי - COBOL, Basic, Pascal, Smalltalk,

4

OOP, Why?משבר התוכנה

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

התוכנה לא היתה כלל שמישה.אמינות לא גבוהה אשר יצרה תקלות רבות וגרמה לחוסר אמון בין מפתחים •

למשתמשים.לא ניתן היה להעריך המדוייק את עלות הפיתוח.•אי עמידה בלוחות זמנים•

התוכנה משבר

Page 5: OOP Methodology. 2 OOP, Why? התפתחות שפות תכנות דור ראשון - שפת מכונה. דור שני Assembly -. דור שלישי - COBOL, Basic, Pascal, Smalltalk,

5

OOP, Why?תכנות פרוצדוראלי

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

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

.מוגדרת בתוכניתהמידע חשוף, זמין לכל רכיבי התוכנית.•השיטה מותאמת למבנה המחשב , ואינה תואמת את צורת החשיבה •

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

Page 6: OOP Methodology. 2 OOP, Why? התפתחות שפות תכנות דור ראשון - שפת מכונה. דור שני Assembly -. דור שלישי - COBOL, Basic, Pascal, Smalltalk,

6

OOP, Why?תכנות פרוצדוראלי

פונקציות. כל אחת מהפונקציות N משתנים ו- Nהאיור מציג תוכנית המכילה יכולה לגשת לכל אחד מהמשתנים ולקרוא לכל אחת מהפונקציות האחרות

בתוכנית, כולם נגישים לכולם ,כולם קריאים לכולם.

Page 7: OOP Methodology. 2 OOP, Why? התפתחות שפות תכנות דור ראשון - שפת מכונה. דור שני Assembly -. דור שלישי - COBOL, Basic, Pascal, Smalltalk,

7

OOP, Why?תכנות פרוצדוראלי – בעית תחזוקה ראשונה.

פונקציות.5000 משתנים וכ- 500תוכנית מכילה כ-

ל- 1נניח שטווח ערכיו החוקי של אחד מהמשתנים המוגדרים בתוכנית הוא בין 100 ,

.300בדוחו"ת שהתוכנית מנפיקה המשתנה מכיל את הערך

היכן נמצאת הטעות? , כמה זמן יקח לאתר את המקום המדוייק?

כמה זמן יקח לתקן את שגיאה?

מהן הסכנות הטמונות בתיקון השגיאה?

לוגית שגיאות

Page 8: OOP Methodology. 2 OOP, Why? התפתחות שפות תכנות דור ראשון - שפת מכונה. דור שני Assembly -. דור שלישי - COBOL, Basic, Pascal, Smalltalk,

8

OOP, Why?תכנות פרוצדוראלי – בעית תחזוקה שניה

פונקציות.5000 משתנים וכ- 500תוכנית מכילה כ-

בין שאר המשתנים קימת מחרוזת המייצגת את שם המשתמש (שם פרטי ושם משפחה).

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

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

מהן הסכנות הטמונות בעידכון?

בתוכנית שינויים

Page 9: OOP Methodology. 2 OOP, Why? התפתחות שפות תכנות דור ראשון - שפת מכונה. דור שני Assembly -. דור שלישי - COBOL, Basic, Pascal, Smalltalk,

9

OOP, Why?י ?רעללי או פרוצדורעתכנות פרוצדוראלי, פרוצדו

האדם אינו אמור להתאים עצמו ולשרת את הטכנולוגיה, הטכנולוגיה היא זו שאמורה

להתאים עצמה לאדם ולשרת את צרכיו.

Page 10: OOP Methodology. 2 OOP, Why? התפתחות שפות תכנות דור ראשון - שפת מכונה. דור שני Assembly -. דור שלישי - COBOL, Basic, Pascal, Smalltalk,

10

OOP, Why?לי או רעתכנות פרוצדוראלי, פרוצדו

י ?רעלפרוצדו

התכנות הפרוצדוראלי מחייב את המתכנת לחשוב בצורה ובאופן

שהמחשב חושב, המתכנת חייב להתאים עצמו לדרישות ולמבנה של המכונה.

האין זה עוול?

Page 11: OOP Methodology. 2 OOP, Why? התפתחות שפות תכנות דור ראשון - שפת מכונה. דור שני Assembly -. דור שלישי - COBOL, Basic, Pascal, Smalltalk,

11

OOP, Why?יתרונות

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

Page 12: OOP Methodology. 2 OOP, Why? התפתחות שפות תכנות דור ראשון - שפת מכונה. דור שני Assembly -. דור שלישי - COBOL, Basic, Pascal, Smalltalk,

12

OOP, Why not?חסרונות

איטיות.•גודל.•

Page 13: OOP Methodology. 2 OOP, Why? התפתחות שפות תכנות דור ראשון - שפת מכונה. דור שני Assembly -. דור שלישי - COBOL, Basic, Pascal, Smalltalk,

13

OOP, What?כל שפה מונחית אובייקטים חייבת לתמוך בשלושת התכונות

הבאות:

Encapsulation

Inheritance

Polymorphism

Page 14: OOP Methodology. 2 OOP, Why? התפתחות שפות תכנות דור ראשון - שפת מכונה. דור שני Assembly -. דור שלישי - COBOL, Basic, Pascal, Smalltalk,

14

Encapsulationהגדרה

יכולת של שפה להגדיר יישות לוגית המכילה נתונים ואת כל הפעילויות

הנדרשות על הנתונים.

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

)Template.אשר ממנה נוצרים האובייקטים (

מחלקה מכילה שני מרכיבים מרכזיים : משתנים באמצעותם נתאר אובייקט מהמחלקה ופונקציות אשר מתארות את ההתנהגויות (פונקציונאליות) של

האובייקט.

Page 15: OOP Methodology. 2 OOP, Why? התפתחות שפות תכנות דור ראשון - שפת מכונה. דור שני Assembly -. דור שלישי - COBOL, Basic, Pascal, Smalltalk,

15

Encapsulationתכונות המחלקה

ישות אבסטרקטית :

תאור המתמקד בתכונות ובפעילויות העיקריות לכל עצם ומתעלם מתכונות ופעילויות לא חיוניות.

"קופסא שחורה" :

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

מבנה :

מכילה גם את התיאור של האובייקט וגם את הפעילויות שניתן לבצע על

האובייקט.

שימוש חוזר :

המחלקות מעודדות שימוש חוזר בהן בפרוייקטים רבים.

Page 16: OOP Methodology. 2 OOP, Why? התפתחות שפות תכנות דור ראשון - שפת מכונה. דור שני Assembly -. דור שלישי - COBOL, Basic, Pascal, Smalltalk,

16

Encapsulationתכונות המחלקה - ישות אבסטרקטית :

תאור המתמקד בתכונות ובפעילויות העיקריות לכל עצם ומתעלמת מתכונות ופעילויות לא חיוניות.

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

כמה התנהגויות שונות ומגוונות יש לאדם?

מספר אלפי התנהגויות אם לא יותר.

האם אנו זקוקים לכולם על מנת לתאר עובד, מורה, תלמיד, מנהל או טייס ?

לא, נגדיר רק את הרלבנטיים לתוכנית.

Page 17: OOP Methodology. 2 OOP, Why? התפתחות שפות תכנות דור ראשון - שפת מכונה. דור שני Assembly -. דור שלישי - COBOL, Basic, Pascal, Smalltalk,

17

Encapsulationתכונות המחלקה - "קופסא שחורה" :

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

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

ניתן לומר שמכונית חושפת התנהגויות (האצה, האטה, התנעה, הדלקת/כיבוי אורות וכו'), הנהג יכול לנצל את ההתנהגויות הללו

על פי צרכיו, אולם אין הוא יודע ואין הוא צריך לדעת כיצד הן מתבצעות.

Page 18: OOP Methodology. 2 OOP, Why? התפתחות שפות תכנות דור ראשון - שפת מכונה. דור שני Assembly -. דור שלישי - COBOL, Basic, Pascal, Smalltalk,

18

Encapsulationמבנה מחלקה

מבנה של מחלקה טיפוסית:

Page 19: OOP Methodology. 2 OOP, Why? התפתחות שפות תכנות דור ראשון - שפת מכונה. דור שני Assembly -. דור שלישי - COBOL, Basic, Pascal, Smalltalk,

19

Encapsulation Data Hidingערך מוסף – הסתרת מידע –

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

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

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

Page 20: OOP Methodology. 2 OOP, Why? התפתחות שפות תכנות דור ראשון - שפת מכונה. דור שני Assembly -. דור שלישי - COBOL, Basic, Pascal, Smalltalk,

20

Encapsulationערך מוסף – הסתרת מידע

) מוגדרת הרשאת גישה Methods ו- Data Membersלכל חבר מחלקה (• .Private ו- Publicמשלו, קיימות מספר הרשאות גישה, השכיחות ביותר הן:

•Private -חברי מחלקה המוגדרים כ :Private הנם פרטיים למחלקה ולכן מוכרים רק על ידי המתודות של המחלקה, מחלקות אחרות אינן יכולות לגשת

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

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

על מנת להגן על הנתונים נקפיד על הכלל הבא: •

Data Members -תמיד יוגדרו כ Private.

Page 21: OOP Methodology. 2 OOP, Why? התפתחות שפות תכנות דור ראשון - שפת מכונה. דור שני Assembly -. דור שלישי - COBOL, Basic, Pascal, Smalltalk,

21

Encapsulationתכונות המחלקה - שימוש חוזר :

המחלקות מעודדות שימוש חוזר בהן בפרוייקטים רבים.

אין צורך ל"המציא את הגלגל מחדש"

יתרונות:נדרש לכתוב פחות קוד.•מקצר ומוזיל תהליכי פיתוח.•אמינות – שימוש ברכיבים שכבר הוכיחו את עצמם.•

Page 22: OOP Methodology. 2 OOP, Why? התפתחות שפות תכנות דור ראשון - שפת מכונה. דור שני Assembly -. דור שלישי - COBOL, Basic, Pascal, Smalltalk,

22

Encapsulation :OOPמבנה תוכנית

Page 23: OOP Methodology. 2 OOP, Why? התפתחות שפות תכנות דור ראשון - שפת מכונה. דור שני Assembly -. דור שלישי - COBOL, Basic, Pascal, Smalltalk,

23

EncapsulationOOP.בעית תחזוקה ראשונה –

פונקציות.5000 משתנים וכ- 500תוכנית מכילה כ-

ל- 1נניח שטווח ערכיו החוקי של אחד מהמשתנים המוגדרים בתוכנית הוא בין 100 ,

.300בדוחו"ת שהתוכנית מנפיקה המשתנה מכיל את הערך

היכן נמצאת הטעות? , כמה זמן יקח לאתר את המקום המדוייק?

כמה זמן יקח לתקן את שגיאה?

מהן הסכנות הטמונות בתיקון השגיאה?

לוגית שגיאות

Page 24: OOP Methodology. 2 OOP, Why? התפתחות שפות תכנות דור ראשון - שפת מכונה. דור שני Assembly -. דור שלישי - COBOL, Basic, Pascal, Smalltalk,

24

OOP בעית תחזוקה שניה –

פונקציות.5000 משתנים וכ- 500תוכנית מכילה כ-

בין שאר המשתנים קימת מחרוזת המייצגת את שם המשתמש (שם פרטי ושם משפחה).

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

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

מהן הסכנות הטמונות בעידכון?

בתוכנית שינויים

Encapsulation

Page 25: OOP Methodology. 2 OOP, Why? התפתחות שפות תכנות דור ראשון - שפת מכונה. דור שני Assembly -. דור שלישי - COBOL, Basic, Pascal, Smalltalk,

25

Encapsulationאובייקט :

) של מחלקה.Instanceאובייקט הוא מופע (•אובייקט הינו יישות ממשית התופסת משאבים, בעוד המחלקה היא יישות •

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

מחשב).אובייקט יכול לייצג יישות לא מוחשית (תאגיד, מחלקה, תוכנית, הצעה,חוזה, •

אחריות) וכו.אובייקט יכול לייצג אירוע (פגישה, מכירה, טיסה, השאלה, עסקה, הלוואה) •

וכו'.

Page 26: OOP Methodology. 2 OOP, Why? התפתחות שפות תכנות דור ראשון - שפת מכונה. דור שני Assembly -. דור שלישי - COBOL, Basic, Pascal, Smalltalk,

26

Encapsulation :Boochאובייקט - ההגדרה של

).Behavior) והתנהגות (State) מצב (Identityלכל אובייקט יש מזהה (

Identity: לכל אובייקט יש מזהה ייחודי, תפקידו לזהות את האובייקט באופן חד ערכי, על מנת

שניתן יהיה להבדיל בין האובייקטים השונים מאותה המחלקה.

State: של האובייקט.Stateאוסף הערכים של המאפיינים בזמן נתון קובע את ה-

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

כהתנהגות.

Page 27: OOP Methodology. 2 OOP, Why? התפתחות שפות תכנות דור ראשון - שפת מכונה. דור שני Assembly -. דור שלישי - COBOL, Basic, Pascal, Smalltalk,

27

Encapsulation :Boochאובייקט - ההגדרה של

של אובייקט Stateאירועים חיצוניים יכולים לשנות את ה- .Identityמסויים אולם לא את ה-

לדוגמה:

אובייקט המייצג הזמנה מכיל את השדות הבאים:

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

שדה הסטאטוס נשאר פתוח כל עוד ההזמנה לא סופקה ללקוח.

ברגע שהלקוח אישר את קבלת ההזמנה האובייקט משנה את ה- State.מפתוח לסגור