Concepts of Object-Oriented Programming. 19 October 2016 OSU CSE 1

Similar documents
CSCI 253. Object Oriented Programming (OOP) Overview. George Blankenship 1. Object Oriented Design: Java Review OOP George Blankenship.

Java Interview Questions and Answers

CIS 190: C/C++ Programming. Polymorphism

Agenda. What is and Why Polymorphism? Examples of Polymorphism in Java programs 3 forms of Polymorphism

History OOP languages Year Language 1967 Simula Smalltalk

Description of Class Mutation Mutation Operators for Java

Cohort: BCA/07B/PT - BCA/06/PT - BCNS/06/FT - BCNS/05/FT - BIS/06/FT - BIS/05/FT - BSE/05/FT - BSE/04/PT-BSE/06/FT

SE 360 Advances in Software Development Object Oriented Development in Java. Polymorphism. Dr. Senem Kumova Metin

Fundamentals of Java Programming

PHP Object Oriented Classes and objects

Java Interfaces. Recall: A List Interface. Another Java Interface Example. Interface Notes. Why an interface construct? Interfaces & Java Types

Inheritance, overloading and overriding

Glossary of Object Oriented Terms

The Java Series. Java Essentials I What is Java? Basic Language Constructs. Java Essentials I. What is Java?. Basic Language Constructs Slide 1

CompuScholar, Inc. Alignment to Utah's Computer Programming II Standards

Java Programming Language

Checking Access to Protected Members in the Java Virtual Machine

Chapter 1 Fundamentals of Java Programming

Preet raj Core Java and Databases CS4PR. Time Allotted: 3 Hours. Final Exam: Total Possible Points 75

Chapter 13 - Inheritance

JAVA - INHERITANCE. extends is the keyword used to inherit the properties of a class. Below given is the syntax of extends keyword.

Java Application Developer Certificate Program Competencies

CS193j, Stanford Handout #10 OOP 3

TECHNOLOGY Computer Programming II Grade: 9-12 Standard 2: Technology and Society Interaction

3 Pillars of Object-oriented Programming. Industrial Programming Systems Programming & Scripting. Extending the Example.

DIPLOMADO DE JAVA - OCA

Programming Languages Featherweight Java David Walker

Génie Logiciel et Gestion de Projets. Object-Oriented Programming An introduction to Java

Lecture 7 Notes: Object-Oriented Programming (OOP) and Inheritance

CSE 308. Coding Conventions. Reference

Java CPD (I) Frans Coenen Department of Computer Science

Génie Logiciel et Gestion de Projets. Object-Oriented Programming An introduction to Java

C++FA 5.1 PRACTICE MID-TERM EXAM

