精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

軟件設計師:關于面向對象的一些思考

企業動態
首先我們要區分一下“基于對象”和“面向對象”的區別。

首先我們要區分一下“基于對象”和“面向對象”的區別。

基于對象,通常指的是對數據的封裝,以及提供一組方法對封裝過的數據操作。比如 C 的 IO 庫中的 FILE * 就可以看成是基于對象的。

面向對象,則在基于對象的基礎上增加了多態性。所謂多態,就是可以用統一的方法對不同的對象進行同樣的操作。當然,這些對象不能完全不同,而需要有一些共性,只有存在了這些共性才可能用同樣的方法去操作它們。我們從 C++ 通常的實現方法的角度來看,A 和 B 在繼承關系上都有共同的祖先 R ,那么我們就可以把 A 和 B 都用對待 R 的控制方法去控制它們。

為什么需要這樣做?

回到一個古老的話題:程序是什么?

程序 = 算法 + 數據結構

在計算機的世界里,數據就是一個個比特的組合;代碼的執行流程就是順序、分支、循環的程序結構的組合。用計算機解決問題,就是用程序結構的組合去重新排列數據的組合,得到結果。為了從龐大的輸入數據(從 bit 的角度上看,任何輸入數據都可能非常的龐大),通過代碼映射到結果數據。我們就必須用合理的數據結構把這些比特數據組合起來,形成數量更少的單元。

這些單元,就是對象。對象同時也包括了對它進行操作的方法。這樣,我們完成了一次封裝,就變成了:

程序 = 基于對象操作的算法 + 以對象為最小單位的數據結構

封裝總是為了減少操作粒度,數據結構上的封裝導致了數據數據的減少,自然減少了問題求解的復雜度;對代碼的封裝使得代碼得以復用,減少了代碼的體積,同樣使問題簡化。

接下來來看 基于對象操作的算法。這種算法必須將操作對象看成是同樣的東西。在沒有對象的層次上,算法操作的都是字節,是同類。但是到了對象的層次,就不一定相同了。這個時候,算法操作的是一個抽象概念的集合。

在面向對象的程序設計中,我們便少不了容器。容器就用來存放一類有共同抽象概念的東西。這里說有共同概念的東西,而沒有說對象。是因為對于算法作用于的集合,里面放的并不是對象實體,而是一個對實體的引用。這個引用表達的是,算法可以對引用的那一頭的東西做些什么,而并不要求那一頭是什么。

比如,我實現一個 GUI 系統(或是一個 3d 世界)。需要實現一個功能——判斷鼠標點選到了什么物件。這里,每個物件提供了一個方法,可以判斷當前鼠標的位置有沒有捕獲(點到)它。

這時最簡單的時候方法是:把所有可以被點選的物件都放在一個容器中,每次遍歷這個容器,查看是哪一個物件捕獲了鼠標。

我們并不需要可被點選的物件都是同類,只需要要求從容器中可以以統一方法訪問每個元素的是否捕獲住鼠標的這個判定方法。

也就是說,把對象置入容器時,只需要讓置入的東西有這一個判定方法即可。了解 COM 的同學應該明白我要說什么了。對,這就是 QueryInterface 的用途。com 的 query interface 就是說,從一個對象里取到一個特定可以做某件事情的接口。通常接下來的代碼會把它放在一個容器里,方便別處的代碼可以干這些事情。

面向對象的本質就是讓對象有多態性,把不同對象以同一特性來歸組,統一處理。至于所謂繼承、虛表、等等概念,只是實現的細節。

說到這里,再說一下 COM ,COM 允許接口繼承 ,但不允許接口多繼承。這一點是從二進制一致性上來考慮的。

為什么沒提實現繼承的事情?因為實現繼承不屬于面向對象的必要因素。而且,現在來看,實現繼承對軟件質量來說,是有負面影響的。因為如果你改寫基類的虛方法,就意味著有可能破壞基類的行為(繼承角度看,基類對象是你這個對象的一部分)。往往基類的實現早于派生類,并不能了解到派生類的需求變化。這樣,在不了解基類設計的前提下,冒然的實現繼承都是有風險的。這不利于軟件的模塊化分離和組件復用。

