直播中
記得我在大約半年前給大家寫過一篇<<面向?qū)ο髲娜嗽斓厍蛘勂?gt;>,當(dāng)時(shí)是由于看到一本小說(shuō)的啟發(fā),發(fā)現(xiàn)任何東西都可以用面向?qū)ο蟮乃枷雭?lái)看。我現(xiàn)在還是簡(jiǎn)單談一下吧,面向?qū)ο鬅o(wú)非就是把世間萬(wàn)物當(dāng)做一個(gè)類,要想使用類做事,就必須創(chuàng)建類的實(shí)例。這很好理簡(jiǎn),比方人是一個(gè)類,我們總不能說(shuō)叫人去做事吧(這樣沒有針對(duì)性),我們往往說(shuō)叫張三 or 李四去,這張三 or 李四就是人這個(gè)類的一個(gè)實(shí)例。這就是對(duì)象的概念。再講一下就是事件與動(dòng)作,舉個(gè)例子:起風(fēng)了,下雨了,收衣服了。起風(fēng)了,下雨了是事件,這個(gè)事件會(huì)激發(fā)收衣服這個(gè)動(dòng)作,這個(gè)動(dòng)作的執(zhí)行者就是對(duì)象。如果大家學(xué)過SQL Server的觸發(fā)器,我想對(duì)這一點(diǎn)思想會(huì)更清楚。面向?qū)ο筮€比較重要的就是繼承(Inherits)與多態(tài)。這很好理解,比方,張三會(huì)收衣服,張三生的兒子繼承了張三的特點(diǎn),也會(huì)收衣服,這就是繼承,而且說(shuō)不定張三的兒子還會(huì)開車,這就是多態(tài)。
好了,對(duì)于面向?qū)ο罄斫馕揖驼f(shuō)這么一點(diǎn),還是說(shuō)一下在asp.net中如何用面向?qū)ο蟮挠^點(diǎn)來(lái)編程吧。我們?cè)诰巜eb程序時(shí),通常要要處理:UI(用戶界面,也就是數(shù)據(jù)的顯示)與代碼(如何處理數(shù)據(jù)的Code(代碼)。為了達(dá)到UI與Code的完全分開,我們把UI當(dāng)作一個(gè)對(duì)象,Code當(dāng)作另我一個(gè)對(duì)象。當(dāng)然我們要研究這兩個(gè)對(duì)象的關(guān)系,還記得我們?cè)诰嶢SP程序時(shí)把同一段代碼Copy到很多頁(yè)面,看來(lái)code是父類了,UI是子類了。不過他們都是從 System.Web.UI.Page繼承過來(lái)。理清了類的關(guān)系,我們不難理解代碼UI與Code分開的思想了。
關(guān)系圖:
引入名稱空間:using System.Web.UI
父類 page→ 很多子類Code(*.cs文件)→很多子子類 UI(*.aspx文件)
因?yàn)槲抑饕窍氪蠹伊私膺@種編程思想,所以我只舉一個(gè)簡(jiǎn)單的例子,我想大家有了思想,再就是多找實(shí)例來(lái)看了。
文件兩個(gè):
UI類: default.aspx 主要用來(lái)顯示數(shù)據(jù),用天DataGrid控件
Code類: default.aspx.cs 主要用來(lái)建立數(shù)據(jù)聯(lián)接、查詢、綁定數(shù)據(jù)于DataGrid控件的
里面我創(chuàng)建了自己的namespace名叫vagrant,以及類MyVagrant
數(shù)據(jù)庫(kù): data,里面有一個(gè)關(guān)系表student
為了說(shuō)明default.aspx類是從default.aspx.cs 繼承過來(lái)的,需要在default.aspx申明:
<%@ Page language="c#" Codebehind="default.aspx.cs" Inherits="vagrant.MyVagrant" %>
Codebehind表明父類的源文件,Inherits="vagrant.MyVagrant" 表明該文件是從哪個(gè)類繼承下來(lái)的。
現(xiàn)在給出源文件
default.aspx代碼:
<%@ Page language="c#" Codebehind="default.aspx.cs" Inherits="vagrant.MyVagrant" %>
<HTML>
<HEAD>
</HEAD>
<body>
<form id="Form1" method="post" runat="server">
<asp:datagrid id="MyDataGrid" runat="server"
style="Z-INDEX: 101; LEFT: 197px; POSITION: absolute; TOP: 48px"
BorderStyle="Ridge" GridLines="None" BorderWidth="2px" BorderColor="White"
BackColor="White" CellPadding="3" CellSpacing="1" Width="494px" Height="143px">
<HeaderStyle Font-Bold="True" HorizontalAlign="Center" ForeColor="#E7E7FF" VerticalAlign="Middle" BackColor="4A3C8C" />
<ItemStyle HorizontalAlign="Center" ForeColor="Black" VerticalAlign="Middle" BackColor="#DEDFDE" />
</asp:datagrid>
</form>
</body>
</HTML>
default.aspx.cs 文件代碼 注意:需要編譯
/*
功能說(shuō)明:default.aspx.cs用來(lái)將UI與源代碼分開,此為代碼部分,需要編譯
Created By vagrant
2001.10.17
個(gè)人主頁(yè):http://www.weavedream.net
*/
//引入必須的名稱空間
using System;
using System.Data;
using System.Data.SqlClient; //引入使用SQL數(shù)據(jù)庫(kù)所必須的名稱空間
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
namespace vagrant //創(chuàng)建自己的名稱空間
{
public class MyVagrant :Page //我的類MyVagrant是從類System.Web.UI.Page類繼承過來(lái)的
{
protected DataGrid MyDataGrid;
private void Page_Load(object sender, System.EventArgs e)//頁(yè)面裝載初始化,可檢查頁(yè)面是不是第一次被處理
{
// 第一步:建立數(shù)據(jù)庫(kù)聯(lián)接,用面向?qū)ο蟮挠^點(diǎn)就是創(chuàng)建一個(gè)SQL數(shù)據(jù)庫(kù)聯(lián)接對(duì)象的實(shí)例,并初始化
SqlConnection MyConnection=new SqlConnection("Server=(local);DataBase=data;UID=sa;PWD=;");
//第二步:讀取數(shù)據(jù)庫(kù),來(lái)面向?qū)ο蟮挠^點(diǎn)就是創(chuàng)建一個(gè)查詢對(duì)象的實(shí)例,并初始化
SqlDataAdapter MyCommand=new SqlDataAdapter("select * from student",MyConnection);
//:第三步:存儲(chǔ)數(shù)據(jù)
DataSet ds=new DataSet();
MyCommand.Fill (ds,"vagrant");
// 第四步:綁定數(shù)據(jù)
MyDataGrid.DataSource =ds.Tables ["vagrant"].DefaultView
MyDataGrid.DataBind ();
}
}
}