Java Reference
In-Depth Information
Subclass rhombus
A rhombus is a parallelogram whose sides are all the same length. Note the
phrase “is a” in the previous sentence. A rhombus
is a
parallelogram. Therefore,
we make
Rhombus
a subclass of class
Parallelogram
. Its design appears in Fig.
4.12
Activity
4-4.3
The constructor for class
Rhombus
has as its parameters the four properties
that define a rhombus. We decide that we do not need to override inherited pro-
cedure
drawShape
. After all, a rhombus is a parallelogram, and the inherited pro-
cedure should work. However, we do override function
toString
because we
want
toString
to tell us what kind of shape the instance describes. For example,
toString
could produce output like this:
"rhombus, pt (5, 20), side length 60, leaning factor 7 "
Class
Rhombus
is included just to make it a bit easier for clients. Instead of
creating a
Parallelogram
with the two side lengths equal, they can create a
Rhombus
with only one side length.
Class Square
Finally, we design a class
Square
. A square is a rhombus in which each
angle is
90
degrees, i.e. has leaning factor
0.
Since a square is a rhombus, we
make
Square
a subclass of
Rhombus
.
The constructor of
Square
is quite straightforward, as is method
toString
.
At this point, a bit of thinking about implementation creeps in. It is easy to
draw a square using
Graphics
procedure
drawRect
. Therefore, we override
inherited procedure
drawShape
so that we can have a simple implementation. Is
this a good idea? In this small design of shape-drawing classes, it does not real-
ly matter whether we override
drawShape
or not. We do it just to show the kind
of thinking that might go on in a design.
Activity
4-1.3
import
java.awt.*;
/**
A rhombus that can be drawn.
*/
public class
Rhombus
extends
Parallelogram {
/**
Constructor: a rhombus with side length
l
, bounding box with top-left corner
(x, y),
and leaning factor
d
.
*/
public
Rhombus(
int
x,
int
y,
int
l,
int
d) { }
// =
description of this parallelogram
public
String toString()
{
return
""; }
}
Figure 4.12:
The design of class
Rhombus
Search WWH ::
Custom Search