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 2010
Download, Install/Setup 1. Java SE SDK (http://java.sun.com/javase/downloads) 2. Java SE SDK - Documentation 3. 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 2 Spring 2010
Looking back: Java Packages Page 3 Spring 2010
Java Packages Page 4 Spring 2010
Package dependencies (class level) Page 5 Spring 2010
Package dependencies (package level) Page 6 Spring 2010
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 7 Spring 2010
UML package diagram Page 8 Spring 2010
Package stringcollection Page 9 Spring 2010
Package stringcollection (StringList) Page 10 Spring 2010
Interface IStringList (realization line) Page 11 Spring 2010
IStringList Page 12 Spring 2010
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 13 Spring 2010
Documentation for IStringList (1/8) Page 14 Spring 2010
Documentation for IStringList (2/8) Page 15 Spring 2010
Documentation for IStringList (3/8) Page 16 Spring 2010
Documentation for IStringList (4/8) Page 17 Spring 2010
Documentation for IStringList (5/8) Page 18 Spring 2010
Documentation for IStringList (6/8) Page 19 Spring 2010
Documentation for IStringList (7/8) Page 20 Spring 2010
Documentation for IStringList (8/8) Page 21 Spring 2010
UML package diagram (StringListArrayBased) Page 22 Spring 2010
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 23 Spring 2010
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 24 Spring 2010
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 25 Spring 2010
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/sdji2b/javadoc/istringlist.html Page 26 Spring 2010
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 27 Spring 2010
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 28 Spring 2010
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 29 Spring 2010
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 30 Spring 2010
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} Page 31 Spring 2010