Presentation is loading. Please wait.

Presentation is loading. Please wait.

Programming Languages and Paradigms Object-Oriented Programming (Part II)

Similar presentations


Presentation on theme: "Programming Languages and Paradigms Object-Oriented Programming (Part II)"— Presentation transcript:

1 Programming Languages and Paradigms Object-Oriented Programming (Part II)

2 OOP Slide 2 Java and C++ Comparison (continued) Arrays Constructors and destructors Operators Static vs Dynamic Binding Containers and Reuse GUI Programming

3 OOP Slide 3 Arrays int x[20]; Button b[20]; Valid declarations in C++, not in Java Creates 20 ints and 20 Button objects In Java, Declaration and array creation separate For object arrays, individual object creation necessary

4 OOP Slide 4 Pointers and Arrays In C++, there is a close relationship between pointers and arrays Instead of int x[20]; can issue int *x; x = new int[20]; to allow for dynamic allocation Usage of the array (e.g., x[3] = 5;) identical in both cases To deallocate, use delete [] x;

5 OOP Slide 5 Constructors in Java and C++ In Java, a constructor is invoked only through the new keyword recall that all object variables are references In C++, a constructor is called upon variable declaration, or explicitly through new with pointers, or in other situations other types of constructors

6 OOP Slide 6 C++ Destructor Special method whose signature is a ~ followed by the name of the class e.g., ~SomeClass(); Particularly if the class contains pointers and the constructor contains calls to new, a destructor needs to be defined e.g., SomeClass() { A = new int[20]; } ~SomeClass() { delete [] A; }

7 OOP Slide 7 C++ Copy and Assignment In C++, the semantics of “a = b” (assignment) can be specified by defining the copy-assignment operator In C++, there is a copy constructor specifies what happens during object copying, e.g., when function parameters are passed There is more low-level control shallow copy vs deep copy

8 OOP Slide 8 Operators In C++, operators like =, +, *, ==, etc. can be defined, just like methods Example: class Matrix { //... Matrix operator+(Matrix m) { … } // … } c = a + b; // equiv to c = a.operator+(b);

9 OOP Slide 9 Method Binding Let Teacher be a subclass of Employee Also, suppose promote() is a method defined in both classes Employee variables can refer to Teachers In Java, Employee e; … e = new Teacher(); In C++, Employee *e; … e = new Teacher; e.promote() (or e->promote() ) calls which promote() method?

10 OOP Slide 10 Static vs Dynamic Binding In C++, Employee’s promote() is called Determined at compile time and deduced from the type of the variable (static binding) In Java, Teacher’s promote is called Determined at run-time because the actual type of the referred object is checked then (dynamic binding) * C++ uses virtual functions for dynamic binding

11 OOP Slide 11 Another example class Employee{ public: double salary() {return sal;} double computeRaise() {return 25;} Employee(double salary) {sal = salary;} private: double sal; }; class Manager: public Employee { public: double computeRaise() {return 100;} Manager(double Salary) : Employee (salary) {} };

12 OOP Slide 12 Sample continued Driver Code: Manager * boss1 = new Manager(2000); double boss1Salary = boss1->salary(); // 2000 Employee *boss2 = new Manager(2300); double *boss2Salary = boss2->salary(); //2300 double boss1Raise = boss1->computeRaise(); // 100 double boss2Raise = boss2->computeRaise(); // 25

13 OOP Slide 13 C++ Run Time Binding If the intent is for the selection of the function to be determined by the object’s class, not by the declaration of the pointer used to address it:  Declare some base class members to be virtual  If virtual, the compiler will deposit the “type field” of the class in the object

14 OOP Slide 14 Virtual Functions Base class usually defines a body for a virtual function. Inherited by derived class as default if it chooses not to override the implementation Virtual keyword in function declaration, not in definition

15 OOP Slide 15 Containers Examples: Lists, Stacks, Files, etc. Structures that “contain” elements Often, the element’s type has little or nothing to do with the containers’ operations Possible room for re-use unified container code for a stack of integers, a stack of webpages, a stack of strings,...

16 OOP Slide 16 Java and the Object Hierarchy All classes extend the Object class: A variable of class Object can refer to any Java object Example: public class Stack { Object A[]; int top; // … void push(Object elt) //... }

17 OOP Slide 17 C++ and Templates Templates allow for a generic definition parameterized definition, where the element type is the parameter Example: template class Stack { T A[MAX]; int top; public: void push(T element) // … }

18 OOP Slide 18 C++ Templates indicates that a template is being declared T is the type name (can be a class) Usage example: Stack iStack; Stack cStack; where Cards is a user defined class A type used as a template argument must provide the interface expected by the template

19 OOP Slide 19 C++ Standard Containers vector : 1-D array of T list : double linked list of T dequeue : double-ended queue of T queue : queue of T stack : stack of T map : associative array of T set : set of T bitset : set of booleans

20 OOP Slide 20 Java Generics Recent addition to Java Similar to C++ templates Why are templates/generics better than using the Object class as a parameter?

21 OOP Slide 21 GUI Programming In Java, GUI is part of its development kit java.awt.* is a collection of classes that support visual programming and graphics visual objects (buttons, text fields, etc), layout managers, events, etc. In C++ not part of the language libraries dependent on platform (e.g., MFCs and Motif)


Download ppt "Programming Languages and Paradigms Object-Oriented Programming (Part II)"

Similar presentations


Ads by Google