In an object-oriented drawing application, you can draw circles, rectangles, lines, Bezier curves, and many other graphic objects. These objects all have certain states (for example: position, orientation, line color, fill color) and behaviors (for example: moveTo, rotate, resize, draw) in common. Some of these states and behaviors are the same for all graphic objects—for example: position, fill color, and moveTo. Others require different implementations—for example, resize or draw. All

First, you declare an abstract class,
Each non-abstract subclass of
GraphicObject
s must know how to draw or resize themselves; they just differ in how they do it. This is a perfect situation for an abstract superclass. You can take advantage of the similarities and declare all the graphic objects to inherit from the same abstract parent object—for example, GraphicObject
, as shown in the following figure.
Classes Rectangle, Line, Bezier, and Circle inherit from GraphicObject
GraphicObject
, to provide member variables and methods that are wholly shared by all subclasses, such as the current position and the moveTo
method. GraphicObject
also declares abstract methods for methods, such as draw
or resize
, that need to be implemented by all subclasses but must be implemented in different ways. The GraphicObject
class can look something like this:abstract class GraphicObject {
int x, y;
...
void moveTo(int newX, int newY) {
...
}
abstract void draw();
abstract void resize();
}
GraphicObject
, such as Circle
and Rectangle
, must provide implementations for the draw
and resize
methods:class Circle extends GraphicObject {
void draw() {
...
}
void resize() {
...
}
}
class Rectangle extends GraphicObject {
void draw() {
...
}
void resize() {
...
}
}
No comments:
Post a Comment