- Published on
CS 3500 Day 12
- Authors
- Name
- Jacob Aronoff
Object Oriented Design
Today we're going back to turtles:
Rather than having just calling methods in the controller:
public class SimpleController {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
TracingTurtleModel m = new SmarterTurtle();
while (s.hasNext()) {
String in = s.next();
switch(in) {
case "q":
case "quit":
return;
case "show":
for (Line l : m.getLines()) {
System.out.println(l);
}
break;
case "move":
try {
double d = s.nextDouble();
m.move(d);
} catch (InputMismatchException ime) {
System.out.println("Bad length to move");
}
break;
case "trace":
try {
double d = s.nextDouble();
m.trace(d);
} catch (InputMismatchException ime) {
System.out.println("Bad length to trace");
}
break;
case "turn":
try {
double d = s.nextDouble();
m.turn(d);
} catch (InputMismatchException ime) {
System.out.println("Bad length to turn");
}
break;
case "square":
try {
double d = s.nextDouble();
m.trace(d);
m.turn(90);
m.trace(d);
m.turn(90);
m.trace(d);
m.turn(90);
m.trace(d);
m.turn(90);
} catch (InputMismatchException ime) {
System.out.println("Bad length to turn");
}
break;
default:
System.out.println(String.format("Unknown command %s", in));
break;
}
}
}
}
We can make a class for each command, so that it's easier to call them:
public class CommandController {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
TracingTurtleModel m = new SmarterTurtle();
TracingTurtleCommand cmd = null;
while (s.hasNext()) {
String in = s.next();
try {
switch (in) {
case "q":
case "quit":
return;
case "show":
for (Line l : m.getLines()) {
System.out.println(l);
}
break;
case "move":
cmd = new Move(s.nextDouble());
break;
case "trace":
cmd = new Trace(s.nextDouble());
break;
case "turn":
cmd = new Turn(s.nextDouble());
break;
case "square":
cmd = new Square(s.nextDouble());
break;
default:
System.out.println(String.format("Unknown command %s", in));
cmd = null;
break;
}
if (cmd != null) cmd.go(m);
} catch (InputMismatchException ime) {
System.out.println("Bad length to " + in);
}
}
}
}
Now we're talking about inheritance, and scope.
This was a pretty straightforward class talking about the use of many different java keywords like abstract, protected, etc.