OOP實體物件優化

2021-10-03 06:08:38 字數 2581 閱讀 9139

定義和使用不方便,很容易把引數寫錯

當物件的屬性變化時,方法的引數必須改變

引數的改變,造成物件介面不穩定,降低了可維護性、可擴充套件性和安全性,與物件導向設計原則相悖

不符合物件導向中「低耦合,高內聚」的要求

後台方法編寫依賴資料庫完成

前台**實現依賴後台**方法的完成,團隊中無法並行開發

為類的設計提供乙個規範,穩定物件的介面

不同開發人員只需要按照規範介面即可同步開發

使用「實體類」作為方法引數,穩定對外介面

只包含屬性和構造方法的類稱為實體類

實體類屬性和資料庫實體屬性一一對應(實體類中的屬性和資料表中的字段的名稱和資料型別保持一致)

資料庫中有多少張表,程式中有多少實體類;每張表有多少列,對應的實體類有多少屬性。

實體類

class

student

public

string name

public

string ***

public

int age

public

int subid

}

實體類對應的資料訪問類

class

studentserver

','',,)"

, stu.name,stu.***,stu.age,stu.subid)

;return sqlhelper.

executenonquery

(sql);}

public

intdeletestudent

(student stu)

", stu.id)

;return sqlhelper.

executenonquery

(sql);}

}

方法變得簡潔,物件屬性化,不影響介面的穩定性

解析物件的屬性,組合sql語句

實體類除了和資料表對應之外,通常都有對應的資料訪問類

實體類和對應的資料訪問類,其實是乙個物件的屬性和方法的分離,這種分離是為了更好的體現系統可維護性

實體類的使用使得程式設計人員可以完全脫離對資料庫的依賴

同時介面開發人員和後台資料訪問類的開發人員可以明確分工

封裝資料:將使用者輸入的資料或後台查詢的資料,封裝為實體物件,簡化介面

傳遞資料:在使用者介面和資料訪問類之間傳遞資訊

在之後物件導向設計中有其他應用

使用list集合封裝多個同型別物件

public list

getsubjectlist()

; list.

add(subject);}

reader.

close()

;return list;

}

問題:查詢所有的學生資訊,同時包括:姓名、性別、年齡、學習的課程

分析:查詢結果是屬於多個不同實體物件的資訊重組

當前問題:我們沒有定義能夠封裝不同實體物件資訊的實體類

不可能根據使用者查詢的要求進行單獨設計查詢實體類

如果單獨設計的實體類面對使用者的不同需求,經不起考驗

組合擴充套件實體是為了滿足使用者查詢而設計的實體類,一般由目前存在的業務實體類重新組合而成

class

studentaddsubject

public

subject objsubject

}

使用組合擴充套件實體封裝多個物件的資訊

public list

getstudentinforsub()

; stu.objsubject =

newsubject()

; list.

add(stu);}

reader.

close()

;return list;

}

主要通過繼承定義擴充套件實體,繼承原有實體物件,並擴充套件自己新加的屬性

class

teacherinforsub

:teacher

}

public list

getteacherinfors()

; list.

add(teacherinfor);}

reader.

close()

;return list;

}

查詢結果是查詢的目標表中的一行資料,這一行資料相當於是資料表中的乙個實體物件

實體類例項化乙個物件進行封裝資料

查詢結果是查詢的目標表中的多行資料,一行資料相當於資料表中的乙個實體物件,多行相當於多個實體物件

解決辦法

使用list< t >泛型集合封裝,「一般」實體封裝。

查詢結果是對於多張表進行聯合查詢的結果,一行資料相當於乙個由聯合表組成的乙個新的實體物件

解決辦法

採取「組合」擴充套件實體封裝及「簡單」擴充套件實體封裝兩種方案備選

OOP原則優化

原因 在程式中只要有哪個程式功能需要對資料庫進行訪問操作,那麼必須要有之前學習的四個步驟 建立資料庫連線物件 建立資料庫命令物件 針對不同的命令執行結果是否選擇使用另外兩個物件對結果進行處理 因此 決定使用物件導向的原則對資料庫的訪問操作功能進行單獨提取 復用的基本形式 編寫乙個通用的方法 復用技術...

OOP中擴充套件實體的應用

為什麼要對實體擴充套件 原因問題 查詢所有的學生資訊,同時包括 姓名 性別 年齡 學習的課程 分析 查詢結果是屬於多個不同實體物件的資訊重組 當前問題 我們沒有定義能夠封裝不同實體物件資訊的實體類 結論不可能根據使用者查詢的要求進行單獨設計查詢實體類 如果單獨設計的實體類面對使用者的不同需求,經不起...

oop典型應用 實體類

1.什麼是實體類 簡單地說就是描述乙個業務實體的 類 業務實體直觀一點理解就是整個就是整個軟體系統業務所涉及的物件。eg myschool系統中的班級,學生,年級等都是業務實體,雷電 遊戲中的飛機,子彈都可以看作業務實體 實體類是分層構造中傳遞資料的重要工具,與dataset相比,實體類是強型別的,...