aalborg media lab 15-jul-15 polymorphism lecture 12 chapter 9

28
Aalborg Media Lab Mar 25, 2022 Polymorphism Lecture 12 Chapter 9

Post on 22-Dec-2015

217 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Aalborg Media Lab 15-Jul-15 Polymorphism Lecture 12 Chapter 9

Aalborg Media LabApr 19, 2023

Polymorphism

Lecture 12

Chapter 9

Page 2: Aalborg Media Lab 15-Jul-15 Polymorphism Lecture 12 Chapter 9

Aalborg Media LabApr 19, 2023 2

References and Inheritance• An object reference can refer to an object of its class, or to

an object of any class related to it by inheritance

• For example, if the Holiday class is used to derive a child class called Christmas, then a Holiday reference could be used to point to a Christmas object

Holiday day;day = new Christmas();

Holiday

Christmas

Page 3: Aalborg Media Lab 15-Jul-15 Polymorphism Lecture 12 Chapter 9

Aalborg Media LabApr 19, 2023 3

References and Inheritance• Assigning a predecessor object to an ancestor

reference is considered to be a widening conversion, and can be performed by simple assignment

• Assigning an ancestor object to a predecessor reference can be done also, but it is considered to be a narrowing conversion and must be done with a cast

• The widening conversion is the most useful

Page 4: Aalborg Media Lab 15-Jul-15 Polymorphism Lecture 12 Chapter 9

Aalborg Media LabApr 19, 2023

References and Inheritance

• An Object reference can be used to refer to any object

– Any object can be referred as an Object through an assignment

Double number = new Double(5)Object myObject = number;

Page 5: Aalborg Media Lab 15-Jul-15 Polymorphism Lecture 12 Chapter 9

Aalborg Media LabApr 19, 2023

Polymorphism

• A reference can be polymorphic, which can be defined as "having many forms"

obj.doIt();

• This line of code might execute different methods at different times if the object that obj points to changes

• Polymorphic references are resolved at run time; this is called dynamic binding

Page 6: Aalborg Media Lab 15-Jul-15 Polymorphism Lecture 12 Chapter 9

Aalborg Media LabApr 19, 2023

Polymorphism• Careful use of polymorphic references can lead to

elegant, robust software designs

• Polymorphism can be accomplished using inheritance or using interfaces

Page 7: Aalborg Media Lab 15-Jul-15 Polymorphism Lecture 12 Chapter 9

Aalborg Media LabApr 19, 2023

Polymorphism via Inheritance• It is the type of the object being referenced, not the

reference type, that determines which method is invoked

• Suppose the Holiday class has a method called celebrate, and the Christmas class overrides it

• Now consider the following invocation:

day.celebrate();

• If day refers to a Holiday object, it invokes the Holiday version of celebrate; if it refers to a Christmas object, it invokes the Christmas version

Page 8: Aalborg Media Lab 15-Jul-15 Polymorphism Lecture 12 Chapter 9

Aalborg Media LabApr 19, 2023

Polymorphism via Interfaces• An interface name can be used as the type of an object reference

variable

• The interface reference can refer to any object of any class that implements the interface

public interface Speaker{

public void speak();public void announce (String str);

}Speaker current;

• current can reference to any object implementing Speaker

Page 9: Aalborg Media Lab 15-Jul-15 Polymorphism Lecture 12 Chapter 9

Aalborg Media LabApr 19, 2023

Polymorphism via Interfaces• We are now able to create polymorphic references among

objects implementing the same interface

Speaker current;current = new Philosopher();current.speak();current = new Dog();current.speak();

• Interface references can’t be used to invoke class methods.current.getName(); // compile error

Page 10: Aalborg Media Lab 15-Jul-15 Polymorphism Lecture 12 Chapter 9

Aalborg Media LabApr 19, 2023

Polymorphism via Interfaces• Use a explicit cast to access object data/methods

(Dog(current)).getName();

• A parameter to a method can be polymorphic, giving the method flexible control of its arguments

public void sayIt (Speaker current){

current.speak();}

Page 11: Aalborg Media Lab 15-Jul-15 Polymorphism Lecture 12 Chapter 9

Aalborg Media LabApr 19, 2023

Difference? Advantages?

• What is the difference / between interface polymorphism and inheritance polymorphism.

• When shall we use what?

• Advantages?

Page 12: Aalborg Media Lab 15-Jul-15 Polymorphism Lecture 12 Chapter 9

Aalborg Media LabApr 19, 2023

Sorting• Sorting is the process of arranging a list of items in a

particular order

• The sorting process is based on specific value(s)

– sorting a list of test scores in ascending numeric order

– sorting a list of people alphabetically by last name

Page 13: Aalborg Media Lab 15-Jul-15 Polymorphism Lecture 12 Chapter 9

Aalborg Media LabApr 19, 2023

Sorting• There are many algorithms for sorting a list of

items

• These algorithms vary in efficiency

• We will examine two specific algorithms:

– Selection Sort

– Insertion Sort

Page 14: Aalborg Media Lab 15-Jul-15 Polymorphism Lecture 12 Chapter 9

Aalborg Media LabApr 19, 2023

Selection Sort• The approach of Selection Sort:

