arrays –collections (set, database, history) inheritance –inheriting ancestor’s traits...

73
Arrays • Arrays – Collections (Set, Database, History) • Inheritance – inheriting ancestor’s traits – inheriting benefactor’s assets – inheriting instance members( methods/variables) • IS-A Relationship – human IS-A Mammal – salmon IS-A Fish – “Joe Doe” IS-A Student – ALoan IS-A Loan

Post on 20-Dec-2015

230 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Arrays –Collections (Set, Database, History) Inheritance –inheriting ancestor’s traits –inheriting benefactor’s assets –inheriting instance members( methods/variables)

Arrays• Arrays

– Collections (Set, Database, History)

• Inheritance– inheriting ancestor’s traits– inheriting benefactor’s assets– inheriting instance members( methods/variables)

• IS-A Relationship– human IS-A Mammal– salmon IS-A Fish– “Joe Doe” IS-A Student– ALoan IS-A Loan

Page 2: Arrays –Collections (Set, Database, History) Inheritance –inheriting ancestor’s traits –inheriting benefactor’s assets –inheriting instance members( methods/variables)

Strings = Char Sequences

J o h n F . K e n n d ye

h e l l o

String {sequences of characters}

1 4 3 l 0

Page 3: Arrays –Collections (Set, Database, History) Inheritance –inheriting ancestor’s traits –inheriting benefactor’s assets –inheriting instance members( methods/variables)

Other Sequences as Predefined Types

100 98 99 100 90

60 40 50

{sequences of integers}

80

JFK FDR

{sequence of Strings}

JC BC RR GB

3.8 3.1

{sequences of doubles}

3.7 3.1 3.6 3.9

IntSequence

DoubleSequence

StringSequence

Page 4: Arrays –Collections (Set, Database, History) Inheritance –inheriting ancestor’s traits –inheriting benefactor’s assets –inheriting instance members( methods/variables)

Sequences of Programmer-Defined Type

loan1 loan2

{sequence of loans}

loan3

temperature1

{sequence of temperatures}

temperature2 temperature3

temperature1 temperature2

TemperatureSequence

LoanSequenceLoan[]

Temperature[]

Array Types

Arrays

Array Element

Page 5: Arrays –Collections (Set, Database, History) Inheritance –inheriting ancestor’s traits –inheriting benefactor’s assets –inheriting instance members( methods/variables)

Other Sequences as Array Types

100 98 99 100 90

60 40 50

{sequences of integers}

80

{sequence of strings}

3.8 3.1

{sequences of doubles}

3.7 3.1 3.6 3.9

int[]

double[]

String[]

JFK FDR JC BC RR GB

Page 6: Arrays –Collections (Set, Database, History) Inheritance –inheriting ancestor’s traits –inheriting benefactor’s assets –inheriting instance members( methods/variables)

Initializing Array Declarations

100 98 99 100 90 80

int[] assignmentScores = {100, 98, 99, 80};

3.8 3.1 3.7 3.1 3.6 3.9

double[] gpas = {3.8, 3.1, 3.7, 3.1, 3.6, 3.9};

String[] initials = {“JFK”, “FDR”, “JC”, “BC”, “GW”, “WW”};

JFK FDR JC BC GW WW

assignmentScores

Array Type

Element Type

Array Literal

Array Variable

Page 7: Arrays –Collections (Set, Database, History) Inheritance –inheriting ancestor’s traits –inheriting benefactor’s assets –inheriting instance members( methods/variables)

Initializing Array Declaration

<ElementType> [] <arrayVariable> = {<element1>, …, <elementN>}

Loan [] loans = {new ALoan(100000), new AnotherLoan (100)};

Page 8: Arrays –Collections (Set, Database, History) Inheritance –inheriting ancestor’s traits –inheriting benefactor’s assets –inheriting instance members( methods/variables)

Array Operations

String[] initials = {“JFK”, “FDR”, “JC”, “BC”, “GW”, “WW”};

JFK FDR JC BC GW WW

initials.length 6

initials[0]

initials[initials.length - 1]

