Computer Science 15-100 (Sections T & U), Fall 2007
Class Notes: Object-Oriented Design (1 of 2)
Logistics
class MyDemo {
public static void main(String[] args) {
MyPoint[] a = { new MyPoint(6,2), new MyPoint(1,4), new MyPoint(1,1),
new MyPoint(3,2), new MyPoint(0,1), new MyPoint(4,8) };
System.out.println(java.util.Arrays.toString(a));
java.util.Arrays.sort(a); // requires Comparable!
System.out.println(java.util.Arrays.toString(a));
}
}
class MyPoint implements Comparable {
public MyPoint(int x, int y) { this.x = x; this.y = y; }
private int x,y;
public String toString() { return "P(" + this.x + "," + this.y + ")"; }
public int compareTo(Object thatObj) {
// sorts by "Manhattan Distance" from the origin
MyPoint that = (MyPoint)thatObj;
return ((this.x + this.y) - (that.x + that.y));
}
}
class MyDemo {
public static void main(String[] args) {
MyPoint[] a = { new MyPoint(6,2), new MyPoint(1,4), new MyPoint(1,1),
new MyPoint(3,2), new MyPoint(0,1), new MyPoint(4,8) };
System.out.println(java.util.Arrays.toString(a));
java.util.Arrays.sort(a); // requires Comparable!
System.out.println(java.util.Arrays.toString(a));
}
}
class MyPoint implements Comparable<MyPoint> { public MyPoint(int x, int y) { this.x = x; this.y = y; } private int x,y; public String toString() { return "P(" + this.x + "," + this.y + ")"; } public int compareTo(MyPoint that) { // sorts by "Manhattan Distance" from the origin return ((this.x + this.y) - (that.x + that.y)); } }
import java.util.Iterator;
class MyDemo {
public static void main(String[] args) {
MyStrings a = new MyStrings(3);
a.set(0,"c");
a.set(1,"a");
a.set(2,"b");
System.out.println(a); // prints [c, a, b]
for (Object obj : a) {
String s = (String)obj;
System.out.println(s); // prints c, a, b, one-per-line
}
}
}
class MyStrings implements Iterable {
public MyStrings(int size) { this.strings = new String[size]; }
private String[] strings;
public void set(int i, String val) { strings[i] = val; }
public String get(int i) { return strings[i]; }
public int getLength() { return strings.length; }
public String toString() { return java.util.Arrays.toString(strings); }
public Iterator iterator() { return new MyStringsIterator(this); }
}
class MyStringsIterator implements Iterator {
public MyStringsIterator(MyStrings ms) { this.ms = ms; }
private MyStrings ms;
private int nextI = 0;
public boolean hasNext() { return this.nextI < ms.getLength(); }
public Object next() { return ms.get(nextI++); }
public void remove() { // optional!
}
}
import java.util.Iterator;
class MyDemo {
public static void main(String[] args) {
MyStrings a = new MyStrings(3);
a.set(0,"c");
a.set(1,"a");
a.set(2,"b");
System.out.println(a); // prints [c, a, b]
for (String s : a)
System.out.println(s); // prints c, a, b, one-per-line
}
}
class MyStrings implements Iterable<String> {
public MyStrings(int size) { this.strings = new String[size]; }
private String[] strings;
public void set(int i, String val) { strings[i] = val; }
public String get(int i) { return strings[i]; }
public int getLength() { return strings.length; }
public String toString() { return java.util.Arrays.toString(strings); }
public Iterator<String> iterator() { return new MyStringsIterator(this); }
}
class MyStringsIterator implements Iterator<String> {
public MyStringsIterator(MyStrings ms) { this.ms = ms; }
private MyStrings ms;
private int nextI = 0;
public boolean hasNext() { return this.nextI < ms.getLength(); }
public String next() { return ms.get(nextI++); }
public void remove() { // optional!
}
}
Time permitting: ArrayLists and Wrapper Classes
Carpe diem!