dポイントプレゼントキャンペーン実施中!

コンポーネント指向って、どのような理念の元に作られたものですか??

何が聞きたいのかというと、例えばオブジェクト指向に関して。
オブジェクト指向とは、オブジェクトを中心にデーター(フィールド,etc…)、メソッドをまとめクラスで定義したうんぬん…とプログラミング入門書に書いてあります。まぁ、わかるんですが。でも一番素晴らしいなと思ったのは、こんな感じの以下の説明でした。(参考 スッキリわかるJava入門)
オブジェクト指向とは、メモリ上にあたかも実体が存在するように再現すること。つまり、現実世界を模するバーチャルの世界をよりリアルにする手法。
そんな感じの、理念がかかれてました(様な解釈をしました)。
何かロマンチックだなと思いました。メモリ空間上にあたかも命があるようなインスタンスを生成しちゃえる様な夢のある考え方の理念があるなと。

コンポーネント指向も、こんな夢のある話がさらに進化した話なんですか?
それってどんな話ですか?
なんかうまく質問できなくてすみません。

質問者からの補足コメント

  • 注:回答は回答で待ってますw

      補足日時:2016/07/26 04:57

A 回答 (21件中11~20件)

コンポーネント指向は、予めよく使う部品を、


オブジェクト、あるいはオブジェクトの集合として作っておいて
再利用するという考え方です。

単に、部品を作っておくだけではなくて、部品を選んで張り付けたり
設定や動きを調整するための仕組みや、それを支援する開発環境も
含めて、コンポーネント指向と呼ぶようです。

.Netも図形的に表されたコンポーネントをポタリとプログラムに
貼り付けて使ったりできますよね。あれもコンポーネント指向の
一形態です。

>オブジェクト指向とは、メモリ上にあたかも
>実体が存在するように再現すること。

元々の発想はそうです。シミュレーションから発達した技術なので。

但し、実際の実装はそれだけではうまくゆきません。

一例を挙げると、よく引き合いに出されるのに、
鉄道の券売機で売られているチケット(切符)の処理があります。

チケットのある日の売り上げを記録する場合、
その種類のチケットがある駅で一万枚売れたことを記録するのに、
チケットの実体に合わせて、一万個のオブジェクトを
作る人はいません。
チケットの分類、駅、日付とその日に売れた「枚数」を記録した
オブジェクトを一日に1個作るだけでしょう。

リアルワールドの実体とそれをコンピュータ内で表現する
処理対象としてのデータは全く異なる構造になることが
多いのです。
そこを考えてデータ構造と処理方式を考えるのもプログラマの
仕事です。