initials[initials.length] ArrayIndexOutOfBoundsException

public named constant

initials[0] = “HT”

HT

initials[initials.length] = “HT” ArrayIndexOutOfBoundsException

Array Instance Size Fixed

Page 9: Arrays –Collections (Set, Database, History) Inheritance –inheriting ancestor’s traits –inheriting benefactor’s assets –inheriting instance members( methods/variables)

Array Types have Variable-Size

100 98 99 100 90

60 40 50

80

int[]

100 98 99 100 90 80

int[] assignmentScores = {100, 98, 99, 100, 99, 80};

assignmentScores

assignmentScores = {60, 40, 50};

assignmentScores60 40 50

Page 10: Arrays –Collections (Set, Database, History) Inheritance –inheriting ancestor’s traits –inheriting benefactor’s assets –inheriting instance members( methods/variables)

Uninitializing Array Declaration

int[] assignmentScores;

assignmentScores

null

assignmentScores = {60, 40, 50};

assignmentScores60 40 50

Page 11: Arrays –Collections (Set, Database, History) Inheritance –inheriting ancestor’s traits –inheriting benefactor’s assets –inheriting instance members( methods/variables)

Array Elements Uninitialized

int[] assignmentScores = new int[3];

assignmentScores0 0 0

Page 12: Arrays –Collections (Set, Database, History) Inheritance –inheriting ancestor’s traits –inheriting benefactor’s assets –inheriting instance members( methods/variables)

Object Array Elements Uninitialized

String[] initials = new String[3];

initialsnullnull null

Page 13: Arrays –Collections (Set, Database, History) Inheritance –inheriting ancestor’s traits –inheriting benefactor’s assets –inheriting instance members( methods/variables)

Uninitialized Array Vs Element

String[] initials = new String[3];

initialsnullnull null

String[] initials;

initialsnull

initials[0]

nullinitials[0]

initials[0].charAt(0) StringIndexOutOfBounds

ArrayIndexOutOfBoundsException

Page 14: Arrays –Collections (Set, Database, History) Inheritance –inheriting ancestor’s traits –inheriting benefactor’s assets –inheriting instance members( methods/variables)

Example

Page 15: Arrays –Collections (Set, Database, History) Inheritance –inheriting ancestor’s traits –inheriting benefactor’s assets –inheriting instance members( methods/variables)

getStrings()

static String[] getStrings() { System.out.println("Number of Strings:"); int numElements = Keyboard.readInt(); System.out.println("Please enter " + numElements + " strings"); String[] strings = new String[numElements]; for (int elementNum = 0; elementNum < numElements; elementNum++) strings[elementNum] = Keyboard.readLine(); return strings;}

variable

Page 16: Arrays –Collections (Set, Database, History) Inheritance –inheriting ancestor’s traits –inheriting benefactor’s assets –inheriting instance members( methods/variables)

print()

static void print(String[] strings) { System.out.println("******************"); for ( int elementNum = 0; elementNum < strings.length; elementNum++) System.out.println(strings[elementNum]); System.out.println("******************");}

String array of arbitrary dimension (size)

Page 17: Arrays –Collections (Set, Database, History) Inheritance –inheriting ancestor’s traits –inheriting benefactor’s assets –inheriting instance members( methods/variables)

main()

public static void main(String[] args){ String[] names = getStrings(); while (true) { String command = Keyboard.readLine(); if (command.length > 0 && command.charAt(0) == 'q')

break; if (command.length > 0 && command.charAt(0) == 'p')

print(names); } }

Page 18: Arrays –Collections (Set, Database, History) Inheritance –inheriting ancestor’s traits –inheriting benefactor’s assets –inheriting instance members( methods/variables)

main()

Page 19: Arrays –Collections (Set, Database, History) Inheritance –inheriting ancestor’s traits –inheriting benefactor’s assets –inheriting instance members( methods/variables)

Variable-Size Collection

filled part

unfilled part

current size

maximum size

Page 20: Arrays –Collections (Set, Database, History) Inheritance –inheriting ancestor’s traits –inheriting benefactor’s assets –inheriting instance members( methods/variables)