1 bool operator==(complex a, Complex b) { 2 return a.real()==b.real() 3 && a.imag()==b.imag(); 4 } 1 bool Complex::operator==(Complex b) {

Computing Concepts with Java Essentials

Object-Oriented Programming: Polymorphism

AP Computer Science Java Subset

Formal Engineering for Industrial Software Development

Java (12 Weeks) Introduction to Java Programming Language

CS 111 Classes I 1. Software Organization View to this point:

Abstract Class & Java Interface

Habanero Extreme Scale Software Research Project

Agile Software Development

Part I. Multiple Choice Questions (2 points each):

Embedded Software development Process and Tools: Lesson-1

What is Java? Applications and Applets: Result of Sun s efforts to remedy bad software engineering practices

Java 6 'th. Concepts INTERNATIONAL STUDENT VERSION. edition

Polymorphism. Problems with switch statement. Solution - use virtual functions (polymorphism) Polymorphism

Yosemite National Park, California. CSE 114 Computer Science I Inheritance

D06 PROGRAMMING with JAVA

CS-XXX: Graduate Programming Languages. Lecture 25 Multiple Inheritance and Interfaces. Dan Grossman 2012

The Sun Certified Associate for the Java Platform, Standard Edition, Exam Version 1.0

Building Java Programs

ATM Case Study OBJECTIVES Pearson Education, Inc. All rights reserved Pearson Education, Inc. All rights reserved.

Advanced Data Structures

Compile-time type versus run-time type. Consider the parameter to this function:

Understanding Software Static and Dynamic Aspects

Free Java textbook available online. Introduction to the Java programming language. Compilation. A simple java program

Object-Oriented Design Lecture 4 CSU 370 Fall 2007 (Pucella) Tuesday, Sep 18, 2007

Extending Classes with Services

Free Java textbook available online. Introduction to the Java programming language. Compilation. A simple java program

Instance Creation. Chapter

Classes and Pointers: Some Peculiarities (cont d.)

Multiple Dispatching. Alex Tritthart WS 12/13

5. Advanced Object-Oriented Programming Language-Oriented Programming

Automaton Programming and Inheritance of Automata

UML Class Diagrams (1.8.7) 9/2/2009

Android Application Development Course Program

Part 3: GridWorld Classes and Interfaces

Object Oriented Design

Lab Manual: Using Rational Rose

Java SE 7 Programming

In order to understand Perl objects, you first need to understand references in Perl. See perlref for details.

AP Computer Science A - Syllabus Overview of AP Computer Science A Computer Facilities

Constructor, Destructor, Accessibility and Virtual Functions

Java SE 7 Programming

Java SE 7 Programming

Grundlæggende Programmering IT-C, Forår Written exam in Introductory Programming

Unit Testing. and. JUnit

An Internet Course in Software Development with C++ for Engineering Students

KITES TECHNOLOGY COURSE MODULE (C, C++, DS)

Textbook: T. Issariyakul and E. Hossain, Introduction to Network Simulator NS2, Springer

Version Control Using Subversion. 12 May 2013 OSU CSE 1

Problems and Measures Regarding Waste 1 Management and 3R Era of public health improvement Situation subsequent to the Meiji Restoration

CEC225 COURSE COMPACT

Java is an Object-Oriented Language. As a language that has the Object Oriented feature, Java supports the following fundamental concepts:

Summit Public Schools Summit, New Jersey Grade Level / Content Area: Mathematics Length of Course: 1 Academic Year Curriculum: AP Computer Science A

Multichoice Quetions 1. Atributes a. are listed in the second part of the class box b. its time is preceded by a colon. c. its default value is

Programming with the Microsoft.NET Framework Using Microsoft Visual Studio 2005 (VB)

A Simple Security-Aware MOP for Java 119

Systematically Refactoring Inheritance to Delegation in JAVA

An Introduction to Object-Oriented Programming with

Advanced OOP Concepts in Java

Web Development in Java

Lecture 1 Introduction to Android

Programmation 2. Introduction à la programmation Java

Java How to Program, 5/e Test Item File 1 of 5

INTRODUCTION TO COMPUTER PROGRAMMING. Richard Pierse. Class 7: Object-Oriented Programming. Introduction

CS193j, Stanford Handout #4. Java 2

Transcription:

Concepts of Object-Oriented Programming 19 October 2016 OSU CSE 1

Recall... Standard implements extends NaturalNumber- Kernel extends NaturalNumber implements NaturalNumber1L NaturalNumber2 19 October 2016 OSU CSE 2

The Implements Relation The implements relation may hold between a class and an interface If C implements I then class C contains code for the behavior specified in interface I This means C has method bodies for instance methods whose contracts are specified in I The code for C looks like this: class C implements I { // bodies for methods specified in I } 19 October 2016 OSU CSE 3

The Implements Relation The implements The relation implements may relation hold between allows a class and an interface you to separate contracts from their implementations a best If C implements practice I then for class component C contains design. code for the behavior specified in interface I This means C has method bodies for instance methods whose contracts are specified in I The code for C looks like this: class C implements I { // bodies for methods specified in I } 19 October 2016 OSU CSE 4

The Implements Relation The Java compiler checks that C The implements relation may hold between contains bodies for the methods in a class and an interface I, but does not check that those If C implements Ibodies then correctly class implement C contains the method contracts! code for the behavior specified in interface I This means C has method bodies for instance methods whose contracts are specified in I The code for C looks like this: class C implements I { // bodies for methods specified in I } 19 October 2016 OSU CSE 5

The Extends Relation The extends relation may hold between: Two interfaces (as on the earlier slide), or Two classes In either case, if B extends A then B inherits all the methods of A This means B implicitly starts out with all the method contracts (for an interface) or all the method bodies (for a class) that A has B can then add more method contracts (for an interface) or method bodies (for a class) 19 October 2016 OSU CSE 6

Caveats About Java Interfaces If B extends A then B inherits all the methods of A Interfaces cannot have constructors So there is no good place to write separate contracts for the constructors of classes that implement an interface Interfaces cannot have static method contracts without also providing corresponding method bodies So there is no good place to write separate contracts for public static methods of classes that implement an interface 19 October 2016 OSU CSE 7

Caveats About Java Classes If B extends A then B inherits all the methods of A Constructors are not inherited So in the situation above, the class B must include bodies for any constructors that are expected, even if they would be identical to those of A The bodies of the constructors in B generally would simply invoke the constructors of A, which is done using the special notation super( ) Static methods are inherited 19 October 2016 OSU CSE 8

Implements May Be Inferred I1 extends I2 implements C3 extends C4 19 October 2016 OSU CSE 9

Implements May Be Inferred I1 I2 extends implements implements C3 C4 extends We may infer in this case that C3 implements I1. 19 October 2016 OSU CSE 10

Implements May Be Inferred I1 I2 extends We may also infer in this case that C4 implements I2. implements C3 extends implements C4 19 October 2016 OSU CSE 11

Interface Extension If I1 and I2 are interfaces and I2 extends I1, then the code for I2 looks like this: interface I2 extends I1 { // contracts for methods added in I2 } I1 I2 extends 19 October 2016 OSU CSE 12

Interface Extension If I1 and I2 are interfaces and I2 extends I1, then the code for I2 looks like this: interface I2 extends I1 { // contracts for methods added in I2 } I1 I2 extends Remember, for interfaces all such methods are instance methods! 19 October 2016 OSU CSE 13

Interface Extension If I1 and I2 are interfaces and I2 extends I1, then the code for I2 looks like this: interface I2 extends I1 { // contracts for methods added in I2 } I1 I2 extends Other terminology for this situation: I2 is a subinterface of I1 I2 is a derived interface of I1 I2 is a child interface of I1 19 October 2016 OSU CSE 14

Interface Extension If I1 and I2 are interfaces and I2 extends I1, then the code for I2 looks like this: interface I2 extends I1 { // contracts for methods added in I2 } I1 I2 extends Other terminology for this situation: I1 is a superinterface of I2 I1 is a base interface of I2 I1 is a parent interface of I2 19 October 2016 OSU CSE 15

Example: Interface Extension Standard extends NaturalNumber- Kernel clear newinstance transferfrom clear newinstance transferfrom + multiplyby10 divideby10 iszero = multiplyby10 divideby10 iszero 19 October 2016 OSU CSE 16

Example: Interface Extension clear NaturalNumberKernel actually Standard newinstance has all these methods, even though transferfrom their contracts are in two separate interfaces. extends + NaturalNumber- Kernel clear newinstance transferfrom multiplyby10 divideby10 iszero = multiplyby10 divideby10 iszero 19 October 2016 OSU CSE 17

Example: Interface Extension clear The extends relation for interfaces Standard newinstance allows you to separate contracts into transferfrom smaller chunks arguably a best practice for extends component design. + NaturalNumber- Kernel clear newinstance transferfrom multiplyby10 divideby10 iszero = multiplyby10 divideby10 iszero 19 October 2016 OSU CSE 18

Class Extension For classes, extension can serve two different purposes: To add method bodies that are not already in the class being extended (similar to the use of extension for interfaces) To override methods that are already implemented in the class being extended, by providing new method bodies for them 19 October 2016 OSU CSE 19

Class Extension When pronounced, this may sound like overwrite, but that is not a correct interpretation! For classes, extension can serve two different purposes: To add method bodies that are not already in the class being extended (similar to the use of extension for interfaces) To override methods that are already implemented in the class being extended, by providing new method bodies for them 19 October 2016 OSU CSE 20

Class Extension For classes, extension For now, we can are concerned serve two only with different purposes: this use of class extension. To add method bodies that are not already in the class being extended (similar to the use of extension for interfaces) To override methods that are already implemented in the class being extended, by providing new method bodies for them 19 October 2016 OSU CSE 21

Class Extension Important note: Overriding a method is different from overloading a method! A method (name) is overloaded when two or more methods have the same name, in which For classes, extension can serve two different purposes: case the methods must differ in the number and/or types of their formal parameters (which To add method the compiler bodies uses that to disambiguate are not already them). in the class being extended (similar to the use of extension for interfaces) To override methods that are already implemented in the class being extended, by providing new method bodies for them 19 October 2016 OSU CSE 22

Class Extension If C1 and C2 are classes and C2 extends C1, then the code for C2 looks like this: class C2 extends C1 { // code for methods added or // overridden in C2 } C1 C2 extends 19 October 2016 OSU CSE 23

Class Extension If C1 and C2 are classes and C2 extends C1, then the code for C2 looks like this: class C2 extends C1 { // code for methods added or // overridden in C2 } C1 C2 extends Remember, for classes these may be either static methods or instance methods. 19 October 2016 OSU CSE 24

Class Extension If C1 and C2 are classes and C2 extends C1, then the code for C2 looks like this: class C2 extends C1 { // code for methods added or // overridden in C2 } C1 C2 extends Other terminology for this situation: C2 is a subclass of C1 C2 is a derived class of C1 C2 is a child class of C1 19 October 2016 OSU CSE 25

Class Extension If C1 and C2 are classes and C2 extends C1, then the code for C2 looks like this: class C2 extends C1 { // code for methods added or // overridden in C2 } C1 C2 extends Other terminology for this situation: C1 is a superclass of C2 C1 is a base class of C2 C1 is a parent class of C2 19 October 2016 OSU CSE 26

Example: Overriding a Method NaturalNumber2 extends NaturalNumber2- Override... power... power 19 October 2016 OSU CSE 27

Example: Overriding a Method NaturalNumber2 extends NaturalNumber2- Override... power... power There is a method body for power in NaturalNumber2... 19 October 2016 OSU CSE 28

Example: Overriding a Method NaturalNumber2 extends NaturalNumber2- Override... power... power... and there is another method body for power in NaturalNumber2Override. 19 October 2016 OSU CSE 29

@Override Annotation When writing the code for the body of either a method whose contract is from an interface being implemented, or that overrides a method in a class being extended you preface the method body with an @Override annotation 19 October 2016 OSU CSE 30

Example of @Override @Override public void power(int p) {... } 19 October 2016 OSU CSE 31

Which Method Body Is Used? NaturalNumber2 extends NaturalNumber2- Override... power...? power This raises the question: Which method body for power is used when power is called in a client program? 19 October 2016 OSU CSE 32

Interface as Declared Type When a variable is declared using the name of an interface as its type, e.g.: NaturalNumber k = new NaturalNumber2(); then its declared type (or static type) is said to be an interface type 19 October 2016 OSU CSE 33

Interface as Declared Type When a variable is declared using the name of an interface as its type, e.g.: NaturalNumber k = new NaturalNumber2(); then its declared type (or static type) is said to be an interface type Here, the declared type of k is NaturalNumber. 19 October 2016 OSU CSE 34

Interface as Declared Type When a variable is declared using the name of an interface as its type, e.g.: NaturalNumber k = new NaturalNumber2(); then its declared type (or static type) is said to be an interface type Best practice is for variables to be declared using an interface type, as shown here. 19 October 2016 OSU CSE 35

Class as Declared Type When a variable is declared using the name of a class as its type, e.g.: NaturalNumber2 k = new NaturalNumber2(); then its declared type (or static type) is said to be a class type 19 October 2016 OSU CSE 36

Class as Declared Type When a variable is declared using the name of a class as its type, e.g.: NaturalNumber2 k = new NaturalNumber2(); then its declared type (or static type) is said to be a class type Here, the declared type of k is NaturalNumber2. 19 October 2016 OSU CSE 37

Class as Declared Type When a variable is declared using the name of a class as its type, e.g.: NaturalNumber2 k = new NaturalNumber2(); then its declared type (or static type) is said to be a class type Best practice is for variables to be declared using an interface type, but Java will let you use a class type, as shown here. 19 October 2016 OSU CSE 38

Object Type When a variable is instantiated (an object for it to reference is constructed), e.g.: NaturalNumber k = new NaturalNumber2(); then its object type (or dynamic type) is the class type from which the constructor comes 19 October 2016 OSU CSE 39

Object Type When a variable is instantiated NaturalNumber2. (an object for it to reference is constructed), e.g.: NaturalNumber k = new NaturalNumber2(); Here, the object type of k is then its object type (or dynamic type) is the class type from which the constructor comes 19 October 2016 OSU CSE 40

Declared/Object Type Rule Suppose we follow best practices, and: The declared type of some variable is the interface type I The object type of that variable is the class type C Then the relation C implements I must hold Java enforces this rule! 19 October 2016 OSU CSE 41

Polymorphism Finally, back to overriding... Java and other object-oriented languages decide which method body to use for any call to an instance method based on the object type of the receiver This type, because it is the class of the constructor, is always a class type This behavior for calling methods is known as polymorphism: having many forms 19 October 2016 OSU CSE 42

Example of Polymorphism NaturalNumber k = new NaturalNumber2(); NaturalNumber n = new NaturalNumber2Override();... k.power(2); n.power(2);... 19 October 2016 OSU CSE 43

Example of Polymorphism NaturalNumber k = new NaturalNumber2(); NaturalNumber n = new NaturalNumber2Override();... k.power(2); n.power(2);... This call of power uses the method body for power from NaturalNumber2 (which is the object type of k). 19 October 2016 OSU CSE 44

Example of Polymorphism NaturalNumber k = new NaturalNumber2(); NaturalNumber n = new NaturalNumber2Override();... k.power(2); n.power(2);... This call of power uses the method body for power from NaturalNumber2Override (which is the object type of n). 19 October 2016 OSU CSE 45

Example of Polymorphism NaturalNumber k = new NaturalNumber2(); NaturalNumber n = new NaturalNumber2Override();... k.power(2); n.power(2);... Note that the declared type of both k and n is NaturalNumber, and it does not determine which method body is used. 19 October 2016 OSU CSE 46

Another Example NaturalNumber k = new NaturalNumber2(); NaturalNumber n = new NaturalNumber2Override(); NaturalNumber j = k;... j.power(2);... 19 October 2016 OSU CSE 47

Another Example NaturalNumber k = new NaturalNumber2(); NaturalNumber n = new NaturalNumber2Override(); NaturalNumber j = k;... j.power(2);... This call of power uses the method body for power from NaturalNumber2 (which is the object type of j)... 19 October 2016 OSU CSE 48

Another Example NaturalNumber k = new NaturalNumber2(); NaturalNumber n = new NaturalNumber2Override(); NaturalNumber j = n;... j.power(2);...... but this call of power uses the method body for power from NaturalNumber2Override (which is the object type of j). 19 October 2016 OSU CSE 49