Download presentation
Presentation is loading. Please wait.
1
Object Oriented Programming
ירושה Inheritance based on: faculty.washington.edu/jkp/CPP/Intro/lectures/inherit.ppt נכתב ע"י יעל ארז. © כל הזכויות שמורות.
2
ירושה - מוטיבציה ירושה היא הרחבה של המחלקה. הירושה מאפשרת: שימוש חוזר בקוד קיבוץ קטעי קוד זהים גמישות כלומר הקוד יותר נוח לשימוש, שינוי ותחזוקה. Copyright 2006 Oxford Consulting, Ltd 1 February 2006
3
נכתב ע"י יעל ארז. © כל הזכויות שמורות.
ירושה מבוא ירושה היא מנגנון המאפשר לבנות מחלקה מתוך מחלקה קיימת. מגדירים מחלקה חדשה להיות: הכללה צמצום של מחלקה קיימת. תלוי בנקודת המבט שלנו... נכתב ע"י יעל ארז. © כל הזכויות שמורות.
4
נכתב ע"י יעל ארז. © כל הזכויות שמורות.
ירושה מבוא הירושה שאנחנו מכירים: ירושה מהורים, ירושה ביולוגית. ירושה ב C++: Document Online document Printed document Help file Book Online tutorial Magazine נכתב ע"י יעל ארז. © כל הזכויות שמורות.
5
נכתב ע"י יעל ארז. © כל הזכויות שמורות.
ירושה A printed document is a kind of document A book is a kind of printed document A help file is a kind of online document … מבוא Document Online document Printed document Help file Book Online tutorial Magazine נכתב ע"י יעל ארז. © כל הזכויות שמורות.
6
נכתב ע"י יעל ארז. © כל הזכויות שמורות.
ירושה מבוא חלוקה לתת קבוצות נקראת: Subclass – תת מחלקה Derived Class – מחלקה יורשת Children – צאצא, ילד הצאצא יורש: מאפיינים ותכונות יכולות הצאצא יכול להרחיב או לשנות יכולות של האבא נכתב ע"י יעל ארז. © כל הזכויות שמורות.
7
נכתב ע"י יעל ארז. © כל הזכויות שמורות.
ירושה מבוא Class Instance Document my document צמצום הכללה Printed document My printed document Book Magazine BVD warAndPeace נכתב ע"י יעל ארז. © כל הזכויות שמורות.
8
נכתב ע"י יעל ארז. © כל הזכויות שמורות.
ירושה Single inheritance Base Class Document אבא Derived Class Printed document ילד נכתב ע"י יעל ארז. © כל הזכויות שמורות.
9
נכתב ע"י יעל ארז. © כל הזכויות שמורות.
ירושה Single Inheritance Indirect Base Class Document Direct Base Class Printed document אבא Derived Class Book ילד נכתב ע"י יעל ארז. © כל הזכויות שמורות.
10
ירושה class PrintedDocument {}; // Book is derived from PrintedDocument. class Book : public PrintedDocument {}; // PaperbackBook is derived from Book. class PaperbackBook : public Book {}; Copyright 2006 Oxford Consulting, Ltd 1 February 2006
11
נכתב ע"י יעל ארז. © כל הזכויות שמורות.
ירושה Multiple Inheritance animal mamal winged animal bat נכתב ע"י יעל ארז. © כל הזכויות שמורות.
12
נכתב ע"י יעל ארז. © כל הזכויות שמורות.
ירושה Multiple Inheritance ניתן גם לרשת ללא אבא משותף: person employee teacher נכתב ע"י יעל ארז. © כל הזכויות שמורות.
13
נכתב ע"י יעל ארז. © כל הזכויות שמורות.
ירושה אפשרויות בירושה מותר לרשת מכל מחלקה. הילד יורש ממחלקת האב את ה D.M.s וה F.M.s שלו. ירושה מאפשרת להוסיף D.M.s על אלו הקיימים במחלקת האב. ירושה מאפשרת להוסיף F.M.s על אלו הקיימות במחלקת האב. ירושה מאפשרת ל"הסתיר", override, F.M.s הקיימות במחלקת האב. נכתב ע"י יעל ארז. © כל הזכויות שמורות.
14
נכתב ע"י יעל ארז. © כל הזכויות שמורות.
ירושה אפשרויות בירושה ניתן לגשת לשדות של האב ע"י האופרטור :: (scope) דוגמא document.cpp נכתב ע"י יעל ארז. © כל הזכויות שמורות.
15
נכתב ע"י יעל ארז. © כל הזכויות שמורות.
ירושה אפשרויות בירושה למתודות ב derived אין זכויות גישה למה שהוגדר כ private ב base! class base{ private: ….class base definition }; class derived : public base{ …class derived definition; נכתב ע"י יעל ארז. © כל הזכויות שמורות.
16
נכתב ע"י יעל ארז. © כל הזכויות שמורות.
ירושה Protected D.M.s and F.M.s class base{ protected: ….class base definition }; class derived : public base{ …class derived definition; אם במקום להגדיר את השדות ב base כ private נשתמש במילת המפתח protected נאפשר לפונקציות של derived גישה ישירה אליהם. protected עדיין משאירה אותם מוגנים (private) בפני העולם החיצוני. נכתב ע"י יעל ארז. © כל הזכויות שמורות.
17
נכתב ע"י יעל ארז. © כל הזכויות שמורות.
ירושה class Stack { protected: int size ; // max Number of elements on Stack int top ; // index of last entered element int* s ; public: Stack(int = 10) ; ~Stack() { delete [] s ; } int push(int); int pop(int&) ; // pop an element off the stack int isEmpty()const { return top == -1 ; } int isFull() const { return top == size - 1 ; } } ; דוגמא stack_1.cpp נכתב ע"י יעל ארז. © כל הזכויות שמורות.
18
נכתב ע"י יעל ארז. © כל הזכויות שמורות.
סוגי ירושה class base{ ….class base definition }; class derived1 : public base{ …class derived1 definition; class derived2 : protected base{ …class derived2 definition; class derived3 : private base{ …class derived3 definition; ירושת public ירושת protected ירושת private נכתב ע"י יעל ארז. © כל הזכויות שמורות.
19
נכתב ע"י יעל ארז. © כל הזכויות שמורות.
סוגי ירושה ירושת public class A { public: int x; protected: int y; private: int z; }; class B : public A { // x is public // y is protected // z is not accessible from B }; נכתב ע"י יעל ארז. © כל הזכויות שמורות.
20
נכתב ע"י יעל ארז. © כל הזכויות שמורות.
סוגי ירושה ירושת protected class A { public: int x; protected: int y; private: int z; }; class C : protected A { // x is protected // y is protected // z is not accessible from B }; נכתב ע"י יעל ארז. © כל הזכויות שמורות.
21
נכתב ע"י יעל ארז. © כל הזכויות שמורות.
סוגי ירושה ירושת private class A { public: int x; protected: int y; private: int z; }; class D : private A { // x is private // y is private // z is not accessible from B }; נכתב ע"י יעל ארז. © כל הזכויות שמורות.
22
נכתב ע"י יעל ארז. © כל הזכויות שמורות.
אתחול ושחרור ילד Constructors and Destructors הילד אינו יורש את ה constructors ואת ה destructors מהאב. האתחול מתבצע ע"י רצף של constructors: ה constructor של האב מאתחל את השדות של האב. ה constructor של הילד משלים את האיתחול. Base :: Base Base Part Derived :: Derived Derived Part נכתב ע"י יעל ארז. © כל הזכויות שמורות.
23
נכתב ע"י יעל ארז. © כל הזכויות שמורות.
אתחול ושחרור ילד Constructors and Destructors הילד מקבל את כל המידע הדרוש לאתחול (שלו ושל האב) הילד קורא ל constructor של האב ברשימת אתחול אם אין קריאה ל constructor ייקרא ה Default constructor Derived ( derived & base args ) : Base ( base args ) { // Derived constructor body } נכתב ע"י יעל ארז. © כל הזכויות שמורות.
24
נכתב ע"י יעל ארז. © כל הזכויות שמורות.
אתחול ושחרור ילד Constructors and Destructors כאשר הילד נמחק, נקרא רצף של destructors בסדר הפוך קודם מתבצע ה destructor של הילד ואח"כ של האב אין קריאה מפורשת ל destructor של האב Base :: ~Base Base Part Derived :: ~Derived Derived Part נכתב ע"י יעל ארז. © כל הזכויות שמורות.
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.