OOP Methodology.

Slides:



Advertisements
Similar presentations
Completeness and Expressiveness. תזכורת למערכת ההוכחה של לוגיקה מסדר ראשון : אקסיומות 1. ) ) (( 2. )) ) (( )) ( ) ((( 3. ))) F( F( ( 4. ) v) ( ) v ((
Advertisements

Object Oriented 33 MCSD DORON AMIR
ממיבחניםC שאלות ++.
תוכנה 1 סמסטר א ' תשע " ב תרגול מס ' 7 * מנשקים, דיאגרמות וביטים * לא בהכרח בסדר הזה.
מבוא למדעי המחשב לתעשייה וניהול
בתרגול הקודם הורשה: –ניתן להרחיב רק מחלקה אחת –כל מה שלא private – עובר בהורשה –המילה השמורה super –יצירת היררכיה –Object היא שורש ההיררכיה –דריסה אופרטור.
1 Formal Specifications for Complex Systems (236368) Tutorial #4 Refinement in Z: data refinement; operations refinement; their combinations.
האוניברסיטה העברית בירושלים
טבלאות סמלים נכתב ע"י אלכס קוגן סמסטר חורף, תשס"ח.
תכנות מונחה עצמים Object Oriented Programming (OOP) אתגר מחזור ב'
רקורסיות נושאי השיעור פתרון משוואות רקורסיביות שיטת ההצבה
חורף - תשס " ג DBMS, Design1 שימור תלויות אינטואיציה : כל תלות פונקציונלית שהתקיימה בסכמה המקורית מתקיימת גם בסכמה המפורקת. מטרה : כאשר מעדכנים.
מכון ויצמן למדע - שמוליק מתוך 8 חישוב מקבילי ומבוזר מה זה יחידה חמישית במדעי המחשב... n ענף מתקדם במדעי המחשב העוסק במערכות ממוחשבות מרובות ישויות.
שאלות חזרה לבחינה. שאלה דיסקים אופטיים מסוג WORM (write-once-read-many) משמשים חברות לצורך איחסון כמויות גדולות של מידע באופן קבוע ומבלי שניתן לשנותו.
חורף - תשס " ג DBMS, צורות נורמליות 1 צורה נורמלית שלישית - 3NF הגדרה : תהי R סכמה רלציונית ותהי F קבוצת תלויות פונקציונליות מעל R. R היא ב -3NF.
1 Formal Specifications for Complex Systems (236368) Tutorial #5 Refinement in Z: data refinement; operations refinement; their combinations.
א " ב, מילים, ושפות הפקולטה למדעי המחשב אוטומטים ושפות פורמליות ( ) תרגיל מספר 1.
א " ב, מילים, ושפות הפקולטה למדעי המחשב אוטומטים ושפות פורמליות ( ) תרגיל מספר 1.
Formal Specifications for Complex Systems (236368) Tutorial #6 appendix Statecharts vs. Raphsody 7 (theory vs. practice)
תורת הקבוצות חלק ב'. קבוצה בת מניה הגדרה: קבוצה אינסופית X היא ניתנת למניה אם יש התאמה חד-חד ערכית בין X לבין .
מנפה שגיאות - DEBUGGER מבוא למדעי המחשב (234114) רועי מלמד
א " ב, מילים, ושפות הפקולטה למדעי המחשב אוטומטים ושפות פורמליות ( ) תרגיל מספר 1.
רישום חומרי למידה והסטנדרט הישראלי: ISRACORE יהודית בר אילן, אוניברסיטת בר-אילן אלי שמואלי, מיט"ל.
קורס תכנות – סימסטר ב ' תשס " ח שיעור שישי: מערכים
מבני בקרה לולאות. שאלה #1 שאלה ב' – תכתוב תוכנה הכותבת את תפריט הבאה Type 1 to find the area of a circle Type 2 to find the circumference of a circle.
אלכסנדר ברנגולץ דואר אלקטרוני: אלכסנדר ברנגולץ דואר אלקטרוני: פעולות מורפולוגיות.
מערכים עד היום כדי לייצג 20 סטודנטים נאלצנו להגדיר עד היום כדי לייצג 20 סטודנטים נאלצנו להגדיר int grade1, grade2, …, grade20; int grade1, grade2, …, grade20;
מודל הלמידה מדוגמאות Learning from Examples קלט: אוסף של דוגמאות פלט: קונסיסטנטי עם פונקציה f ב- C ז"א קונסיסטנטי עם S ז"א מודל הלמידה מדוגמאות Learning.
עקרון ההכלה וההדחה.
תכנות מונחה עצמים Object Oriented Programming (OOP) אתגר מחזור ב' Templates תבניות.
מבוא למדעי המחשב, סמסטר א ', תשע " א תרגול מס ' 1 נושאים  הכרת הקורס  פסאודו - קוד / אלגוריתם 1.
A. Frank File Organization Introduction to Pile File.
© המרכז להוראת המדעים האוניברסיטה העברית בירושלים
1 מבוא למדעי המחשב סיבוכיות. 2 סיבוכיות - מוטיבציה סידרת פיבונאצ'י: long fibonacci (int n) { if (n == 1 || n == 2) return 1; else return (fibonacci(n-1)
אפיון וניתוח מערכות מידע ( ) 1 גישה מוכוונת עצמים  גישה מוכוונת עצמים  גישה מוכוונת עצמים - ארגון המודל כאוסף של מחלקות שמשלבות מבנה נתונים והתנהגות.
1 Abstract Classes האם קיים אובייקט בשם רהיט? האם קיים אובייקט בשם כלי תחבורה? האם קיים אובייקט בשם כלי כתיבה? האם קיים אובייקט בשם אדם? האם קיים אובייקט.
פיתוח מערכות מידע Class diagrams Aggregation, Composition and Generalization.
תכנון השעור מבוסס על שאלה 3 במבחן המסכם ( מועד א ' ) 2010.
Methods public class Demonstrate { public static void main (String argv[]) { public static void main (String argv[]) { int script = 6, acting = 9, directing.
תכנות אסינכרוני, תקשורת ופיתוח אפליקציות ל- Windows 8.1 ואפליקציות ל- Windows Phone 8 Control (Part II)
מבוא למדעי המחשב לתעשייה וניהול הרצאה 7. סברוטינות subroutines.
תכנות מכוון עצמים ושפת ++C וויסאם חלילי. TODAY TOPICS: 1. Function Overloading & Default Parameters 2. Arguments By Reference 3. Multiple #include’s 4.
1 תרגול 11: Design Patterns ומחלקות פנימיות אסף זריצקי ומתי שמרת 1 תוכנה 1.
1 Formal Specifications for Complex Systems (236368) Tutorial #1 Course site:
עקרונות תכנות מונחה עצמים תרגול 11: OOP in C++. Outline  Where do the objects live ?  Inheritance  Slicing  Overriding vs Shadowing.
Overview of C#. Agenda Structure of a C# Program Basic Input/Output Operations Compiling, Running, and Debugging Namespaces.
Java Reflection הוכן על-ידי אחמד ג'בארה
שימוש בעצם ממחלקה אחרת כמאפיין במחלקה הנוכחית
Object Oriented Programming
Object Oriented Programming
Operators Overloading
Formal Specifications for Complex Systems (236368) Tutorial #1
Object Oriented Programming
מחלקות classes.
מבוא לתכנות מונחה עצמים Object Oriented Programming
SQL בסיסי – הגדרה אינדוקטיבית
תכנות מכוון עצמים ושפת JAVA
Static and enum קרן כליף.
עבודה עם נתונים באמצעות ADO.NET
פיתוח אפליקציות אסינכרוניות Windows 10
תכנות מכוון עצמים בשפת JAVA
ממשקים - interfaces איך לאפשר "הורשה מרובה".
מסדי נתונים מסד נתונים הינו אוסף של טבלאות המכיל לפחות טבלה אחת. כל טבלה הינה אוסף של רשומות (לפחות רשומה בודדת) וכל רשומה מכילה אוסף של שדות ולבסוף.
אובייקטים ומחלקות קרן כליף.
ניתוח מערכות מידע תכנות ב C#
תכנות מכוון עצמים ושפת JAVA
תכנות מכוון עצמים ושפת JAVA
מבוא לתכנות מונחה עצמים Object Oriented Programming
תוכנה 1 תרגול 13 – סיכום.
מבוא למערכות מידע פרק 1.
Presentation transcript:

OOP Methodology

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

OOP, Why? התפתחות המחשבים 1950 – משמשים בעיקר בתעשייה הביטחונית, עיבודים מבוססים Batch, הפצה מאוד מוגבלת, תוכנות מופעלות על ידי מומחים, מדענים וכו'. 1960 – ריבוי משתמשים (Multi-user) , עיבוד מקבילי, מסדי נתונים, חברות אזרחיות מתעניינות במיחשוב. 1970 - מערכות מבוזרות, מחירי החומרה צונחים, כניסה מסיבית יותר לעולם האזרחי, דרישות שונות מהמקובל, משתמשים פחות מקצועיים. 1968 - משרד ההגנה האמריקאי משבר התוכנה

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

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

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

OOP, Why? שגיאות לוגית תכנות פרוצדוראלי – בעית תחזוקה ראשונה. תוכנית מכילה כ- 500 משתנים וכ- 5000 פונקציות. נניח שטווח ערכיו החוקי של אחד מהמשתנים המוגדרים בתוכנית הוא בין 1 ל- 100 , בדוחו"ת שהתוכנית מנפיקה המשתנה מכיל את הערך 300 . היכן נמצאת הטעות? , כמה זמן יקח לאתר את המקום המדוייק? כמה זמן יקח לתקן את שגיאה? מהן הסכנות הטמונות בתיקון השגיאה?

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

האדם אינו אמור להתאים עצמו ולשרת את הטכנולוגיה, OOP, Why? תכנות פרוצדוראלי, פרוצדורעלי או פרוצדורעלי ? האדם אינו אמור להתאים עצמו ולשרת את הטכנולוגיה, הטכנולוגיה היא זו שאמורה להתאים עצמה לאדם ולשרת את צרכיו.

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

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

OOP, Why not? חסרונות איטיות. גודל.

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

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

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

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

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

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

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

Data Members תמיד יוגדרו כ- Private. Encapsulation ערך מוסף – הסתרת מידע לכל חבר מחלקה (Data Members ו- Methods) מוגדרת הרשאת גישה משלו, קיימות מספר הרשאות גישה, השכיחות ביותר הן: Public ו- Private . Private: חברי מחלקה המוגדרים כ- Private הנם פרטיים למחלקה ולכן מוכרים רק על ידי המתודות של המחלקה, מחלקות אחרות אינן יכולות לגשת אליהם לא לצורך קריאת תוכנם ולא לצורך שינוי תוכנם, המחלקות השונות בפרויקט אף לא מודעות לקיומם של הרכיבים הפרטיים בתוך המחלקה. Public: חברי מחלקה המוגדרים כ- Public הנם ציבוריים ולכן הם מוכרים על ידי המחלקות האחרות בפרויקט אשר יכולות לגשת אליהם. על מנת להגן על הנתונים נקפיד על הכלל הבא: Data Members תמיד יוגדרו כ- Private.

Encapsulation תכונות המחלקה - שימוש חוזר : יתרונות: המחלקות מעודדות שימוש חוזר בהן בפרוייקטים רבים. אין צורך ל"המציא את הגלגל מחדש" יתרונות: נדרש לכתוב פחות קוד. מקצר ומוזיל תהליכי פיתוח. אמינות – שימוש ברכיבים שכבר הוכיחו את עצמם.

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

Encapsulation שגיאות לוגית OOP – בעית תחזוקה ראשונה. תוכנית מכילה כ- 500 משתנים וכ- 5000 פונקציות. נניח שטווח ערכיו החוקי של אחד מהמשתנים המוגדרים בתוכנית הוא בין 1 ל- 100 , בדוחו"ת שהתוכנית מנפיקה המשתנה מכיל את הערך 300 . היכן נמצאת הטעות? , כמה זמן יקח לאתר את המקום המדוייק? כמה זמן יקח לתקן את שגיאה? מהן הסכנות הטמונות בתיקון השגיאה?

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

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

Encapsulation אובייקט - ההגדרה של Booch : לכל אובייקט יש מזהה (Identity) מצב (State) והתנהגות (Behavior). Identity : לכל אובייקט יש מזהה ייחודי, תפקידו לזהות את האובייקט באופן חד ערכי, על מנת שניתן יהיה להבדיל בין האובייקטים השונים מאותה המחלקה. State : אוסף הערכים של המאפיינים בזמן נתון קובע את ה- State של האובייקט. Behavior : לכל אובייקט מוגדרות אוסף פעילויות , לכל קבוצה של פעילויות ניתן להתייחס כהתנהגות.

Encapsulation אובייקט - ההגדרה של Booch : אירועים חיצוניים יכולים לשנות את ה- State של אובייקט מסויים אולם לא את ה- Identity . לדוגמה: אובייקט המייצג הזמנה מכיל את השדות הבאים: פרטי ההזמנה, תאריך ההזמנה, רשימת מוצרים בהזמנה וסטאטוס. שדה הסטאטוס נשאר פתוח כל עוד ההזמנה לא סופקה ללקוח. ברגע שהלקוח אישר את קבלת ההזמנה האובייקט משנה את ה- State מפתוח לסגור.