今日の役に立たない一言 - Today’s Trifle! -

古い記事ではさまざまなテーマを書いていますが、2007年以降はプログラミング関連の話がほとんどです。

OO

OO エンジニアの輪

最近忙しかったので、コメント論議をフォローできてなかった。 いまさらだけど、ひとことだけコメントしておくが、萩本さんはHORB Openでも最も貢献したうちの一人だ。HORB のソースを読んでみれば、萩本さんが Java やオブジェクト指向を理解していないなん…

ユースケース図は使えるツール

OO

昨日の見える化イベントでは、講師のみなさんたちはユースケース図は使えないと口をそろえて言っていた。 個人的には、とても仕えるツールだと思っているんだけど。。。 ユースケース図のいいところは、誰が見ても分かる程度の図だって点にある。顧客との打…

仕様書に UML を使う

明日から某営業担当者が顧客のところに行って、システムの概要を説明してくる。今日はそのための資料(仕様書)を作成した。 仕様書の中には、さりげなく UML を書いてある。要求事項の部分にはユースケース図を、システム構成の部分では配置図を使用している…

JUDE

OO

JUDE/Community のバージョンアップをしようと思ってアクセスしたら、画面は英語! 日本語を選択してログインしようとしたら、パスワードを忘れていたので再発行した。で、パスワード変更しようとしたらエラー。orz パスワード変更をあきらめてダウンロード…

UML モデリングのエッセンス 第3版

そういえば既に発売済みだった。発売されてから日記で紹介しようと思ってたら、そのまま忘れてしまってた。それがいつものパターンなんだけど。 UML モデリングのエッセンス 第3版 つーか、自分でも買わなきゃ。昨日、Amazon のギフト券が届いてたから、もの…

オブジェクト開発の神髄 UML2.0を使ったアジャイルモデル駆動開発のすべて

あー!この本はよさそう。UML2.0でアジャイルってかなり興味ある。Amazonからのメールで紹介されてた本。 Amazon のエディターレビューからちょこっと引用する。 15章構成で、主なテーマは、フルライフサイクルオブジェクト指向テスト(FLOOT)、アジャイル…

アノテーションの概念的な位置付けとDIとの関係

きしださんがオブジェクト指向を哲学してるぽい。今は読むヒマがないので後で読む。いや、違う。軽く目を通したけど考えてるヒマがない。後でもう一度じっくり読み直して考える(予定)。

エクスプローラの MVC アーキテクチャ

OO

某お手伝いさんから作っているアプリケーションの構造について質問があった。エクスプローラにも似ている部分なので、エクスプローラに置き換えて説明すると、ファイルやフォルダを示すアイコンに対応するクラスは MVC のどれなのか?と。 ファイルやフォル…

satoshis 式ユースケース図のかきかた

OO

ちょうどユースケース図をかいているところなので、ユースケースをかくときの思考パターンを紹介する。 会社では出入管理システムというのをあちこちに納入している。要は、カードリーダや指紋などで認証すると錠が解錠されるとか自動ドアが開くとかして入室…

構造化手法とオブジェクト指向

オブジェクト指向レス開発 via PM見習いの読書日記 まずコメントする前に、個人的には業務系システムの経験は皆無だということを断っておく。 内容的にはソフトウェア開発全般を考慮して書いているので、特に業務系だとかは意識してないが、的外れな点があっ…

週刊オブジェクト倶楽部

OO

昨日のが届いてないことに気付いた。もしかしてネットワークトラブルで消えちゃった?

VB6 と VB.NET

近くにいる人が外注したソフトウェア、VB.NETを指定(エンドユーザからの指定)してたのに外注が VB6 で作ってきたらしい。 隣の部屋で作業している彼ら。コンパイルできなくて困っているようなことを言っていたので、「動くようになるまで1ヶ月はかかるよ、た…

DIPに反するコード

継承を使ったクラスで、初心者にありがちな、DIP(Dependency Inversion Principle:依存関係逆転の原則)に反するコードを見つけたので紹介。 以下の継承関係を持ったクラスがあるとする。 public class Foo { } public class FooEx extends Foo { } このとき…

モデリングコンテスト

OO

