Presentation is loading. Please wait.

Presentation is loading. Please wait.

Object Orientation Yaodong Bi, Ph.D. Department of Computer Sciences

Similar presentations


Presentation on theme: "Object Orientation Yaodong Bi, Ph.D. Department of Computer Sciences"— Presentation transcript:

1 Object Orientation Yaodong Bi, Ph.D. Department of Computer Sciences
11/7/2018 Object Orientation Yaodong Bi, Ph.D. Department of Computer Sciences University of Scranton November 7, 2018

2 Classes and objects for modeling
11/7/2018 Classes and objects for modeling Classes Real world concepts Student, course, bicycle, etc Objects Instances of real word concepts John Smith, Operating Systems, Mongoose Mountain S100, etc 11/7/2018

3 Classes and objects for modeling
11/7/2018 Classes and objects for modeling “Customers John and Susan entered the MakeMoney bank and were served by teller Andy.” Classes Objects: 11/7/2018

4 Classes and objects in software
11/7/2018 Classes and objects in software Objects Packaging both data and the procedures that operate on the data into one Operations are the only way to change the data items – encapsulation Classes Template of objects of the same type Write once and use many times Implementation classes/objects Some classes/objects do not match to concepts in the real world List, stack, tree, queue – containers Exception classes 11/7/2018

5 Attributes and operations
11/7/2018 Attributes and operations Instance attributes (simply attributes) Properties (internal state) of an object Student: name, major, class, GPA Course: title, # of credits, description Each object has its own value for an attribute Instance operations (simply operations) Services of an object Stack: push, pop, isEmpty, isFull Encapsulation Attributes (private and protected) are not accessible directly by client Operations are used to read/write the values of attributes 11/7/2018

6 Attributes and Operations
11/7/2018 Attributes and Operations Class attributes (static attributes) Represent properties that can be applied to all objects of the same class Only one value for each class attribute shared by all objects of the class All accounts of the CheckingAccount class have the same interest rate Can be accessed in both instance and class operations Class operations (static operations) Used to access class attributes Cannot access instance attributes and operations 11/7/2018

7 Class member access modes
11/7/2018 Class member access modes Public Public attributes and public operations Accessible to all clients or the world Protected Protected attributes and operations Accessible to the class and its subclasses Private Private attributes and operations Only accessible by the operations of the class 11/7/2018

8 Member access modes in Java
11/7/2018 Member access modes in Java Specifier Class Package Subclass World Private Y N No Specifier Protected Public 11/7/2018

9 Abstract and concrete classes
11/7/2018 Abstract and concrete classes Abstract classes Define a common interface for its subclasses Defer some or all of its implementation of operations to its subclasses Cannot be instantiated Concrete classes That are not abstract classes Can be instantiated Concrete subclasses implement all the operations 11/7/2018

10 Interfaces Signature of an operation: Interface: Operation name
11/7/2018 Interfaces Signature of an operation: Operation name Objects/classes it takes as parameters Return value and type Interface: The set of signatures of related operations Representing a capability or a set of services A class may implement multiple interfaces Its objects have more than one set of services 11/7/2018

11 Inheritance Specifies is-a or a-kind-of relationship
11/7/2018 Inheritance Specifies is-a or a-kind-of relationship Generalization and specialization Superclasses and subclasses Single and multiple inheritance Class and interface inheritance 11/7/2018

12 Superclasses and subclasses
11/7/2018 Superclasses and subclasses Superclass Also called base class or parent class All of its members are inherited by its subclasses Subclasses Also called child classes Inherit all the properties of its superclasses 11/7/2018

13 Single and multiple inheritance
11/7/2018 Single and multiple inheritance Single inheritance A subclass cannot have more than one parent Multiple inheritance A subclass may have more than one parent Java does not allow multiple inheritance Java allows multiple interface inheritance Through interface implementation 11/7/2018

14 Class inheritance lattice
11/7/2018 Class inheritance lattice Person SSN Name getSSN() getName() Faculty office getOffice() Student major getMajor() Staff dept getDept() Graduate PayRate getPayRate() Underg PayRate getPayRate() FullTime salary getSalary() PartTime PayRate getPayRate() TA labs getLabs() 11/7/2018

15 Implementation inheritance
11/7/2018 Implementation inheritance Also called class inheritance Define an object’s implementation in terms of another object’s implementation Pure class inheritance in C++ Pure class inheritance in Java 11/7/2018

16 Pure class inheritance with C++
11/7/2018 Pure class inheritance with C++ Class BinaryTree { getRoot() {;} setRoot() {;} leftTree() {;} rightTree() {;} } Class BinSearchTree: private BinaryTree { insert() {;} remove() {;} find() {;} } The operations of BinaryTree are not accessible/visible to the clients of BinSearchTree because BinaryTree is private They use the operations of BinaryTree 11/7/2018

17 Pure class inheritance with Java
11/7/2018 Pure class inheritance with Java Java does not allow private parent The parent and grandparents are public and accessible through the subclass Java cannot implement pure implementation inheritance. 11/7/2018

18 Interface inheritance
11/7/2018 Interface inheritance Describe when an object can be used in place of another Pure interface inheritance in C++ Superclasses are pure abstract classes Pure interface inheritance in Java Superclasses are Java interfaces 11/7/2018

19 Interface inheritance with C++
11/7/2018 Interface inheritance with C++ Class Stack { virtual push() = 0; virtual pop() = 0; virtual isEmpty() = 0; virtual isFull() = 0; } A C++ Abstract class Class MyStack: public Stack { push() {;} pop() {;} isEmpty() {;} isFull() {;} } Class YourStack: public Stack { push() {;} pop() {;} isEmpty() {;} isFull() {;} } 11/7/2018

20 Interface inheritance with Java
11/7/2018 Interface inheritance with Java Interface Stack { push(); pop(); isEmpty(); isFull() 0; } A Java Interface Class MyStack implements Stack { push() {;} pop() {;} isEmpty() {;} isFull() {;} } Class YourStack implements Stack { push() {;} pop() {;} isEmpty() {;} isFull() {;} } 11/7/2018

21 11/7/2018 Polymorphism When a client sends a request to a reference, the method executed depends on the object behind the reference Polymorphism and inheritance are very powerful tool in software design So powerful that if they are used properly, they can hurt really bad If something goes wrong, it is hard to tell which class/object caused the problem 11/7/2018

22 Dynamic (late) binding
11/7/2018 Dynamic (late) binding Dynamic binding is a way of implementing polymorphism It means that a function call is not linked to the actual function until execution time Since a reference may be used to point to different types (subtypes or subclasses) of objects at execution time, so the actual function to be executed may not be known when the program is compiled. The opposite of dynamic binding is static binding which links a function call to the actual function at compilation time. 11/7/2018

23 11/7/2018 Method Overriding A subclass overrides the operation(s) defined in the parent/grandparent classes. This is for specialized subclasses to override the behavior defined in the super class(es). For example: Superclass Employee’s print method prints employee’s SSN, Name, Address. Its subclass Engineer’s print method prints engineer’s type and level in addition to employee’s normal information. 11/7/2018

24 Function overloading The same name is used for more than function
11/7/2018 Function overloading The same name is used for more than function For example, a function of adding two integers may be named the same as the one of adding two floats: Add(int x, int y); Add(float x, float y); Two functions use the same name for the same purpose with different data parameters 11/7/2018

25 Class Dependencies 11/7/2018


Download ppt "Object Orientation Yaodong Bi, Ph.D. Department of Computer Sciences"

Similar presentations


Ads by Google