リアルワールドを真似れば判りやすくて何もかもうまくゆく
と夢見たプログラマがたくさんいましたが、儚い夢で
あったことが分かってます(^^;
    • good
    • 0
この回答へのお礼

コンポーネント指向、なるほどです。ありがとうございました。Unity触ってて実感しました。

で、オブジェクト指向のたとえ話ですけど、それはチケットオブジェクトが記録すると考えるのが間違いなのでは…。リアルに模すなら、券売機にカウンターがあるべきです。で、券売機が複数あるなら、それを取りまとめる管理者オブジェクト一つ有って、その管理者オブジェクトが券売機クラスのカウントメソッドを用いるのでは…。そう考えると、その例え話ではオブジェクト指向の限界が見えません。
まぁ、私の理解の範疇を超えたところで限界はあると思うのですが。無いと逆に進歩の余地無しってことで恐ろしいことですからね。
回答ありがとうございました!

お礼日時:2016/07/26 09:18

本当は、アセンブラより2進数でプログラム


組めたほうが良い。
まじ。

✳期待を裏切らないから。キミは。
    • good
    • 0
この回答へのお礼

11000001111110 11000001001011 11000001011011 11000001101000 11000001010001

お礼日時:2016/07/26 09:32

よく見たら、お礼言葉の最後のw 。


windowsのwだったんだ。涙。

✳努力は報われま
    • good
    • 0

まだ触ってないので機会があれば少し見てみますw ← 今日から見なさい。


夢は邪魔したくない。まじ。

✳徹夜で無理しろ。
    • good
    • 0

夢を壊したくない。

笑。
windowsの容量知ってるよな。

う○こかwindowsって思えてくる。
自称オープンソースのLinux、う○こかって思えてくる。
イーサネット、TCP/IP、なんちゃら階層とか、う○こかって思えてくる。


※まあ気にせず頑張れ。
    • good
    • 0
この回答へのお礼

Windowsしか触ったこと無いです←ぉ

お礼日時:2016/07/26 04:57

夢を壊したくない。

笑。
「アセンブラ…よく聞きますが、チンプンカンプンですw」←アセンブラほど簡単な言語ないぞ。
メモリ番地、2進数、16進数が分かれば。それ理解できたらC言語が楽生なる。(ポインタが理解できるこれ大事)
.NET Frameworkを使っても、C言語でしか出来ない事もある。まじです。
部品使ってバグったとき探すの大変。継承の継承の継承とか。笑。

※まあ期待してるよ。
    • good
    • 1
この回答へのお礼

アセンブラ…まだ触ってないので機会があれば少し見てみますw

お礼日時:2016/07/26 04:56

追伸。



オブジェクト指向をなんでも問題解決できる「銀の弾丸」とはみなさず、開発効率をアップさせる手法のひとつ。ツールボックスに入れる道具の1つというレベルで考えて使えば大きな効果を発揮してくれます。

No.2さんの回答で「その部品を継承して機能を強化する事もあるけど。ようは、部品毎にプログラミングしておいて組み合わせて使う。後でメンテナンスしやすいとかなんとか。」

と書かれているように、最近は、.NET Frameworkなど、そんな感じで機能豊富な部品が使える環境が増えてきています。

そんな便利な「部品」の存在を知り、使い方をマスターしておけば、プロジェクトマネージャが「この機能のプログラムの開発には20日くらいかかるなあ」と見積もっていても、実際には2日くらいでほぼ完成してしまうってこともありました。
「こんな複雑な処理のプログラムが、お手軽、簡単に作れて、しかもバグが無いなんて有り難いなあ」と最近のプロジェクトで感じることが多いです。


ちなみに、「簡単・便利・機能豊富」な部品ってのは、見えないところで沢山のコードが動いているってことです。
プログラムが複雑な処理をする必要があれば、それらの見えないコードは大活躍してくれます。
でも、そんな豊富な機能がいらない処理があるのも現実です。

昨日、「これ、データベースの処理が遅いんだけど・・・」と言われて、その機能豊富な部品を使わないコードに変更したら、1/20くらいの時間で処理が終わってしまい、ちょっと驚きました。
    • good
    • 1
この回答へのお礼

結局、「部品」の構造を理解してる人が強いのはどの世界でも一緒ですね!

頑張ります!ありがとうございました!

お礼日時:2016/07/26 03:41

夢を壊したくないけど、javaを覚えた頃にはまた新しい言語、開発手法が出てくるかもよ。

笑。
その度、ルール覚えるの大変そう。本当はまず基礎を勉強したほうがよいと思い込んでます。
例:例えばメモリの管理、マルチタスクの仕組み、究極は画面に図を描く仕組み。
  アセンブラで全てできます。USBメモリのブート領域に組み込んでUSB起動とか。
  ブート領域は512バイトと言われてるが、実は違う。まじです。
  BIOSが何してるかとか。詳しくなっちゃう。笑。
  で、windows8からまた電源の制御が違ってるとか。

まあ頑張って。
    • good
    • 0
この回答へのお礼

アセンブラ…よく聞きますが、チンプンカンプンですw
まぁ、私はまだまだまだまだ素人なんで、頑張ります!

お礼日時:2016/07/26 03:43

>>その、戦艦大和を入れるとプログラミングしちゃう人はそもそもオブジェクト指向が何たるかを理解できてないのでは…



そのとおりで、オブジェクト指向が理解できていないからではありますけどね。
そして、最近の2ch掲示板で、オブジェクト指向関係の書込みを見ていても、オブジェクト指向に対して大きな勘違いをしている人が以外と多いので驚きを感じました。
いちおう「自称」あるいは「プロ」のプログラマっていう方たちが参加しているはずの、しかも十数年前に書かれた過去ログでなく、最近の掲示板の書込みにおいてですからね。

例にあげたものは、極端な例だから、誰もが誤りと分かります。
でも、オブジェクト指向が何でも解決できる「銀の弾丸」と思い込んでいて、それが分からない人が多い。
ちなみに私も、過去において数億レベルの開発費が無駄になったプロジェクトに参加していました。
そのプロジェクトに参加してすぐに、「これはダメだろう・・・」と思ったものですが、途中参戦で、しかも下請けで、何も言えなかった。

>>理念が間違ってるというより、プログラミングのバグなのでは…。

プログラムのバグレベルならいいのですがね。
多くは、オブジェクト指向の理念を間違えている、つまりは根本が理解されてないから被害がでかくなりがちです。
    • good
    • 1
この回答へのお礼

数億が無駄に…。私の本業は全くプログラミングと対称的で、最近入門書を理解した程度で対等に話すのはおこがましいと思いますが。
「銀の弾丸」とは思わない程度に夢抱いときますw

回答ありがとうございましたw

お礼日時:2016/07/26 03:21

現実世界を模するバーチャルの世界をよりリアルにする手法 ← 嘘つきな本だな。


オブジェクト指向って、機能(部品)別にクラスと言う概念で作ってその機能(部品)を組み合わせて
アプリケーションを作る手法。その部品を継承して機能を強化する事もあるけど。
ようは、部品毎にプログラミングしておいて組み合わせて使う。後でメンテナンスしやすいとかなんとか。
メモリを余分に使うかも。(忘れた)
メモリ節約するなら、DLL等とか使うけど。まあ所詮だれかさんが考えた手法にすぎない。
JAVA、C#、VB、Delphi、等所詮人が作ったルールでプログラミングしてるだけ。
アセンブラ覚えてC言語おぼえる方がよっぽどPCに詳しくなるし独自コンパイラも作れる。

で、コンポーネント指向はよくわかりません。(どうでもいい)

まあ大勢で作るようなアプリケーションは、オブジェクト単位(コンポーネント単位)で作るんじゃないの?
生産性向上のためかな。そのかわりプログラムより設計が大変そう。

※本当に生産性向上に役立ってるかは知らない。因みにアジャイル開発ってのもあるかも。
    • good
    • 0
この回答へのお礼

本が嘘つきというより、私の記憶がねじ曲がったのかもしれませんが(笑)
部品化…そうですね。手法的にはそうです。。。

何だか中二病的な夢が壊れていくw

回答、ありがとうございましたw

お礼日時:2016/07/26 03:05

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!