但是接口繼承又有什么意義呢?以我愚見,絕大多數情況下,同樣對設計沒有意義。但具體到 COM 設計本身,讓每個接口都繼承于 IUnknown 卻是有意義的。這個意義來至于基礎設施的缺乏。我指的是 GC 。在沒有 GC 的環境中,AddRef 和 Release 相當于讓每個對象自己來實現 RC (引用計數)的自動化管理。對于非虛擬機的原生代碼,考慮到 COM 不依賴具體語言,這幾乎是唯一的手段。另外 COM 還支持 apartment 的概念,甚至允許 COM 對象處于不同的機器間,這也使得 GC 實現困難。

QueryInterface 存在于每個 COM 接口中卻有那么一點格格不入。它之所以存在,是因為 COM 接口指針承擔了雙重責任,既指出了一個抽象概念,又引用了對象的實體。但從一個具體算法來看,它只需要對一組相同的抽象概念做操作即可。但它做完操作后,很可能(但不是必須)需要把對象放入另一個不同的集合中,供其它算法操作。這個時候,就需要 QueryInterface 將其轉換為另外一個接口。

但是,從概念上講,讓兩個不相關的接口相互轉換是不合邏輯的。本質上,其實在不相關的接口間轉換做的事情等價于:從一個接口中取得對對象的引用,然后調用這個對象的方法,取到新的接口。

如果去掉了 AddRef Release (依賴 GC )以及 QueryInterface (只在需要時增加一個接口獲得對象的引用),IUnknown 就什么都不剩了。那么接口繼承也完全不必存在。

回頭再來看程序語言。

C++ 提供了對面向對象的支持,但 C++ 所用的方法(虛表、繼承、多重繼承、虛繼承、等等)只是一種在 C 已有的模型上,追加的一種高效的實現方式而已。它不一定是最高效的方式(雖然很少能做到更高效),也不是最靈活的方式(可以考察 Ruby )。我想,只用 C++ 寫程序的人最容易犯的錯誤就是認為 C++ 對面向對象的支持的實現本身就是面向對象的本質。如果真的理解了面向對象,在特定需求下可以做出特定的結構來實現它。語言就已經是次要的東西了。

了解你的需求,區分我需要什么和我可以做到什么,對于設計是很重要的。好的設計在于減無可減。

你需要面向對象嗎?你需要 GC 嗎?你需要所有的類都有一個共同的基類嗎?你需要接口可以繼承嗎?你為什么需要這些?

【編輯推薦】

  1. 2011軟件設計師知識點:簡易應用規格說明技術
  2. 2011軟件設計師知識點:簡易應用規格說明技術
  3. 2011軟考軟件設計師知識點:基于工作流協同軟件
  4. 更多軟考資料請點擊51CTO軟考專題
責任編輯:張攀 來源: 網絡
相關推薦

2015-09-14 08:57:20

設計設計師

2012-06-07 10:17:55

軟件設計設計原則Java

2013-06-21 16:35:50

iOS 7設計蘋果開發iOS 7新特性

2017-12-21 07:54:07

2021-06-10 10:02:19

優化緩存性能

2021-11-23 20:41:05

對象軟件設計

2011-07-13 09:13:56

Android設計

2013-06-07 11:31:36

面向對象設計模式

2011-08-01 10:37:29

軟件項目管理

2012-12-19 09:36:49

測試自動化測試

2024-12-27 10:51:53

2020-08-20 10:16:56

Golang錯誤處理數據

2020-02-03 16:03:36

疫情思考

2009-06-25 09:50:32

JSF

2012-04-01 09:10:17

WEB設計師前端

2021-06-10 20:17:04

云網融合超融合

2015-10-12 08:59:57

異步代碼測試

2021-06-15 07:10:14

JavaScript異步編程

2021-08-08 10:44:33

安卓系統開發者手機廠商

2018-06-29 14:51:41

Java健壯性實踐
點贊
收藏

51CTO技術棧公眾號

