多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > php開源 > php教程 > C#之三十七 實體類

C#之三十七 實體類

來源:程序員人生   發布時間:2016-06-21 11:40:26 閱讀次數:2491次

3.1      使用實體類構建3層結構概述

 

在上1章中的3層架構中,我們使用DataSet來進行數據的傳遞,但在OOP的開發中,有很大的局限性:

1.   DataSet不具有良好的面向對象特性,使用起來不夠直觀、方便。

2.   對DataSet中的數據進行查找時容易出錯。例如:我們要查詢DataSet中學員信息DataTable中的某個值時,必須指定行索引與列名,這只是1個簡單的查詢,如果略微復雜就需要遍歷所有的行集。

3.   由于DataSet的核心結構與數據庫的核心結構完全相同,所以它把數據結構完全暴露在表示層和業務邏輯層。


使用實體類的主要好處來自1個簡單的事實,即實體類是完全受我們控制的對象,它具有面向對象的基本特點。我們可以自由地向實體類添加行動(如:判斷是不是為空,如果為空指定默許值,這只是1個簡單的擴大。其實和DataSet1樣,業務實體也承載著1個數據載體的任務,實體類在3層結構中的利用以下圖所示:



                                                 3.2 業務實體類

 業務實體類術語叫“Data Transfer Object(數據傳輸對象)”,主要用來在各層間傳輸數據,因此沒有定義方法,固然有需要定義1些驗證是不是有效的方法。


                                                 3.3 實體類的使用

 

在表示層中使用實體類需要做兩件事。

(1)將解析實體對象中封裝的數據展現給用戶。

當表示層接收到從業務邏輯層返回的實體對象,并將實體對象中封裝的信息展現給用戶時,表示層需要對實體對象中封裝的信息進行解析。表示層對實體對象的解析分兩種情況:

第1種是對單個實體對象進行解析,這類解析1般經常使用的數據展現控件為:TextBox(文本框)、Label(標簽)等控件,它們通常有1個Text屬性用于展現數據。可以通過業務實體對象的屬性取得實體對象中的數據,將取得的屬性值賦給“Text”屬性。

第2種是對實體對象集合進行解析。將多個業務實體對象封裝到List中稱為實體對象集合,對實體對象集合的解析,Visual Studio中已封裝好的控件如:DataGridView(數據表格視圖)控件、ComboBox(下拉列表)控件等,它們都有1個數據源屬性(DataSource),可以直接將實體對象集合綁定到數據源屬性上


(2)將用戶要求的數據封裝到實體對象中

在表示層,我們如何將用戶要求的數據封裝到實體對象中,我們首先需要實例化實體對象,然后將用戶的要求賦值給實體對象中的對應的屬性。


3.3.1在表示層使用實體類:以下圖所示:



表示層使用實體類用于封裝數據或對實體數據進行解析。


3.3.2     在業務邏輯層中使用實體類


業務邏輯層實體類的使用不同于表示層,它主要負責傳輸實體對象,并對實體對象中封裝的數據進行處理。需要做兩件事情:

(1)將接收到得實體對象傳輸到下1層。

當業務邏輯層接收到裝有信息的業務實體對象后,根據要求或響應將實體對象傳到下1層。

(2)根據用戶要求對實體對象中的數據進行處理。

當我們使用實體類開發3層利用程序時,數據處理來自兩個方面。

1.           業務實體對數據的處理,實體類本身是由屬性組成的,而大多都是可讀可寫屬性。所以,根據要求的不同可以給屬性設置不同的值,例如:當用戶的要求為空時,給屬性設置默許值。

2.           業務邏輯對數據的處理,例如:用戶登錄,用戶的身份分管理員和普通員工,此時業務邏輯層根據用戶身份分別進行不同的處理。

業務邏輯層使用實體類以下圖所示:

3.3.3 在數據訪問層中使用實體類


在數據訪問層中使用實體類需要做兩件事情。

(1)將數據庫中的數據封裝到實體對象中或將多個實體對象封裝成集合。

當用戶的要求時數據查詢要求時,數據訪問層需要實現對數據庫的查詢訪問。當要求的結果只有1條記錄時,我們將這條記錄封裝成1個實體對象。當要求的結果是多條記錄時,我們將每條記錄封裝成1個實體對象,然后再將多個實體對象封裝成集合(將多個實體對象封裝到List中)。

(2)將實體對象中的數據保存到數據庫中。

當用戶的要求是數據保存要求時,數據訪問層首先對實體對象中封裝的數據進行解析,然后將解析出的數據保存到數據庫中。

數據訪問層使用實體類以下圖所示:

1

 

2

 

 



    實體類為我們全部項目的開發提供了很大的靈活性。它把數據庫中的表用面向對象的思想抽象成類,使數據作為對象來使用,消除關系數據與表之間的差別,在3層結構開發中使用實體類更有助于項目的保護、擴大,更能體現3層結構開發的優勢。

 

通過上面的學習,我們學到了以下知識:

n       為何在3層結構中使用實體類、實體類的含義及如何自定義實體類。

n       如何將用戶要求的數據封裝到實體對象中,和如何解析得到實體對象中的數據。

n       如何返回多個實體對象。



3.4 項目實戰:使用業務實體類代替DataSet

在本章我們使用使用業務實體類代替DataSet實現3層結構,首先我們在3層結構框架下添加1個業務實體項目,以下圖所示:


在第1章的基礎上,我們現將完本錢章任務的步驟概括以下:

(1)實現業務實體

①、         新增項目Model

②、         在其他項目中添加對業務實體項目的援用

③、         添加需求所用數據庫中表對應的實體類

④、         編寫業務實體類

(2)設計用戶界面

(3)實現數據訪問層

(4)實現業務邏輯層

(5)實現表示層數據綁定


3.4.1 創建業務實體項目

 

(1)在已搭建的3層結構解決方案上,右鍵單擊項目名,選擇“添加”->“新建項目”命令,以下圖所示:


 


(2)在彈出的“添加新項目”對話框當選擇項目類型為“Visual C#”,模板為”類庫”,并填寫項目名稱為“Model”,單擊“肯定”按鈕,以下圖所示:


(3)業務實體項目添加終了。根據業務實體在3層結構中的作用與地位,我們需要添加表示層、數據訪問層和業務邏輯層對業務實體的依賴。依賴關系以下圖所示:


下面我們根據本章任務所需,添加業務實體類。

(1)在業務實體項目“Model”項目上右擊,選擇“添加”->“新建項”命令,以下圖所示:


(2)順次添加管理員實體類(Admin)、學期信息類(Sem)、學生信息類(Student)、科目信息類(Subject)。學期信息類(Sem)代碼以下:

示例1:

using System;

using System.Collections.Generic;

using System.Text;


namespace Model

{

    [Serializable]

    public class Sem

    {

        private intid;


        public intId

        {

            get {return id; }

            set { id = value; }

        }

        privatestring semName;


        publicstring SemName

        {

            get {return semName; }

            set {semName = value; }

        }

        privateshort lessonNum;


        public shortLessonNum

        {

            get {return lessonNum; }

            set {lessonNum = value; }

        }

        privatefloat spending;


        public floatSpending

        {

            get {return spending; }

            set {spending = value; }

        }


        public Sem()

        {


        }

    }

}


根據數據編寫實體類時,我們需要注意以下幾點。

(1)表中的每個字段,對應實體類中的1個private(或protected)類型的字段和1個public類型的屬性。

(2)表中字段的類型要與屬性的類型相匹配。例如:數據庫中的char、varchar類型與C#中的string類型匹配。

(3)在業務實體類前面1半要加上序列化屬性[Serializable],它會對實體類中的所有字段、屬性進行序列化處理,序列化的主要目的是為了提高數據傳輸中的性能與安全性。


3.4.3 實現數據訪問層

 

    在編寫數據訪問層之前,首先接觸下using語句。using語句作為關鍵字,在第1學期主要用于援用命名空間。

    作為語句,using語句允許用戶定義1個范圍,并在此范圍內末尾自動釋放對象。例如在using語句范圍內定義了1個數據庫連接對象,當程序履行到using語句末尾時,將自動釋放此數據庫連接對象,從而大大簡化了代碼,并在1定程度上提高了資源使用效力。

    完本錢章任務需要使用的對象以下:

(1)實例化SqlConnection對象,實現數據庫連接。

(2)實例化SqlCommand對象,履行Sql命令。

(3)實例化SqlDataReader對象,讀取數據。

(4)使用實體對象傳遞數據。

(5)使用List傳遞實體對象集合。


當我們掌握了Ado.Net、實體類、List、using語句的使用時,我們現在實現對他們的綜合使用。


3.4.3 實現業務邏輯層


在實現業務邏輯層之前,我們對實現的步驟進行1個簡單概括。

(1)在業務邏輯處理類中援用數據訪問層命名空間、業務實體命名空間。

(2)實例化業務實體對象。

(3)實例化數據訪問對象。

(4)調用數據訪問功能。

(5)實現業務邏輯功能。

根據數據訪問層實現的功能,業務邏輯層主要完成根據不同的用戶類型調用不同的數據訪問方法,通過判斷用戶類型得到學員用戶的用戶狀態信息。


3.4.4實現表示層數據綁定

 

表示層主要實現的功能有:根據用戶輸入的信息判斷是不是為空,是不是為有效狀態,驗證是不是通過等。


//本章代碼,詳見代碼同享區


小結:

n       用OOP實現3層架構時,業務實體類是3層之間數據傳遞的載體。

n       在使用實體類開發3層結構時,用戶的要求需要返回實體對象集合時,可以使用List實現。

n       using關鍵字在C#中有兩種用處

1.   作為指令,援用命名空間;

2.   作為語句,用于定義1個范圍,在此范圍末自動釋放對象。

n     在3層結構中,我們使用實體類消除關系數據庫與類之間的差別,以更好地使用OOP的思想來架構我們的系統。


作業:

完善第2章自己已架構好的MIS系統,豐富完善數據訪問層、業務邏輯層和表示層,使用業務實體類來在各層之間傳輸數據。

















生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 24小时中文乱码字幕在线观看 | 国产人做人爱免费视频 | 成人在线网 | 美女福利视频国产片 | 国产成人精品日本亚洲专 | 中文字幕免费在线视频 | 国产精品久久毛片蜜月 | 九月丁香激情综合婷婷玉立 | 亚洲欧美日本欧美在线播放污 | 国产精品久久久久久五月尺 | 国产日韩精品欧美一区视频 | 国产精品自拍在线观看 | 国产精品免费aⅴ片在线观看 | 精品国产麻豆免费网站 | 亚洲国产成人久久一区二区三区 | 欧美一区二区三区在线观看 | 武则天一级淫片免费放 | 黑人欧美一级毛片 | 亚洲区小说区激情区图片区 | 欧美在线成人午夜影视 | 成年人免费看视频 | 自拍视频网站 | 色视频在线播放 | 最新69国产成人精品视频69 | 国产精品秋霞午夜 | 亚洲欧美人成人综合在线50p | 国产精品福利视频手机免费观看 | 亚洲国产第一区二区三区 | 亚洲成人一区二区 | 羞羞视频网站免费入口 | 高清在线亚洲精品国产二区 | 久久久久久国产精品三级 | 不卡一级aaa全黄毛片 | 日韩欧美一区二区三区不卡在线 | 韩国精品一区二区久久 | 亚洲成人在线免费观看 | 爱操综合| 手机看片国产免费 | 一区二区福利视频 | 琪琪jav | 亚洲生活片 |