– select a value and put it in its final place into the list

– repeat for all other values

• In more detail:

– find the smallest value in the list and switch it with the value in the first position

– find the next smallest value in the list and switch it

– repeat until all values are in their proper places

Page 15: Aalborg Media Lab 15-Jul-15 Polymorphism Lecture 12 Chapter 9

Aalborg Media LabApr 19, 2023

Selection Sort• An example:

original: 3 9 6 1 2

smallest is 1: 1 9 6 3 2

smallest is 2: 1 2 6 3 9

smallest is 3: 1 2 3 6 9

smallest is 6: 1 2 3 6 9

Page 16: Aalborg Media Lab 15-Jul-15 Polymorphism Lecture 12 Chapter 9

Aalborg Media LabApr 19, 2023

Swapping

• Swapping is the process of exchanging two values

• Swapping requires three assignment statements

temp = first;

first = second;

second = temp;

Page 17: Aalborg Media Lab 15-Jul-15 Polymorphism Lecture 12 Chapter 9

Aalborg Media LabApr 19, 2023

Insertion Sort• The approach of Insertion Sort:

– pick any item and insert it into its proper place in a sorted sublist

– repeat until all items have been inserted

Page 18: Aalborg Media Lab 15-Jul-15 Polymorphism Lecture 12 Chapter 9

Aalborg Media LabApr 19, 2023

Insertion Sort• In more detail:

– consider the first item to be a sorted sublist (of one item)

– insert the second item into the sorted sublist, shifting the first item as needed to make room to insert the new addition

– insert the third item into the sorted sublist (of two items), shifting items as necessary

– repeat until all values are inserted into their proper positions

Page 19: Aalborg Media Lab 15-Jul-15 Polymorphism Lecture 12 Chapter 9

Aalborg Media LabApr 19, 2023

Insertion Sort

• An example:

original: 3 9 6 1 2

insert 9: 3 9 6 1 2

insert 6: 3 6 9 1 2

insert 1: 1 3 6 9 2

insert 2: 1 2 3 6 9

Page 20: Aalborg Media Lab 15-Jul-15 Polymorphism Lecture 12 Chapter 9

Aalborg Media LabApr 19, 2023

Sorting Objects• Integers have an inherent order, but the ordering

criteria of a collection of objects must be defined

• Recall that a Java interface can be used as a type name and guarantees that a particular class implements particular methods

• We can use the Comparable interface and the compareTo() method to develop a generic sort for a set of objects

Page 21: Aalborg Media Lab 15-Jul-15 Polymorphism Lecture 12 Chapter 9

Aalborg Media LabApr 19, 2023

Comparing Sorts• Both Selection and Insertion sorts are similar in efficiency

• They both have outer loops that scan all elements, and inner loops that compare the value of the outer loop with almost all values in the list

• Approximately n2 number of comparisons are made to sort a list of size n

• We therefore say that these sorts are of order n2

• Other sorts are more efficient: order n log2 n

Page 22: Aalborg Media Lab 15-Jul-15 Polymorphism Lecture 12 Chapter 9

Aalborg Media LabApr 19, 2023

Searching

• Searching is the progress of finding a designated target element within a groups of items (search-pool)

• Of what nature is the search pool?– are the item sorted?– are the items comparable?

• Look at two searching algorithms– linear search– binary search

Page 23: Aalborg Media Lab 15-Jul-15 Polymorphism Lecture 12 Chapter 9

Aalborg Media LabApr 19, 2023

Linear Search• The approach of linear search:

– Search until elment is found

• In more detail:

– Compare every element, starting with the first element

– If search pool contains N elements the target-element is found after max N comparisons. Complexity = N

– Statistically the target-element is found after N/2 comparisons

Page 24: Aalborg Media Lab 15-Jul-15 Polymorphism Lecture 12 Chapter 9

Aalborg Media LabApr 19, 2023

Binary Search• The detailed approach of the binary search:

– The test-pool must be ordered!

– Downsize the test-pool by only comparing the middle element (is the target-element to the left or right from middle element)

– Repeat until test-pool is of size one and corresponds to the target-element

– Has a complexity of log2 N

Page 25: Aalborg Media Lab 15-Jul-15 Polymorphism Lecture 12 Chapter 9

Aalborg Media LabApr 19, 2023

Binary Search

-1 2 3 5 8 10 15

0 1 2 3 4 5 6

mid highlow

target

Page 26: Aalborg Media Lab 15-Jul-15 Polymorphism Lecture 12 Chapter 9

Aalborg Media LabApr 19, 2023

-1 2 3 5 8 10 15

0 1 2 3 4 5 6

mid highlow

target

Binary Search

Page 27: Aalborg Media Lab 15-Jul-15 Polymorphism Lecture 12 Chapter 9

Aalborg Media LabApr 19, 2023

Binary Search

-1 2 3 5 8 10 15

0 1 2 3 4 5 6

high

mid

low

target

Page 28: Aalborg Media Lab 15-Jul-15 Polymorphism Lecture 12 Chapter 9

Aalborg Media LabApr 19, 2023

Exercises

• Exercises– 9.1

• Programming Projects– 9.1 & 9.2