K.Maebashi's BBS 投稿フォーム
ハンドル名
件名
Link
>おくればせながら、正誤表の追加とソースの訂正、ありがとうございました。おそれいりますが、またいくつかきづいてしまいましたので、ふたたびご面倒をおかけします。今回も当方の勘違いがありましたらお許しください。 (才能に乏しいようでなかなか理解がすすみませんが、趣味としてこつこつやっております。) > >まずは、またもや細かいことですみませんが……。 p. 147 の英文で [emphasis is in the original text] とあるのが反映されていません。和訳の方はされています。また、和訳の方で「どのオブジェクトも参照しない特殊なnull参照」に相当する英文がないです。 > >X-Draw のソースで DrawWindow.java の l. 110 - > public void mouseDown(int x, int y) {} > public void mouseUp(int x, int y) {} > public void mouseDrag(int x, int y) {} >は不要と思われます。 > >あと、 l. 164 - > public void resize(int width, int height) { > this.adjustBoundary(); > } >ですが、今後の拡張を見込んでこのようにされたのでしょうか。 > >3.6.7 「本当にdraw()をShapeに入れてよいのか?」が、コードを実地にかいてみることでようやくわかってきました。それできづいたのですが、 p.227 の interface Visitor の三つのシグネチャーの頭に void がいるかと。また、 p.228 の > v.visitPolyline(polyline); >は実際には > v.visitPolyline(this); >になるかと。 > >ちなみに、つぎのようにかきましたが、これで適当でしょうか。(Polyline たちから draw() を排除するかわりに getter をいれなければならなくなったのがどうも……。) > >class Polyline extends Shape { > private Point2D[] points; > > Polyline(Point2D[] points) { > this.points = points; > } > > public Point2D[] getPoints() { > return this.points; > } > > void accept(Visitor v) { > v.visitPolyline(this); > } >} >// Circle, Rectangle は略 > >class DrawVisitor implements Visitor { > Drawable drawable; > > DrawVisitor(Drawable drawable) { > this.drawable = drawable; > } > > public void visitPolyline(Polyline polyline) { > Point2D[] points = polyline.getPoints(); > for (int i = 0; i < points.length - 1; i++) { > drawable.drawLine(points[i].getX(), points[i].getY(), points[i + 1].getX(), points[i + 1].getY()); > } > } > // visitCircle(), visitRectangle() は略 >} > >XDrawCanvas の paint() の > shape.draw(this.drawWindow); >を > shape.accept(new DrawVisitor(this.drawWindow)); >に変更。 > >その他、まだ消化しきれていないこともありますので、今後もご面倒をおかけしてしまうかもしれませんが、どうぞよろしくお願いします。
spamよけのため、ここに「ほげぴよ」と入力してください。
削除パスワード :
クリック!