สิ่งที่ฉันเขียนก่อนหน้านี้:
ทุกคนที่เขียนโปรแกรมรู้ดีว่าเมื่อคุณค่อยๆ พัฒนา Functions ที่คุณต้องการนำไปใช้ ส่วนใหญ่แล้วสิ่งที่คุณเขียนในวันแรกจะถูกลืมในวันถัดไป หลายๆ ครั้งคุณต้องเขียนบันทึกการพัฒนาโปรแกรมโดยละเอียด โดยเฉพาะอย่างยิ่งในการพัฒนาระบบ ASP เมื่อไฟล์และฟังก์ชันต่างๆ มีความซับซ้อน เมื่อเราวางแผนที่จะแก้ไขฟังก์ชันบางอย่างของเว็บไซต์ เรารู้สึกว่าเราไม่รู้ว่าจะเริ่มต้นจากตรงไหนหรือรู้สึกว่าจำเป็นต้องแก้ไขอะไร ในเวลานี้ หากคุณได้เรียนรู้ภาษาการเขียนโปรแกรมเชิงวัตถุแล้ว คุณจะนึกถึงวิธีการใช้ฟังก์ชันโค้ดในโมดูลโดยธรรมชาติ ASP ไม่ใช่การเขียนโปรแกรมเชิงวัตถุ แต่ VBSCRPIT6.0 มีคลาสต่างๆ ให้เลือก ตระหนักถึงการห่อหุ้มโค้ดและใช้ภาษาโมดูล
ก่อนอื่น ฉันอยากจะเขียนแนวคิดที่เป็นทางการบางอย่างไว้ที่นี่ ซึ่งมีจุดมุ่งหมายเพื่อแสดงให้เห็นว่าเชิงวัตถุเป็นแบบจำลองที่เป็นรูปธรรมและเป็นรูปธรรมมาก และบางคนไม่สามารถกลัวเมื่อเห็นวัตถุนั้น
วัตถุคือสิ่งที่สามารถมองเห็น รู้สึก ได้ยิน สัมผัส ลิ้มรส หรือดมกลิ่น ในที่นี้เราให้คำจำกัดความไว้ดังนี้ วัตถุคือสิ่งที่มีอยู่ในตัวเอง ซึ่งระบุโดยชุดของคุณสมบัติและพฤติกรรมที่สามารถระบุตัวตนได้
ในการเขียนโปรแกรมเชิงวัตถุ (oop) จะใช้คำสองคำต่อไปนี้
คลาส: นี่คือเทมเพลตของออบเจ็กต์และกำหนดลักษณะของออบเจ็กต์
อินสแตนซ์: นี่คือวัตถุจริง ซึ่งคุณสามารถโต้ตอบด้วยได้
คุณสมบัติ วิธีการ และเหตุการณ์
ใน OOP คำต่อไปนี้จะอธิบายลักษณะของออบเจ็กต์:
คุณลักษณะ: นี่คือการจัดอันดับที่อธิบายคุณลักษณะของวัตถุ
วิธีการ: เป็นคำกริยาที่อธิบายถึงสิ่งที่วัตถุสามารถทำได้ หรือสิ่งที่คาดหวังให้ทำ
เหตุการณ์: อธิบายการดำเนินการที่ทำโดยวัตถุเพื่อตอบสนองต่อการกระทำ
Objects เป็นส่วนหนึ่งของการเขียนโปรแกรมเชิงวัตถุและการออกแบบเชิงวัตถุเมื่อเขียนโปรแกรม หลายคนคิดว่านี่เป็นวิชาที่ซับซ้อน แต่จริงๆ แล้ว มันง่ายมากและสามารถอธิบายได้ด้วยคำศัพท์ง่ายๆ 4 ข้อ สิ่งที่เป็นนามธรรม การห่อหุ้ม ความหลากหลาย และการสืบทอด
นามธรรม: นี่คือวิธีการซ่อนความซับซ้อน การทำงานภายในของคลาส ดังนั้นผู้ใช้จึงไม่จำเป็นต้องรู้ว่ามันทำงานอย่างไร เช่นนั้น หากคุณต้องการดูทีวี คุณไม่จำเป็นต้องรู้ว่าทีวีทำงานอย่างไร คุณเพียงแค่ต้องเปิดทีวีและค้นหาช่องต่างๆ วิธีการตัดแต่งซึ่งสามารถลบได้ สำหรับช่องว่างที่ท้ายสตริง คุณไม่จำเป็นต้องรู้ว่ามันทำงานนี้ได้อย่างไร คุณเพียงแค่ต้องรู้ว่ามันมีฟังก์ชันนี้
การห่อหุ้ม: แต่ละวัตถุมีข้อมูลทั้งหมดที่จำเป็นในการดำเนินการ วัตถุนี้เรียกว่าการห่อหุ้ม ดังนั้นวัตถุจึงไม่ต้องใช้วัตถุอื่นเพื่อดำเนินการให้เสร็จสิ้น ในคำว่า TOupper() วิธีสตริงไม่จำเป็นต้องรับข้อมูลจากที่อื่น สถานที่เพื่อดำเนินการให้เสร็จสิ้น อักขระทั้งหมดจะถูกแปลงเป็นตัวพิมพ์ใหญ่
Polymorphism: คำนี้ใช้เพื่อระบุว่าวัตถุที่แตกต่างกันสามารถดำเนินการเดียวกันได้ แต่ผ่านโค้ดการใช้งานของตัวเอง ชื่อเหมือนกัน แต่โค้ดการใช้งานพื้นฐานนั้นแตกต่างกัน
การสืบทอด: มันกำหนดวิธีที่คลาสสัมพันธ์กันและแบ่งปันคุณสมบัติ วิธีการทำงานของการสืบทอดคือการกำหนดคลาสและคลาสย่อยโดยที่คลาสย่อยสืบทอดคุณสมบัติทั้งหมดของคลาสพาเรนต์ ความสำคัญของการสืบทอดคือการบังคับให้คลาสที่มีประเภทคล้ายกัน มีความสอดคล้องและอนุญาตให้แชร์โค้ดโดยไม่ต้องกำหนดคุณสมบัติทั้งหมดของคลาสพาเรนต์หากต้องการสร้างคลาสใหม่
ใช้คลาสใน ASP เพื่อให้ได้โมดูลาร์
ให้ฉันอธิบายโดยยกตัวอย่างง่ายๆ โปรดทราบว่าสิ่งที่เน้นที่นี่คือแนวคิด หากคุณสามารถใช้คลาส (คลาสพื้นฐาน) เพื่อขยายเมื่อคุณพัฒนาเว็บไซต์ ASP สิ่งนี้จำเป็นมาก (ก็ยากมากเช่นกัน)
เรามาเลือกตัวอย่างง่ายๆ ก่อน:
เราต้องการแสดงข้อมูลของผู้ใช้ฟอรั่มแบบคลาสสิก หลังจากป้อน ID ของผู้ใช้แล้ว ข้อมูลบางอย่างของผู้ใช้สามารถแสดงได้ นี่คือกระบวนการ คุณสามารถคิดเช่นนี้ได้ ID และเพศ ,คะแนน, สิทธิ์, วิธีการใช้งานคือการแสดงข้อมูลนี้, โอเค, เขียนดังนี้:
คลาสบลูไอเดีย
bname ส่วนตัว bpoint bsex blevel
-
จบคลาส
ที่นี่ก่อนอื่นเราจะประกาศคลาสชื่อ blueidea ตามด้วยตัวแปรส่วนตัวบางตัวเพื่อจัดเก็บคุณสมบัติของคลาส blueidea ค่าทางอ้อมให้กับตัวแปรส่วนตัว
'------------------------------------------------ - ---------------
คุณสมบัติรับ getname
getname=bname
สิ้นสุดคุณสมบัติ
คุณสมบัติ ให้ getname(nameid)
bname=nameid
ถ้า nameid= แล้ว
bname=ไม่มีผู้ใช้ที่ลงทะเบียน
สิ้นสุดถ้า
สิ้นสุดคุณสมบัติ
'------------------------------------------------ - -----------------
คุณสมบัติรับ getsex
getsex=bsex
สิ้นสุดคุณสมบัติ
คุณสมบัติ Let getsex(sex)
bsex=killint(เพศ,0,0)
ถ้า bsex=0 แล้ว
bsex=ชาย
อื่น
bsex=เพศหญิง
จบถ้า
สิ้นสุดคุณสมบัติ
'------------------------------------------------ - -----------------
คุณสมบัติรับ getpoint
getpoint=bpoint
สิ้นสุดคุณสมบัติ
คุณสมบัติ Let getpoint (จุด)
bpoint=คิลลินท์(จุด,0,0)
สิ้นสุดคุณสมบัติ
'------------------------------------------------ - -----------------
มีฟังก์ชัน killint ที่นี่เพื่อกำหนดความถูกต้องของข้อมูล ต้นแบบของมันคือ:
ฟังก์ชั่นส่วนตัว killint (i, killstr, killsub)
ถ้าไม่ใช่ IsNumeric(i) แล้ว
ฉัน=ฆ่าstr
ElseIf i<=0 จากนั้น
i=killsub
จบถ้า
killint=Int(ซ้าย(i,5))
ฟังก์ชันสิ้นสุด
ฟังก์ชั่นของฟังก์ชั่นนี้มีความชัดเจนมากและไม่ซับซ้อนอีกต่อไป
เนื่องจากเราจำเป็นต้องตัดสินระดับผู้ใช้ผ่านคะแนน ฟังก์ชันส่วนตัวจึงถูกกำหนดไว้ที่นี่:
ฟังก์ชั่นส่วนตัว getlevel()
bpoint=คิลลินท์(bpoint,0,0)
ถ้า bpoint<500 แล้ว
blevel=สมาชิกรุ่นน้อง
ElseIf bpoint>=500 และ bpoint<=100 จากนั้น
blevel=สมาชิกพรีเมี่ยม
อื่น
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=blueidea ใหม่
blueideauser.getname=Trim(คำขอ(id))
blueideauser.getsex=คำขอ(เพศ)
blueideauser.getpoint=คำขอ(จุด)
blueideauser.showuser
หากคุณต้องการเห็นผลให้ดูที่นี่: http://www.5do8.com/net/aspclass/class.asp
คลาสที่ควบคุมการอ่านข้อมูลฐานข้อมูล:
รหัสที่มาอ้างอิง
'ชื่อ: ado_5do8
'ฟังก์ชั่น: อ่านการดำเนินการต่างๆของฐานข้อมูล
'แหล่ง-หมู่บ้านเกษตรกรรม http://www.5do8.com http://www.Blueidea.com-5do8
'การสร้าง: 5do8
'ติดต่อ:[email protected]'
'อัปเดต: 13 พฤศจิกายน 2548
'การอนุญาต: คะแนนเว็บไซต์ Blue Ideal เกิน 3,000 คะแนน ผู้ใช้ที่ลงทะเบียนทั้งหมดของหมู่บ้าน Gengyun
'อินเทอร์เฟซของคลาส: 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 แล้ว
ลดแสง=r2
อื่น
ลดแสง=r1
สิ้นสุดถ้า
อื่น
ลดแสง=0
จบถ้า
litter_in=dimrr
ฟังก์ชันสิ้นสุด
'------------------------------------------------ - ---------------
ฟังก์ชั่นส่วนตัว killint (i, killstr, killsub)
ถ้าไม่ใช่ IsNumeric(i) แล้ว
ฉัน=ฆ่าstr
ElseIf i<=0 จากนั้น
i=killsub
จบถ้า
killint=Int(ซ้าย(i,5))
ฟังก์ชันสิ้นสุด
'------------------------------------------------ - ---------
startconn ส่วนตัวย่อย ()
เมื่อเกิดข้อผิดพลาด ดำเนินการต่อต่อไป
ตั้งค่า conn=server.CreateObject(adodb.connection)
strconn=ผู้ให้บริการ=Microsoft.Jet.OLEDB.4.0;แหล่งข้อมูล= & Server.MapPath(sqlstr)
conn.open strconn
หากผิดพลาดแล้ว
ผิดพลาด เคลียร์
SetConn=ไม่มีอะไร
Mess=เกิดข้อผิดพลาดและไม่สามารถเชื่อมต่อกับฐานข้อมูลได้
ตอบกลับเขียน (ระเบียบ)
การตอบสนองสิ้นสุด
อื่น
Mess=เชื่อมต่อกับฐานข้อมูลเรียบร้อยแล้ว.......<br/>
ตอบกลับเขียน (ระเบียบ)
สิ้นสุดถ้า
จบหมวดย่อย
'------------------------------------------------ - ---------------
closeconn ส่วนตัว ()
เชื่อมต่อปิด
ตั้งค่า conn=ไม่มีอะไร
response.write(<strong style='color:red'>ปิดการเชื่อมต่อ</strong>...<hr/>)
จบย่อย
'------------------------------------------------ - ---------------
ตัวปิดย่อยส่วนตัว()
RS.ปิด
ตั้งค่า rs=ไม่มีอะไร
response.write(<strong style='color:#085420'>ปิดฐานข้อมูล RS</strong>.....<br/>)
จบหมวดย่อย
'------------------------------------------------ - ---------------
ทรัพย์สิน รับการครอบครอง
havese=เซสชัน
สิ้นสุดคุณสมบัติ
คุณสมบัติ Let havese(yoursession)
Isession=เซสชันของคุณ
ถ้า yoursession= แล้ว
isession=nodef
สิ้นสุดถ้า
สิ้นสุดคุณสมบัติ
'------------------------------------------------ - ---------------
การสร้างฟังก์ชันสาธารณะ (arraydata)
ถ้า IsArray(arraydata) แล้ว
makear=arraydata
อื่น
makear=อาร์เรย์(0,0,0,0)
สิ้นสุดถ้า
ถ้า Isession= จากนั้น
isession=nodef
จบถ้า
เซสชั่น (ไอเซสชั่น) = makear
ฟังก์ชันสิ้นสุด
'------------------------------------------------ - ---------------
ฟังก์ชั่นส่วนตัว getsession()
thisget=เซสชัน(เซสชัน)
ถ้าไม่ใช่ IsArray (thisget) งั้น
thisget=อาร์เรย์(0,0,0,0)
สิ้นสุดถ้า
Getsession=สิ่งนี้ได้รับ
สิ้นสุดฟังก์ชัน
'------------------------------------------------ - ---------------
คุณสมบัติ GetConnectString
ConnectString = sqlstr
สิ้นสุดคุณสมบัติ
คุณสมบัติให้ ConnectString (str)
sqlstr = STR
สิ้นสุดคุณสมบัติ
'------------------------------------------------ - ---------------
คุณสมบัติรับ getid
getid = ไอไอดี
สิ้นสุดคุณสมบัติ
คุณสมบัติ ให้ getid(id)
ไอไอดี = ไอไอดี
สิ้นสุดคุณสมบัติ
'------------------------------------------------ - ---------------
คุณสมบัติ รับได้
gettable = ใช้งานได้
สิ้นสุดคุณสมบัติ
คุณสมบัติ Let gettable(ตาราง)
โต๊ะ = โต๊ะ
สิ้นสุดคุณสมบัติ
'------------------------------------------------ - ---------------
'------------------------------------------------ - -----------------
ฟังก์ชั่นสาธารณะ readarraysession (iStart, ipageno, irowid)
rowid=killint(อิโรวิด,0,0)
เริ่มต้น = killint (istart, 0,0)
pageno=killint(ipageno,5,5)
ข้อมูล=getsession
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;พื้นหลัง-สี:#ccc; '>ช้าลง ไม่แนะนำให้คลิก--><a href=?k=list&id=&data(0,irowloop)&>อัปเดต</a></span></li>)
ต่อไป
Response.Write </ul><div style='top:20px;พื้นหลัง-สี:#ccc;สี:#020;font-weight:bold;bordr-top:2px solid #008;padding:10px 0;สี: #b00'>รายการ (<a href=default.asp>กลับสู่โหมดปกติ</a>):
ถ้าเริ่ม> 0 แล้ว
Response.Write <A HREF=?k=read&Start= & iStart-ipageno &&pageno= & ipageno & >ก่อนหน้า</A>
สิ้นสุดถ้า
ถ้า iStop < iRows แล้ว
การตอบสนองเขียน <A HREF=?k=read&Start= & iStart+ipageno &&pageno= & ipageno & >ถัดไป</A>
สิ้นสุดถ้า
การตอบสนองเขียน</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(ข้อมูล(2,rowid))&<h5>+-----&server.htmlเข้ารหัส(ข้อมูล(3,rowid))&)
response.write(<div>)
จบถ้า
ฟังก์ชันสิ้นสุด
'------------------------------------------------ - ---------------
ฟังก์ชั่นสาธารณะ list_ids()
sql3=select * จาก &itable& โดยที่ id=&iid&
เริ่มคอนน์()
ตั้งค่า rs=conn.execute(sql3)
ถ้า rs.eof และ rs.bof แล้ว
ข้อมูล=อาร์เรย์(0,0,0,0)
อื่น
ข้อมูล=Rs.GetRows()
สิ้นสุดถ้า
ผู้ใกล้ชิด
ปิดคอน
response.write(UBound(ข้อมูล)&:)
การตอบสนองเขียน (server.htmlencode (ข้อมูล (2,0)))
สิ้นสุดฟังก์ชัน
'------------------------------------------------ - ---------------
ฟังก์ชั่นสาธารณะ rs_top (หมายเลข, ตาราง, whe)
เริ่มคอนน์()
sql=เลือกด้านบน &num& * จาก &table&
sql2=เลือกจำนวน(*) เป็น szd_count จาก &table& &whe&
ตั้งค่า rs=conn.execute(sql2)
szd_count=rs(szd_count)
ผู้ใกล้ชิด
ตั้งค่า rs = Conn.Execute (sql)
ข้อมูลสลัว
ถ้าอาร์เอสอีฟแล้ว
ข้อมูล=ไม่มีข้อมูล
อื่น
ข้อมูล=Rs.GetRows()
จบถ้า
ผู้ใกล้ชิด
ปิดคอนน์()
เซสชันการโทร (ข้อมูล)
ฟังก์ชันสิ้นสุด
'++++++++++++++++++++++++++++++++++++++++++++++++ + +++++++++
จบคลาส
เมื่อใช้:
การกระทำที่สลัว
การกระทำ = คำขอ (k)
ถ้าการกระทำ=ดูแล้ว
โทร.ดูใหม่
ElseIf action=list จากนั้น
รายการโทร()
ElseIf action=read แล้ว
โทรอ่าน()
อื่น
โทรฟฟ์()
จบถ้า
ย่อย()
-
<form style=border-top:2px solid #008;border-bottom:2px solid #008;margin:auto;สีพื้นหลัง:#eee;padding:20px 5px;color:#008;font-weight:bold;>
<label>จำนวนข้อมูลทั้งหมดที่แสดง:<input name=n type=text maxlength=4 size=10 />จำนวนหน้าต่อหน้า:<input name=pagesize type=text maxlength=4 size=10 value=5/> <ชื่ออินพุต =ประเภท arrstart=ค่าที่ซ่อนอยู่=0></ฉลาก>
<h5 style=border-top:1px solid #000;padding:5px 0> การดำเนินการ:<input name=k type=submit value=view /></h5>
</form> <%สิ้นสุดย่อย%>
<%ย่อยดูใหม่()
f_num=killint(คำขอ(n),1,1)
pagesize=killint(คำขอ(pageno),5,5)
arrstart=killint(คำขอ(เริ่มต้น),0,0)
rowid=killint(คำขอ(rowid),0,0)
ตั้งค่า cs=new ado_5do8
cs.ConnectString=ข้อมูล/a.mdb
cs.havese=shi
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=คิลลินท์(id,1,1)
ตั้งค่า listid=new ado_5do8
listid.ConnectString=ข้อมูล/a.mdb
listid.getid=id
listid.gettable=site_szd
listid.list_ids()
จบหมวดย่อย
อ่านย่อย()
response.write<div style='พื้นหลัง-สี:#ccc;padding:20px 0;color:080;font-weight:bold;border-bottom:2px solid #008'>การวิเคราะห์หน้าเสร็จสมบูรณ์ โปรดอัปเดต เลือก <a href=default.asp>กลับสู่โหมดทั่วไป</a>พารามิเตอร์: เริ่มต้น, องค์ประกอบเริ่มต้น; pageno, จำนวนรายการต่อหน้า</div>
pagesize=killint(คำขอ(pageno),5,5)
arrstart=killint(คำขอ(เริ่มต้น),0,0)
rowid=killint(คำขอ(rowid),0,0)
ตั้งค่า cs=new ado_5do8
cs.havese=shi
cs.readarraysession arrstart, pagesize, rowid
จบย่อย
ฟังก์ชั่น killint(i,killstr,killsub)
ถ้าไม่ใช่ IsNumeric(i) แล้ว
ฉัน=ฆ่าstr
ElseIf i<=0 จากนั้น
i=killsub
จบถ้า
killint=Int(ซ้าย(i,5))
ฟังก์ชันสิ้นสุด
-