University of British Columbia CPSC 111, Intro to Computation Jan-Apr 2006 Tamara Munzner 1 Interfaces, Polymorphism II Lecture 21, Thu Mar 23 2006

Slides:



Advertisements
Similar presentations
Classes And Objects II. Recall the LightSwitch Class class LightSwitch { boolean on = true; boolean isOn() { return on; } void switch() { on = !on; }
Advertisements

INTERFACES IN JAVA 1.Java Does not support Multiple Inheritance directly. Multiple inheritance can be achieved in java by the use of interfaces. 2.We need.
Computer Science 209 Software Development Equality and Comparisons.
Interfaces A Java interface is a collection
University of British Columbia CPSC 111, Intro to Computation Jan-Apr 2006 Tamara Munzner 1 Interfaces, Polymorphism Lecture 20, Tue Mar
University of British Columbia CPSC 111, Intro to Computation 2009W2: Jan-Apr 2010 Tamara Munzner 1 Inheritance II Lecture 34, Mon Apr
University of British Columbia CPSC 111, Intro to Computation Jan-Apr 2006 Tamara Munzner 1 Inheritance II Lecture 23, Thu Mar
University of British Columbia CPSC 111, Intro to Computation Jan-Apr 2006 Tamara Munzner Mathematical Operations, Static Methods Lecture 9, Thu Feb 2.
University of British Columbia CPSC 111, Intro to Computation Jan-Apr 2006 Tamara Munzner 1 Interfaces, Inheritance Lecture 22, Tue Mar
University of British Columbia CPSC 111, Intro to Computation Jan-Apr 2006 Tamara Munzner 1 Advanced Class Design Lecture 19, Thu Mar
University of British Columbia CPSC 111, Intro to Computation Jan-Apr 2006 Tamara Munzner Objects, Methods, Parameters, Input Lecture 5, Thu Jan
University of British Columbia CPSC 111, Intro to Computation 2009W2: Jan-Apr 2010 Tamara Munzner 1 Parameter/Scope Review II, Inheritance Lecture 33,
Lecture 17 Abstract classes Interfaces The Comparable interface Event listeners All in chapter 10: please read it.
University of British Columbia CPSC 111, Intro to Computation 2009W2: Jan-Apr 2010 Tamara Munzner 1 Class Design Lecture 9, Mon Jan
Lecture 27 Exam outline Boxing of primitive types in Java 1.5 Generic types in Java 1.5.
University of British Columbia CPSC 111, Intro to Computation Jan-Apr 2006 Tamara Munzner Arrays II Lecture 15, Thu Mar
University of British Columbia CPSC 111, Intro to Computation 2009W2: Jan-Apr 2010 Tamara Munzner 1 Mathematical Operators, Static Methods Lecture 14,
University of British Columbia CPSC 111, Intro to Computation Jan-Apr 2006 Tamara Munzner Class Design Lecture 6, Tue Jan
University of British Columbia CPSC 111, Intro to Computation Jan-Apr 2006 Tamara Munzner 1 2D Arrays, Sorting Lecture 16, Tue Mar
University of British Columbia CPSC 111, Intro to Computation 2009W2: Jan-Apr 2010 Tamara Munzner 1 Static Methods, Conditionals Lecture 15, Mon Feb 8.
Enhancing classes Visibility modifiers and encapsulation revisited
University of British Columbia CPSC 111, Intro to Computation 2009W2: Jan-Apr 2010 Tamara Munzner 1 Loops III Lecture 20, Fri Mar
University of British Columbia CPSC 111, Intro to Computation 2009W2: Jan-Apr 2010 Tamara Munzner 1 Arrays II Lecture 22, Wed Mar
University of British Columbia CPSC 111, Intro to Computation 2009W2: Jan-Apr 2010 Tamara Munzner 1 More Class Design Lecture 30, Mon Mar
University of British Columbia CPSC 111, Intro to Computation 2009W2: Jan-Apr 2010 Tamara Munzner 1 Loops III Lecture 19, Wed Mar
University of British Columbia CPSC 111, Intro to Computation 2009W2: Jan-Apr 2010 Tamara Munzner 1 Interfaces, Polymorphism Lecture 29, Fri Mar
University of British Columbia CPSC 111, Intro to Computation 2009W2: Jan-Apr 2010 Tamara Munzner 1 2D Arrays, Sorting Lecture 23, Fri Mar
University of British Columbia CPSC 111, Intro to Computation Jan-Apr 2006 Tamara Munzner Constants, Objects, Strings Lecture 4, Tue Jan
University of British Columbia CPSC 111, Intro to Computation Jan-Apr 2006 Tamara Munzner 1 Arrays and Class Design Lecture 18, Tue Mar
University of British Columbia CPSC 111, Intro to Computation 2009W2: Jan-Apr 2010 Tamara Munzner 1 More Class Design II Lecture 31, Wed Mar
University of British Columbia CPSC 111, Intro to Computation Jan-Apr 2006 Tamara Munzner Conditionals II Lecture 11, Thu Feb
CS 106 Introduction to Computer Science I 04 / 28 / 2010 Instructor: Michael Eckmann.
University of British Columbia CPSC 111, Intro to Computation 2009W2: Jan-Apr 2010 Tamara Munzner 1 Interfaces, Polymorphism Lecture 28, Wed Mar
University of British Columbia CPSC 111, Intro to Computation 2009W2: Jan-Apr 2010 Tamara Munzner 1 More Class Design Lecture 13, Wed Feb
Abstract Classes and Interfaces
CS 106 Introduction to Computer Science I 04 / 30 / 2010 Instructor: Michael Eckmann.
University of British Columbia CPSC 111, Intro to Computation 2009W2: Jan-Apr 2010 Tamara Munzner 1 More Class Design III, Parameter/Scope Review Lecture.
Chapter 11 Abstract Classes and Interfaces 1. Abstract method New modifier for class and method: abstract An abstract method has no body Compare: abstract.
CMSC 202 Interfaces. 11/20102 Classes and Methods When a class defines its methods as public, it describes how the class user interacts with the method.
Introduction to Object Oriented Programming. Object Oriented Programming Technique used to develop programs revolving around the real world entities In.
Polymorphism, Inheritance Pt. 1 COMP 401, Fall 2014 Lecture 7 9/9/2014.
CS 106 Introduction to Computer Science I 04 / 20 / 2007 Instructor: Michael Eckmann.
Classes and Methods Computer Engineering Department Java Course Asst. Prof. Dr. Ahmet Sayar Kocaeli University - Fall 2014.
CS 106 Introduction to Computer Science I 04 / 23 / 2010 Instructor: Michael Eckmann.
Copyright © 2014 by John Wiley & Sons. All rights reserved.1 Chapter 10 - Interfaces.
1 Enhanced Class Design -- Introduction  We now examine several features of class design and organization  that can improve reusability and system elegance.
 Definition: Accessing child class methods through a parent object  Example: Child class overrides default parent class methods  Example: Child class.
Programming in Java CSCI-2220 Object Oriented Programming.
Chapter 14 Abstract Classes and Interfaces. Abstract Classes An abstract class extracts common features and functionality of a family of objects An abstract.
Abstract Classes and Interfaces Chapter 9 CSCI 1302.
CS 61B Data Structures and Programming Methodology July 2, 2008 David Sun.
Chapter 3 Introduction to Classes and Objects Definitions Examples.
Chapter 6 Object-Oriented Design Part 2. © 2004 Pearson Addison-Wesley. All rights reserved2/20 The this Reference The this reference allows an object.
Quick Review of OOP Constructs Classes:  Data types for structured data and behavior  fields and methods Objects:  Variables whose data type is a class.
Classes - Intermediate
AP Java Ch. 4 Review Question 1  Java methods can return only primitive types (int, double, boolean, etc).
POLYMORPHISM Chapter 6. Chapter Polymorphism  Polymorphism concept  Abstract classes and methods  Method overriding  Concrete sub classes and.
OOP Basics Classes & Methods (c) IDMS/SQL News
1 Lecture # 2. * Introducing Programming with an Example * Identifiers, Variables, and Constants * Primitive Data Types * Byte, short, int, long, float,
UMass Lowell Computer Science Java and Distributed Computing Prof. Karen Daniels Fall, 2000 Lecture 10 Java Fundamentals Objects/ClassesMethods.
Problem of the Day  Why are manhole covers round?
Lecture 6:Interfaces and Abstract Classes Michael Hsu CSULA.
University of British Columbia CPSC 111, Intro to Computation Jan-Apr 2006 Tamara Munzner Class Design II Lecture 7, Thu Jan
Topic: Classes and Objects
Wrapper Classes ints, doubles, and chars are known as primitive types, or built-in types. There are no methods associated with these types of variables.
Inheritance, Polymorphism, and Interfaces. Oh My
Polymorphism.
Lecture 16 - Interfaces Professor Adams.
Recap Week 2 and 3.
2009 Test Key.
Presentation transcript:

University of British Columbia CPSC 111, Intro to Computation Jan-Apr 2006 Tamara Munzner 1 Interfaces, Polymorphism II Lecture 21, Thu Mar based on slides by Kurt Eiselt and Paul Carter

2 News n labs this week n midterms returned n work through what you got wrong on midterm n can earn back up to 5 out of 70 points n if you don’t finish during your normal lab, can show TAs your work next week or at other labs this week n Assignment 2 handed back at end of class n most, but not all n Assignment 3 posted n due Friday Apr 7, 5pm

3 Recap: Method Overloading n Can have multiple methods of same name n Distinguishes between them with signature n method name, parameter types and order n Cannot have two methods with same signature n Return type is not part of signature n Any method can be overloaded n constructors are very common case

4 Recap: Interfaces n Interface is collection of constants and abstract methods n different meaning than set of public methods that are documented, as in API n to implement interface must provide definitions for all its methods n Abstract methods have no implementation or body n method header followed by semicolon n specifies how to communicate with method, not what it does

5 Recap: Interface Example public interface VendingMachine { public void vendItem(); public int getItemsRemaining(); public int getItemsSold(); public double getCashReceived(); public void loadItems(int n); } public class CokeMachine2005 implements VendingMachine {

6 Recap: Interface Syntax n Use reserved word interface instead of class in header n no need to use reserved word abstract in method headers, is automatic with interfaces n Use reserved word implements followed by interface name in class header

7 Recap: Polymorphism n Polymorphism: behavior varies depending on actual type of object n variables can be declared with interface as type, can invoke interface methods on them n cannot construct interface n can only construct objects of some particular class that implements interface n Polymorphism determined at runtime n vs. method overloading, determined at compilation

8 Recap: Polymorphism Example public class SimCoke2005 { public static void main (String[] args) { VendingMachine foo1 = new CokeMachine2005(); VendingMachine foo2 = new FrenchFryMachine2005(); foo1.vendItem(); foo2.vendItem(); } Adding another CokeMachine to your empire Adding another FrenchFryMachine to your empire Have a Coke 9 cans remaining Have a nice hot cup of french fries 9 cups of french fries remaining

9 Recap: Bunny Example public interface Bunnies { public void moveBunny(int direction); } public class BigBunny implements Bunnies { public void moveBunny(int direction) { if (direction == 12) { y = y + 3; carrots = carrots - 2; }... } public class LittleBunny implements Bunnies { public void moveBunny(int direction) { if (direction == 12) { y = y + 1; carrots = carrots - 1; }... }

10 Polymorphism n reference to interface type can reference instance of any class implementing that interface n static type: type that variable declared to be n determines which members of class can be invoked n dynamic type: type that variable actually references n determines which version of method is called

11 Interfaces as Contract n Can write code that works on anything that fulfills contract n even classes that don’t exist yet! n Example: Comparable n useful if you need to sort items n compareTo(object) n returns -1 if this object less than object o n returns 0 if same n returns 1 if this object greater than parameter

12 Comparable n sort method that works on array of objects of any type that implements Comparable n type guaranteed to have compareTo method n we need to sort n Bunny n Giraffe n String n...

13 Selection Sort For Int Primitives // selection sort public class SortTest1 { public static void main(String[] args) { int[] numbers = {16,3,19,8,12}; int min, temp; //select location of next sorted value for (int i = 0; i < numbers.length-1; i++) { min = i; //find the smallest value in the remainder of //the array to be sorted for (int j = i+1; j < numbers.length; j++) { if (numbers[j] < numbers[min]) { min = j; } //swap two values in the array temp = numbers[i]; numbers[i] = numbers[min]; numbers[min] = temp; } System.out.println("Printing sorted result"); for (int i = 0; i < numbers.length; i++) { System.out.println(numbers[i]); }

14 Wrappers n Many classes implement Comparable interface n Byte, Character, Double, Float, Integer, Long, Short, String n each implements own version of compareTo n Wrapper classes n wraps up (encapsulates) primitive type n Double: object wrapping primitive double n No: sort( double[] myData ); n Yes: sort( Double[] myData );

15 Multiple Interfaces n Classes can implement more than one interface at once n contract to implement all abstract methods defined in every interface it implements public class MyClass implements Interface1, Interface2, Interface3 { }