COMPUTER SCIENCE DEPARTMENT PICNIC. Operations. Push the power button and hold. Once the light begins blinking, enter the room code

Similar documents
Big software. code reuse: The practice of writing program code once and using it in many contexts.

The software crisis. code reuse: The practice of writing program code once and using it in many contexts.

The software crisis. code reuse: The practice of writing program code once and using it in many contexts.

File: D:\My Documents\Classes\Computer Science\Class Notes\Fall New\Polymorphism\Employee.java 7/20/1999, 10:53:52 AM

Polymorphism. Polymorphism is an object-oriented concept that allows us to create versatile software designs

Operations. I Forgot 9/4/2016 COMPUTER SCIENCE DEPARTMENT PICNIC. If you forgot your IClicker, or your batteries fail during the exam

Programming in C# Inheritance and Polymorphism

CS-202 Introduction to Object Oriented Programming

Day 4. COMP1006/1406 Summer M. Jason Hinek Carleton University

BBM 102 Introduction to Programming II

CS 112 Introduction to Programming

Admin. q Admin and recap q Class inheritance

Contents. I. Classes, Superclasses, and Subclasses. Topic 04 - Inheritance

Java Object Oriented Design. CSC207 Fall 2014

Argument Passing All primitive data types (int etc.) are passed by value and all reference types (arrays, strings, objects) are used through refs.

Topic 32 - Polymorphism

Rules and syntax for inheritance. The boring stuff

COMPUTER SCIENCE DEPARTMENT PICNIC. Operations. Push the power button and hold. Once the light begins blinking, enter the room code

What is Inheritance?

Relationships Between Real Things. CSE 143 Java. Common Relationship Patterns. Composition: "has a" CSE143 Sp Student.

CS 251 Intermediate Programming Inheritance

Relationships Between Real Things CSE 143. Common Relationship Patterns. Employee. Supervisor

Inheritance -- Introduction

HAS-A Relationship. Association is a relationship where all objects have their own lifecycle and there is no owner.

BBM 102 Introduction to Programming II Spring 2017

Binghamton University. CS-140 Fall Dynamic Types

Relationships Between Real Things CSC 143. Common Relationship Patterns. Composition: "has a" CSC Employee. Supervisor

S <: T Type compa*bility rela*on.

Inheritance. Writing classes. Writing more classes. Why are they very similar? Employee class. Secretary class. Readings: 9.1

Informatik II. Tutorial 6. Mihai Bâce Mihai Bâce. April 5,

Chapter 11 Inheritance and Polymorphism. Motivations. Suppose you will define classes to model circles,

What is Polymorphism? CS 112 Introduction to Programming

Lecture 3. COMP1006/1406 (the Java course) Summer M. Jason Hinek Carleton University

Classes and Inheritance Extending Classes, Chapter 5.2

Informatik II (D-ITET) Tutorial 6

Inheritance and Polymorphism

Inheritance and Polymorphism

Java Magistère BFA

Inheritance (continued) Inheritance

Object Oriented Programming is a programming method that combines: Advantage of Object Oriented Programming

Chapter 10 Inheritance and Polymorphism. Dr. Hikmat Jaber

Admin. CS 112 Introduction to Programming. Recap: OOP Analysis. Software Design and Reuse. Recap: OOP Analysis. Inheritance

Accelerating Information Technology Innovation

Java Fundamentals (II)

Polymorphism. Final Exam. November 26, Method Overloading. Quick Review of Last Lecture. Overriding Methods.

Java Inheritance. Written by John Bell for CS 342, Spring Based on chapter 6 of Learning Java by Niemeyer & Leuck, and other sources.

Inheritance, Polymorphism, and Interfaces

Graphical Interface and Application (I3305) Semester: 1 Academic Year: 2017/2018 Dr Antoun Yaacoub

Object Oriented Programming. Java-Lecture 11 Polymorphism

Islamic University of Gaza Faculty of Engineering Computer Engineering Department

Announcements. Final exam. Course evaluations. Saturday Dec 15 10:20 am -- 12:20 pm Room: TBA

More Relationships Between Classes

Abstract Classes and Interfaces

Name Return type Argument list. Then the new method is said to override the old one. So, what is the objective of subclass?

Inheritance. Inheritance allows the following two changes in derived class: 1. add new members; 2. override existing (in base class) methods.

First IS-A Relationship: Inheritance

Programming II (CS300)

Java How to Program, 8/e

