發(fā)文章
發(fā)文工具
撰寫
網文摘手
文檔
視頻
思維導圖
隨筆
相冊
原創(chuàng)同步助手
其他工具
圖片轉文字
文件清理
AI助手
留言交流
萬物皆對象?No 抽象?No 復用?No
那到底是什么呢?
萬物皆對象。問了幾位網友,這是答復之一??吹搅四硞€事物就來一個class?顯然沒有那么簡單。至少也要抽象一下呀。
抽象。比如一些文章里說,可以根據(jù)貓貓、狗狗抽象出來一個Animal出來,然后定義Cat,繼承Animal,在定義Dog,也是繼承Animal。抽象就是本質了嗎?那么為什么要抽象,而不直接定義Cat、Dog呢?這么“折騰”一下的目的是什么呢?或者說有什么好處?
復用。Cat可以復用Animal里的屬性、方法等,Dog也可以復用Animal里的屬性方法。這樣看來復用好像就是本質了。
哎,說道復用我就比較郁悶。我是從面向過程學過來的,經過漫長艱苦的學習,現(xiàn)在還沒有完全轉到面向對象。好像跑題了。
面向過程里就解決了復用的問題,定義一個過程(過程、函數(shù))就可以達到復用的目的。別人有的,你也有,那不算什么優(yōu)勢。別人沒有的你有,那就是優(yōu)勢了。既然面向過程已經可以服用了,那么在面向對象里面也談復用,那還有什么優(yōu)勢呢?
面向過程可以達到復用的目的,但是有一個致命的缺點:混亂。定義出來的函數(shù)沒有層次,沒有管理。假設一個項目里有一萬個函數(shù),那么這些個函數(shù)就會雜亂無章的出現(xiàn)。要管理的話也只能按照頁面、窗體等來劃分??傊?,想要管理好面向過程里的眾多函數(shù)是一件頭痛的事情。
我覺得面向對象是有面向過程“進化”過來的,但是有人說面向對象是直接“蹦”出來的,不管他是怎么出來的了,總之他是很好的解決了“管理復用”的問題。
封裝(Class):把相關的屬性、方法、事件放在一起,化零為整,統(tǒng)一管理。該隱藏的隱藏,該暴露的暴露。這是管理的第一步。
====================
繼承:都封裝起來了,那么就失去了靈活性。如何保證靈活性呢?繼承(還有函數(shù)重載等)。也就是多態(tài)了。相同的放在父類,不同的放在子類。這是我的理解,當然你可以說這種理解是錯誤的。Class就好比一個大的家族,父類是根基,子類各有各的特點。正所謂:龍生九子各有不同。
子類可以復用父類里的屬性、方法、事件,這就是一種復用的管理方法。
組合(合成):父類、子類、抽象基類,這些都是一個家族里的關系,那么兩個家族有如何呢?組合。Has A,一個類里包含另一個類,通過這種方式來實現(xiàn)復用。這又是復用的一種管理方法。
接口:抽象基類是一個很好用的東東,比如DbCommand,用過的兄弟們都會體會到他的方便吧。但是他只能管同一個家族里的,另一個家族的就不行了。如果哪個數(shù)據(jù)庫(比如PostgreSQL)沒有繼承DbCommand怎么辦呢?接口就可以跨越不同的家族。當然接口也有一個致命的弱點,本身不能有任何的實現(xiàn)部分,他只能定義。
面向對象的各種特點都是為了“管理復用”,所以我覺得面向對象的本質就是“管理復用”。至于對象只是一種“表象”。
在多說幾句,我是不喜歡被所謂的“對象”所束縛的。以前問過,SQLHelp為什么要寫成靜態(tài)函數(shù)的形式,答曰:數(shù)據(jù)訪問是一個對象嗎?怎么實例化呢?
我覺得數(shù)據(jù)庫就是一個對象,數(shù)據(jù)訪問也是一個對象。數(shù)據(jù)訪問就是數(shù)據(jù)庫的一個“代言人”。我的數(shù)據(jù)訪問函數(shù)庫就是以DbCommand為中心人物,用起來非常的方便。
來自: 昵稱10504424 > 《C#》
0條評論
發(fā)表
請遵守用戶 評論公約
什么是面向對象思想
多態(tài)是說父類或接口的引用指向了子類對象,這就提高了程序的擴展性,也就是說只要實現(xiàn)或繼承了同一個接口或類,那么就可以使用父類中相應的方法,提高程序擴展性,但是多態(tài)有一點不好之處在于:父類引...
面試官:什么是面向對象?
什么是構造方法重載?1)構造方法。在程序員沒有給類提供構造方法的情況下,Java 編譯器會為這個類創(chuàng)建一個默認的無參構造方法。2)構造...
面向對象的軟件設計本質[ERP信息監(jiān)理 ||解決方案|系統(tǒng)分析|需求分析|業(yè)務模型|軟件工...
關于面向對象:面向對象就是以對象為中心。既然以對象為中心,面向對象所考慮的內容自然是對象、對象間的協(xié)作、對象的分類、類之間的關系等等,由此引申了出幾個重要的概念。how: 多態(tài)在C語言中通常用...
Kermit’s Gossip
—->繼承:這個押運員得是個人吧,應該有人的一切屬性(如眼耳鼻舌,受想行識),好吧,我不用重新實現(xiàn)這些,游戲中一般都有People的角色,從那里繼承就好了,于是,Escort就成了People的子類,他可...
終于明白了虛函數(shù)、純虛函數(shù)和接口的實用方法和意義
終于明白了虛函數(shù)、純虛函數(shù)和接口的實用方法和意義 從理論上來說,這三個概念很容易背的滾瓜爛熟,但是從大學畢業(yè)到現(xiàn)在,我都沒真正搞明白這三個東西的出現(xiàn),究竟是為了做到什么事情。在寫面向過程的...
【信管1.9】軟件工程(三)軟件設計與過程管理
【信管1.9】軟件工程(三)軟件設計與過程管理軟件工程(三)軟件設計與過程管理。概要設計又稱總體結構設計,主要是將系統(tǒng)的功能需求分...
面向對象設計7大原則
7大設計原則包括開閉原則、里氏替換原則、依賴倒轉原則、單一職責原則、接口隔離原則、組合/聚合復用原則、迪米特法則。面向對象可復用設計原則中最基礎的原則便是開閉原則(Open-Closed Principle,OC...
對面向對象設計原則的總結 - - CSDN技術中心
其他設計原則(里氏代換原則、依賴倒轉原則、合成/聚合復用原則、迪米特法則、接口隔離原則)是實現(xiàn)"開-閉"原則的手段和工具。3.3耦合(或者依賴)關系的種類:零耦合(Nil Coupling)關系:...
框架
框架??蚣埽‵ramework)是整個或部分系統(tǒng)的可重用設計,表現(xiàn)為一組抽象構件及構件實例間交互的方法;另一種定義認為,框架是可被應用開發(fā)者定制的應用骨架。這個定義是從框架內涵的角度來定義框架的,...
微信掃碼,在手機上查看選中內容