Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
មជ្ឈមណ្លអិនធ័រព័តមានវិទ្យា       ឌ         ៌                                                         Enter Information Tec...
Enter Information Technology Center                                               មជ្ឈមណ្លអិនធ័រព័តមានវិទ្យា              ...
មជ្ឈមណ្លអិនធ័រព័តមានវិទ្យា       ឌ         ៌                                               Enter Information Technology Ce...
Enter Information Technology Center                                             មជ្ឈមណ្លអិនធ័រព័តមានវិទ្យា                ...
មជ្ឈមណ្លអិនធ័រព័តមានវិទ្យា       ឌ         ៌                                                 Enter Information Technology ...
Enter Information Technology Center                      មជ្ឈមណ្លអិនធ័រព័តមានវិទ្យា                                       ...
មជ្ឈមណ្លអិនធ័រព័តមានវិទ្យា       ឌ         ៌                                               Enter Information Technology Ce...
Enter Information Technology Center                      មជ្ឈមណ្លអិនធ័រព័តមានវិទ្យា                                       ...
មជ្ឈមណ្លអិនធ័រព័តមានវិទ្យា       ឌ         ៌                              Enter Information Technology Center      Dog::Do...
Upcoming SlideShare
Loading in …5
×

C++ OOP chapter 3

3,296 views

Published on

Published in: Technology
  • Be the first to comment

