我所理解的物件導向

2021-08-03 14:43:36 字數 1395 閱讀 1153

剛開始接觸物件導向的時候,從網上查了很多資料,也和其他人討論了很多,究竟什麼是物件導向,物件導向與面向過程有什麼區別。由於開始沒有實實在在的做過工程。一般教科書上都是寫到:

物件導向的核心就是封裝、繼承、多型。然後接著教科書就會舉乙個例子:定義乙個學生類,然後定義這個學生的屬性(姓名、性別、生日、學號等等),最後定義幾個這個學生的方法,比如說話,學習等,然後在控制台程式中輸出乙個學生說話...

這樣說的很對,我也非常相信這個就是物件導向,但是這樣的物件導向和我們工程中用到的似乎不一樣。我們在三層架構中的dal層一般只有幾個方法,屬性到**了?其他地方也是一樣,每個類幾乎都不是我們想象的物件導向。

我思考了一下明白,其實這個就是工程和實驗的區別,學生是在做實驗,根本沒有考慮效率、維護等,而工程師必須要考慮的。那麼,三層架構中是如何詮釋物件導向的呢?

在三層設計中,最能體現物件導向的地方就是資料庫的設計。在資料庫的設計中,我們去提取物件,也就是對業務進行抽象。抽象成乙個個的表,每乙個表就是乙個物件。這個是物件導向的第一步,也是最關鍵的一步,可以這麼說,如果乙個系統的資料庫設計完成了,那麼工作量也就完成了70%了,其他的基本上都是乙個固定的東西。

乙個完整的物件,應該有屬性、方法,其中,我們的的三層架構中,如何去封裝乙個物件呢?在傳統的教學中,習慣用我上面說到的例子。但是在工程中,我們通常把乙個物件去拆分開來,把這個物件的屬性放到實體類中,為的是方便各層吊桶,讓一行記錄作為乙個物件。

把這個物件的操作方法放到另乙個類中,這樣減少了耦合性,讓類的職責更加明確。另外把與客戶打交道的邏輯和顯示,放到了bll和ui裡面,構成了三層架構,其實真正的物件應該就是dal和entity。

這樣就和我們傳統的物件導向相符合了

至於,繼承和多型,只是一種對物件的提煉,讓他們更加符合自然規律,讓**更加有效率,可靠。

物件導向設計分成五個層次:選擇物件導向模型技術(omt),物件導向分析(ooa), 物件導向設計(ood),物件導向測試(對此理解不是很深入)

物件模型中整體與部分是聚合,檔名與檔案是限定,雇主與雇員是關聯。

動態模型一是狀態圖,一是事件追蹤圖。

狀態圖是描述乙個物件的個體行為,事件追蹤圖是多個物件所表現出來集體行為。

功能模型有多個資料流圖組成 ,允許加入控制流 

類與物件層:類與物件,解決中所有的類與物件

結構層:描述整體結構,泛化—特化結構表示類的繼承性

主題層:物件歸類到各個主題中,把有關的乙個主題邊框框起來; 主題可以看成是高層的模組或子系統,表示的是物件導向模型的整體框架

設計分為兩個階段:高層設計(成組的類打包,高度內聚),類設計

單元測試的單位是類,而且組裝測試所使用的方法不是自頂向下,也不是自底向上,而是依照類的特性的方式分為了:依據線索測試;依據應用測試,確認測試的目的是為了測試需求,看是否達到了使用者的要求。

我所理解的js物件導向

js物件導向 title head body h1 沒有物件還非要強行建立物件 h1 body script 建立物件 用 new 的方式 varanimal newobject 用物件字面量的方式 varanimal 第一種寫法 varanimal animal.code r007 animal....

我所理解的前端

轉眼間,在鵝廠的實習已經過去三個多月,涉及到實習生轉正留用的考核流程也逐步開始了。帶著一堆疑問,以及自己實習期間的心得體會,與導師暢談了一番。他作為資深前端工程師,就前端領域及我個人未來的職業規劃等方面分享了他自己的經驗。這次與導師的溝通讓我受益匪淺,現簡單總結如下。前端知識學習路線 首先,當然是就...

我所理解的陣列

陣列 一 一維陣列 1 陣列的建立 陣列顧名思義是含有相同元素的集合,類似我們高中數學所學習的集合 例如int arr 10 char arr1 2 float arr2 3 double arr3 5 注意 切記 這個中要給常量,不能使用變數。2 陣列的初始化 初始化是指 在陣列的建立同時並賦予合...