- 1 名前:前々スレ985 mailto:sage [03/12/18 06:52]
- 理解できないわけないだろ!
デザパタも知らずにC++使いの質を下げるC厨には げんあり 前スレ達 難易度:1 pc2.2ch.net/tech/kako/1058/10586/1058675178.html 難易度:2 1pc2.2ch.net/test/read.cgi/tech/1063323615/
- 17 名前:デフォルトの名無しさん [03/12/18 23:22]
- 例えば、C++をオブジェクト指向の入門に使用すると、まず突き当たるのはその言語仕様の複雑さです。
C++は手続き指向の言語であるCとの互換性を保つことを強いられたので、オブジェクト指向の本質とは あまり関係のない部分が多く言語仕様に入り込み、習得のし難い言語になってしまっています。 (このように手続き指向をオブジェクト指向に拡張し、両者の概念の混在する言語をハイブリッド系OO言語 といいます)。またC++のようなハイブリッド系言語は、手続き指向でのプログラム作成が全く問題なく行え てしまうので、「C++を使用しているが、オブジェクト指向になっていない(ただのCプログラミングをしている)」 ということが起こってしまいます。 更に、なんとかC++を使いオブジェクト指向の考えでプログラミングできるようになったとしても、言語の性質上、 メモリ管理の問題が常につきまとうことになります。もともとオブジェクト指向は、システムにまつわる問題を抽 象的に捉えられるところに利点があり、メモリ管理といった低レベルの部分はなるべく気にせずに、アプリケー ションドメインといった上位の概念に注目したいはずです。C++ではメモリ管理をみずから行わなければならな いため、アプリケーションに本質的な処理と、単なるメモリ管理の処理が入り交じり、
- 18 名前:デフォルトの名無しさん [03/12/18 23:23]
- コード自体を非常にわか
りにくくする側面があります。また人間の手によるメモリ管理は、必ずといっていいほどメモリリーク現象を引き 起こします。このために、「あまり多くのオブジェクトを用意しないようにしよう」という考えが働くようになり、設計 上は分離されていたはずのクラスが実装時に安易に合成され、奇麗なオブジェクト指向設計をくずしてしまうこ ともあります。 一方Javaはどうでしょうか。Javaはかなり奇麗にオブジェクト指向の考えを実現しているといえますが、 数値や配列などの「基本データ型」はオブジェクトではありません。そのために「全てを統一的にオブジェ クトとして扱えるはず」というオブジェクト指向の原則に合致せず、やはり不自然なコードを書かねばなら ない場面がでてきます。 例としてJavaでは、「何でも入れてしまえる順番つきの入れ物」を表すのに、Vectorというクラスが用意 されています。このVectorに物をいれるときに、基本データ型が混ざっていると以下のようなコードを強 いられます。
|

|