OOP Methodology. 2 OOP, Why? התפתחות שפות תכנות דור ראשון - שפת...

Preview:

Citation preview

OOP Methodology

2

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

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

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

3

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

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

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

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

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

משבר

התוכנה

4

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

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

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

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

התוכנה משבר

5

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

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

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

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

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

6

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

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

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

7

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

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

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

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

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

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

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

לוגית שגיאות

8

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

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

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

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

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

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

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

9

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

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

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

10

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

י ?רעלפרוצדו

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

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

האין זה עוול?

11

OOP, Why?יתרונות

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

12

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

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

13

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

הבאות:

Encapsulation

Inheritance

Polymorphism

14

Encapsulationהגדרה

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

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

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

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

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

האובייקט.

15

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

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

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

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

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

מבנה :

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

האובייקט.

שימוש חוזר :

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

16

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

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

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

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

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

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

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

17

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

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

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

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

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

18

Encapsulationמבנה מחלקה

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

19

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

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

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

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

20

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

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

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

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

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

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

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

21

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

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

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

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

22

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

23

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

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

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

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

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

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

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

לוגית שגיאות

24

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

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

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

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

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

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

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

Encapsulation

25

Encapsulationאובייקט :

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

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

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

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

וכו'.

26

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

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

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

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

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

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

כהתנהגות.

27

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

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

לדוגמה:

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

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

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

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