1 Abstract Classes האם קיים אובייקט בשם רהיט? האם קיים אובייקט בשם כלי תחבורה? האם קיים אובייקט בשם כלי כתיבה? האם קיים אובייקט בשם אדם? האם קיים אובייקט.

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.
האוניברסיטה העברית בירושלים
1 תוכנה 1 תרגול 14 – סיכום. 2 קצת על מנשקים מנשק יכול להרחיב יותר ממנשק אחד שירותים במנשק הם תמיד מופשטים וציבוריים public interface MyInterface { public.
תכנות מונחה עצמים Object Oriented Programming (OOP) אתגר מחזור ב'
רקורסיות נושאי השיעור פתרון משוואות רקורסיביות שיטת ההצבה
הורשה ופולימורפיזם 1 עיגול ריבוע משושה צורה מוטיבציה מנשק גרפי טיפוסי מורכב מ -Widgets 2 Entry Label Button Check Button.
חורף - תשס " ג DBMS, Design1 שימור תלויות אינטואיציה : כל תלות פונקציונלית שהתקיימה בסכמה המקורית מתקיימת גם בסכמה המפורקת. מטרה : כאשר מעדכנים.
שאלות חזרה לבחינה. שאלה דיסקים אופטיים מסוג WORM (write-once-read-many) משמשים חברות לצורך איחסון כמויות גדולות של מידע באופן קבוע ומבלי שניתן לשנותו.
חורף - תשס " ג DBMS, צורות נורמליות 1 צורה נורמלית שלישית - 3NF הגדרה : תהי R סכמה רלציונית ותהי F קבוצת תלויות פונקציונליות מעל R. R היא ב -3NF.
OOP Methodology.
1 Formal Specifications for Complex Systems (236368) Tutorial #5 Refinement in Z: data refinement; operations refinement; their combinations.
אוניברסיטת בן גוריון - מבוא למדעי המחשב 1 תרגול מספר 10  ממשקים o כללים בסיסיים o מימוש מספר ממשקים o דוגמת ממשק כחוזה  הורשה o כללים בסיסיים o דריסה.
תכנות תרגול 6 שבוע : תרגיל שורש של מספר מחושב לפי הסדרה הבאה : root 0 = 1 root n = root n-1 + a / root n-1 2 כאשר האיבר ה n של הסדרה הוא קירוב.
תרגול 10: הכרות עם ++C ++C כ- C משופר
הפקולטה למדעי המחשב אוטומטים ושפות פורמליות (236353)
1 נושאי התרגול : תכנות גנרי - Templates ירושה ופולימורפיזם.
1 הורשה ופולימורפיזם צורה ריבוע עיגול משושה. 2 מוטיבציה: מוטיבציה: אפליקציית חלונות טיפוסית – נעזרת בפקדים (Widgets) Button Textbox Label Form.
עקרון ההכלה וההדחה.
יחס סדר חלקי.
תכנות מונחה עצמים Object Oriented Programming (OOP) אתגר מחזור ב' Templates תבניות.
מבוא למדעי המחשב תרגול 3 שעת קבלה : יום שני 11:00-12:00 דוא " ל :
מבוא למדעי המחשב, סמסטר א ', תשע " א תרגול מס ' 1 נושאים  הכרת הקורס  פסאודו - קוד / אלגוריתם 1.
© המרכז להוראת המדעים האוניברסיטה העברית בירושלים
אביב תשס " ה JCT תיכון תוכנה ד " ר ר ' גלנט / י ' לויאןכל הזכויות שמורות 1 פרק 7 ISP דוגמא נוספת.
אתחול עצמים. אתחולים ובנאים יצירת מופע חדש של עצם כוללת: הקצאת זכרון, אתחול, הפעלת בנאים והשמה לשדות במסגרת ריצת הבנאי נקראים גם הבנאי/ם של מחלקת הבסיס.
המשך תכנות מונחה עצמים 1. היום בתרגול  הורשה  שיטות מיוחדות  פולימורפיזם 2.
פיתוח מערכות מידע Class diagrams Aggregation, Composition and Generalization.
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.
1 המרכז להוראת המדעים © האוניברסיטה העברית בירושלים פולימורפיזם מתקדם ממשקים בג ' אווה 1.
תכנות מכוון עצמים ושפת ++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:
 שאלות ממבחנים - C++.  בשאלה זאת עליכם לסייע בכתיבת תוכנית לניהול צי רכב של חברת השכרה.  סעיף א ' (10 נקודות )  סעיף א ' (10 נקודות ): עליכם לכתוב.
עקרונות תכנות מונחה עצמים תרגול 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.
מחרוזות – הטיפוס String
האוניברסיטה העברית בירושלים
תרגול 7: מנשקים, פולימורפיזם ועוד
Object Oriented Programming
Object Oriented Programming
Operators Overloading
Formal Specifications for Complex Systems (236368) Tutorial #1
תרגול 7: מנשקים, פולימורפיזם ועוד
מחלקות classes.
הורשה ופולימורפיזם צורה ריבוע משושה עיגול תרגול 13: ירושה
תוכנה 1 תרגול 13 – סיכום.
תוכנה 1 תרגול 13 – סיכום.
תכנות מונחה עצמים.
SQL בסיסי – הגדרה אינדוקטיבית
תכנות מכוון עצמים ו- C++ יחידה 08 פולימורפיזם
תכנות מכוון עצמים ושפת JAVA
תכנות מכוון עצמים בשפת JAVA
ממשקים - interfaces איך לאפשר "הורשה מרובה".
תוכנה 1 בשפת Java שיעור מספר 10: "ירושה נכונה" (הורשה II)
תוכנה 1 בשפת Java שיעור מספר 8: "ירושה נכונה" (הורשה II)
ניתוח מערכות מידע תכנות ב C#
תכנות מכוון עצמים ושפת JAVA
ירושה הגדרת קשר Is A.
תוכנה 1 תרגול 13 – סיכום.
תוכנה 1 תרגול 13 – סיכום.
הכלת אובייקטים קרן כליף.
פולימורפיזם מתקדם ממשקים בC# עריכה ועיצוב: קרן הרדי
Presentation transcript:

1 Abstract Classes האם קיים אובייקט בשם רהיט? האם קיים אובייקט בשם כלי תחבורה? האם קיים אובייקט בשם כלי כתיבה? האם קיים אובייקט בשם אדם? האם קיים אובייקט בשם צורה? האם במציאות היומיומית שלנו מושגים אלו הינם אובייקטים?

2 Abstract Classes האם קיים אובייקט בשם רהיט?, לא! במציאות היומיומית רהיט אינו אובייקט כי אם סיווג. שולחן, כסא, ארון, מדף, מיטה וכו' הינם אובייקטים, המכנה המשותף של כולם שהם רהיטים. האם קיים אובייקט בשם כלי תחבורה?, לא! במציאות היומיומית כלי תחבורה אינו אובייקט כי אם סיווג. מכונית, מטוס, אופניים, אופנוע וכו' הינם אובייקטים, המכנה המשותף של כולם שהם כלי תחבורה. האם קיים אובייקט בשם צורה?, לא! במציאות היומיומית צורה אינה אובייקט כי אם סיווג. עיגול, מלבן, משולש, ריבוע הינם אובייקטים, המכנה המשותף של כולם שהם צורות.

3 Abstract Classes החשיבה האנושית מתבססת על סטריאוטיפים. סטריאוטיפ, משמעותו, ידע מוקדם. המוח האנושי מסווג עצמים למשפחות/קטגוריות. כאשר בן האנוש נוקב בשמו של עצם מסויים, בני שיחו שולפים את הידע המוקדם שיש להם על אותו העצם. ללא תכונה זו השיח האנושי לא יכול היה להתקיים. לדוגמה: כאשר אדם מספר על המכונית החדשה שהוא רכש, הוא אינו צריך להסביר מה זה מכונית, לבני שיחו יש ידע קודם על מכוניות. אם החשיבה האנושית לא היתה מתבססת על ידע מוקדם שרכשנו, אותו מסכן היה צריך להסביר מה זה מכונית, מה זה רכישה, מה זה חנות, מה זה כסף וכו'. האם ניתן להביא תכונה זו לידי ביטוי גם לעולם התיכנות מונחה העצמים?

4 Abstract Classes ב- OOP ניתן להגדיר מחלקות אבסטרקטיות. הגדרה מחלקות אבסטרקטיות הינן מחלקות שלא ניתן לייצר מהן אובייקטים והן משמשות כבסיס לגזירה בלבד. במקרים בהם יש צורך להגדיר מחלקות בסיס לאובייקטים ממשיים ניתן להגדירם כמחלקות אבסטרקטיות. לדוגמה: במציאות לא קיימת יישות בשם צורה. ניתן לראות בצורה כסטריאוטיפ. בתוכנית גראפית יש משמעות חשובה למחלקה בסיסית בשם צורה. אין טעם לאפשר הקצאת אובייקט ממחלקה צורה כי אין לה משמעות קונקרטית. ניתן למנוע זאת על ידי הגדרת המחלקה צורה כמחלקה אבסטרקטית.

5 Abstract Classes class App { static void Main(string[] args) { Base b1 = new Base(); Base b2 = new Derived(); }  בכל מקרה שבו מוגדרת מחלקה בסיסית ואין צורך או אין היגיון לאפשר הקצאת אובייקטים ממחלקה זו, נקפיד להגדירה כמופשטת.

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

7 Abstract Method דוגמה: בקוד שבדוגמה, אין צורך לספק מימוש במחלקת הבסיס ולכן נעדיף להגדירה כמתודה אבסטרקטית. abstract class Shape { public abstract decimal CalcArea() } class Circle:Shape { public override decimal CalcArea() { … } } class Rectangle:Shape { public override decimal CalcArea() { … } } class Triangle:Shape { public override decimal CalcArea() { … } }

8 Abstract Method כל המחלקות הנגזרות חייבות לממש את המתודות האבסטרקטיות שהוגדרו במחלקת הבסיס. abstract class Shape { public abstract decimal CalcArea() } class Circle:Shape {... } class Rectangle:Shape { public override decimal CalcArea() { … } } class Triangle:Shape { public override decimal CalcArea() { … } } שגיאת קומפילציה.

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