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

Slides:



Advertisements
Similar presentations
Department of Computer Engineering Faculty of Engineering, Prince of Songkla University 1 5 – Abstract Data Types.
Advertisements

1 l Inheritance Basics l Programming with Inheritance l Dynamic Binding and Polymorphism Inheritance.
Inheritance Java permits you to use your user defined classes to create programs using inheritance.
Department of computer science N. Harika. Inheritance Inheritance is a fundamental Object Oriented concept A class can be defined as a "subclass" of another.
ACM/JETT Workshop - August 4-5, :Inheritance and Interfaces.
Session 07: C# OOP 4 Review of: Inheritance and Polymorphism. Static and dynamic type of an object. Abstract Classes. Interfaces. FEN AK - IT:
L3-1-S1 OO Concepts © M.E. Fayad SJSU -- CMPE Software System Engineering Dr. M.E. Fayad, Professor Computer Engineering Department, Room.
Inheritance. In this chapter, we will cover: The concept of inheritance Extending classes Overriding superclass methods Working with superclasses that.
1 Introduction to CS Agenda Syllabus Schedule Lecture: the management of complexity.
Object-oriented Programming Concepts
8.1 Classes & Inheritance Inheritance Objects are created to model ‘things’ Sometimes, ‘things’ may be different, but still have many attributes.
Subclasses and Subtypes CMPS Subclasses and Subtypes A class is a subclass if it has been built using inheritance. ▫ It says nothing about the meaning.
CISC6795: Spring Object-Oriented Programming: Polymorphism.
OBJECT ORIENTED PROGRAMMING CONCEPTS ISC 560. Object-oriented Concepts  Objects – things names with nouns  Classes – classifications (groups) of similar.
Introduction to Object Oriented Programming. Object Oriented Programming Technique used to develop programs revolving around the real world entities In.
Inheritance and Class Hierarchies Ellen Walker CPSC 201 Data Structures Hiram College.
Programming in Java Unit 2. Class and variable declaration A class is best thought of as a template from which objects are created. You can create many.
Features of Object Oriented Programming Lec.4. ABSTRACTION AND ENCAPSULATION Computer programs can be very complex, perhaps the most complicated artifact.
Object Orientation Yaodong Bi, Ph.D. Department of Computer Sciences University of Scranton October 18, 2015October 18, 2015October 18, 2015.
Chapter 3 Inheritance and Polymorphism Goals: 1.Superclasses and subclasses 2.Inheritance Hierarchy 3.Polymorphism 4.Type Compatibility 5.Abstract Classes.
Inheritance. Inheritance - Introduction Idea behind is to create new classes that are built on existing classes – you reuse the methods and fields and.
Object Oriented Programming
1 COSC2007 Data Structures II Chapter 9 Class Relationships.
Object Orientation Yaodong Bi, Ph.D. Department of Computer Sciences University of Scranton January 12, 2016January 12, 2016January 12, 2016.
Object orientation and Packaging in Java Object Orientation and Packaging Introduction: After completing this chapter, you will be able to identify.
Author: DoanNX Time: 45’.  OOP concepts  OOP in Java.
CS 116 OBJECT ORIENTED PROGRAMMING II LECTURE 6 Acknowledgement: Contains materials provided by George Koutsogiannakis and Matt Bauer.
Object Orientation Yaodong Bi, Ph.D. Department of Computer Sciences University of Scranton August 19, 2005.
 Description of Inheritance  Base Class Object  Subclass, Subtype, and Substitutability  Forms of Inheritance  Modifiers and Inheritance  The Benefits.
COMPUTER SCIENCE & TECHNOLOGY DEGREE PROGRAMME FACULTY OF SCIENCE & TECHNOLOGY UNIVERSITY OF UVA WELLASSA ‏ Properties of Object Oriented Programming.
ISBN Chapter 12 Support for Object-Oriented Programming.
Geoff Holmes and Bernhard Pfahringer COMP206-08S General Programming 2.
Inheritance a subclass extends the functionality of a superclass a subclass inherits all the functionality of a superclass don't reinvent the wheel – "stand.
Java Programming: Guided Learning with Early Objects Chapter 9 Inheritance and Polymorphism.
Java Programming Fifth Edition Chapter 9 Introduction to Inheritance.
Inheritance Modern object-oriented (OO) programming languages provide 3 capabilities: encapsulation inheritance polymorphism which can improve the design,
Modern Programming Tools And Techniques-I
Inheritance Chapter 7 Inheritance Basics Programming with Inheritance
Object-Oriented Design
Object-Oriented Programming Concepts
Inheritance Allows extension and reuse of existing code
7. Inheritance and Polymorphism
Inheritance and Polymorphism
The Object-Oriented Thought Process Chapter 1
OOP What is problem? Solution? OOP
Object Orientation Yaodong Bi, Ph.D. Department of Computer Sciences
INTRODUCTION TO OBJECT-ORIENTED PROGRAMMING (OOP) & CONCEPTS
Road Map Inheritance Class hierarchy Overriding methods Constructors
Inheritance Chapter 7 Inheritance Basics Programming with Inheritance
Inheritance Often, software encapsulates multiple concepts for which some attributes/behaviors overlap E.g. A computer (role-playing) game has: Monsters:
Object Oriented Analysis and Design
Inheritance Basics Programming with Inheritance
OOP and ADTs Chapter 14 Nyhoff, ADTs, Data Structures and Problem Solving with C++, Second Edition, © 2005 Pearson Education, Inc. All rights reserved.
Java Programming Language
Chapter 9: Polymorphism and Inheritance
Advanced Java Topics Chapter 9
Week 6 Object-Oriented Programming (2): Polymorphism
Advanced Programming Behnam Hatami Fall 2017.
Programming paradigms
Computer Programming with JAVA
Inheritance Inheritance is a fundamental Object Oriented concept
Java Programming, Second Edition
Java Inheritance.
Inheritance Chapter 7 Inheritance Basics Programming with Inheritance
Object-Oriented Programming: Inheritance and Polymorphism
Inheritance.
Inheritance and Polymorphism
Object Oriented Analysis and Design
Chapter 11 Class Inheritance
Computer Science II for Majors
Presentation transcript:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Class Dependencies 11/7/2018