クラス図を修正した。 業務システムのモデル クラス図を更新する仮定で、会計のことが分からんと話にならんことが分かった。ぐぐってみて参考にしたサイト→経理の心得 ここにアクセスできたからといって、締め切りまで時間がなかったので実質10分くらいしか…

モデリングコンテスト

OO

クラス図の修正と、新しい別のクラス図を追加した。 業務システムのモデル

モデリングコンテスト

OO

今日は、配置図とクラス図(両方とも手抜き版)を追加した。 業務システムのモデル

モデリングコンテスト - 配置図

OO

今日は夕方の休憩時間に書いた配置図をアップした。 業務システムのモデル

モデリングコンテスト - ユースケース図

OO

オブジェクト倶楽部が開催しているモデリングコンテストに、のんびりと参加してみることにした。 昨日の夜、とりあえず簡単なユースケースだけ描いたのをアップした。ツッコミ大歓迎。 業務システムのモデル

オーバーライドと Template Method パターン

OO

気になったことがひとつ。単なるオーバーライドと Template Method パターンを混同している人がいるような気がした。Google で Template Method パターンのサンプルを検索してみたら、実際にそのように誤解して書かれているものをいくつか見つけたので、少な…

アジャイルソフトウェア開発の奥義

今朝、この本をぱらぱらと見ていたら、「第14章 Template Method パターンと Strategy パターン:継承と委譲」というページが目にとまった。この章の最初のページの一部を引用する。 1995年頃には、継承は乱用されやすく、この継承の乱用によって生じるしっ…

Template Method パターンは必要か?

OO

昨日の日記にいくつかのコメントがあったので補足。 そもそも Template Method パターンってのは必要ではない適用可能な場面がかなり限られている。Template Method パターンを使う場合、仕様と実装が分離できていない。仕様と実装が密結合してしまうために…

Template Method パターン

とある理由で、他人が書いたソースを読んでいる。Template Method パターンが使われている。読みにくい。最悪。スーパークラスの実装をきっちりと把握しておかないと、挙動を追いきれない。きっちりと把握するほどの空容量は、旧型の脳ミソには残されていな…

LSP を破っている CollectionsFramework

Collections クラスには、各インタフェースの変更不可能なビューを返すための static メソッドが用意されている。一度も使ったことないけど。 例えば List の場合を見てみる。 public static List unmodifiableList(List list) (略)直接か、その反復子を使う…

アジャイルソフトウェア開発の奥義

デザインパターン・メーリングリストで LSP(The Liskov Substitution Principle) が話題に出たのでこちらでも補足。 LSP(The Liskov Substitution Principle)とは、リスコフの置換原則のことで、ソフトウェア原則のうちのひとつ。LSP を一言で要約したものを…

ボーリングスコア計算プログラム

去年の12月27日の日記に著者さんからコメントをいただいたので話を蒸し返す。 確かにもう少しロールを意識したクラス名にしたほうがよかったですね。 ただ、FrameState(とそのサブクラスたち)は計算以外にも次の状態への判定などもおこなっているので、計算…

オブジェクト倶楽部カレンダー

OO

12月分カレンダーに誤植を発見。 CCP The Commmon Closure Princeiple m 多すぎ。すぐ下の CRP は間違ってないのにね。気付いてしまうと、並んでるだけにやや違和感あり。

とあるC++のソース

OO

クラスの中に struct を書いているらしい。

腐ったコード

某社に作らせたコード、すごいぞ。 モデルがビューに依存している モデルがコントローラに依存している 100行以上のメソッドがごろごろ 200文字以上の行がごろごろ(読みにくいてば) あ゛あ゛あ゛ー! 捨てたいけど作り直してる時間がない。。。

Java とクロージャ

匿名クラスに対してたくさんの貴重なコメントをありがとうございます。 さて、もう一度整理。まず最初に、クロージャとはなにか。個人的にはクロージャ(をサポートしている言語)をあまり使ったことがないので、あまり突っ込んだ議論ができない。 まあ、とり…

匿名クラス

以前は EventListener の小さな処理を書くのに匿名クラスを使うことが多かったが、最近ではほとんど使わなくなった。昔書いた匿名クラスを使っているコードを見て思うのだが、匿名クラスって何しているのかわかりにくい。 JButton deleteButton = new JButto…