インターフェースライブラリ

C++でインターフェースベースのライブラリを設計している。

  • IButtonというインターフェースからIPushButton、IRadioButton、ICheckBoxというインターフェースが派生している。
  • ライブラリの使用者には、この4つのインターフェースと、その実装のインスタンスを生成するための関数(もしくはファクトリクラス)だけが見えている。
  • これらの実装クラスに共通してgetHandleというメソッドを設けたいが、このメソッドはライブラリ使用者には必要のない内部的なものなので、IButtonでは定義したくない。
  • もちろん、getHandleの具体的な処理はそれぞれのクラスで異なる。

さてどうしよう。

  1. 素直にIButton内でgetHandleメソッドを宣言する。
  2. IButtonを引数にとる関数を作って実行時型情報を元に場合分けする。
  3. 多重継承を使う。

1はできれば避けたい。2はオブジェクト指向っぽくない。3は必要以上にごちゃごちゃしそう。ほかに良い解決策があるのか、そもそもこの設計自体が悪いのか。

2011/11/23以前 | comments (0) | trackbacks (0)

高校卒業

実は今まで高校生でしたが,昨日卒業しました.

現在,受験も終わって少し暇ができたので,久々にC++でプログラミングをやっています.受験期間中もPerlはちょくちょくやってたんですけど,やっぱりC++で時間を掛けて何か作るのは楽しいです.

ところで,最近電子工作をやることがたまにあるのですが,パソコンで何か作るのと違ってお金が掛かりますね(当たり前ですが).

私は小さい頃から工作が好きで,小学校前は厚紙やダンボール,小学校低学年は木工,高学年では電子工作キットなどで遊んでいました.パソコンもたぶん幼稚園の頃から居間ににあったと思うのですが,しょっちゅうフリーズして,そのたびに親に「壊したな」といって怒られるので,余りいじりませんでした.

中学校になると,Windows XP のノートパソコンが居間に来ました.今度のパソコンは動作も速くてフリーズもしない,ということで,いろいろなフリーソフトをインストールして,それなりに使いこなしました.そのうちに,耳コピやプログラミング,Webサイトの作成など,創造的(というほどの物でもないが)なこともするようになりました.そして気がつくと,お小遣いやお年玉を使う機会はほとんど無くなり,中学校卒業の頃にはけっこうな額が貯まっていました.

高校に入るとそのお金で新しいパソコンを買い,今まで以上にいろいろなことをするようになりました.特に,いままでのノートパソコンでは性能上できなかった画像編集や映像編集に興味を持ちました.学校で冊子発行をするようになってからは,いままでほとんど使わなかったオフィスソフト(OpenOffice.orgだけど)を使うようになり,DTPの知識も少し覚えました.

で,高校卒業の時期になって,コンピュータ関係の分野に進学することがほぼ決定になると,今度はソフトだけじゃなくてハードに興味を持つようにもなりました.具体的には,マイコンを使ったデバイスなどです.現在,その辺のことを勉強中で,大学生活が落ち着いてきたら,電子工作の道具とか材料を一通り買いそろえるつもりです.


ところで,これを読んでいると私が一人で遊ぶことしかできない人みたいにみえます.たしかに私はクラスではぼっちでしたが,部活では仲間達と充実した生活を送っていたことをお断りしておきます.

2011/11/23以前 | comments (0) | trackbacks (0)