[648] オブジェクト指向「初」入門
投稿者:Rq
2007/02/20 02:13:25
オブジェクト指向再入門、とても面白く読ませていただきました。その中で
・手続き型言語を習得している「途中」の自分がどのようにオブジェクト指向を実践していけるのだろうか
というところで疑問を抱いたので質問したいと思います。ここでのオブジェクト指向議論とは違う疑問なのかもしれませんが、書きたいと思います。
自分は、対象読者とされている「手続き型言語を習得し」た人ではないです。大学に入ってからプログラミングを習っています。使っている言語はDelphiです。
Delphiはオブジェクト指向言語ということだったのですが、学んでいるのは手続き型の勉強なのではないか、と感じました。そこからオブジェクト指向に興味を持ち、調べたもののこの再入門冒頭に書かれていたとおり、挫折しました。そして、もう一度と思っているところです。
いろいろなオブジェクト指向入門を見てきて、オブジェクト指向は
・大規模なプログラムの開発でないと効果を発揮しない
・プログラムを分割することが大切
・デザインパターン(設計)を知らないといけない(?
という特徴を持っているのではないかと思っています。
そしてここのオブジェクト指向再入門で言っているマルチプルインスタンスというのは、Delphiのコードで言うと
Type
TStringList = class(TString);
でTStringList型が出来て(これが「わけのわからない例え話」だったらすみません…)
var
Str1,Str2 : TStringList;
というPrivate宣言をすることによって
Str1 := TStringList.Create;
Str2 := TStringList.Create;
という具合に、同じ形のものを複数作成できる。そして、
Str1.hogehoge;
Str2.hogehoge;
というように、命令の主体を明らかにできる、ということが具体的な内容なのかなと考えています。
では、ここからが自分の疑問の核心なのですが、手続き型の学習の中で(あるいは小規模すぎるプログラムの中で)でもオブジェクト指向を実践する方法はないだろうか、ということです。
今自分が目をつけているのが、
・「開放・閉鎖の原則(OCP:Open-ClosedPrinciple)」
というもので、これにのっとって実践を進めれば今ある機能を追加していくということでオブジェクト指向の利点を理解しやすく、かつ小さなプログラムを大きくしていけるのではないかと考えています。ここでの継承は、コードの再利用ではなく堅実なプログラムを組むため、という理由付けになりオブジェクト指向と呼べるのでは?と思っています。
しかしそのためには手続きを分節化し、プログラムを設計する能力がいるだろう、と思っています。
このような場合に、デザインパターンが有効なのだと思いますが、具体的にどうプログラムを組むのか、というところで自分は躓いている状況です。
しかし、上記のようなオブジェクト指向「初」入門が、オブジェクト指向言語から入った人には必要なのではないか、と思いました。再入門という観点からは不適切かもしれませんが、提起してみました。
乱文失礼いたしました。