C++ OOP chapter 3

  1. 1. មជ្ឈមណ្លអិនធ័រព័តមានវិទ្យា ឌ ៌ Enter Information Technology Center មមមរៀនទ្យី 3 : សិក្សាពី Inheritance-I1.និយមន័យ Inheritance: Inheritance គឺជាវ ិធីសាស្រ្តននការបង្កើតង ើ្នូ វ Class មួយងោយងធវើការទាញយក Properties និ្ Functions រប្់ Class ដនទងទៀតមកង្បើ ្ា្់ងៅកនុ្ Class រប្់ខ្ួលនងោយមិនចាំាច់បង្កើតង ើ្វ ិញង ើយ។ ឧទាហរណ: Dog ៍ គឺជា្បងភទ ឬមានពូជរប្់វាជា Canine ងហើយចាំង ោះ Canine គឺជា្បងភទនន Mammal ជាងដើម។ ដូ ងចនោះជាទូ ងៅ Clasទាាំ្អ្់តត្តត្តូវានតបកជាងៅជា ្កុម, ថ្នក់, លាំោប់ , ្គួសារ, ជាំពូក, ឬ្បងភទជាងដើម។ ន is-a relationship គឺ្តូវានង្បើ្ា្់្ាំរាប់បញ្ជក់អតថន័យងៅឲ Class មួយតដលានងធវើ Inheritance ងចញពី Class ា ដនទងទៀតតដលជា្កុម ឬជា្បងភទរប្់វា។ ឧទាហរណ: ៍ > Camry is a ( is-a ) kind of car, and Car is a ( is-a ) kind of Vehicle. > Burger is a ( is-a ) kind of bread, and Bread is ( is-a ) kind of food. > HTC is a ( is-a ) kind of mobile phone, and Mobile Phone is a ( is-a ) kind of Phone. ងពលតដលមានការបង្ហញឬនិយាយពី Class មួយតដលវាគឺជា្បងភទនន Class ណាមួ យងផេ្ងទៀតងៅកនុ្ OOP ា ងគអាចងៅថ្ន Class ងនោះគឺជា specialization នន Class ដនទងទៀត។ ឧទាហរណ: ៍ > Car is a special kind of Vehicle. > Bread is special kind of food. > Mobile Phone is a special kind of Phone.2. Inheritance and Derivation: Derivation គឹជាការទាញយក Property និ្ Function ងចញពី Class ងផេ្ងទៀតតដលានងធវើ Inheritance ។ ចាំង ោះ Dog តដលវាមាន្បងភទជា Mammal ដូងចនោះវានឹ្ទទួ ល (Derive) ្គប់ Features ទាាំ្អ្់រប្់ Mammal តដល មាន។ ្គប់ Mammals ទាាំ្អ្់គឺអាចងធវើការ Move និ្ Breathe Air ានផ្តដរ ដូងចនោះ Class Dog គឺអាចងធវើការ Move និ្ Breathe Air ានងោយ្វ័យ្បវតតិងោយមិនចាំាច់បង្កើតង ើ្ងោយខ្លួនឯ្ង ើយ។ កនុ្ង ោះ Class Dog អាចបតនថមនូ វ Features ផ្ទល់ខ្ួលនរប្់វាបតនថមងទៀតដូចជា Barking, Wagging, ងហើយងយើ្អាចងធវើការតប្តចក ទ Class Dog ងៅជា្បងភទងផេ្ៗជាង្ចើនងទៀតដូចជា Working Dogs, Sporting Dogs, និ្ Terriers។ ចាំង ោះ Sporting Dogs ងយើ្អាចងធវើការបាំ តបកងៅជា Retrievers, Spaniels,… ។ រ ីឯ Class Dog ដនទងទៀតងយើ្ក៏ អាច Specialized វាបតនថមងទៀតដូ ចជា Retrievers អាចតប្តចកងៅជា Labradors និ្ Goldens ។ ដូងចនោះ Golden គឺជា្បងភទនន Retriver តដលគឺ ជា្បងភទ Sporting Dog ងហើយគឺជា Dog តដល្ថិតងៅកនុ្្បងភទ Mamal តដលវា្ថិតងៅកនុ្្បងភទ Animal ។C++ OOP www.enteritc.com 17
  2. 2. Enter Information Technology Center មជ្ឈមណ្លអិនធ័រព័តមានវិទ្យា ឌ ៌ Animal សត្វ Mammal Reptile ថនិ កសត្វ ថ្នក់ ា ន ូៅ Horse Dog សសេះ ឆ្កែ Working Sporting Terriers ឆ្កែស្វើការ ឆ្កែកីឡា ឆ្កែសដញសត្វ Retrievers Spaniels ឆ្កែពាំរបស់ ឆ្កែបង្ហញមូ ដ ា Labradors Goldens ពូ ជស ឿងឬសមៅ ពូ ជមាស ជាមួយនឹ្ C++ OOP គឺពាយាមងធវើការបង្ហញនូ វទាំ ា ក់ ទាំន្ទាាំ្ងនោះងដើមបីងោយង្ហយស្្ួលកនុ្បង្កើត Class ងោយទាញយក (Derive) Features ងចញពី Class ច្់តដលមានស្សាប់ ។ Derivation គឺជាវ ិធីសាស្រ្តននការបង្ហញពី ា is-a Relationship ងោយងយើ្អាចបង្កើត Class Dog ថមីងហើយ Derive ពី Class Mammal ដូងចនោះងយើ្មិនចាំាច់្ាប់ ឲ Dog ងធវើការ Move ង ោះងទង្ ោះវាអាច Move ងោយ្វ័យ្បវតតិងោយវាាន inherit ងចញពី Mammal ។ Class ថមីតដល្តូវបង្កើតង ើ្ងហើយ Add នូវ Functionality ( Property + Function) រប្់ Class ងផេ្ងទៀតតដលមាន ងហើយគឺអាចនិយាយថ្ន Class ថមីាន Derive ពី Original Class ។ Original Class ្តូវានងៅថ្នជា Base Class នន Class ថមី។ ្ប្ិនងបើ Class Dog ានងធវើការ Derive ងចញពី Class Mammal ង ោះមានន័យថ្ន Class Mammal គឺជា Base Class នន Dog ។ ចាំង ោះ Derive Class វ ិញគឺ ជា Supersets នន Base Class រប្់ពួកវា។ ជាទូងៅ្គប់ Base Class ទាាំ្អ្់អាចមាន Derive Class ងលើ្ពីមួយ ឧទាហរណដូ ចជា Dog, Cat, Horse គឺ្ុទធ ៍ តតជា្បងភទ Mammal ដូងចនោះពួកវាទាាំ្អ្់ជា Derive ពី Class Mammal តតមួ យានផ្តដរ។18 www.enteritc.com C++ OOP
  3. 3. មជ្ឈមណ្លអិនធ័រព័តមានវិទ្យា ឌ ៌ Enter Information Technology Center3. Syntax of Derivation: Syntax: class <derivedClass> : <accessType> <baseClass> Ex: class Dog : public Mammal ងពលតដលងយើ្ងធវើការ declare នូវ Class មួយ ងយើ្អាចងធវើការបង្ហញពីការ Derive រប្់វាងធវើការ្រង្រ Colon (:) ា ប ទ ប់ពីង្ោះ Class ប ទ ប់ មក្បងភទនន Access Type (តដលមានដូចជា public ឬ private) និ្ង្ោះរប្់ Base ម ម Class ។ Ex: //Simple Inheritance #include<iostream> using namespace std; enum BREED {GOLDEN,CAIRN,DANDIE,SHETLAND,DOBEMAN,LAB}; class Mammal { public: Mammal(); ~Mammal(); int GetAge() const; void SetAge(int); int GetWeight() const; void SetWeight(); void Speak() const; void Slepp() const; protected: int itsAge; int itsWeight; }; class Dog:public Mammal { public: Dog(); ~Dog(); BREED GetBreed() const; void SetBreed(BREED); void WagTail(); void BegForFood(); protected: BREED itsBreed; };C++ OOP www.enteritc.com 19
  4. 4. Enter Information Technology Center មជ្ឈមណ្លអិនធ័រព័តមានវិទ្យា ឌ ៌4. Private Versus Protected: ចាំង ោះ Private Member គឺមិនអាចង្បើ្ា្់ងៅខា្ង្ៅ Class រប្់វាង ោះងទ មានន័ យថ្ន្ប្ិនងបើ Member ជា Private ង ោះវាអាចង្បើ ្ា្់ងៅកនុ្តត Class ខ្លួនឯ្បុងណាោះ ណ ងោយមិនអាចយកងៅង្បើ្ា្់ងៅខា្ង្ៅានង ើយ ្ូមបីតត Derive Class ក៏ងោយ។ ងដើមបីងោោះស្សាយនូ វបញ្ជងនោះ គឺ្តូវងធវើការតកត្ប Member ទាាំ្ង ា ោះងៅជា Protected Member វ ិញមានន័យថ្ន Protected Member គឺអនុញ្ជតិឲ Member អាចង្បើ ្ា្់ានជាមួ យនឹ្ Class រប្់ខ្ួលនវា ា និ្អាចង្បើ ្ា្់ានជាមួ យនឹ្ Derive Class រប្់វាានផ្តដរ។ ្រុបមកជាមួ យនឹ្ Members គឺ្តូវានង្បើ ្ា្់ជាមួយនឹ្ Access Specifiers ចាំនួន 3 រួមមាន: > Public Member : គឺជា Member ្ាំរាប់ឲ Class ខ្លួនវាង្បើ ្ា្់ផ្ និ្្ាំរាប់ Class ដនទងទៀតង្បើ ្ា្់ានផ្តដរ។ > Private Member : គឺជា Member ្ាំរាប់ឲ Class ខ្លួនង្បើ ្ា្់តតបុងណាោះ ងោយមិនអនុញ្ជតិ Class ណ ា ដនទងទៀតង្បើ ្ា្់ានង ើយ។ > Protected Member : គឺជា Member ្ាំរាប់ឲ Class ខ្លួនង្បើ ្ា្់តតបុងណាោះ ងហើយនឹ្ Derive Class ណ រប្់វាតតបុ ងណាោះ ងោយមិនអនុញ្ជតិ Class ដនទងទៀតង្បើ្ា្់ានង ណ ា ើយ។ Ex: //Using a derived object #include<iostream> using namespace std; enum BREED {GOLDEN,CAIRN,DANDIE,SHETLAND,DOBEMAN,LAB}; class Mammal { public: Mammal():itsAge(2),itsWeight(5){} ~Mammal(){} int GetAge() const {return itsAge;} void SetAge(int age){itsAge = age;} int GetWeight() const{return itsWeight;} void SetWeight(int weight){itsWeight=weight;} void Speak() const{cout<<"Mammal sound!n";} void Sleep() const{cout<<"shhh.Im sleeping.n";} protected: int itsAge; int itsWeight; };20 www.enteritc.com C++ OOP
  5. 5. មជ្ឈមណ្លអិនធ័រព័តមានវិទ្យា ឌ ៌ Enter Information Technology Center class Dog:public Mammal { public: Dog():itsBreed(GOLDEN){} ~Dog(){} BREED GetBreed() const{return itsBreed;} void SetBreed(BREED breed){itsBreed=breed;} void WagTail()const{cout<<"Tail wagging...n";} void BegForFood()const{cout<<"Beggin for food...n";} protected: BREED itsBreed; }; int main(){ Dog Fido; Fido.Speak(); Fido.WagTail(); cout<<"Fido is "<<Fido.GetAge()<<" years old"<<endl; cin.get(); return 0; }5. Inheritance with Constructors and Destructors: Dog Object គឺជា្បងភទ Mammal Object តដលវាមាន is-a relationship ្ាំរាប់ទាំ ក់ទាំន្ជាមួយគ្ន ន ងហើយកនុ្ង ោះ្ប្ិនងបើមាន Constructor ងៅកនុ្ Base Class (Mammal Class) និ្កនុ្ Derive Class (Dog Class) ផ្ង ោះ ងៅងពល Constructor រប្់ Dog ្តូវាន Call ង ោះវានឹ្ងៅ Call ងៅ Constructor រប្់ Base Class គឺ Mammal Class ជាមុន្ិនងទើប ដាំងនើ ការនន Constructor រប្់ Dog តាមង្កាយ។ ផទុយងៅវ ិញងៅងពលពួកវា Call ងៅ Destructor វ ិញគឺ ្តូវ Call ងៅ Dog Destructor ជាមុន្ិន ងទើប Call ងៅ Mammal Destructor តាមង្កាយវ ិញ។ ្រុបមក Constructor និ្ Destructor រប្់ Class ទាាំ្ឡាយតដលងធវើ Inheritance គឺនឹ្្តូវាន Call រាល់ងលើក ងៅងពលតដលវាដាំងនើ ការ។C++ OOP www.enteritc.com 21
  6. 6. Enter Information Technology Center មជ្ឈមណ្លអិនធ័រព័តមានវិទ្យា ឌ ៌ Ex: //Constructors and destructors called. #include<iostream> using namespace std; enum BREED {GOLDEN,CAIRN,DANDIE,SHETLAND,DOBEMAN,LAB}; class Mammal { public: Mammal(); ~Mammal(); int GetAge() const {return itsAge;} void SetAge(int age){itsAge = age;} int GetWeight() const{return itsWeight;} void SetWeight(int weight){itsWeight=weight;} void Speak() const{cout<<"Mammal sound!n";} void Sleep() const{cout<<"shhh.Im sleeping.n";} protected: int itsAge; int itsWeight; }; class Dog:public Mammal { public: Dog(); ~Dog(); BREED GetBreed() const{return itsBreed;} void SetBreed(BREED breed){itsBreed=breed;} void WagTail()const{cout<<"Tail wagging...n";} void BegForFood()const{cout<<"Beggin for food...n";} protected: BREED itsBreed; }; Mammal::Mammal():itsAge(3),itsWeight(5){ cout<<"Mammal constructor..."<<endl; } Mammal::~Mammal(){ cout<<"Mammal destructor..."<<endl; }22 www.enteritc.com C++ OOP
  7. 7. មជ្ឈមណ្លអិនធ័រព័តមានវិទ្យា ឌ ៌ Enter Information Technology Center Dog::Dog():itsBreed(GOLDEN){ cout<<"Dog constructor..."<<endl; } Dog::~Dog(){ cout<<"Dog destructor..."<<endl; } int main(){ Dog Fido; Fido.Speak(); Fido.WagTail(); cout<<"Fido is "<<Fido.GetAge()<<" years old"<<endl; cin.get(); return 0; }6. Passing Arguments to Base Constructors: វាក៏អាចដាំងនើការានផ្តដរ្ប្ិនងបើ ងយើ្្តូវការ initialize values ងៅកនុ្ Base Constructor ។ ឧទាហរណថ្ន ៍ ងយើ្ច្់ ងធវើ Overload Constructor នន Mammal Class ងោយយក age ជាតាំនលជាក់ លាក់ និ្ Overload Dog Constructor ងោយយក Breed ។ វ ិធីសាស្រ្តខា្ង្កាមនឹ ្បង្ហញពី ការ ចប់យកនូ វ age និ្ weight parameters ា ងោយ Pass ងៅកនុ្ Constructor Mammal ។ Ex: //Constructors and destructors called. #include<iostream> using namespace std; enum BREED {GOLDEN,CAIRN,DANDIE,SHETLAND,DOBERMAN,LAB}; class Mammal { public: Mammal(); Mammal(int age); ~Mammal(); int GetAge() const {return itsAge;} void SetAge(int age){itsAge = age;} int GetWeight() const{return itsWeight;} void SetWeight(int weight){itsWeight=weight;} void Speak() const{cout<<"Mammal sound!n";} void Sleep() const{cout<<"shhh.Im sleeping.n";}C++ OOP www.enteritc.com 23
  8. 8. Enter Information Technology Center មជ្ឈមណ្លអិនធ័រព័តមានវិទ្យា ឌ ៌ protected: int itsAge; int itsWeight; }; class Dog:public Mammal { public: Dog(); Dog(int age); Dog(int age,int weight); Dog(int age,BREED breed); Dog(int age,int weight,BREED breed); ~Dog(); BREED GetBreed() const{return itsBreed;} void SetBreed(BREED breed){itsBreed=breed;} void WagTail()const{cout<<"Tail wagging...n";} void BegForFood()const{cout<<"Beggin for food...n";} protected: BREED itsBreed; }; Mammal::Mammal():itsAge(1),itsWeight(5){ cout<<"Mammal constructor..."<<endl; } Mammal::Mammal(int age):itsAge(age),itsWeight(5){ cout<<"Mammal destructor..."<<endl; } Mammal::~Mammal(){ cout<<"Mammal destructor..."<<endl; } Dog::Dog():Mammal(),itsBreed(GOLDEN){ cout<<"Dog constructor..."<<endl; } Dog::Dog(int age):Mammal(age),itsBreed(GOLDEN){ cout<<"Dog(int) constructor..."<<endl; } Dog::Dog(int age,int weight):Mammal(age),itsBreed(GOLDEN){ itsWeight=weight; cout<<"Dog(int,int) constructor..."<<endl; } Dog::Dog(int age,int weight,BREED breed):Mammal(age),itsBreed(breed){ itsWeight=weight; cout<<"Dog(int,int, BREED)constructor..."<<endl;}24 www.enteritc.com C++ OOP
  9. 9. មជ្ឈមណ្លអិនធ័រព័តមានវិទ្យា ឌ ៌ Enter Information Technology Center Dog::Dog(int age,BREED breed):Mammal(age),itsBreed(breed){ cout<<"Dog(int,BREED) constructor..."<<endl; } Dog::~Dog(){ cout<<"Dog constructor..."<<endl; } int main(){ Dog Fido; Dog rover(5); Dog buster(6,8); Dog yorkie(3,GOLDEN); Dog dobbie(4,20,DOBERMAN); Fido.Speak(); rover.WagTail(); cout<<"Yorki is "<<yorkie.GetAge()<<" years old"<<endl; cout<<"Dobbie weighs "<<dobbie.GetWeight()<<" pounds"<<endl; cin.get(); return 0; }C++ OOP www.enteritc.com 25

×