1 CSC241: Object Oriented Programming Lecture No 12.
-
Upload
fay-campbell -
Category
Documents
-
view
218 -
download
3
Transcript of 1 CSC241: Object Oriented Programming Lecture No 12.
![Page 1: 1 CSC241: Object Oriented Programming Lecture No 12.](https://reader036.fdocuments.in/reader036/viewer/2022082611/56649ee15503460f94bf1ef2/html5/thumbnails/1.jpg)
1
CSC241: Object Oriented Programming
Lecture No 12
![Page 2: 1 CSC241: Object Oriented Programming Lecture No 12.](https://reader036.fdocuments.in/reader036/viewer/2022082611/56649ee15503460f94bf1ef2/html5/thumbnails/2.jpg)
2
Previous Lecture
• Data conversion– one-argument constructor– conversion function
• Overloading stream operators– Stream insertion– Stream extraction
![Page 3: 1 CSC241: Object Oriented Programming Lecture No 12.](https://reader036.fdocuments.in/reader036/viewer/2022082611/56649ee15503460f94bf1ef2/html5/thumbnails/3.jpg)
3
Data conversion summary• Kilometers km1 = 2.5;– One argument constructor Kilometers (float)
• Km1 = 3.5– Overloaded function void operator=(float) or– One argument constructor Kilometers (float)
• Miles m1 = km1; Miles m1(km1)– One argument constructor Miles(Kilometers
kilometers) or– Conversion function in Kilometers class operator
Miles()
![Page 4: 1 CSC241: Object Oriented Programming Lecture No 12.](https://reader036.fdocuments.in/reader036/viewer/2022082611/56649ee15503460f94bf1ef2/html5/thumbnails/4.jpg)
4
Cont.
• m1 = km1;– Overloaded function void operator=(Kilometers) in
Miles class or– Conversion function in Kilometers class operator
Miles() or– One argument constructor in miles class
Miles(Kilometers km)• float f = km1;– Conversion function in Kilometers class operator
float() Go to program
![Page 5: 1 CSC241: Object Oriented Programming Lecture No 12.](https://reader036.fdocuments.in/reader036/viewer/2022082611/56649ee15503460f94bf1ef2/html5/thumbnails/5.jpg)
5
Today’s Lecture
• Implicit conversion• Explicit constructor• Overloading – Stream insertion <<– Stream extraction >>
• Inheritance
![Page 6: 1 CSC241: Object Oriented Programming Lecture No 12.](https://reader036.fdocuments.in/reader036/viewer/2022082611/56649ee15503460f94bf1ef2/html5/thumbnails/6.jpg)
6
Implicit conversion: one argument constructor
• Any single-argument constructor can be used by the compiler to perform an implicit conversion– Miles(float m) : miles(m) { }– Miles m1 = 3.75;– m1 = 4.55;
• Conversion is automatic/implicit
Miles(float m)Miles(float m)
![Page 7: 1 CSC241: Object Oriented Programming Lecture No 12.](https://reader036.fdocuments.in/reader036/viewer/2022082611/56649ee15503460f94bf1ef2/html5/thumbnails/7.jpg)
7
Explicit constructor
• Implicit conversions are undesirable or having chances of errors
• Making a single argument constructor explicit will avoid implicit conversion
• Distance (float m) { …. }• explicit Distance(float m) { …. }
Go to program
![Page 8: 1 CSC241: Object Oriented Programming Lecture No 12.](https://reader036.fdocuments.in/reader036/viewer/2022082611/56649ee15503460f94bf1ef2/html5/thumbnails/8.jpg)
8
Overloading Stream Insertion and Stream Extraction
Distance dist1;cin >> dist1cout << dist1;
friend istream& operator >> (istream& s, Distance& d);friend ostream& operator << (ostream& s, Distance& d);
Enter feet: 4 Enter inches: 3.75
4 : 3.75
Distance dist1;dist1.getValue();dist1.showValue();
![Page 9: 1 CSC241: Object Oriented Programming Lecture No 12.](https://reader036.fdocuments.in/reader036/viewer/2022082611/56649ee15503460f94bf1ef2/html5/thumbnails/9.jpg)
9
Cont.
istream& operator >> (istream& s, Distance& d) { cout << “\nEnter feet: “; s >> d.feet; cout << “Enter inches: “; s >> d.inches; return s; }
ostream& operator << (ostream& s, Distance& d) { s << d.feet << “ : ” << d.inches <<endl; return s; } Go to program
![Page 10: 1 CSC241: Object Oriented Programming Lecture No 12.](https://reader036.fdocuments.in/reader036/viewer/2022082611/56649ee15503460f94bf1ef2/html5/thumbnails/10.jpg)
10
Inheritance
• Inheritance is the process of creating new classes, called derived classes, from existing or base classes
• The derived class inherits all the capabilities of the base class but can add refinements of its own
• The base class is unchanged by this process
![Page 11: 1 CSC241: Object Oriented Programming Lecture No 12.](https://reader036.fdocuments.in/reader036/viewer/2022082611/56649ee15503460f94bf1ef2/html5/thumbnails/11.jpg)
11
Example of inheritance
Base class Derived classesStudent GraduateStudent, UndergraduateStudent Shape Circle, Triangle, Rectangle, Sphere, Cube Loan CarLoan, HomeImprovementLoan, Employee Faculty, Staff Account CheckingAccount, SavingsAccount
![Page 12: 1 CSC241: Object Oriented Programming Lecture No 12.](https://reader036.fdocuments.in/reader036/viewer/2022082611/56649ee15503460f94bf1ef2/html5/thumbnails/12.jpg)
12
Inheritance hierarchy for university
![Page 13: 1 CSC241: Object Oriented Programming Lecture No 12.](https://reader036.fdocuments.in/reader036/viewer/2022082611/56649ee15503460f94bf1ef2/html5/thumbnails/13.jpg)
13
Inheritance hierarchy for Shapes
• class TwoDimensionalShape : public Shape
![Page 14: 1 CSC241: Object Oriented Programming Lecture No 12.](https://reader036.fdocuments.in/reader036/viewer/2022082611/56649ee15503460f94bf1ef2/html5/thumbnails/14.jpg)
14
![Page 15: 1 CSC241: Object Oriented Programming Lecture No 12.](https://reader036.fdocuments.in/reader036/viewer/2022082611/56649ee15503460f94bf1ef2/html5/thumbnails/15.jpg)
15
Relationship
• Inheritance represents “is-a relationship” • In an is-a relationship, an object of a derived
class also can be treated as an object of its base class
• for example, a car is a vehicle• Properties and behaviors of a vehicle are also
properties of a car
![Page 16: 1 CSC241: Object Oriented Programming Lecture No 12.](https://reader036.fdocuments.in/reader036/viewer/2022082611/56649ee15503460f94bf1ef2/html5/thumbnails/16.jpg)
16
Cont.
• Inheritance big payoff is that it permits code reusability
• Once a base class is written and debugged, it need not be touched again, but, using inheritance it can be adapted to work in different situations.
• Reusing existing code saves time and money and increases a program’s reliability.
![Page 17: 1 CSC241: Object Oriented Programming Lecture No 12.](https://reader036.fdocuments.in/reader036/viewer/2022082611/56649ee15503460f94bf1ef2/html5/thumbnails/17.jpg)
17
Derived Class and Base Classclass Counter { protected:
unsigned int count;public:
Counter() : count(0){ }int get_count(){ return count; }Counter operator ++ () { return Counter(++count);
}};
main() {CountDn c1; cout << “\nc1=” << c1.get_count(); ++c1; ++c1; ++c1; cout << “\nc1=” << c1.get_count(); --c1; --c1; cout << “\nc1=” << c1.get_count();
}
class CountDn : public Counter { public: Counter operator -- () { return Counter(--count); }};
Go to program
![Page 18: 1 CSC241: Object Oriented Programming Lecture No 12.](https://reader036.fdocuments.in/reader036/viewer/2022082611/56649ee15503460f94bf1ef2/html5/thumbnails/18.jpg)
18