1 / 21

Object-Oriented Design

Object-Oriented Design. Object-Oriented Design. Method for designing computer programs Consider “objects” interacting in the program Example: a zoo. OOD Goals. Robustness Gracefully handle failures Adaptability Evolve as necessary Reusability Many programs use same piece of code.

iola
Télécharger la présentation

Object-Oriented Design

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Object-Oriented Design

  2. Object-Oriented Design • 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(); 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<Student*>(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 <typename Object> class BasicVector {} BasicVector<int> iv(5); BasicVector<string> 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) {…}

More Related