OOPとはオーバーライドとオーバーロードと継承とデータ隠蔽のことですか
「考え方云々というヤツ」の典型例なわたしです。
オブジェクト指向とは、
具体的に言えば、
オーバーライド、オーバーロード、継承、データの隠蔽(カプセル化)
のことですか?オーバーロードは違うけど、でも、そういう認識で
いいんじゃない?「具体的に言えば」っていう断りも入ってるし。
こういう話をすると「オブジェクト指向は考え方だから
http://dgames.or.tp:23001/entry/view/20090810
云々」いうヤツがいるけど、もっと即物的に考えても
いいし、そのほうが即効性がある。
こう質問されたら「考え方云々」と言ってしまうと思うわたしだけれども、なるほど 結局プログラミングはプログラミングして学ぶしかないわけで、「そういう認識でいいんじゃない?」は そうかも、と思います。「考え方云々」言ってしまいたいとき、結局わたしが蘊蓄たれたいだけなのか、ということは、思う。
むしろ 即物的で責めるならば、いっそ もっとシンプルに「クラスを使ってプログラムを組む事」がいいのかも。この視点でよいのなら、結局どれもクラスの機能です。C with Classes。
となると前橋さんのOO講座は、アレ自体は絶対 OO ではないと思うけれど、 こういう考え方(教え方の方便と即効性)としてアリなのかもしれないかもしれない*1。うにゅぅ。
* * *
一方で、こういう質問をする人が求めているモノってなんなのかな、とも考えてしまいます。そうすると、一つの動機として、体得しようにもマネる相手が近くに居ないとか、そうやって 右も左もわからなくなって、煙煙羅 に囲まれてしまって、迷ってる。だから歩き出す方向を探すため、灯台が欲しいんじゃないかなっ、というのがあるのかな?と思っちゃう。
プログラミングだから、結局 最後は 「即物的 + あとは実践あるのみ!」・・で体得することになるのだけれども、近くに誰かの背中がないときは*2、「『実践』でわたし本当に『前』に進んでいるのかな」という不安になります。即物的なことは濃霧の中でも「見える」のだけれど、それは「近いから見える」だけで道しるべにならない、だからそれを見つめてても迷って方向を見失ってしまう。
そんなとき、比喩ででもなんででもいいから、遠くの目標への方角をつかむことが効果的じゃないかな、と個人的には思っています。
そこら辺を意識して書いたのが、OOP用語ひとめぐり なのですが、いまいち受けが良くないのですよね...orz むぅ、難しい。
* * *
だから、足元から遙か彼方まで まったく軸のぶれない Smalltalk環境が わたしは好きです。一本道なので迷いようがないと言いましょうか。わたしが OO樹海で盛大に迷いまくっていた時、Smalltalk と sumim さんのドキュメントが灯台で、とてもありがたかったです。