Presentation is loading. Please wait.

Presentation is loading. Please wait.

Object-Oriented Design. Method for designing computer programs Consider “objects” interacting in the program –Example: a zoo.

Similar presentations


Presentation on theme: "Object-Oriented Design. Method for designing computer programs Consider “objects” interacting in the program –Example: a zoo."— Presentation transcript:

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) {…}


Download ppt "Object-Oriented Design. Method for designing computer programs Consider “objects” interacting in the program –Example: a zoo."

Similar presentations


Ads by Google