以前に書いたこと:
プログラムを書く人なら誰でも知っていることですが、実装したい機能を徐々に開発していくと、多くの場合、初日に書いたことは次の日には忘れられてしまいます。詳細なプログラム開発ノートが提供されます。これは、ファイルや機能が複雑な ASP システム開発に特に当てはまります。Web サイトの一部の機能を変更する予定がある場合、どこから始めればよいのか、何を変更する必要があるのかがわかりません。このとき、オブジェクト指向プログラミング言語を学習したことがあれば、コードの関数をモジュールに実装する方法を自然に考えるでしょう。ASP は本質的にオブジェクト指向プログラミングではありませんが、VBSCRPIT6.0 ではクラスを使用できます。コードのカプセル化を実現し、モジュール言語を実装します。
まず最初に、ここで非常に公式な概念をいくつか書き留めておきたいと思います。これは、オブジェクト指向が非常に具体的で実質的なモデルであり、オブジェクトを見ると怖がって逃げられない人もいるということを説明することを目的としています。
オブジェクトとは、見たり、感じたり、聞いたり、触れたり、味わったり、匂いを嗅いだりできるものです。オブジェクトとは、一連の識別可能なプロパティと動作によって識別される自己完結型のエンティティです。
オブジェクト指向プログラミング (oop) プログラミングでは、次の 2 つの用語が使用されます。
クラス: これはオブジェクトのテンプレートであり、オブジェクトの特性を定義します。
インスタンス: これは実際のオブジェクトであり、対話できるものです。
プロパティ、メソッド、イベント
OOP では、次の用語がオブジェクトの特性を説明します。
属性: これは、オブジェクトの属性を説明するランキングです。
メソッド: これは、オブジェクトが実行できること、または実行が期待されることを説明する動詞です。
イベント: アクションに応じてオブジェクトによって実行される操作を記述します。
オブジェクトは、プログラミング時にオブジェクト指向プログラミングおよびオブジェクト指向設計の一部であるため、非常に大きな利点があると考えられていますが、実際には非常に単純で、次の 4 つの簡単な用語で説明できます。抽象化、カプセル化、ポリモーフィズム、継承。
抽象化: これはクラスの複雑さ、内部の仕組みを隠す方法なので、ユーザーはそれがどのように機能するかを知る必要がありません。テレビを見たい場合は、テレビの電源を入れてチャンネルを検索するだけで済みます。この文字列の例では、文字列の末尾のスペースについては、このタスクをどのように実行するかを知る必要はありません。この機能があることを知っていれば十分です。
カプセル化: 各オブジェクトには、操作を実行するために必要なすべての情報が含まれています。このオブジェクトはカプセル化と呼ばれるため、TOupper() メソッドという用語では、文字列は他のオブジェクトから情報を取得する必要はありません。すべての文字が大文字に変換されます。
ポリモーフィズム: この用語は、異なるオブジェクトが独自の実装コードを通じて同じアクションを実行できることを示すために使用されます。名前は同じですが、基礎となる実装コードは異なります。
継承: クラスがどのように相互に関係し、特性を共有するかを定義します。継承の仕組みは、クラスとサブクラスを定義することです。継承の重要性は、類似した型を持つクラスを強制的に継承することです。一貫性があり、新しいクラスを作成する場合に、親クラスのすべての特性を定義することなくコードを共有できます。
ASP のクラスを使用してモジュール性を実現する
いくつかの簡単な例を挙げて説明しましょう。ここで強調しているのは、ASP Web サイトを開発するときにクラス (基本クラス) を使用して拡張できる場合、これが非常に必要である (非常に難しい) という点に注意してください。
まず簡単な例を選択してみましょう。
クラシック フォーラムのユーザーの情報を表示するには、ユーザーの属性をオブジェクトとして扱う必要があります。 IDと性別、ポイント、権限、これらの情報を表示する実装方法です。次のように記述します。
クラスブルーアイデア
プライベート bname、bpoint、bsex、blevel
「………………」
終了クラス
ここでは、最初に blueidea という名前のクラスを宣言し、続いて blueidea クラスのプロパティを格納するいくつかのプライベート変数を宣言します。これらの変数はコードの外部からアクセスできません。これらの変数を定義するには、プロパティ ステートメントを使用します。値をプライベート変数に間接的に支払います。
'------------------------------------------------ - ---------------
プロパティの取得 getname
getname=bname
終了プロパティ
プロパティ Let getname(nameid)
bname=名前ID
nameid= の場合
bname=登録ユーザーがいません
終了の場合
終了プロパティ
'------------------------------------------------ - -----------------
プロパティの取得 getsex
ゲットセックス=bセックス
終了プロパティ
プロパティ Let getsex(sex)
bsex=killint(セックス,0,0)
bsex=0 の場合
b性別=男性
それ以外
b性別=女性
次の場合に終了
終了プロパティ
'------------------------------------------------ - -----------------
プロパティの取得ゲットポイント
ゲットポイント=bポイント
終了プロパティ
プロパティ Let getpoint(point)
bpoint=killint(ポイント,0,0)
終了プロパティ
'------------------------------------------------ - -----------------
ここには、データの有効性を判断するための killint 関数があります。そのプロトタイプは次のとおりです。
プライベート関数 killint(i,killstr,killsub)
IsNumeric(i) でない場合
i=キルストラ
ElseIf i<=0 then
i=キルサブ
次の場合に終了
killint=Int(Left(i,5))
終了機能
この関数の機能は非常に明確であり、もはや複雑ではありません。
ユーザーレベルをポイントで判断する必要があるため、ここではプライベート関数を定義します。
プライベート関数 getlevel()
bpoint=killint(bpoint,0,0)
bpoint<500 の場合
blevel=ジュニアメンバー
ElseIf bpoint>=500 かつ bpoint<=100 then
blevel=プレミアム会員
それ以外
blevel=最終メンバー
終了の場合
Getlevel=blevel
終了機能
ユーザーの情報を送り返したい場合は、情報を表示するパブリック関数を定義する必要があります。
パブリック関数 showuser()
response.write(<h5>以下は<font color=red>&bname&</font>の情報を示します:</h5>)
response.write(<h5>性別:<font color=red>&bsex&</font></h5>)
response.write(<h5>ポイント:<font color=red>&bpoint&</font></h5>)
レベルを取得する
response.write(<h5>レベル:<font color=red>&blevel&</font></h5>)
終了機能
終了クラス
このクラスを使用する場合は、次のように使用します。 (フォーム処理をここに書きました)
blueideauser=new blueidea を設定します
blueideauser.getname=Trim(リクエスト(id))
blueideauser.getsex=リクエスト(セックス)
blueideauser.getpoint=リクエスト(ポイント)
ブルーアイデアユーザー.ショーユーザー
効果を確認したい場合は、ここをご覧ください: http://www.5do8.com/net/aspclass/class.asp
データベース情報の読み取りを制御するクラス:
参照ソースコード
'名前: ado_5do8
'機能: データベースのさまざまな操作を読み取ります
源流栽培村 http://www.5do8.com http://www.Blueidea.com-5do8
'作成: 5do8
'連絡先:[email protected]
'更新: 2005 年 11 月 13 日
'認定:Blue Idealウェブサイトポイントが3,000を超えました、源雲村の登録ユーザー全員
'クラスのインターフェース: ado_5do8.ConnectString=データベースへの絶対パス
'ado_5do8.rs_top 呼び出し数、テーブル名
クラス ado_5do8
プライベート conn、sqlstr、rs、iid、itable、isession
'sqlstr: データベース アドレス、絶対パス、プライベート
'conn: データベース接続を開きます (プライベート)
'------------------------------------------------ - -----------------
rem は不要な数値をいくつか削除します
プライベート関数 litter_in(r1,r2)
IsNumeric(r1) および IsNumeric(r2) の場合
薄暗い
r1>r2 の場合
dimrr=r2
それ以外
dimrr=r1
終了の場合
それ以外
dimrr=0
次の場合に終了
litter_in=dimrr
終了機能
'------------------------------------------------ - ---------------
プライベート関数 killint(i,killstr,killsub)
IsNumeric(i) でない場合
i=キルストラ
ElseIf i<=0 then
i=キルサブ
次の場合に終了
killint=Int(Left(i,5))
終了機能
'------------------------------------------------ - ---------
private Sub startconn()
エラー時は次へ再開
conn=server.CreateObject(adodb.connection) を設定します
strconn=プロバイダ=Microsoft.Jet.OLEDB.4.0;データソース= & Server.MapPath(sqlstr)
conn.open strconn
エラーの場合はその後
エラークリア
SetConn=なし
mess=エラーが発生したためデータベースに接続できません
応答.書き込み(混乱)
応答.終了
それ以外
mess=データベース接続に正常に接続されました....<br/>
応答.書き込み(混乱)
終了の場合
エンドサブ
'------------------------------------------------ - --------------
プライベートサブcloseconn()
接続閉じる
conn=Nothing を設定します
response.write(<strong style='color:red'>接続接続を閉じる</strong>...<hr/>)
エンドサブ
'------------------------------------------------ - ---------------
プライベートサブクローザー()
rs.close
rs=何も設定しない
response.write(<strong style='color:#085420'>データベース RS を閉じる</strong>....<br/>)
エンドサブ
'------------------------------------------------ - ---------------
財産の取得
hasse=セッション
終了プロパティ
プロパティ Let havese(あなたのセッション)
isession=あなたのセッション
If yoursession= then
isession=nodef
終了の場合
終了プロパティ
'------------------------------------------------ - ---------------
パブリック関数 makesession(arraydata)
IsArray(配列データ)の場合
メーカー=配列データ
それ以外
メーカー=配列(0,0,0,0)
終了の場合
if isession= then
isession=nodef
次の場合に終了
セッション(セッション)=メーカー
終了機能
'------------------------------------------------ - ---------------
プライベート関数 getsession()
thisget=セッション(セッション)
IsArray(thisget) でない場合は、
thisget=配列(0,0,0,0)
終了の場合
Getsession=thisget
終了機能
'------------------------------------------------ - ---------------
プロパティ
接続文字列 = sqlstr
終了プロパティ
プロパティ Let ConnectString(str)
sqlstr = 文字列
終了プロパティ
'------------------------------------------------ - ---------------
プロパティ取得id
取得ID = iID
終了プロパティ
プロパティ Let getid(id)
iid = ID
終了プロパティ
'------------------------------------------------ - ---------------
プロパティ取得可能
取得可能 = それ可能
終了プロパティ
プロパティ Let gettable(table)
テーブル = テーブル
終了プロパティ
'------------------------------------------------ - ---------------
'------------------------------------------------ - -----------------
public 関数 readarraysession(iStart,ipageno,irowid)
rowid=killint(irowid,0,0)
start=killint(istart,0,0)
pageno=killint(ipageno,5,5)
データ=取得セッション
iRows = UBound(データ, 2)
iCols = UBound(データ, 1)
response.write(<h5> 取得した総数:)
response.write(<b> &iRows+1&</b> メッセージ</h5><hr/><ul style='width:100%;'>)
rowid = 0の場合、
iRows > (ipageno + iStart) の場合
iStop = ipageno + iStart - 1
それ以外
iStop = iRows
終了の場合
iRowLoop の場合 = 開始から iStop まで
Response.Write (<li style='padding:4px 0;'><a href=?k=read&rowid=&irowloop+1&>&data(1, iRowLoop) & </a><span style='padding:4px 0 4px 10px;background-color:#ccc; '>速度が遅いため、クリックすることはお勧めしません--><a href=?k=list&id=&data(0,irowloop)&>更新</a></span></li>)
次
Response.Write </ul><div style='top:20px;background-color:#ccc;color:#020;font-weight:bold;bordr-top:2px Solid #008;padding:10px 0;color: #b00'>リスト (<a href=default.asp>通常モードに戻る</a>):
開始 > 0 の場合
Response.Write <A HREF=?k=read&Start= & iStart-ipageno &&pageno= & ipageno & >前</A>
終了する場合
iStop < iRows の場合
Response.Write <A HREF=?k=read&Start= & iStart+ipageno &&pageno= & ipageno & >Next</A>
endIf
応答.write</div>
それ以外
rowid=litter_in(rowid-1,iRows)
response.write(<div style='width:85%'><h4 style='text-align:center'><a href=?k=read&pageno=&pageno&&start=&start&>戻りリスト</a></h4></h2><hr/><h5>&server.htmlencode(data(1,rowid))&</h5><p >&server.htmlencode(data(2,rowid))&<h5>+-----&server.htmlencode(data(3,rowid))&)
応答.write(<div>)
次の場合に終了
終了機能
'------------------------------------------------ - ---------------
パブリック関数 list_ids()
sql3=select * from &itable& where id=&iid&
startconn()
rs=conn.execute(sql3) を設定します。
rs.eof と rs.bof の場合
データ=配列(0,0,0,0)
それ以外
データ=Rs.GetRows()
終了の場合
クローザー
クローズコン
応答.write(UBound(データ)&:)
response.write(server.htmlencode(data(2,0)))
終了機能
'------------------------------------------------ - ---------------
パブリック関数 rs_top(num,table,whe)
startconn()
sql=&table& から先頭の &num& * を選択
sql2=&table& &whe& から szd_count として count(*) を選択します
rs=conn.execute(sql2) を設定します。
szd_count=rs(szd_count)
クローザー
rs = Conn.Execute(sql) を設定します。
暗いデータ
Rs.Eofの場合、その後
データ=データなし
それ以外
データ=Rs.GetRows()
次の場合に終了
クローザー
クローズコン()
呼び出しによりセッション (データ) が作成されます
終了機能
++++++++++++++++++++++++++++++++++++++++++++++ + ++++++++
終了クラス
使用する場合:
薄暗いアクション
アクション=リクエスト(k)
アクション = ビューの場合 次に
viewnewに電話をかける
ElseIf action=list then
list() を呼び出す
ElseIf action=read then
read() を呼び出す
それ以外
コールフ()
次の場合に終了
サフ()
%>
<form style=border-top:2px Solid #008;border-bottom:2px Solid #008;margin:auto;background-color:#eee;padding:20px 5px;color:#008;font-weight:bold;>
<label>表示される情報の総量:<input name=n type=text maxlength=4 size=10 />1 ページあたりのページ数:<input name=pagesize type=text maxlength=4 size=10 value=5/> <input name =arrstart type=hidden value=0></label>
<h5 style=border-top:1px Solid #000;padding:5px 0> 操作:<input name=k type=submit value=view /></h5>
</form> <%End sub%>
<%Sub viewnew()
f_num=killint(リクエスト(n),1,1)
pagesize=killint(request(pageno),5,5)
arrstart=killint(リクエスト(開始),0,0)
rowid=killint(リクエスト(rowid),0,0)
cs=new ado_5do8 を設定します
cs.ConnectString=データ/a.mdb
cs.havese=し
cs.rs_top f_num,site_szd,
cs.readarraysession arrstart、pagesize、rowid
エンドサブ
サブリスト()
response.write(<h5><a href=default.asp>デフォルト モードに戻る</a></h5>)
具体的な情報は、response.write:<hr/> の下に表示されます。
id=リクエスト(id)
id=killint(id,1,1)
listid=new ado_5do8 を設定します
listid.ConnectString=data/a.mdb
listid.getid=id
listid.gettable=site_szd
listid.list_ids()
エンドサブ
サブリード()
response.write<div style='background-color:#ccc;padding:20px 0;color:080;font-weight:bold;border-bottom:2px Solid #008'>ページの分析が完了しましたので、更新してください。 select <a href=default.asp>標準モードに戻る</a>パラメータ: 開始、開始ページ番号、ページごとの項目数</div>
pagesize=killint(request(pageno),5,5)
arrstart=killint(リクエスト(開始),0,0)
rowid=killint(リクエスト(rowid),0,0)
cs=new ado_5do8 を設定します
cs.havese=し
cs.readarraysession arrstart、pagesize、rowid
エンドサブ
関数 killint(i,killstr,killsub)
IsNumeric(i) でない場合
i=キルストラ
ElseIf i<=0 then
i=キルサブ
次の場合に終了
killint=Int(Left(i,5))
終了機能
%>