1 Shyam sir JAVA Notes

CMSC131. Inheritance. Object. When we talked about Object, I mentioned that all Java classes are "built" on top of that.

OOPs Concepts. 1. Data Hiding 2. Encapsulation 3. Abstraction 4. Is-A Relationship 5. Method Signature 6. Polymorphism 7. Constructors 8.

Inheritance (Outsource: )

Example: Count of Points

IST311. Advanced Issues in OOP: Inheritance and Polymorphism

INHERITANCE & POLYMORPHISM. INTRODUCTION IB DP Computer science Standard Level ICS3U. INTRODUCTION IB DP Computer science Standard Level ICS3U

Inheritance. Transitivity

HAS-A Relationship. If A uses B, then it is an aggregation, stating that B exists independently from A.

Inheritance. Inheritance Reserved word protected Reserved word super Overriding methods Class Hierarchies Reading for this lecture: L&L

Computer Science II (20073) Week 1: Review and Inheritance

CH. 2 OBJECT-ORIENTED PROGRAMMING

Introduction to Inheritance

COP 3330 Final Exam Review

CS Programming I: Inheritance

Practice for Chapter 11

Inheritance and object compatibility

Lecture 36: Cloning. Last time: Today: 1. Object 2. Polymorphism and abstract methods 3. Upcasting / downcasting

HAS-A Relationship. Association is a relationship where all objects have their own lifecycle and there is no owner.

Advanced Programming - JAVA Lecture 4 OOP Concepts in JAVA PART II

Inheritance (Part 5) Odds and ends

Lecture 2: Java & Javadoc

9/10/2018 Programming Data Structures Inheritance

CS 112 Programming 2. Lecture 06. Inheritance & Polymorphism (1) Chapter 11 Inheritance and Polymorphism

CREATED BY: Muhammad Bilal Arslan Ahmad Shaad. JAVA Chapter No 5. Instructor: Muhammad Naveed

ITI Introduction to Computing II

C08: Inheritance and Polymorphism

CS260 Intro to Java & Android 03.Java Language Basics

CS111: PROGRAMMING LANGUAGE II

CMSC 132: Object-Oriented Programming II

Polymorphism and Inheritance

Polymorphism. return a.doublevalue() + b.doublevalue();

CS5000: Foundations of Programming. Mingon Kang, PhD Computer Science, Kennesaw State University

ITI Introduction to Computing II

Super-Classes and sub-classes

CIS 110: Introduction to computer programming

Implements vs. Extends When Defining a Class

Lecture Notes Chapter #9_b Inheritance & Polymorphism

Informatik II Tutorial 6. Subho Shankar Basu

More about inheritance

Object Oriented Features. Inheritance. Inheritance. CS257 Computer Science I Kevin Sahr, PhD. Lecture 10: Inheritance

Day 3. COMP 1006/1406A Summer M. Jason Hinek Carleton University

Transcription:

COMPUTER SCIENCE DEPARTMENT PICNIC Welcome to the 2016-2017 Academic year! Meet your faculty, department staff, and fellow students in a social setting. Food and drink will be provided. When: Saturday, September 10 th Time: 11am 2pm Where: City Park Shelter #7 Operations Push the power button and hold. Once the light begins blinking, enter the room code This room s code is BC When a question is asked, you have 30 seconds to respond Enter the letter of the appropriate answer When you enter the letter of the answer, your i- clicker will blink green. It is your responsibility to check for that green light. 1

I Forgot If you forgot your IClicker, or your batteries fail during the exam Your worst quiz score is not counted to cover this situation. All other quizzes count. If you have an excused absence, you may have the quiz score exempted. IC Question 1 What s the object-oriented way to become wealthy? A: Inheritance 4 2

Inheritance The size of big software projects The complete picture is available at: http://www.informationisbeautiful.net/visualizations/million-lines-of-code/ 3

The size of big software projects The software crisis software engineering: The practice of conceptualizing, designing, developing, documenting, and testing largescale computer programs. Large-scale projects face many issues: getting many programmers to work together getting code finished on time avoiding redundant code finding and fixing bugs maintaining, improving, and reusing existing code code reuse: The practice of writing program code once and using it in many contexts. 4

Example You have been tasked with writing a program that handles pay for the employees of a nonprofit organization. The organization has several types of employees on staff: Full-time employees Hourly workers Volunteers Executives Example Paying an employee: Full-time employees have monthly pay Hourly workers hourly wages + hours worked Volunteers no pay Executives receive bonuses 5

