31
Page 1 – Spring 2010 Steffen Vissing Andersen Software Development with UML and Java 2 SDJ I2, Spring 2010 Agenda – week 7, 2010 Pakages Looking back Looking forward Packages Interfaces

Page 1 – Spring 2010Steffen Vissing Andersen Software Development with UML and Java 2 SDJ I2, Spring 2010 Agenda – week 7, 2010 • Pakages • Looking back

Embed Size (px)

Citation preview

Page 1: Page 1 – Spring 2010Steffen Vissing Andersen Software Development with UML and Java 2 SDJ I2, Spring 2010 Agenda – week 7, 2010 • Pakages • Looking back

Page 1 – Spring 2010 Steffen Vissing Andersen

Software Development with UML and Java 2SDJ I2, Spring 2010

Agenda – week 7, 2010

• Pakages• Looking back• Looking forward

• Packages• Interfaces

Page 2: Page 1 – Spring 2010Steffen Vissing Andersen Software Development with UML and Java 2 SDJ I2, Spring 2010 Agenda – week 7, 2010 • Pakages • Looking back

Page 2 – Spring 2010 Steffen Vissing Andersen

Download, Install/Setup

1. Java SE SDK (http://java.sun.com/javase/downloads)

2. Java SE SDK - Documentation3. Setup Environment Variables (e.g. in Windows)4. Eclipse IDE (http://www.eclipse.org)5. JUDE UML (http://jude.change-vision.com/)• All the above is on the USB stick • Video – How To Install:

(http://it-engineering.dk/Course/A09/SDJI1A/Tools/_Video)

Page 3: Page 1 – Spring 2010Steffen Vissing Andersen Software Development with UML and Java 2 SDJ I2, Spring 2010 Agenda – week 7, 2010 • Pakages • Looking back

Page 3 – Spring 2010 Steffen Vissing Andersen

Looking back: Java Packages

Page 4: Page 1 – Spring 2010Steffen Vissing Andersen Software Development with UML and Java 2 SDJ I2, Spring 2010 Agenda – week 7, 2010 • Pakages • Looking back

Page 4 – Spring 2010 Steffen Vissing Andersen

Java Packages

Page 5: Page 1 – Spring 2010Steffen Vissing Andersen Software Development with UML and Java 2 SDJ I2, Spring 2010 Agenda – week 7, 2010 • Pakages • Looking back

Page 5 – Spring 2010 Steffen Vissing Andersen

Package dependencies (class level)

Page 6: Page 1 – Spring 2010Steffen Vissing Andersen Software Development with UML and Java 2 SDJ I2, Spring 2010 Agenda – week 7, 2010 • Pakages • Looking back

Page 6 – Spring 2010 Steffen Vissing Andersen

Package dependencies (package level)

Page 7: Page 1 – Spring 2010Steffen Vissing Andersen Software Development with UML and Java 2 SDJ I2, Spring 2010 Agenda – week 7, 2010 • Pakages • Looking back

Page 7 – Spring 2010 Steffen Vissing Andersen

Looking forward: What to implement in this course

• We will create a lot of collection classes during this course• List containing Strings

• array based• dynamic linked based

• List with generic type• array based• dynamic linked based

• Stack• …

• Queue• …

• Set• …

• SortedSet• …

Page 8: Page 1 – Spring 2010Steffen Vissing Andersen Software Development with UML and Java 2 SDJ I2, Spring 2010 Agenda – week 7, 2010 • Pakages • Looking back

Page 8 – Spring 2010 Steffen Vissing Andersen

UML package diagram

Page 9: Page 1 – Spring 2010Steffen Vissing Andersen Software Development with UML and Java 2 SDJ I2, Spring 2010 Agenda – week 7, 2010 • Pakages • Looking back

Page 9 – Spring 2010 Steffen Vissing Andersen

Package stringcollection

Page 10: Page 1 – Spring 2010Steffen Vissing Andersen Software Development with UML and Java 2 SDJ I2, Spring 2010 Agenda – week 7, 2010 • Pakages • Looking back

Page 10 – Spring 2010 Steffen Vissing Andersen

Package stringcollection (StringList)

Page 11: Page 1 – Spring 2010Steffen Vissing Andersen Software Development with UML and Java 2 SDJ I2, Spring 2010 Agenda – week 7, 2010 • Pakages • Looking back

Page 11 – Spring 2010 Steffen Vissing Andersen

Interface IStringList (realization line)

Page 12: Page 1 – Spring 2010Steffen Vissing Andersen Software Development with UML and Java 2 SDJ I2, Spring 2010 Agenda – week 7, 2010 • Pakages • Looking back

Page 12 – Spring 2010 Steffen Vissing Andersen

IStringList

Page 13: Page 1 – Spring 2010Steffen Vissing Andersen Software Development with UML and Java 2 SDJ I2, Spring 2010 Agenda – week 7, 2010 • Pakages • Looking back

Page 13 – Spring 2010 Steffen Vissing Andersen

Interface for a List of Strings

package collection.stringcollection;

public interface IStringList{ public void add(int index, String element); public void add(String element); public void clear(); public boolean contains(String element); public String get(int index); public int indexOf(String element); public boolean isEmpty(); public void remove(int index); public void remove(String element); public void set(int index, String element); public int size();}

Page 14: Page 1 – Spring 2010Steffen Vissing Andersen Software Development with UML and Java 2 SDJ I2, Spring 2010 Agenda – week 7, 2010 • Pakages • Looking back

Page 14 – Spring 2010 Steffen Vissing Andersen

Documentation for IStringList (1/8)

Page 15: Page 1 – Spring 2010Steffen Vissing Andersen Software Development with UML and Java 2 SDJ I2, Spring 2010 Agenda – week 7, 2010 • Pakages • Looking back

Page 15 – Spring 2010 Steffen Vissing Andersen

Documentation for IStringList (2/8)

Page 16: Page 1 – Spring 2010Steffen Vissing Andersen Software Development with UML and Java 2 SDJ I2, Spring 2010 Agenda – week 7, 2010 • Pakages • Looking back

Page 16 – Spring 2010 Steffen Vissing Andersen

Documentation for IStringList (3/8)

Page 17: Page 1 – Spring 2010Steffen Vissing Andersen Software Development with UML and Java 2 SDJ I2, Spring 2010 Agenda – week 7, 2010 • Pakages • Looking back

Page 17 – Spring 2010 Steffen Vissing Andersen

Documentation for IStringList (4/8)

Page 18: Page 1 – Spring 2010Steffen Vissing Andersen Software Development with UML and Java 2 SDJ I2, Spring 2010 Agenda – week 7, 2010 • Pakages • Looking back

Page 18 – Spring 2010 Steffen Vissing Andersen

Documentation for IStringList (5/8)

Page 19: Page 1 – Spring 2010Steffen Vissing Andersen Software Development with UML and Java 2 SDJ I2, Spring 2010 Agenda – week 7, 2010 • Pakages • Looking back

Page 19 – Spring 2010 Steffen Vissing Andersen

Documentation for IStringList (6/8)

Page 20: Page 1 – Spring 2010Steffen Vissing Andersen Software Development with UML and Java 2 SDJ I2, Spring 2010 Agenda – week 7, 2010 • Pakages • Looking back

Page 20 – Spring 2010 Steffen Vissing Andersen

Documentation for IStringList (7/8)

Page 21: Page 1 – Spring 2010Steffen Vissing Andersen Software Development with UML and Java 2 SDJ I2, Spring 2010 Agenda – week 7, 2010 • Pakages • Looking back

Page 21 – Spring 2010 Steffen Vissing Andersen

Documentation for IStringList (8/8)

Page 22: Page 1 – Spring 2010Steffen Vissing Andersen Software Development with UML and Java 2 SDJ I2, Spring 2010 Agenda – week 7, 2010 • Pakages • Looking back

Page 22 – Spring 2010 Steffen Vissing Andersen

UML package diagram (StringListArrayBased)

Page 23: Page 1 – Spring 2010Steffen Vissing Andersen Software Development with UML and Java 2 SDJ I2, Spring 2010 Agenda – week 7, 2010 • Pakages • Looking back

Page 23 – Spring 2010 Steffen Vissing Andersen

StringListArrayBased

Example 1: Calling method add(String element) on a StringListArrayBased-object with the parameter element="G" will

Add the element "G" to collection[6] Increment size by one

Example 2: Alternatively, calling add(int index, String element) with the parameters index=3 and element="G" will

Move "F" to index 6, "E" to index 5 and "D" to index 4 Add the element "G" to index 3 (i.e. collection[3]) Increment size by one

Page 24: Page 1 – Spring 2010Steffen Vissing Andersen Software Development with UML and Java 2 SDJ I2, Spring 2010 Agenda – week 7, 2010 • Pakages • Looking back

Page 24 – Spring 2010 Steffen Vissing Andersen

class StringListArrayBased

package collection.stringcollection;

public class StringListArrayBased implements IStringList{ private String[] collection; private int size; private static final int DEFAULT_CAPACITY = 20;

public StringListArrayBased(int capacity) { //TODO – implement the constructor } public StringListArrayBased() { //TODO – implement the constructor }

... // TODO - implement all methods (including method toString())}

Page 25: Page 1 – Spring 2010Steffen Vissing Andersen Software Development with UML and Java 2 SDJ I2, Spring 2010 Agenda – week 7, 2010 • Pakages • Looking back

Page 25 – Spring 2010 Steffen Vissing Andersen

A little help…

...

public void add(int index, String element){ if (index > size || index < 0)

throw new IndexOutOfBoundsException("index=" + index +

" size=" + size); if (size >= collection.length)

throw new IllegalStateException();

shiftUp(index); // Make room for the element (has to be implemented) collection[index] = element; size++;}

...

Page 26: Page 1 – Spring 2010Steffen Vissing Andersen Software Development with UML and Java 2 SDJ I2, Spring 2010 Agenda – week 7, 2010 • Pakages • Looking back

Page 26 – Spring 2010 Steffen Vissing Andersen

Exercises

• Implement the interface IStringList – using an array to store the elements (call the class: StringListArrayBased in package collection.stringcollection)

• Find documentation in the SDJI2 javadoc IStringList, or here:

• http://it-engineering.dk/Course/S10/SDJI2A/javadoc/IStringList.html

Page 27: Page 1 – Spring 2010Steffen Vissing Andersen Software Development with UML and Java 2 SDJ I2, Spring 2010 Agenda – week 7, 2010 • Pakages • Looking back

Page 27 – Spring 2010 Steffen Vissing Andersen

StringListTest (1/4)

import collection.stringcollection.IStringList;public class StringListTest{ public static void main(String[] args) { IStringList list = new StringListArrayBased(); list.add("Bob"); list.add("Dee"); printList("BD: ", list); list.add(1,"Carl"); // add in the middle printList("BCD: ", list); list.add(0,"Allan"); // add first printList("ABCD: ", list); list.add(4,"Eric"); // add last printList("ABCDE: ", list);

Page 28: Page 1 – Spring 2010Steffen Vissing Andersen Software Development with UML and Java 2 SDJ I2, Spring 2010 Agenda – week 7, 2010 • Pakages • Looking back

Page 28 – Spring 2010 Steffen Vissing Andersen

StringListTest (2/4)

printListBackwards("EDCBA: ", list); list.remove(0); // remove first printList("BCDE: ", list); list.remove(list.size()-1); // remove last printList("BCD: ", list); list.remove("Carl"); // remove middle printList("BD: ", list); printListBackwards("DB: ", list); }

Page 29: Page 1 – Spring 2010Steffen Vissing Andersen Software Development with UML and Java 2 SDJ I2, Spring 2010 Agenda – week 7, 2010 • Pakages • Looking back

Page 29 – Spring 2010 Steffen Vissing Andersen

StringListTest (3/4)

private static void printList(String prompt, IStringList list) { System.out.print(prompt + "{"); for (int i=0; i<list.size(); i++) { System.out.print(list.get(i)); if (i < list.size() - 1) System.out.print(", "); } System.out.println("}");}

Page 30: Page 1 – Spring 2010Steffen Vissing Andersen Software Development with UML and Java 2 SDJ I2, Spring 2010 Agenda – week 7, 2010 • Pakages • Looking back

Page 30 – Spring 2010 Steffen Vissing Andersen

StringListTest (4/4)

private static void printListBackwards(String prompt, IStringList list) { System.out.print(prompt + "{"); for (int i=list.size()-1; i>=0; i--) { System.out.print(list.get(i)); if (i > 0) System.out.print(", "); } System.out.println("}"); }}

Page 31: Page 1 – Spring 2010Steffen Vissing Andersen Software Development with UML and Java 2 SDJ I2, Spring 2010 Agenda – week 7, 2010 • Pakages • Looking back

Page 31 – Spring 2010 Steffen Vissing Andersen

StringListTest (output)

BD: {Bob, Dee}BCD: {Bob, Carl, Dee}ABCD: {Allan, Bob, Carl, Dee}ABCDE: {Allan, Bob, Carl, Dee, Eric}EDCBA: {Eric, Dee, Carl, Bob, Allan}BCDE: {Bob, Carl, Dee, Eric}BCD: {Bob, Carl, Dee}BD: {Bob, Dee}DB: {Dee, Bob}