このコードは、オブジェクト指向である
class A{
public main(String arg[]){
~~数万行のコード~~
}
}
そんなわけあるかいな、、、と思うけどそうなのかもしれない。
オブジェクト指向って。。。
若おじさん「Javaで継承を意識したコードを書けてるからオブジェクト指向だぜ」
(´・ω・`)キリッ
そんな風に思っていたこともありました。
でも、最近思うんです。オブジェクト指向が結局なんなのかわからない。
とりあえず、オブジェクト指向って何て言われているんだっけ?
いろいろ書いてありました。
・オブジェクト指向の3大要素は、「カプセル化」「継承」「ポリモーフィズム」
・「メッセージング(メッセージ送信)による決定の遅延の徹底」
・この言葉を作った人自身が、自分が考えていた範囲と違う言葉になったことを認めてて、正しい答えはもうどこにもないんですよね
・車が、、、、、
みんな言うとること違う(´・ω・`)
原点にさかのぼってみよう
歴史を探したらWikipediaに書いてありました。
オブジェクト指向(object-oriented)という言葉自体は、1972年から80年にかけてプログラミング言語「Smalltalk」を開発したゼロックス社パロアルト研究所の計算機科学者アラン・ケイが、その言語設計を説明する過程で誕生している
ん?
上記の引用元のアランさんのSmaltalk(オブジェクト指向最初の言語)の歴史も少し読んでみました。※google翻訳だより
プロのプログラマーの大きな問題に取り組み、初心者ユーザーが小さな問題を解決できるようにするための新しい設計パラダイム (私はオブジェクト指向と呼んでいます)
ん?設計パラダイム?教えてWikipedia。。。
プログラミングパラダイムは、プログラマにプログラムの見方を与えるものと言える。例えばオブジェクト指向プログラミングでは、プログラムとはオブジェクトを作りそれを管理するもの。関数型言語では、状態を持たない関数の評価の連続。
多くのプログラミングパラダイムには禁じ手がある。純粋な関数型プログラミングでは、副作用があってはならない。構造化プログラミングでは、gotoの無制限な利用が戒められる。
これ、禁じ手みたいなのはあるけど基本的にはコードの書き方の話じゃないんじゃないか?
つまり。。。
勝手に結論
オブジェクト指向のコードを書くっていう表現が間違ってるんじゃないか?
オブジェクト指向なプログラミング言語のプログラミングをしているだけ。
つまり、メソッド1つに数万行書かれたJavaのコードもオブジェクト指向(なプログラミング言語で書かれたもの)なんではないか。
でも、そうは言われてないよね
偉い人達は、オブジェクト指向なプログラミング言語でそれぞれ目指したものがあった。さらにオブジェクト指向という方向が画期的だったため、さらなる考えがどんどん生まれた。
それぞれオブジェクト指向があったこその考えだったので、いつの間に全部オブジェクト指向となって現在に至っているっぽい。
イメージを書いてみました。
結局
オブジェクト指向をコードの書き方として話するのであれば
「オブジェクト指向とは、、、」
と語るのではなく、
「オブジェクト指向の〇〇とは、、、」
ってちゃんと入れないと曖昧すぎてその言葉に何の意味もたないんじゃないかっていうお話
これは個人の見解であり、これを信じたことによる損害について一切責任を負いません(´・ω・`)
引用(この辺りを読んでみてました)