3 James Dean

Joe Doe

Jane Smith

size array

Variable-Size Collection

filled part

unfilled part

current size

maximum size

Page 21: Arrays –Collections (Set, Database, History) Inheritance –inheriting ancestor’s traits –inheriting benefactor’s assets –inheriting instance members( methods/variables)

Variable-Size Collectionpublic class <ClassNeedingVariableSizeCollection> { …

final static int A_MAX_SIZE = 50;String[] a = new String [MAX_SIZE];int aSize = 0;…//process afor (int index = 0; index < aSize; index++)

System.out.println(a[index]);…final int B_MAX_SIZE = 50;String[] b = new String [MAX_SIZE];int bSize = 0;

//process b …}

Page 22: Arrays –Collections (Set, Database, History) Inheritance –inheriting ancestor’s traits –inheriting benefactor’s assets –inheriting instance members( methods/variables)

Special Typepublic class <ClassNeedingVariableSizeCollection> { ... AVariableSizeCollection a = new AVariableSizeCollection(); ... for (int index = 0; index < a.size; index++) System.out.println(a.contents[index]); …

AVariableSizeCollection b = new AVariableSizeCollection(); ...}

public class AVariableSizeCollection {public static final int MAX_SIZE = 50;public String[] contents = new String [MAX_SIZE];public int size = 0;

}

No encapsulation!

a.contents[a.size] = Keyboard.readString();

Size not updated

Page 23: Arrays –Collections (Set, Database, History) Inheritance –inheriting ancestor’s traits –inheriting benefactor’s assets –inheriting instance members( methods/variables)

Supporting Encapsulation

public interface …. {public static final int MAX_SIZE = 50;

}

public void addElement (String element);

public void print ();

Implementation specific

User specific

Page 24: Arrays –Collections (Set, Database, History) Inheritance –inheriting ancestor’s traits –inheriting benefactor’s assets –inheriting instance members( methods/variables)

History

public interface StringHistory {

}

public void addElement (String element);

public int size();

public String elementAt (int index);

Page 25: Arrays –Collections (Set, Database, History) Inheritance –inheriting ancestor’s traits –inheriting benefactor’s assets –inheriting instance members( methods/variables)

Implementing a History

public class AStringHistory implements StringHistory { public final int MAX_SIZE = 50; String[] contents = new String[MAX_SIZE]; int size = 0; public int size() { return size;} public String elementAt (int index) { return contents[index]; } boolean isFull() { return size == MAX_SIZE; } public void addElement(String element) { if (isFull())

System.out.println("Adding item to a full history"); else {

contents[size] = element; size++;}

} }

Page 26: Arrays –Collections (Set, Database, History) Inheritance –inheriting ancestor’s traits –inheriting benefactor’s assets –inheriting instance members( methods/variables)

Using a History

public static void main(String[] args) { StringHistory names = new AStringHistory(); while (true) { String input = Keyboard.readLine();

if (input.length > 0) if (input.charAt(0) == 'q') break; else if (input.charAt(0) == 'p' ) print(names);

else names.addElement(input);

}}

Page 27: Arrays –Collections (Set, Database, History) Inheritance –inheriting ancestor’s traits –inheriting benefactor’s assets –inheriting instance members( methods/variables)

Printing a History

static void print(StringHistory strings) { System.out.println("******************"); for ( int elementNum = 0; elementNum < strings.size(); elementNum++)

System.out.println(strings.elementAt(elementNum));}

Page 28: Arrays –Collections (Set, Database, History) Inheritance –inheriting ancestor’s traits –inheriting benefactor’s assets –inheriting instance members( methods/variables)

Database

Page 29: Arrays –Collections (Set, Database, History) Inheritance –inheriting ancestor’s traits –inheriting benefactor’s assets –inheriting instance members( methods/variables)

Databasepublic interface StringDatabase { //from history

public int size();public void addElement (String element);public String elementAt (int index); //additional methods

}

public void member (String element);

public void deleteElement(String element);

public void clear();

Page 30: Arrays –Collections (Set, Database, History) Inheritance –inheriting ancestor’s traits –inheriting benefactor’s assets –inheriting instance members( methods/variables)

deleteElement (String element)

4 James Dean

Joe Doe

Jane Smith

size array

John Smith

deleteElement(“Joe Doe”);

public void deleteElement (String element) { contents[indexOf(element)] = contents[size - 1]; size--;

}John Smith

3

Elements out of order!

Page 31: Arrays –Collections (Set, Database, History) Inheritance –inheriting ancestor’s traits –inheriting benefactor’s assets –inheriting instance members( methods/variables)

deleteElement (String element)

4 James Dean

Joe Doe

Jane Smith

size array

John Smith

deleteElement(“Joe Doe”);

public void deleteElement (String element) { shiftUp(indexOf(element));}

1

index

Page 32: Arrays –Collections (Set, Database, History) Inheritance –inheriting ancestor’s traits –inheriting benefactor’s assets –inheriting instance members( methods/variables)

Multi-element window

4 James Dean

Joe Doe

Jane Smith

size array

John Smith

deleteElement(“Joe Doe”);

public void deleteElement (String element) { shiftUp(indexOf(element));}

Jane Smith

1

index

contents[index] = contents[index + 1];

Page 33: Arrays –Collections (Set, Database, History) Inheritance –inheriting ancestor’s traits –inheriting benefactor’s assets –inheriting instance members( methods/variables)

deleteElement (String element)

4 James Dean

Joe Doe

Jane Smith

size array

John Smith

deleteElement(“Joe Doe”);

public void deleteElement (String element) { shiftUp(indexOf(element));}

Jane Smith

John Smith

3

void shiftUp (int startIndex) { for (int index = startIndex ; index + 1 < size; index++) contents[index] = contents[index + 1]; size--;}

2

index

Page 34: Arrays –Collections (Set, Database, History) Inheritance –inheriting ancestor’s traits –inheriting benefactor’s assets –inheriting instance members( methods/variables)

indexOf (String element)

4 James Dean

Joe Doe

Jane Smith

size array

John Smith

indexOf(“Joe Doe”);

0

index

Page 35: Arrays –Collections (Set, Database, History) Inheritance –inheriting ancestor’s traits –inheriting benefactor’s assets –inheriting instance members( methods/variables)

indexOf (String element)

4 James Dean

Joe Doe

Jane Smith

size array

John Smith

deleteElement(“Joe Doe”);

1

index

public int indexOf (String element) { for ( index = 0; index < size && !element.equals(contents[index];

index++) ;

return index;}

Page 36: Arrays –Collections (Set, Database, History) Inheritance –inheriting ancestor’s traits –inheriting benefactor’s assets –inheriting instance members( methods/variables)

public boolean member(String element)

4 James Dean

Joe Doe

Jane Smith

size array

John Smith

member(“Joe Doe”);

public int indexOf (String element) { for ( index = 0; index < size && !element.equals(contents[index];

index++) ;

return index;}

public boolean member (String element) { }

return indexOf (element) < size;

Page 37: Arrays –Collections (Set, Database, History) Inheritance –inheriting ancestor’s traits –inheriting benefactor’s assets –inheriting instance members( methods/variables)

public void clear()

4 James Dean

Joe Doe

Jane Smith

size array

John Smith

clear()

public void clear() { while ( size > 0)

deleteElement(size -1);}

3210

Page 38: Arrays –Collections (Set, Database, History) Inheritance –inheriting ancestor’s traits –inheriting benefactor’s assets –inheriting instance members( methods/variables)

public void clear()

4 James Dean

Joe Doe

Jane Smith

size array

John Smith

clear()

public void clear() { size = 0;}

0

Page 39: Arrays –Collections (Set, Database, History) Inheritance –inheriting ancestor’s traits –inheriting benefactor’s assets –inheriting instance members( methods/variables)

addElement(“Mary Doe”)

4 Mary Doe

Joe Doe

Jane Smith

size array

John Smith

1

Page 40: Arrays –Collections (Set, Database, History) Inheritance –inheriting ancestor’s traits –inheriting benefactor’s assets –inheriting instance members( methods/variables)

Logical but not Physical Extensions

clear( )

elementAt( )

size( )

member( )

deleteElement( )

addElement( )

StringDatabase

StringHistory

size( )

elementAt( )

addElement( )

IMPLEMENTS

IMPLEMENTS

elementAt( )

member( )

deleteElement( )

indexOf( )

size( )

addElement( )

shiftUp( )

size

contents

MAX_SIZE

AStringDatabase

clear( )

MAX_SIZE

size

contents

size( )

addElement( )

elementAt( )

AStringHistory

isFull( )

Page 41: Arrays –Collections (Set, Database, History) Inheritance –inheriting ancestor’s traits –inheriting benefactor’s assets –inheriting instance members( methods/variables)

Databasepublic interface StringDatabase { //from history

public int size();public void addElement (String element);public String elementAt (int index); //additional methods

}

public void member (String element);

public void deleteElement(String element);

public void clear();

Page 42: Arrays –Collections (Set, Database, History) Inheritance –inheriting ancestor’s traits –inheriting benefactor’s assets –inheriting instance members( methods/variables)

Physical and Logical Extensions

StringHistory

size( )

elementAt( )

addElement( )

EXTENDS

member( )

deleteElement( )String

Database

clear( )

member( )

deleteElement( )

indexOf( )

shiftUp( )

AStringDatabase

clear( )

IMPLEMENTS

IMPLEMENTS

EXTENDSSupertype

Subtype

MAX_SIZE

size

contents

size( )

addElement( )

elementAt( )

AStringHistory

isFull( )

SuperclassSubclass

Page 43: Arrays –Collections (Set, Database, History) Inheritance –inheriting ancestor’s traits –inheriting benefactor’s assets –inheriting instance members( methods/variables)

Extending an Interface

public interface StringDatabase extends StringHistory {

}

public void member (String element);

public void deleteElement(String element);

public void clear();

public interface StringHistory {

}

public void addElement (String element);public int size();

public String elementAt (int index);

extends/ inherits

fromInherited members

Page 44: Arrays –Collections (Set, Database, History) Inheritance –inheriting ancestor’s traits –inheriting benefactor’s assets –inheriting instance members( methods/variables)

Extending a Class

public class AStringDatabase extends AStringHistory implements StringDatabase { public void deleteElement (String element) { … } int indexOf (String element) { … } void shiftUp (int startIndex) { … } public boolean member(String element) { }

public void clear() { } }

Page 45: Arrays –Collections (Set, Database, History) Inheritance –inheriting ancestor’s traits –inheriting benefactor’s assets –inheriting instance members( methods/variables)

Physical and Computer Inheritance

Human

AStringDatabase

PhysicalObject

Animal

Mammal

Primate

AStringHistory String

ObjectImplicit

extension

Regular Accord

Deluxe Accord

Car

Vehicle

StringDatabase

StringHistory

Page 46: Arrays –Collections (Set, Database, History) Inheritance –inheriting ancestor’s traits –inheriting benefactor’s assets –inheriting instance members( methods/variables)

No Explicit Extension

public class AStringHistory implements StringHistory { public final int MAX_SIZE = 50; String[] contents = new String[MAX_SIZE]; int size = 0; public int size() { return size;} public String elementAt (int index) { return contents[index]; } boolean isFull() { return size == MAX_SIZE; } public void addElement(String element) { if (isFull())

System.out.println("Adding item to a full history"); else {

contents[size] = element; size++;}

} }

Page 47: Arrays –Collections (Set, Database, History) Inheritance –inheriting ancestor’s traits –inheriting benefactor’s assets –inheriting instance members( methods/variables)

Equivalent Class Definition

public class AStringHistory extends Object implements StringHistory { public final int MAX_SIZE = 50; String[] contents = new String[MAX_SIZE]; int size = 0; public int size() { return size;} public String elementAt (int index) { return contents[index]; } boolean isFull() { return size == MAX_SIZE; } public void addElement(String element) { if (isFull())

System.out.println("Adding item to a full history"); else {

contents[size] = element; size++;}

} }

Page 48: Arrays –Collections (Set, Database, History) Inheritance –inheriting ancestor’s traits –inheriting benefactor’s assets –inheriting instance members( methods/variables)

Some Methods of Class Object

MAX_SIZE

size

contents

size( )

addElement( )

elementAt( )

member( )

deleteElement( )

indexOf( )

shiftUp( )

AStringDatabase

AStringHistory

EXTENDS

clear( )

isFull( )

Object

EXTENDS

toString( )

equals( )

clone( )

(new AStringHistory()).toString()

(new AStringDatabase()).toString()

(new ALoan()).toString()

“hello”.toString()

‘h’.toString()

5.toString()

Used by println()

Page 49: Arrays –Collections (Set, Database, History) Inheritance –inheriting ancestor’s traits –inheriting benefactor’s assets –inheriting instance members( methods/variables)

IS-A Relationships

Object

StringHistory AStringHistory String

AStringDatabaseStringDatabase

implements extends

Page 50: Arrays –Collections (Set, Database, History) Inheritance –inheriting ancestor’s traits –inheriting benefactor’s assets –inheriting instance members( methods/variables)

IS-A & Polymorphism

public static Loan add(Loan loan1, Loan loan2) { return new ALoan(loan1.getPrincipal() + loan2.getPrincipal()));}

AnotherLoan Instance

ALoan Instance

Actual Parameters of different types

IS-A

Page 51: Arrays –Collections (Set, Database, History) Inheritance –inheriting ancestor’s traits –inheriting benefactor’s assets –inheriting instance members( methods/variables)

Printing a History

static void print(StringHistory strings) { System.out.println("******************"); for ( int elementNum = 0; elementNum < strings.size(); elementNum++)

System.out.println(strings.elementAt(elementNum));}

AStringHistory Instance

AStringDatabase Instance

AStringHistory IS-A StringHistory

AStringDatabase IS-A AStringHistory

AStringDatabase IS-A StringHistory

Page 52: Arrays –Collections (Set, Database, History) Inheritance –inheriting ancestor’s traits –inheriting benefactor’s assets –inheriting instance members( methods/variables)

Assignment Rules for Primitive Types

• If T1 narrower than T2 (Set of instances of T1 Set of instances of T2)

• Expression of type T1 can be assigned to Variable of type T2

• Expression of type T2 can be assigned to Variable of type T1 with cast.

Page 53: Arrays –Collections (Set, Database, History) Inheritance –inheriting ancestor’s traits –inheriting benefactor’s assets –inheriting instance members( methods/variables)

Assignment Rules for Object Types

• If T1 IS-A T2

• Expression of type T1 can be assigned to Variable of type T2

• Expression of type T2 can be assigned to Variable of type T1 with cast.

Page 54: Arrays –Collections (Set, Database, History) Inheritance –inheriting ancestor’s traits –inheriting benefactor’s assets –inheriting instance members( methods/variables)

IS-A Definition

• Implements: T1 implements T2 => T1 IS-A T2

• Extends: T1 extends T2 => T1 IS-A T2

• Transitive:– T1 IS-A T2– T2 IS-A T3 – => T1 IS-A T3

• Reflexive:– T1 == T2 => T1 IS-A T2

Page 55: Arrays –Collections (Set, Database, History) Inheritance –inheriting ancestor’s traits –inheriting benefactor’s assets –inheriting instance members( methods/variables)

Type Checking Examples

StringHistory stringHistory = new AStringDatabase();

StringDatabase stringDatabase = new AStringHistory();

Page 56: Arrays –Collections (Set, Database, History) Inheritance –inheriting ancestor’s traits –inheriting benefactor’s assets –inheriting instance members( methods/variables)

Getting an Upgrade

Regular Model Requested

ARegularModel myCar = new ADeluxeModel ();

((ADeluxeModel) myCar). setCity(“Raleigh”);

Deluxe Model Assigned

myCar.steer();

Navigation System

myCar. setCity(“Raleigh”);

Page 57: Arrays –Collections (Set, Database, History) Inheritance –inheriting ancestor’s traits –inheriting benefactor’s assets –inheriting instance members( methods/variables)

Getting a Downgrade

Deluxe Model Requested

ADeluxeModel myCar = new ARegularModel ();

Regular Model Assigned

myCar.steer();myCar. setCity(“Raleigh”);

Page 58: Arrays –Collections (Set, Database, History) Inheritance –inheriting ancestor’s traits –inheriting benefactor’s assets –inheriting instance members( methods/variables)

Type Checking Examples

StringHistory stringHistory = new AStringDatabase();

stringHistory.size()

stringDatabase.clear()

((StringDatabase) stringHistory) .clear()

StringDatabase stringDatabase = new AStringHistory();

stringHistory .clear()

Page 59: Arrays –Collections (Set, Database, History) Inheritance –inheriting ancestor’s traits –inheriting benefactor’s assets –inheriting instance members( methods/variables)

Type Checking Examples

Object[] objects = { “Joe Doe”, new AStringDatabase(), new AStringHistory()};

String[] strings = { “Joe Doe”, new Object()};

Page 60: Arrays –Collections (Set, Database, History) Inheritance –inheriting ancestor’s traits –inheriting benefactor’s assets –inheriting instance members( methods/variables)

Database

Page 61: Arrays –Collections (Set, Database, History) Inheritance –inheriting ancestor’s traits –inheriting benefactor’s assets –inheriting instance members( methods/variables)

Set

Page 62: Arrays –Collections (Set, Database, History) Inheritance –inheriting ancestor’s traits –inheriting benefactor’s assets –inheriting instance members( methods/variables)

Overriding Inherited Methods

MAX_SIZE

size

contents

size( )

addElement( )

elementAt( )

member( )

deleteElement( )

indexOf( )

shiftUp( )

AStringDatabase

AStringHistory

EXTENDS

clear( )

isFull( )

Object

EXTENDS

toString( )

equals( )

clone( )

AStringSet

addElement( )

Overriden Method

Overriding Method

Page 63: Arrays –Collections (Set, Database, History) Inheritance –inheriting ancestor’s traits –inheriting benefactor’s assets –inheriting instance members( methods/variables)

Overriding addElement()public void addElement(String element) {

if (isFull()) System.out.println("Adding item to a full history");

else { contents[size] = element; size++;}

}

public void addElement(String element) { if (member(element)) return;

if (isFull()) System.out.println("Adding item to a full history");

else { contents[size] = element; size++;}

}

Page 64: Arrays –Collections (Set, Database, History) Inheritance –inheriting ancestor’s traits –inheriting benefactor’s assets –inheriting instance members( methods/variables)

superpublic void addElement(String element) {

if (isFull()) System.out.println("Adding item to a full history");

else { contents[size] = element; size++;}

}

public void addElement(String element) { if (member(element)) return;

super.addElement(); }

inherited addElement()

Page 65: Arrays –Collections (Set, Database, History) Inheritance –inheriting ancestor’s traits –inheriting benefactor’s assets –inheriting instance members( methods/variables)

Omitting Superpublic void addElement(String element) {

if (isFull()) System.out.println("Adding item to a full history");

else { contents[size] = element; size++;}

}

public void addElement(String element) { if (member(element)) return;

addElement(); }

Recursive call

Page 66: Arrays –Collections (Set, Database, History) Inheritance –inheriting ancestor’s traits –inheriting benefactor’s assets –inheriting instance members( methods/variables)

More Overriding

MAX_SIZE

size

contents

size( )

addElement( )

elementAt( )

member( )

deleteElement( )

indexOf( )

shiftUp( )

AStringDatabase

AStringHistory

EXTENDS

clear( )

isFull( )

Object

EXTENDS

toString( )

equals( )

clone( )

AStringSet

addElement( )

Overriden Method

Overriding Method

toString( )

Page 67: Arrays –Collections (Set, Database, History) Inheritance –inheriting ancestor’s traits –inheriting benefactor’s assets –inheriting instance members( methods/variables)

More Overriding

public String toString() {String retVal = “”;for (int i = 0; i < size; i++)

retVal += “:” + contents[i];return retVal;

}

stringSet.toString() “AStringSet@1eed58”

stringSet.toString() “James Dean:John Smith”

Page 68: Arrays –Collections (Set, Database, History) Inheritance –inheriting ancestor’s traits –inheriting benefactor’s assets –inheriting instance members( methods/variables)

Motivation for Switchpublic static void main(String args[]) { StringDatabase names = new AStringDatabase(); while (true) { String input = Keyboard.readLine(); if (!(input.length() == 0))

if (input.charAt(0) == 'q') break;

else if (input.charAt(0) == 'p') print(names); else if (input.charAt(0) == 'd') names.deleteElement(input.substring(2, input.length())); else if (input.charAt(0) == 'm') System.out.println(names.member(input.substring(2, input.length()))); else if (input.charAt(0) == 'c') names.clear(); else names.addElement(input);

} }

Page 69: Arrays –Collections (Set, Database, History) Inheritance –inheriting ancestor’s traits –inheriting benefactor’s assets –inheriting instance members( methods/variables)

Main with Switchpublic static void main(String args[]) { StringDatabase names = new AStringDatabase(); while (true) { String input = Keyboard.readLine(); if (!(input.length() == 0)) if (input.charAt(0) == 'q')

break; else switch (input.charAt(0)) {

case 'p': print(names); break; case 'd': names.deleteElement(input.substring(2, input.length())); break; case 'm': System.out.println(names.member(input.substring(2, input.length()))); break; case 'c': names.clear(); break; default: names.addElement(input);

} }

Breaks out of the loop

Breaks out of the switch

Switch expression

Switch arm

Switch case (value of switch

expressiuon)

Page 70: Arrays –Collections (Set, Database, History) Inheritance –inheriting ancestor’s traits –inheriting benefactor’s assets –inheriting instance members( methods/variables)

Multi-case armspublic static void main(String args[]) { StringDatabase names = new AStringDatabase(); while (true) { String input = Keyboard.readLine(); if (!(input.length() == 0)) if (input.charAt(0) == 'q')

break; else switch (input.charAt(0)) {

case 'p’, ‘P’: print(names); break; case 'd’, ‘D’: names.deleteElement(input.substring(2, input.length())); break; case 'm’, ‘M’: System.out.println(names.member(input.substring(2, input.length()))); break; case 'c’, ‘C’: names.clear(); break; default: names.addElement(input);

} }

Page 71: Arrays –Collections (Set, Database, History) Inheritance –inheriting ancestor’s traits –inheriting benefactor’s assets –inheriting instance members( methods/variables)

Omitting breakpublic static void main(String args[]) { StringDatabase names = new AStringDatabase(); while (true) { String input = Keyboard.readLine(); if (!(input.length() == 0)) if (input.charAt(0) == 'q')

break; else switch (input.charAt(0)) {

case 'p’, ‘P’: print(names); case 'd’, ‘D’: names.deleteElement(input.substring(2, input.length())); case 'm’, ‘M’: System.out.println(names.member(input.substring(2, input.length())));case 'c’, ‘C’: names.clear();default: names.addElement(input);

} }

Page 72: Arrays –Collections (Set, Database, History) Inheritance –inheriting ancestor’s traits –inheriting benefactor’s assets –inheriting instance members( methods/variables)

Illegal Switch

switch (input ){case “print”: print(names); case “clear”: names.clear(); default: names.addElement(input);

}

Type of switch expression must be ordinal type

Page 73: Arrays –Collections (Set, Database, History) Inheritance –inheriting ancestor’s traits –inheriting benefactor’s assets –inheriting instance members( methods/variables)

Ordinal Type

• Values of type are ordered.

• Each value has a unique successor and predecessor

intchar String double