- PR -

ASP.NETでのオブジェクト指向

1
投稿者投稿内容
MOBI
会議室デビュー日: 2003/11/22
投稿数: 8
投稿日時: 2003-11-22 23:20
初めて投稿させて頂きます。

今ASP.NETを使い、オブジェクト指向を用いてシステム開発
を行おうとしております。これまで手続き型でシステム開発
を行ってきた経験しかなく、オブジェクト指向での設計・開
発は初めての為、戸惑いながらもなんとかすすめています。

そこで、実装方法について疑問が出てきました。

画面Aから画面Bに展開される場合、その展開の間にできた
オブジェクトはシステム上に残っているのでしょうか?
残っていないとすると、各オブジェクトは生成された段階
でセッション変数に残すなどの操作が必要になるのでしょう
か。

いろいろ調べてみたのですが、VB.NETについてのオブジェ
クト指向の書籍・情報などはあるものの、ASP.NETについて
の書籍・情報がみあたりませんでした。ASP.NETを使用して
オブジェクト指向で開発をされている方、または実装方法に
ついてご存知の方いらっしゃいましたらご教授願いませんで
しょうか。どうぞよろしくお願い致します。

_________________
Jubei
ぬし
会議室デビュー日: 2002/03/02
投稿数: 830
お住まい・勤務地: 関西
投稿日時: 2003-11-23 08:32
こんにちわ。諸農です。

VB.NETはアプリケーション開発のための言語を指し、
一方ASP.NETはアプリケーション開発の技術基盤を指します。

引用:

MOBIさんの書き込み (2003-11-22 23:20) より:

いろいろ調べてみたのですが、VB.NETについてのオブジェ
クト指向の書籍・情報などはあるものの、ASP.NETについて
の書籍・情報がみあたりませんでした。ASP.NETを使用して



色々探せば書籍・サイトなどの情報はたくさんありますよ。

・今日から始めるVisual Basic .NETプログラミング(書評)
http://www.atmarkit.co.jp/fdotnet/bookreview/vbbegin5/vbbegin5.html

・ASP.NETプログラミング本格入門
http://www.cbook24.com/bm_detail.asp?sku=4774118362

・VisualStudio.NET2003による 実践ASP.NETアプリケーション開発
http://www.cbook24.com/bm_detail.asp?sku=4798006068

・実践ASPエンジニアのための ASP.NETビルドアップテキスト
http://www.cbook24.com/bm_detail.asp?sku=477411698x

・ASP/ADO.NET Webフォーム開発テクニック
http://www.cbook24.com/bm_detail.asp?sku=4774116653

・VisualBasic.NET+ASP.NETで始めるWebアプリケーション開発
http://www.cbook24.com/bm_detail.asp?sku=479732113x

・プログラミング Microsoft .NET
 ASP .NETによるサーバーサイド開発 マイクロソフト公式解説書
http://www.cbook24.com/bm_detail.asp?sku=4891003154

・ステップバイステップで学ぶ Microsoft ASP .NET実践講座
http://www.cbook24.com/bm_detail.asp?sku=4891002859

・標準ASP.NET プログラミング1
http://www.cbook24.com/bm_detail.asp?sku=4798101257

・標準ASP.NETプログラミング 2
http://www.cbook24.com/bm_detail.asp?sku=4798101265

・ASP.NET How-To インデックス
http://www.microsoft.com/japan/msdn/howto/howtoASPNet.asp

ではでは(^^)/
_________________
諸農和岳
Powered by Turbo Delphi & Microsoft Visual Studio 2005

十兵衛@わんくま同盟
http://blogs.wankuma.com/jubei/
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2003-11-25 12:22
引用:

MOBIさんの書き込み (2003-11-22 23:20) より:

いろいろ調べてみたのですが、VB.NETについてのオブジェ
クト指向の書籍・情報などはあるものの、ASP.NETについて
の書籍・情報がみあたりませんでした。ASP.NETを使用して
オブジェクト指向で開発をされている方、または実装方法に
ついてご存知の方いらっしゃいましたらご教授願いませんで
しょうか。どうぞよろしくお願い致します。


 もしかすると、混同されているのではないでしょうか。VB.NETは1つの言語ですが、AS.NETは言語ではありません。1つの「技術」という方がいいと思います。なので、「ASP.NETでオブジェクト指向」という類の本はないと思います。ASP.NETを利用したWebアプリケーションは、VB.NETかC#か、C++.NET(またはマネージドC++)といった言語(J#も?)を利用して記述します。



