a. Fork and clone the specified repository.
b. Import that repository into Eclipse.
a. Scan through MathUtils.java
and verify that the square root
method has the form described in the
reading.
b. Run the main
method of MathExpt
to see that it behaves as
expected.
c. Extend the main
method of MathExpt
so that it computes the
square root of
Integer
,Float
,Double
,BigInteger
,BigDecimal
, anddouble
.As a first step in understanding the layout methods, extend the
main
method of TBExpt.java
so that it uses TBUtils.print
to
print a simple block. I would suggest something like the following.
TextBlock block = new TextLine("This is a test.");
TBUtils.print(pen,block);
The reading, claims that it is
possible to combine text blocks together by using one as a parameter
to the constructor of another. (In fact, that seems to be the only
way to create a BoxedBlock
. Try creating and printing out each
of the following:
The classes HCompose
and VCompose
permit you
to compose pairs of text blocks horizontally and vertically. For
example, new HCompose(tb1,tb2)
makes a text block by
putting tb1
and tb2
side-by-side, and
new VCompose(tb1,tb2)
makes a text block by putting
tb1
above tb2
.
a. Using VCompose
, TextLine
, and
BoxedBlock
, build the following text block:
+-------+
|Hello |
|Goodbye|
+-------+
b. Using VCompose
, TextLine
, and
BoxedBlock
, build the following text block:
+-----+
|Hello|
+-----+
+-------+
|Goodbye|
+-------+
c. Using HCompose
, TextLine
, and
BoxedBlock
, build the following block:
+-----+Goodbye
|Hello|
+-----+
d. Using HCompose
, TextLine
, and
BoxedBlock
, build the following block:
Goodbye+-----+
|Hello|
+-----+
Assume that HCompose
has two fields,
TextBlock left;
TextBlock right;
a. Sketch how you might write
String row(int rownum)
,int width()
, andint height()
.You can look at the source code of BoxedBlock
for ideas,
but please do not look at the source code of HCompose
.
b. Compare your answer to the source code of HCompose
.
Assume that VCompose
has two fields,
TextBlock top;
TextBlock bottom;
a. Sketch how you might write
String row(int rownum)
,int width()
, andYou can look at the source code of BoxedBlock
and
HCompose
for ideas, but please do not look at the source
code of VCompose
.
b. Compare your answer to the source code of VCompose
.
Pick one of the following composition mechanisms and implement it as a class.
a. Truncated
, which, given a text block and a maximum width,
builds a new block that truncates the input block to that width.
b. Centered
, which, given a text block and a width, builds
a new block that centers the block within that width.
c. RightJustified
, which, given a text block and a width, builds a
new block that right-justifies the input block within that width.
Implement the other two composition classes from the last exercise.
Use the various implementations of TextBlock
to make an
“interesting” textual composition.