tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板) [ツリー表示へ]   [Home]
一括表示(VB.NET VB2005)
タイトルフレームワーク
記事No6316
投稿日: 2007/09/16(Sun) 21:13
投稿者さとる
フレームワークとクラスライブラリについてお聞きします。
プログラミングを始めたばかりの初心者です。

.NETFrameworkの中には「クラスライブラリ」や「実行エンジン」などが組み込まれていると書いてある記事がありました。
なので私はフレームワークの一部が「クラスライブラリ」なんだなとおもっていたのですが、他の記事では「フレームワークはユーザープログラムを呼び出すもの」で「クラスライブラリはユーザープログラムから呼び出されたりするもの」でまったくのべつものとありました。

いろいろな記事を読んでいるとたしかに「フレームワークは必須のものを定義したもので、個々の処理を呼び出すもの」であるのに対して「クラスライブラリはユーザー個々のプログラムから呼び出されるもの」と書いてあるものが多いのです。

ということはクラスライブラリもフレームワークも「クラス」が定義されているものなのでしょうか・・。
またその違いは何でしょうか。
NETFrameworkは普通のフレームワークとは違うのでしょうか。

よろしくお願いします。

[ツリー表示へ]
タイトル追記
記事No6317
投稿日: 2007/09/16(Sun) 23:58
投稿者さとる
多分間違えているとおもうのですが、私はこうやって考えていました。

VBを起動するとForm1が画面に表示されます。
そしてこのForm1にテキストボックスなどのコントロールをペタペタ張っていきます。
このコントロールは私が利用しているものなので「クラスライブラリ」にあるクラス。

それに対してフレームワークは
「Form1そのもの」
もしくは
「VBの起動アイコンをWクリックしてForm1が表示されるまでの間に、パソコン内部でForm1を表示させる(Formクラスを呼び出す?)ような処理が記載されているクラス、又はその仕組みを提供する得体の知れない技術そのもの」
をフレームワークというのかな・・と思っていました。

この「Form1を表示させる」ということは私の意識の向こう側にあるので利用することは出来ないし、基本的な部分だから最初にフレームワークで提供しますよ!
といことで、フレームワーク側から見ると私が書くプログラム部分が呼び出されている」ということなのかな・・と思っていました。
さらにVB以外の言語でもForm1を表示させるというところまでは基本的に同じものを提供しておいて、私の書くプログラム部分についてはVBの言語専用のものが使われる。

このような仕組みが.NETFramworkだ!と思ってました。

.NETFramworkのなかに「フレームワーク」と「クラスライブラリ」がある・・。

恥を忍んで書きました!間違えていると思いますがこの考えは違いますよね・・。

[ツリー表示へ]
タイトルRe: 追記
記事No6318
投稿日: 2007/09/17(Mon) 10:57
投稿者るしぇ
段階を追って理解していくべきでは?
[ライブラリ]
http://e-words.jp/w/E383A9E382A4E38396E383A9E383AA.html
library【書庫】そのもの。

[クラスライブラリ]
http://e-words.jp/w/E382AFE383A9E382B9E383A9E382A4E38396E383A9E383AA.html
クラスという概念が入ってくる。他にライブラリっていうとDLLとか。

[フレームワーク]
http://e-words.jp/w/E38395E383ACE383BCE383A0E383AFE383BCE382AF.html
必要なライブラリを含む場合はあるよね。必要なんだから。
じゃあ、ライブラリを含まないフレームワークは?
それでもフレームワークのはず。逆に、フレームワークに
含まれないライブラリも当然ある。
含む含まないが概念として1:1で対応するものではないです。

[.NETフレームワーク]
http://e-words.jp/w/2ENET20Framework.html
[.NET Framework の概要]
http://msdn2.microsoft.com/ja-jp/library/a4t23ktk(VS.80).aspx

>.NETFrameworkの中には「クラスライブラリ」や「実行エンジン」などが組み込まれている
実行エンジン。。。曖昧な気がするけど間違ってはないかなぁ。。。
>フレームワークの一部が「クラスライブラリ」なんだな
はい、.NETFrameworkは「クラスライブラリ」を含んでるフレームワークです。
>「フレームワークはユーザープログラムを呼び出すもの」
この表現は微妙。システム側から見ると、フレームワークを窓口にして
プログラムにアクセスするから、分からないでもない。でも何の立場で
言ってるかが重要で、主体が書かれていないと意味の無い文章。
>「クラスライブラリはユーザープログラムから呼び出されたりするもの」
はい、関数を呼び出す感覚です。プログラムが呼び出して使います。