> 画面Aから画面Bに展開される場合、その展開の間にできた
> オブジェクトはシステム上に残っているのでしょうか?

 残っていません。画面上に表示されている「値」については、「ビューステート」に残っています。オブジェクトを残すには、アプリケーション変数か、セッション変数に残す必要があります。しかし、表示されるコントロールが「同じオブジェクト」である保証はありません。むしろ、「同じ値を持った、違うオブジェクト」であると考えるべきでしょう。
MOBI
会議室デビュー日: 2003/11/22
投稿数: 8
投稿日時: 2003-11-25 13:38
Jubeiさん、Jittaさん、ありがとうございます。
ASP.NETについて混同しておりました。開発言語はVB.NETを使用しております。

またまた質問なのですが、ASP.NETを利用したWEBアプリで、オブジェクトを
作成しながら画面展開を進めていく場合、例えばクラスAとクラスBがコンポジ
ションの関係にあった場合(クラスAがクラスBを集約しているとします)、
以下のようなコードになるのかな、と考えたのですが。

●クラスAのコンストラクタ
Public Sub New()
オブジェクトB = New クラスB()  <----オブジェクトBを定義

以下で上記オブジェクトBをセッション変数にセット
Session(クラスBセッションキー) = オブジェクトB

End Sub

画面展開の処理の中でできたオブジェクトを別画面で使用する場合、このように
しておけばオブジェクトBが入っているセッション変数を通して、オブジェクトB
のメソッドも利用できると考えたのですが・・・。

ただ、この場合、集約しているクラスが集約されているクラスをNew()する時に
セッション変数にオブジェクトをセットするようにする、等が必要になってくる
かと思っています。

実際このような方法で開発されているのでしょうか?それとも、各クラスが生成
された段階で、そのクラスの属性値のみをセッション変数にセットしておいて、
別画面で過去に生成したオブジェクトを利用する場合、セッション変数にセット
された値から再びそのオブジェクトを生成しているのでしょうか?


_________________
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2003-11-25 13:51
Loadイベントで、

if ispostback then
classB = new ClassB
session("ClassB") = classB
else
ClassB = session("ClassB")
end if

とか、staticなメソッドにするとか、アプリケーションで共通にしてもいいならキャッシュに入れるとか。

 なぜか、Loadイベントハンドラに「ページの初期化コードをここに記述」と書いてあるので、Loadイベントハンドラでやってます。そういえば、なぜLoadイベントハンドラなんだろう?
小野@どっとねっとふぁん
ぬし
会議室デビュー日: 2001/10/30
投稿数: 402
投稿日時: 2003-11-25 15:02
Loadイベントの発生するタイミングについてドキュメントで確認してみては?
ページ内で利用するオブジェクトがそれなりに生成されて、ビューステートからの
値が設定されて、等、初期化をするのに必要なすべての準備がととのった
状態で発生するのがLoadイベントだったと思います。
ページ内でどのイベントがどういう順で発生するか、という話はドキュメントに
きちんと記述されていたはず。

#ちょっとわかりにくいとこだったと思うけど。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2003-11-25 16:36
話を別方向に持っていってすみません。

引用:

小野@EACさんの書き込み (2003-11-25 15:02) より:

Loadイベントの発生するタイミングについてドキュメントで確認してみては?
ページ内で利用するオブジェクトがそれなりに生成されて、ビューステートからの
値が設定されて、等、初期化をするのに必要なすべての準備がととのった
状態で発生するのがLoadイベントだったと思います。
ページ内でどのイベントがどういう順で発生するか、という話はドキュメントに
きちんと記述されていたはず。


 確認しています。コンストラクタ→Initイベント→LoadViewStateメソッド(PostBack時のみ)→LoadPostBackDataメソッド(PostBack時のみ)→Loadイベント→…ですね。で、「Initイベント」という「初期化イベント」があるのに、その後の「Loadイベント」で「初期化する」のはなぜかな?ということです。「初期化」は「Init(ialize)」であり、「Load」ではない、と思うのです。「言葉遊び」のように思いますが、何となくしっくりこないので。
小野@どっとねっとふぁん
ぬし
会議室デビュー日: 2001/10/30
投稿数: 402
投稿日時: 2003-11-25 16:54
#別方向ですすめます、すみませんm(_ _)m

それこそ言葉遊びになっちゃいますが、
「初期設定」
だったらちょっとしっくりきます?(^^;

WindowsアプリのForm側の言葉にあわせたような
気もしますね。
・Init -> コンストラクタのイメージ
・Load -> Formのロードのイメージ

このイベント名しか使えないわけでもないので
いやだったら変えてしまうのも可かと。
まぁ、そんな面倒なことわざわざする必要も
ないでしょうけど。

参考:
http://homepage3.nifty.com/dotnetfan/web/web07.html
1

スキルアップ/キャリアアップ(JOB@IT)