オブジェクト指向について書きたいと思っていたのですが、これってほぼ死語ですよねw
というのも、現在開発言語として使用されているもののうち、9割 (筆者の感想です) がオブジェクト指向言語であるからです。
・言語の分類
では、オブジェクト指向言語でないものはなんと言うのか。
関数型言語です。
この分け方が具体的にどうなのか、以下に表にしてみます。
関数型言語 | オブジェクト指向言語 |
---|---|
C | C++ |
BASIC | Visual Basic、VBA、VB.net |
php4以前 | php5以降 |
Visual Basic をオブジェクト指向言語と呼ぶことに物議を醸しそうですが、ここではそう分類させていただきます。
・オブジェクトとは
そもそも、オブジェクト指向言語とは何か。
それは、「クラス」の概念があるかどうか。
であると私は考えます。
class 【klǽs】 種類,部類,部門;(数学の)集合;《生物》綱こう
定義はどうでもいいとして。
プログラミングにおいての「クラス」については、「物体」とか「概念」などと認識するとよいと思います。
わかりにくいと思うので解説をしていきます。
・クラスの有無による文法
それぞれ、以下のようにプログラムを記述します。
例:入力された文字列の左2桁を変数Aに取得したい
関数型言語
変数A ← 左側を取る(入力された文字列、2桁)
オブジェクト指向言語
変数A ← 入力された文字列「の左側」(2桁)
人にもよると思いますが、後者の方が直感的だと思いませんか?
このように、主体をどちら(左側を取る、入力された文字列)に置くのかが大きな違いです。
・どちらを使うか
筆者個人的な感想では、オブジェクト指向一択だと思います。
また、言語仕様もさることながら、アプリケーション内部の設計についてもオブジェクト指向を組み込むべきだと考えています。
例えば、住所録アプリを作るときにグローバル変数に
・名字の配列
・名前の配列
・住所の配列
・電話番号の配列
を定義するなど、愚の骨頂です (筆者個人的な感想です)。
せっかくオブジェクト指向言語を使っているのであれば、このような定義をするべきと考えています。
まず、クラス「個人情報」を以下のように定義します。
・名字
・名前
・住所
・電話番号
そのうえでグローバル変数に総称型「個人情報」のリストを定義します。
こうすることによって、配列番号の間違いによる不整合を防ぐことができます。例えば名字は5番目、名前は6番目、住所は4番目にアクセスしてしまうと、個人情報として意味のないものになってしまいますよね。
このように、オブジェクト指向とは一つの情報をひとかたまりにするという考え方です。
ちなみに、余談ですが。
どうしても関数型言語を使わなければいけない場面があると思います。
その場合でも、先ほど示した
・名字の配列
・名前の配列
・住所の配列
・電話番号の配列
を定義すべきではないと考えます。
「じゃあどうすればいいんだよクソが!」
と言われるかもしれません。
ではここで、私が提起したいのは以下の定義です。
・「個人情報」の配列
この、「個人情報」には固定長フォーマットで各フィールドを入れます。
つまり、
1文字目〜10文字目 名字
11文字目〜20文字目 名前
21文字目〜70文字目 住所
71文字目〜80文字目 電話番号
のように80文字で一区切りのデータを作ることによって各フィールドがバラバラにならないようにできるわけです。
スペースの分メモリに無駄ができてしまいますが、扱いやすさとデータ容量の見積もりのしやすさからオススメしたい手法です。
最近のコメント