クラスライブラリはいいとして、フレームワークを理解するには
[プラットフォーム]
http://e-words.jp/w/E38397E383A9E38383E38388E38395E382A9E383BCE383A0.html
とかの概念がないと無理かな。。。
[@IT .NET Framework入門]
http://www.atmarkit.co.jp/fdotnet/special/dotnetframework_overview/dotnframewk_over03.html
プログラムとOSの橋渡しをする土台のことです。

>.NETFramworkのなかに「フレームワーク」と「クラスライブラリ」がある・・。
.NET Frameworkはフレームワークの1種です。
『あんパンはパンの1種』です。
『あんパンのなかに「パン」がある』というのは間違った表現でしょう。

[ツリー表示へ]
タイトル不明な点の詳細です
記事No6319
投稿日: 2007/09/17(Mon) 22:38
投稿者さとる
ありがとうございます!
とても興味深いことがたくさん書かれていて参考になりました!

.NETFramworkがCLRとクラスライブラリ(とASPなど)から構成されていることはわかりました。
実は私がわからなくなったのは「オブジェクト指向」の本の中の一節を読んでからなのです。
〜〜以下抜粋〜〜
フレームワークは大きく二つに分けられる。
1つはアプリケーションの基本的な部分をソースコードとして提供する枠組みで、もう1つはシステム開発全体の仕事の進め方の枠組み。
それぞれを「狭義のフレームワーク」「広義のフレームワーク」と呼ぶ。

「狭義のフレームワーク」は再利用可能なソフトウエアの部品群を指す言葉で、クラスライブラリとよく似ている。
クラスライブラリとフレームワークの違いは目的と再利用部品の使われ方である。
一般にフレームワークと呼ぶ場合単にOOPを使って作られるライブラリというだけではなく、特定の目的を果たすためのアプリケーションの完成品をさす。
フレームワークの定義は強調して書くと
「基本的な制御の流れをあらかじめフレームワーク側で用意して、アプリケーションで個別の処理を組み込むようにしたソフトウエア部品群」といえる。
このフレームワークには多態性と継承が重要な役割を果たす。
基本的な処理はフレームワークで用意してアプリケーション固有の処理は多態性を利用して呼び出します。
さらにアプリケーション固有の処理については継承の仕組みを利用してあらかじめデフォルトの機能を用意しておきます。
この関係を「ハリウッドの原則」と呼びます。
これは「制御の流れはフレームワークで決めておき、アプリケーションの処理は多態性を使って必要なときに呼び出す仕組み」のたとえです。
これがずばりなものがJAVAのAppletである。
〜〜〜〜

この文章で判らなくなりました。
私はこう考えていました。
.NETFramworkは「広義のフレームワーク」である。
そして.NETFramworkのなかにある「ASP」や「Windowsアプリケーション」などが「狭義のフレームワーク」であると・・・

これを最初に書くべきでした。
上の本の内容と私の解釈は間違えているのでしょうか。

また「狭義のフレームワーク」でのフレームワーク側からの多態性の利用とはどういうことなのでしょうか・・。


わかる方がいらっしゃいましたら教えてください。
よろしくお願いします。

[ツリー表示へ]
タイトルRe: 不明な点の詳細です
記事No6320
投稿日: 2007/09/18(Tue) 10:55
投稿者ダンボ
> 1つはアプリケーションの基本的な部分をソースコードとして提供する枠組みで、もう1つはシステム開発全体の仕事の進め方の枠組み。
> それぞれを「狭義のフレームワーク」「広義のフレームワーク」と呼ぶ。

> .NETFramworkは「広義のフレームワーク」である。

うかつに口を挟むとのっぴきなくなりそうです。一点だけ気になったので。
その本で言っている「広義のフレームワーク」って、例えばシステムを作るとき、
・要件定義を行う
・システム基本設計を行う
・外部設計を行う
・内部設計を行う
・コーディングする
・単体試験をする
・結合試験をする
・システム試験をする
・移行試験をする
・保守を行う
などという「システム開発の流れ・体制」を指しているのではないですかね。
だからその本では、 .NETFramworkは「狭義のフレームワーク」としていると思います。

(済みません。これ以上はあまり話を続けられないと思いますので書き逃げで許してください)

ご参考まで
http://itpro.nikkeibp.co.jp/article/lecture/20070205/260697/

[ツリー表示へ]
タイトルRe^2: 不明な点の詳細です
記事No6338
投稿日: 2007/09/21(Fri) 12:32
投稿者さとる
どうもありがとうございました

解決いたしました

[ツリー表示へ]