Download presentation
Presentation is loading. Please wait.
1
Object-Oriented Design
2
Method for designing computer programs Consider “objects” interacting in the program –Example: a zoo
3
OOD Goals Robustness –Gracefully handle failures Adaptability –Evolve as necessary Reusability –Many programs use same piece of code
4
OOD Principles Abstraction –Abstract Data Types (ADTs) –Interfaces Encapsulation –Information Hiding Modularity –Easily plug together components
5
Inheritance Many objects have a hierarchical relationship –Examples: zoo Inheritance allows software design to take advantage of relationships
6
Terminology Base class/Parent class/Superclass –defines generic functionality Derived class/Child class/Subclass –extends or specializes base class –inherits members of parent –may implement new members –may override members of parent
7
Examples Card Game Airline Reservation System
8
Syntax class Student : public Person {…} class Derived : public Base{…} Derived class may override or reimplement a function implemented by base class class Person {class Student:public Person{ … void print(); }
9
Function Invocation Person – print, getName Student – print, changeMajor Person p(…); Student s(…); s.getName(); p.print(); s.print(); p.changeMajor(); s.changeMajor();
10
Function Invocation Person – print, getName Student – print, changeMajor Person p(…); Student s(…); s.getName(); //Person::getName p.print(); //Person::print s.print(); //Student::print p.changeMajor(); //ERROR!!!!!!!! s.changeMajor(); //Student::changeMajor
11
More Syntax void Person::print() {…} void Student::print() { Person::print(); //Superclass::function(); … }
12
Protected private members of parent not accessible to child class protected members accessible only to derived classes examples class classname { private: protected: public: }
13
Child Class Constructors Subclass must create superclass –invoke superclass constructor from subclass constructor –use initializer list Student::Student(string newname, string newmajor) :Person(newname), major(newmajor) {…} Student::Student(string newname, string newmajor) :Person(newname) {major = newmajor;}
14
Static Binding Person* p = new Person(…); Student* s = new Student(…); p->print(); //calls Person::print() p = s; //OKAY p->print(); //calls Person::print() p->changeMajor(); //ERROR Function called depends on declared type
15
Dynamic Binding May want to determine which function to call based on object contents Use virtual functions class Person { virtual void print(); } class Student : public Person { virtual void print(); }
16
Dyanmic Binding Person* p = new Person(…); Student* s = new Student(…); p->print(); //calls Person::print() p = s; //OKAY p->print(); //calls Student::print() p->changeMajor(); //ERROR
17
Polymorphism Many forms A variable is polymorphic if it points to an object with 1 or more virtual functions
18
Casting Person* p; p = new Student(…); Student* s = dynamic_cast (p); Create new pointer of subclass type to point to object Pointer (s in this case) will be NULL if cast was NOT successful Can also use C-style cast
19
Abstract Classes May want to defined base class which cannot be instantiated –Examples – bank account, car Declare one or more functions as pure virtual virtual void print() = 0; virtual void func_name(…) = 0;
20
Templates template class BasicVector {} BasicVector iv(5); BasicVector sv(100); Define classes which can hold any type of object
21
Exceptions If error occurs during runtime, report and continue execution –Example: array index, divide by 0 Exceptions are also classes –programmer defines try { //call func that throws exception } catch(ExceptionType& et) { //e.g., print error } catch(…) { //catch all exceptions } void func() throw(ExceptionType) {…}
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.