Design Need class/classes that handle employee pay (should also store employee info such as name, phone #, address). Possible choices: A single Employee class that knows how to handle different types of employees A separate class for each type of employee. What are the advantages/disadvantages of each design? Design All types of staff members need to have some basic functionality capture that in a class called StaffMember 6

Design public class StaffMember { private String name; private String address; private String phone; All types of staff members need to have some basic functionality capture that in a class called StaffMember public StaffMember (String name, String address, String phone) { this.name = name; this.address = address; this.phone = phone; // not shown: getters and setters Code re-use We'd like to be able to do the following: // A class to represent a paid employee. public class Employee { <copy all the contents from StaffMember class.> private double payrate; public double pay() { return payrate; All this without explicitly copying any code! 7

Creating subclasses using extends public class Employee extends StaffMember { private String socialsecuritynumber; private double payrate; public Employee (String name, String address, String phone, String socsecnumber, double rate){ super(name, address, phone); socialsecuritynumber = socsecnumber; payrate = rate; public double pay(){ return payrate; Inheritance Creating a subclass, general syntax: public class <name> extends <superclass name> { Example: public class Employee extends StaffMember {... By extending StaffMember, each Employee object now: has name, address, phone instance variables and get/setname(), get/setaddress(), get/setphone() methods automatically can be treated as a StaffMember by any other code (seen later) (e.g. an Employee could be stored in a variable of type StaffMember or stored as an element of an array StaffMember[]) 8

Inheritance inheritance: A way to create new classes based on existing classes, taking on their attributes/behavior. a way to group related classes a way to share code between classes A class extends another by absorbing its state and behavior. super-class: The parent class that is being extended. sub-class: The child class that extends the super-class and inherits its behavior. The subclass receives a copy of every field and method from its super-class. The subclass is a more specific type than its super-class (an is-a relationship) Single Inheritance in Java Creating a subclass, general syntax: public class <name> extends <superclass name> Can only extend a single class in Java! Extends creates an is-a relationship class <name> is-a <superclass name> This means that anywhere a <superclass variable> is used, a <subclass variable> may be used. Classes get all the instance variables/methods of their ancestors, but cannot necessarily directly access them... 9

New access modifier - protected public - can be seen/used by everyone protected can be seen/used within class and any subclass. private - can only be seen/used by code in class (not in subclass!) Extends/protected/super public class Employee extends StaffMember { protected String socialsecuritynumber; protected double payrate; public Employee (String name, String address, String phone, String socsecnumber, double rate){ super(name, address, phone); socialsecuritynumber = socsecnumber; payrate = rate; public double pay(){ return payrate; 10

StaffMember needs to change a bit public class StaffMember { protected String name; protected String address; protected String phone; public StaffMember (String name, String address, String phone) { this.name = name; this.address = address; this.phone = phone; Overriding methods override: To write a new version of a method in a subclass that replaces the super-class's version. There is no special syntax for overriding. To override a super-class method, just write a new version of it in the subclass. This will replace the inherited version. Example: public class Hourly extends Employee { protected int hoursworked; // overrides the pay method in Employee class public double pay () { double payment = payrate * hoursworked; hoursworked = 0; return payment; 11

Calling overridden methods The new method often relies on the overridden one. A subclass can call an overridden method with the super keyword. Calling an overridden method, syntax: super.<method name> ( <parameter(s)> ) public class Executive extends Employee { public double pay() { double payment = super.pay() + bonus; bonus = 0; return payment; Constructors Constructors are not inherited. Default constructor: public Employee(){ super(); // calls StaffMember() constructor Constructor needs to call super-class constructors explicitly: public Employee (String name, String address, String phone, String socsecnumber, double rate) { super (name, address, phone); socialsecuritynumber = socsecnumber; payrate = rate; The super call must be the first statement in the constructor. 12

IC Question 2 The format for using inheritance is public class <name> extends <????> Which of the following is????: A. Sub class name B. Inherited class name C. Extender class name D. Super class name 25 IC Question 2 Answer The format for using inheritance is public class <name> extends <????> Which of the following is????: A. Sub class name B. Inherited class name C. Extender class name D. Super class name 26 13

IC Question 3 Classes get all the instance variables/methods of their ancestors and can directly access them. A. True B. False 27 IC Question 3 Answer Classes get all the instance variables/methods of their ancestors and can directly access them. A. True B. False protected vs. private 28 14

IC Question 4 To write a new version of a method in a subclass that replaces the super-class's version is called A. Overloading B. Overriding C. Inheritance D. super() 29 IC Question 4 Answer To write a new version of a method in a subclass that replaces the super-class's version is called A. Overloading B. Overriding C. Inheritance D. super() 30 15

IC Question 1 Subclasses implicitly call the constructor of the superclass. A. True B. False 31 IC Question 1 Subclasses implicitly call the constructor of the superclass. A. True a default call to super() is inserted if none exists A. Example, if a constructor() exists in the superclass, it is implicitly called by the subclass constructor. B. Example, if no constructors exist in the superclass, a default one is inserted, which is then implicitly called by the subclass. B. False they must call them explicitly if they wish to call the nondefault one. A. Example, if a constructor(int x) exists in the superclass with no constructor() defined, the subclass must explicitly call the constructor(int) or an error occurs. 32 16

Subclass Constructors Can use the keyword super as the first line of code in a body to call a superclass constructor Implicitly call the default (0 arguments) superclass constructor if super is not used to explicitly call a superclass constructor If the superclass has no default constructor and super is not used to call a superclass constructor, an error results Inheritance and Polymorphism 17

Everything is an Object Every class in Java implicitly extends the Java Object class. Therefore every Java class inherits all the methods of the class Object, such as equals(object other) tostring() Often we want to override the standard implementation Note the difference between overloading and overriding! The equals method You might think that the following is a valid implementation of the equals method: public boolean equals(object other) { if (name.equals(other.name)) { return true; else { return false; However, it does not compile. StaffMember.java:36: cannot find symbol symbol : variable name location: class java.lang.object Why? Because an Object does not have a name instance variable. 18

Type casting The object that is passed to equals can be cast from Object into your class's type. Example: public boolean equals(object o) { StaffMember other = (StaffMember) o; return name.equals(other.name); Type-casting with objects behaves differently than casting primitive values. We are really casting a reference of type Object into a reference of type StaffMember. We're promising the compiler that o refers to a StaffMember object, and thus has an instance variable name. Type casting: equals example The object that is passed to equals can be cast from Object into your class's type. Equals example: public boolean equals(object o) { StaffMember other = (StaffMember) o; return name.equals(other.name); 19

instanceof We can use instanceof to ask whether a variable refers to an object of a given type. Syntax of instanceof : <variable> instanceof <type> The above is a boolean expression that can be used as a test in an if statement. Examples: String s = "hello"; StaffMember p = new StaffMember( ); if(s instanceof String)... if(p instanceof String)... Our final version of equals This version of the equals method allows us to correctly compare StaffMember objects with any type of object: // Returns whether o refers to a StaffMember // object with the same name public boolean equals(object o) { if (o instanceof StaffMember) { StaffMember other = (StaffMember) o; return name.equals(other.name); else { return false; 20

Subtype principles An instance of a subclass can always be used when an instance of a superclass is expected A subclass object can be: Assigned to a variable of the subclass type Passed to a method that expects the superclass type as a parameter The reverse is NOT true a superclass object cannot be used where a subclass object is expected Subtype principles The instanceof operator can be used to check the type of the object stored in the variable. A cast can be used to convert a superclass variable to a subclass variable if you know the variable contains a subclass object 21

Binding: which method is called? Assume that the following four classes have been declared: public class Foo { public void method1() { System.out.println("foo 1"); public void method2() { System.out.println("foo 2"); public String tostring() { return "foo"; public class Bar extends Foo { public void method2() { System.out.println("bar 2"); Example public class Baz extends Foo { public void method1() { System.out.println("baz 1"); public String tostring() { return "baz"; public class Mumble extends Baz { public void method2() { System.out.println("mumble 2"); The output of the following client code? Foo[] a = {new Baz(), new Bar(), new Mumble(), new Foo(); for (int i = 0; i < a.length; i++) { System.out.println(a[i]); a[i].method1(); a[i].method2(); System.out.println(); 22

Describing inheritance and binding UML diagram: Subclasses point to their super-class List methods (inherited methods in parenthesis) Method called is the nearest in the hierarchy going up the tree This is a dynamic (run time) phenomenon called dynamic binding Example (solved) Foo[] a = {new Baz(), new Bar(), new Mumble(), new Foo(); for (int i = 0; i < a.length; i++) { System.out.println(a[i]); a[i].method1(); a[i].method2(); System.out.println(); Output? baz baz 1 foo 2 foo foo 1 bar 2 baz baz 1 mumble 2 foo foo 1 foo 2 23

Polymorphism It s legal for a variable of a super-class to refer to an instance of a subclass. Example: StaffMember [] stafflist = new StaffMember[6]; stafflist[0] = new Executive("Sam", "123 Main Line", "555-0469", "123-45-6789", 2423.07); stafflist[1] = new Employee("Carla", "456 Off Line", "555-0101", "987-65-4321", 1246.15); stafflist[2] = new Employee("Woody", "789 Off Rocker", "555-0000", "010-20-3040", 1169.23); ((Executive)staffList[0]).awardBonus (500.00); Arrays of a super-class type can store any subtype as elements. Polymorphism and casting When a primitive type is used to store a value of another type (e.g. an int in a double variable) conversion takes place. When a subclass is stored in a superclass no conversion occurs! 24

Polymorphism defined Polymorphism: the ability for the same code to be used with several different types of objects and behave differently depending on the actual type of object used. Example: for (int count=0; count < stafflist.length; count++) { amount = stafflist[count].pay(); // polymorphic Polymorphism and parameters You can pass any subtype of a parameter's type. public class EmployeeMain { public static void main(string[] args) { Executive lisa = new Executive( ); Volunteer steve = new Volunteer( ); payemployee(lisa); payemployee(steve); { public static void payemployee(staffmember s) System.out.println("salary = " + s.pay()); 25

Notes about polymorphism The program doesn t know which pay method to call until it s actually running. This has many names: late binding, dynamic binding, virtual binding, and dynamic dispatch. You can only call methods known to the super-class, unless you explicitly cast. You cannot assign a super-class object to a sub-class variable (a cow is an animal, but an animal is not a cow! ) instanceof operator in this context Pet p = new Pet(); Pet q = new Cat(); // class Cat extends Pet Cat r = new Cat(); Then, (p instanceof Pet) == true (p instanceof Cat) == false (q instanceof Pet) == true (q instanceof Cat) == true (r instanceof Pet) == true (r instanceof Cat) == true 26

Abstract classes An abstract class: can leave one or more method implementations unspecified An abstract method has no body (i.e. no implementation). Hence, an abstract class is incomplete and cannot be instantiated, but can be used as a base class. abstract public class abstract-base-class-name { public abstract return-type method-name(params);... A subclass is required to override the abstract method and provide an implementation. public class derived-class-name { public return-type method-name(params) { statements;... Example Let s convert StaffMember to an abstract class... 27

Example Let s convert StaffMember to an abstract class. public abstract class StaffMember {... public abstract double pay(); Now the sub classes must override pay(), thereby implementing pay() appropriately for each sub type Abstract classes When to use abstract classes To represent entities that are insufficiently defined Group together data/behavior that is useful for its subclasses 28

Inheritance: FAQ How can a subclass call a method or a constructor defined in a super-class? Use super() or super.method() Does Java support multiple inheritance? No. Use interfaces instead What restrictions are placed on method overriding? Same name, argument list, and return type. May not throw exceptions that are not thrown by the overridden method, or limit the access to the method Does a class inherit the constructors of its super-class? No. Need to call them explicitly this and super in constructors this( ) calls a constructor of the same class. super( ) calls a constructor of the superclass. Both need to be the first action in a constructor. 29

IC Question 2 Every class in Java implicitly extends what Java class? A. tostring() B. equals() C. Subclass D. Object E. Superclass 59 IC Question 2 Answer Every class in Java implicitly extends what Java class? A. tostring() B. equals() C. Subclass D. Object E. Superclass 60 30

IC Question 3 A cast can be used to convert a superclass variable to a subclass variable if you know the variable contains a subclass object A. True B. False 61 IC Question 3 Answer A cast can be used to convert a superclass variable to a subclass variable if you know the variable contains a subclass object A. True B. False 62 31

IC Question 4 Arrays of a subclass type can store any supertype as elements A. True B. False 63 IC Question 4 Arrays of a subclass type can store any supertype as elements A. True B. False subclass elements may be stored in an array of superclass. 64 32

IC Question 5 An abstract class can be instantiated when all of the methods are complete. A. True B. False 65 IC Question 5 Answer An abstract class can be instantiated when all of the methods are complete. A. True B. False - an abstract class is incomplete and cannot be instantiated, but can be used as a base class. 66 33