graphics –graphical spreadsheets –java pixels and coordinate system –objecteditor shapes java...
Post on 14-Dec-2015
230 Views
Preview:
TRANSCRIPT
Graphics
• Graphics– Graphical Spreadsheets– Java Pixels and Coordinate System– ObjectEditor Shapes
• Java Vectors– Variable-Sized Instances
• Java Enumeration
A Square With Text
import shapes.RectangleModel;import shapes.TextModel;public interface SquareWithText {
public RectangleModel getSquare(); public void setSquare(RectangleModel newVal); public TextModel getText ();
}
A Square With Textimport shapes.RectangleModelimport shapes.TextModelpublic class ASquareWithText implements SquareWithText { RectangleModel square; TextModel text; … // constant declarations public ASquareWithText() {
square = new RectangleModel (INIT_X, INIT_Y, INIT_SIDE_LENGTH, INIT_SIDE_LENGTH);
text = new TextModel(TEXT_STRING);placeText();
}void placeText() {text.setCenter(square.getCenter());}public RectangleModel getSquare () {return square;}public void setSquare (RectangleModel newVal) {
square = newVal;placeText();
}
public TextModel getText () {return text};}}
w2
h2
x2, y2
x3, y3
w3
h3
ObjectEditor Classes
x1, y1
w1
h1
Bounding Rectangle
hello
x4, y4
w4
h4x5, y5
RectangleModel r = new RectangleModel(x1, y1, h1,w1)OvalModel r = new OvalModel(x3, y3, h3,w3)
LineModel r = new LineModel(x2, y2, h2,w2)TextModel r = new TextModel(x4, y4, h4,w4)
PointModel r = new PointModel(x5,y5))
AWT Classes
x1, y1
w1
h1x5, y5
Rectangle r = new Rectangle(x1, y1, h1,w1)
Point r = new Point(x5, y5))
r.x x1r.x = x4p.x x1
Dimension d = r.getSize()
w1d.widthPoint p = r.getLocation()
Methods on ObjectEditor Classes getX(), setX(), getY(), setY(), getWidth(), setWidth(), getHeight(), setHeight. getCenter(), setCenter(), getNWCorner(), setNWCorner(), getNECorner(), setNECorner(), getSWCorner(), setSWCorner(), getSECorner(), setSECorner(),. isFilled(), setFilled() getColor(), setColor()
Plotting Points
Variable-Size Collection
History
Elements accessed by ObjectEditorConventions for exporting elements
Conventions for Variable-Sized Collection
import shapes.PointModel;public interface PointHistory {
public void addElement (int x, int y);public PointModel elementAt (int
index); public int size();
}
Arbitrary Type.
Read methods
Write method
Read Vs Write Methods
• Read Methods– Used to get components of object– Getter methods– size(), addElement()
• Write Methods– Used to change components of object– Setter methods– addElement(), deleteElement(), replaceElement()
• Distinction independent of Conventions
nullVector Instance
Vectors (java.util.Vector)Vector v;
James Dean
Joe Doe
ALoan Instance
v = new Vector();v.addElement(“James Dean”)v.addElement(“Joe Doe”)
v.addElement(new ALoan())
Vector Instance
v.addElement(new Vector())
v.addElement(5)
Object
Methods of Class Vector public final int size() public final Object elementAt(int index) public final void addElement(Object obj) public final void setElementAt(Object obj, int index) public final void insertElementAt(Object obj, int index) public final boolean removeElement(Object obj) public final void removeElementAt(int index) public final int indexOf(Object obj) public final Enumeration elements()
Methods of Interface Enumeration (java.util.Enumeration)
public boolean hasMoreElements(); public Object nextElement();
Enumeration elements = vector.elements();while ( elements.hasMoreElements()) System.out.println(elements.nextElement();
Methods of Interface Enumeration (java.util.Enumeration)
public boolean hasMoreElements(); public Object nextElement();
for (Enumeration elements = vector.elements(); elements.hasMoreElements();) System.out.println(elements.nextElement();
Point history user
null
Using Vector Directly as Point History
Vector v = new Vector();
v.addElement(new APointModel(0,0);
PointModelInstancePointModelInstance
v.removeElementAt(0);
Vector Instance
addElement(): Object void
elementAt(): index Object
removeElementAt(): Object void
v.addElement(new APointModel(10,90);v.addElement(new Vector());
Violating Least Privilege
size(): intVector Instance
Point history user
APointHistory instance
elementAt(): index PointModel
addElement(): int*int void
size(): int
null
Encapsulating Vector in APointHistory
Vector v = new Vector();
PointModelInstance
PointHistory pointHistory = new APointHistory();
pointHistory.addElement(0,0);pointHistory.addElement(new Vector())
addElement(): Object void
elementAt(): index Object
removeElementAt(): Object void
size(): intVector Instance
APointHistory Implementation
import java.util.Vector;public class APointHistory implements PointHistory {
Vector contents = new Vector();public void addElement (int x, int y) {
contents.addElement(new PointModel(x, y));}public PointModel elementAt (int index) {
return (PointModel) contents.elementAt(index);}public int size() {
return contents.size();}
}
Creating Animating Point
static final int ANIMATING_POINT_X = 0, ANIMATING_POINT_Y = 0;PointModel animatingPoint = new PointModel
(ANIMATING_POINT_X, ANIMATING_POINT_Y);public PointModel getAnimatingPoint() {
return animatingPoint;}
Animating the Point
public void animate () { Enumeration points = contents.elements(); while (points.hasMoreElements()) {
animatingPoint.setCenter( ((PointModel) points.nextElement()).getCenter()); } animatingPoint.setX(ANIMATING_POINT_X); animatingPoint.setY(ANIMATING_POINT_Y);}
Animating the Pointpublic synchronized void animate () { Enumeration points = contents.elements(); while (points.hasMoreElements()) {
animatingPoint.setCenter( ((PointModel) points.nextElement()).getCenter());
try {Thread.sleep(ANIMATION_DELAY);
} catch (InterruptedException e) {System.out.println("Animation interrupted");
} } animatingPoint.setX(ANIMATING_POINT_X); animatingPoint.setY(ANIMATING_POINT_Y);}
top related