亚洲砖区区免费| 国产精品av网站| 国产激情视频网站| 日韩中文在线播放| 亚洲欧美偷拍另类a∨色屁股| 成人免费观看网站| 老熟妇一区二区三区| 999国产精品视频| 亚洲精品一区二区三区福利 | 搡老熟女老女人一区二区| 亚洲第一会所001| 亚洲在线观看免费| 水蜜桃亚洲精品| 国产刺激高潮av| 免费观看日韩电影| 91av中文字幕| 成人性生活毛片| 国产剧情在线观看一区| 日韩欧美亚洲国产另类 | 精品一区中文字幕| 欧美有码在线观看视频| 老熟妻内射精品一区| 亚洲美女久久| 精品国产乱码久久久久久久久 | 深夜激情久久| 在线观看视频91| 少妇人妻在线视频| 成人三级网址| 中文字幕欧美国产| 欧美一区二区福利| 人妻少妇一区二区三区| 国产精品亚洲午夜一区二区三区 | 国自产精品手机在线观看视频| www.99re6| 欧美一区2区| 亚洲精品在线观看网站| 日韩不卡的av| 日本免费在线一区| 91成人免费在线| 中文字幕乱码人妻综合二区三区| 久久香蕉av| 亚洲精品五月天| 中国一级黄色录像| 九七电影韩国女主播在线观看| 久久综合色综合88| 精品无码久久久久国产| 国产 日韩 欧美 综合| 久久99精品国产91久久来源| 国产精品扒开腿做| 在线永久看片免费的视频| 国产欧美一区二区三区国产幕精品| 久久91超碰青草是什么| 欧美又粗又大又长| 欧美激情91| 欧美日本中文字幕| 草视频在线观看| 国产一区二区三区电影在线观看| 亚洲人成电影在线播放| 在线国产视频一区| 狠狠色丁香婷婷综合影院| 国产一区二区三区久久精品 | 国产精品v片在线观看不卡| 久久久久在线视频| 久久久久国产精品午夜一区| 国产精品久久久久9999| 91theporn国产在线观看| 久久精品国产一区二区三区免费看| 国产欧美va欧美va香蕉在线| 国产乱人乱偷精品视频| 国产成人精品免费网站| 国产欧美日韩亚洲| 免费在线一级视频| 亚洲国产精品精华液ab| 免费看啪啪网站| 色呦呦在线免费观看| 午夜久久久影院| 久久精品99国产| 精品欧美日韩精品| 91精品欧美福利在线观看| 欧洲成人午夜精品无码区久久| 国偷自产av一区二区三区| 亚洲欧美一区二区三区久久| 日本精品久久久久中文| 欧美黄色免费| 日本中文字幕不卡免费| 97超碰国产在线| 成人激情免费网站| 日韩一区二区三区资源| 黄色片网站在线观看| 午夜精品免费在线| 久久黄色免费看| 成人午夜888| 亚洲精品mp4| 黄色裸体一级片| 99精品免费视频| 国产精品亚洲视频在线观看| 亚洲美女福利视频| 欧美国产精品一区| 日韩精品一区二区免费| 色天使综合视频| 精品免费视频一区二区| 91视频免费在观看| 亚洲调教视频在线观看| 国产精品看片资源| 欧美 日韩 国产 成人 在线 91 | 久久久精品视频免费观看| 亚洲另类视频| 91夜夜未满十八勿入爽爽影院 | 国产裸体舞一区二区三区| 国产精品3区| 国产亚洲xxx| 国产成人无码精品| 国产一区二区日韩精品| 欧美性bbwbbwbbwhd| 美女精品导航| 91精品中文字幕一区二区三区| 野外性满足hd| 亚洲大胆在线| 97人摸人人澡人人人超一碰| 二区三区在线| 色综合久久88色综合天天免费| 亚洲综合中文网| 成人在线免费小视频| 欧美亚洲国产视频| 亚洲欧美强伦一区二区| 日韩毛片精品高清免费| 男女啪啪网站视频| 色愁久久久久久| 欧美激情久久久久| 国产视频在线观看视频| 国产精品欧美一级免费| 九色在线视频观看| 国产伦精品一区二区三区在线播放 | 欧美性久久久| 亚洲va欧美va国产综合剧情| 91免费在线| 欧美在线影院一区二区| 三上悠亚影音先锋| 久久婷婷激情| 欧美一区二区三区电影在线观看| 深夜成人在线| 日韩精品在线看| √资源天堂中文在线| 99re这里都是精品| 免费在线a视频| 亲子伦视频一区二区三区| 久久久视频免费观看| 欧美视频一二区| 天天操天天色综合| 亚洲av无码一区二区三区网址 | 亚洲毛片在线播放| 亚洲午夜私人影院| 国产国语老龄妇女a片| 激情文学一区| 久久久神马电影| 中文字幕 在线观看| 亚洲欧美三级伦理| 中文字幕+乱码+中文字幕明步| 国产欧美一区二区精品久导航 | 深夜精品寂寞黄网站在线观看| 国产一级精品毛片| 国产精品国产三级国产| 国产成人在线综合| 欧美a级片网站| 国产欧美精品一区二区三区| sis001欧美| 最近中文字幕2019免费| 国产老女人乱淫免费| 一区二区三区不卡视频在线观看 | 国产日产一区| 国产日韩欧美中文| 神马午夜伦理不卡 | 日韩天堂av| 色99中文字幕| 96sao精品免费视频观看| 美女国内精品自产拍在线播放| 亚洲国产精品成人久久蜜臀| 午夜激情综合网| 超薄肉色丝袜一二三| 国产曰批免费观看久久久| 无码 制服 丝袜 国产 另类| 国产尤物久久久| 99re在线| 国产v综合v| 久久99亚洲热视| 精品资源在线看| 日韩一区二区在线播放| 五月婷婷开心网| 亚洲日本在线看| 99久久人妻无码中文字幕系列| 青青青伊人色综合久久| 韩日视频在线观看| 久久国产中文字幕| 国产精品一级久久久| 成人精品高清在线视频| 久久久亚洲国产| 麻豆传媒在线免费看| 日韩电影免费观看在线观看| 在线观看日批视频| 五月开心婷婷久久| 国产日产精品一区二区三区的介绍| proumb性欧美在线观看| 激情五月婷婷基地| 毛片一区二区| 免费在线黄网站| 国产精品久久久乱弄| 蜜桃av噜噜一区二区三| 亚洲经典视频| 成人在线激情视频| 日韩在线影院| 777国产偷窥盗摄精品视频| 免费在线看黄| 国产午夜精品视频免费不卡69堂| 日本波多野结衣在线| 欧美日韩国产另类不卡| 无码人妻av免费一区二区三区| 亚洲综合激情另类小说区| 黑人と日本人の交わりビデオ| 99这里只有精品| 丰满少妇一区二区三区专区| 麻豆精品在线视频| 啊啊啊一区二区| 亚洲激情av| av日韩在线看| 欧美久久99| 国产对白在线播放| 国产精品黑丝在线播放| 五月天久久综合网| 九九亚洲精品| 久久综合一区| 日韩美脚连裤袜丝袜在线| 懂色中文一区二区三区在线视频| 成人97精品毛片免费看| 国产精品亚洲网站| 成人黄页网站视频| 国产精品视频免费在线| av成人在线看| 国产日韩欧美在线视频观看| 福利一区二区| 国产欧美精品在线| 亚洲国产91视频| 国产在线观看精品一区二区三区| 精品久久福利| 成人黄色在线观看| crdy在线观看欧美| 91午夜理伦私人影院| 9999在线精品视频| 成人中文字幕+乱码+中文字幕| 国产一区二区三区四区五区3d| 国产精品亚洲综合天堂夜夜| 国产极品一区| 444亚洲人体| 一区二区在线视频观看| 国产精品久久久久久久免费大片| 成功精品影院| 快播日韩欧美| 日韩精品一区二区三区免费观看| 一本色道久久99精品综合| 欧美电影一二区| 中文字幕色呦呦| 亚洲福利久久| aaa毛片在线观看| 日本三级亚洲精品| 亚洲色图一区二区三区| 青娱乐一区二区| japanese国产精品| 亚洲欧美精品在线观看| 久久精品国产亚洲夜色av网站| 亚洲三区四区| 中文字幕人成人乱码| 成人一级生活片| 国产精品综合| 少妇网站在线观看| 国产精品综合一区二区三区| 亚洲精品国产成人av在线| 26uuu久久综合| 蜜桃av免费观看| 亚洲在线中文字幕| 国产成人综合欧美精品久久| 欧美视频在线观看一区二区| 国产女人18毛片水18精| 亚洲精品suv精品一区二区| 韩国三级在线观看久| 久久精品国产亚洲| 9999在线视频| 国产精品久久久久久久久久99| 日韩黄色在线| 黑人巨大精品欧美一区二区小视频| 精品在线播放| 美女在线免费视频| 午夜亚洲一区| 国产sm在线观看| 欧美激情一区二区三区| 麻豆国产尤物av尤物在线观看| 色婷婷av一区二区三区软件| 国产又大又黄的视频| 亚洲国产毛片完整版| av在线女优影院| 国内精品模特av私拍在线观看| abab456成人免费网址| 国产精品成人观看视频免费| 成人在线电影在线观看视频| 欧美 丝袜 自拍 制服 另类| 韩国成人在线视频| 魔女鞋交玉足榨精调教| 亚洲精选免费视频| 波多野结衣视频网址| 亚洲精品在线网站| 欧美jizz18性欧美| 日产日韩在线亚洲欧美| 国产+成+人+亚洲欧洲在线| 三区精品视频| 国产农村妇女精品一二区| 日本55丰满熟妇厨房伦| 国产精品麻豆一区二区 | 精品成人在线视频| 国产一区二区三区视频免费观看| 国产视频在线一区二区| 蜜桃传媒在线观看免费进入 | 欧美电影在线观看免费| 麻豆映画在线观看| 久久成人久久鬼色| 中文字幕免费高清| 黑人巨大精品欧美一区二区免费| 亚洲AV无码乱码国产精品牛牛| 日韩在线观看免费高清完整版| 手机看片久久| 好吊色欧美一区二区三区| 欧美日韩少妇| 色男人天堂av| 一区二区中文视频| 正在播放亚洲精品| 亚洲女同精品视频| 亚洲最新无码中文字幕久久| 国产日韩精品推荐| 精品不卡视频| 麻豆tv在线观看| 一卡二卡三卡日韩欧美| www.av导航| 色综合91久久精品中文字幕 | 国产香蕉在线视频| 欧美大片在线观看一区| 亚洲夜夜综合| www.久久爱.cn| 黄色欧美日韩| 国内自拍偷拍视频| 亚洲一区二区欧美激情| 高清毛片aaaaaaaaa片| 97视频网站入口| 免费萌白酱国产一区二区三区| 国产免费黄视频| 久久亚洲私人国产精品va媚药| www.伊人久久| 亚洲欧洲xxxx| 国产成+人+综合+亚洲欧美| 一区二区三区四区欧美日韩| 极品尤物av久久免费看| 青草影院在线观看| 精品国产一区二区三区忘忧草 | 欧美日韩日本国产亚洲在线 | 国产精品-色哟哟| 欧美大片va欧美在线播放| 中文字幕视频精品一区二区三区| www.xxx麻豆| 久久免费午夜影院| 在线观看你懂的网站| 久久精品成人欧美大片| 亚洲综合影院| 成人免费观看视频在线观看| 久久久精品tv| 国产青青草视频| 国内精品400部情侣激情| 日韩精品免费一区二区三区竹菊| 久久黄色免费看| 亚洲视频综合在线| 亚洲成熟女性毛茸茸| 51精品国产黑色丝袜高跟鞋| 成人中文在线| 中国黄色片视频| 欧美性色欧美a在线播放| 巨大荫蒂视频欧美另类大| 国产精品久久一区二区三区| 国产欧美日韩综合一区在线播放 | 亚洲高清成人| av手机在线播放| 日韩一区二区三区在线| 国产精品一二三产区| 欧美中日韩一区二区三区| 国产精品一区2区| 久久国产视频播放| 日韩一二三在线视频播| jizz国产精品| 久久99999| 激情成人中文字幕| 日韩伦理在线观看| 久久天堂国产精品| 国产一区二区三区久久悠悠色av| 日韩精品在线免费视频| 美女999久久久精品视频| 国产伦精品一区二区三区视频 |