面向?qū)ο蟮幕靖拍钣?strong>對象、類、抽象、封裝、繼承、多態(tài)、接口、消息、組件、模式和復(fù)用等。
1.對象
對象是由數(shù)據(jù)及其操作所構(gòu)成的封裝體,是系統(tǒng)中用來描述客觀事物的一個封裝,是構(gòu)成系統(tǒng)的基本單位,采用計算機語言描述,對象是由一組屬性和對這組屬性進行操作的一組服務(wù)構(gòu)成。
對象包含三個基本要素,分別是對象標識、對象狀態(tài)和對象行為。
每一個對象必須有一個名字以區(qū)別于其他對象,這就是對象標識;狀態(tài)用來描述對象的某些特征;對象行為用來封裝對象所擁有的業(yè)務(wù)操作。
舉例說明,對于教師Joe而言,包含性別、年齡、職位等個人狀態(tài)信息,同時還具有授課的行為特征,那么Joe就是封裝后的一個典型對象。
2.類
類是現(xiàn)實世界中實體的形式化描述,類將該實體的數(shù)據(jù)和函數(shù)封裝在一起。類的數(shù)據(jù)也叫屬性、狀態(tài)或特征,它表現(xiàn)類靜態(tài)的一面。類的函數(shù)也叫功能、操作或服務(wù),它表現(xiàn)類動態(tài)的一面。
Joe是一名教師,也就擁有了教師的特征,這個特征就是教師這個類所特有的,具體而言,共同的狀態(tài)通過屬性表現(xiàn)出來,共同的行為通過操作表現(xiàn)出來,如圖3-1所示。
3.類和對象的關(guān)系
對象是類的實際例子。如果將對象比作房子,那么類就是房子的設(shè)計圖紙。
例如,銀行里所有儲戶的賬戶,可以抽象為賬戶類。用自然語言描述賬戶類如下:
類 賬戶
(
屬性:
存款人姓名;
身份證號f
開戶日期j
賬號j
密碼j
賬上余額j
行為:
存放(),
取款()j
}
用計算機語言表示賬戶類,命名賬戶類為ACCOUNT:
Class ACCOUNT
{
Attribute:
n ame;
ID Number;
date;
Account_Number;
pasSword;
total;
Function:
Save c)j
Withdraw(1,
}
賬戶類的對象,可以是一個個具體的儲戶如張三工行的賬戶、張三建行的賬戶、李四工行的賬戶。用計算機語言描述如下:
Class ACCOUNT ZhangSan ICBCAccount;ZhangSan CBCAccount;LiSi ICaCAccount:
----
類和對象的關(guān)系可以總結(jié)為:
(1)每一個對象都是某一個類的實例。
(2)每一個類在某一時刻都有零或更多的實例。
(3)類是靜態(tài)的,它們的存在、語義和關(guān)系在程序執(zhí)行前就已經(jīng)定義好了,對象是動態(tài)的,它們在程序執(zhí)行時可以被創(chuàng)建和刪除。
(4)類是生成對象的模板。
4.抽象
抽象是通過特定的實例抽取共同特征以后形成概念的過程。它強調(diào)主要特征,忽略次要特征。一個對象是現(xiàn)實世界中一個實體的抽象,一個類足一組對象的抽象,抽象是一種單一化的描述,它強調(diào)給出與應(yīng)用相關(guān)的特性,拋棄不相關(guān)的特性。
5.封裝
封裝是將相關(guān)的概念組成一個單元,然后通過一個名稱來引用它‘。面向?qū)ο蠓庋b是將數(shù)據(jù)和基于數(shù)據(jù)的操作封裝成一個整體對象,對數(shù)據(jù)的訪問或修改只能通過對象對外提供的接口進行。
對于銀行賬戶類而言,有取款和存款的行為特征,但實現(xiàn)細節(jié)對于客戶而言并不可見,所以在進行ATM提款交易的過程中,我們并不知道交易如何進行,對應(yīng)賬戶是如何保存狀態(tài)的,這就體現(xiàn)了對象的封裝。
6.繼承
繼承表示類之間的層次關(guān)系,這種關(guān)系使得某類對象可以繼承另外一類對象的特征(attributes)和能力(operations),繼承又可分為單繼承和多繼承,單繼承是子類只從一個父類繼承,而多繼承中的子類可以從多于一個的父類繼承,Java是單繼承的語言,而C++允許多繼承。
假設(shè)類B繼承類A,即類B中的對象具有類A的一切特征(包括屬性和操作)。
類A稱為基類或父類或超類,類B稱為類A的派生類或子類,類B在類A的基礎(chǔ)上還可以有一些擴展。
如圖3-2所示,Dog和Cat類都是從Mammal繼承而來,具有父類的eyeColor屬性特征,因此在子類中就下用重復(fù)指定eyeColor這個屬性。
7.多態(tài)
多態(tài)性是一種方法,這種方法使得在多個類中可以定義同一個操作或?qū)傩悦?,并在每個類中可以有不同的實現(xiàn)。多態(tài)性使得一個屬性或變量在不同的時期可以表示不同類的對象。
如圖3-3所示,Rectangle和Circle都繼承于Shape,對于Shape而言,會有g(shù)etArea0的操作。但顯而易見,RectaI y;le和Circle的getArea()方法的實現(xiàn)是完全不一樣的,這就體現(xiàn)了多態(tài)的特征。
8.接口
所謂接口就是對操作規(guī)范的說明。接口只是說明操作應(yīng)該做什么( What),但沒有定義操作如何做( How)。接口可以理解成為類的一個特例,它只規(guī)定實現(xiàn)此接口的類的操作方法,而把真正的實現(xiàn)細節(jié)交由實現(xiàn)該接口的類去完成。
接口在面向?qū)ο蠓治龊驮O(shè)計過程中起到了至關(guān)重要的橋梁作用,系統(tǒng)分析員通常先把有待實現(xiàn)的功能封裝并定義成接口,而后期程序員依據(jù)此接口進行編碼實現(xiàn)。
9.消息
消息(Message)是對象間的交互手段,其形式如下:
Message: [dest.op,paraJ
其中dest指目標對象Destination Object,op指操作Operation,para指操作需要的參數(shù)Parameters。
10.組件
組件是軟件系統(tǒng)可替換的、物理的組成部分,它封裝了實現(xiàn)體(實現(xiàn)某個職能).并提供了一組接口的實現(xiàn)方法??梢哉J為組件是一個封裝的代碼模塊或大粒度的運行對的模塊,也可將組件理解為具有一定功能、能夠獨立工作或同其他組件組合起來協(xié)詞工作的對象。
對于組件,應(yīng)當按可復(fù)用的要求進行設(shè)計、實現(xiàn)、打包、編寫文檔。組件應(yīng)當是內(nèi)聚的,并具有相當穩(wěn)定的公開的接口。
為了使組件更切合實際、更有效地被復(fù)用,組件應(yīng)當其各“可變性”(variability),以提高其通用性。組件應(yīng)向復(fù)用者提供一些公共“特性”,另一方面還要提供可變的“特性”。針對不同的應(yīng)用系統(tǒng),只需對其可變部分進行適當?shù)恼{(diào)節(jié),復(fù)用者要根據(jù)復(fù)用的具體需要,改造組件的可變“特性”,即“客戶化”。
11.模式
模式是一條由三部分組成的規(guī)則,它表示了一個特定環(huán)境、一個問題和一個解決方案之間的關(guān)系。每一個模式描述了一個不斷重復(fù)發(fā)生的問題,以及該問題的解決方案。這樣就能一次又一次地使用該方案而不必做重復(fù)勞動。
將設(shè)計模式引入軟件設(shè)計和開發(fā)過程的目的在于充分利用已有的軟件開發(fā)經(jīng)驗,這是因為設(shè)計模式通常是對于某一類軟件設(shè)計問題的可重用的解決方案。
設(shè)計模式使得人們可以更加簡單和方便地去復(fù)用成功的軟件設(shè)計和體系結(jié)構(gòu),從而能夠幫助設(shè)計者更快更好地完成系統(tǒng)設(shè)計。
12.復(fù)用
軟件復(fù)用是指將已有的軟件及其有效成分用于構(gòu)造新的軟件或系統(tǒng)。組件技術(shù)是軟件復(fù)用實現(xiàn)的關(guān)鍵。
溫馨提示:因考試政策、內(nèi)容不斷變化與調(diào)整,信管網(wǎng)網(wǎng)站提供的以上信息僅供參考,如有異議,請以權(quán)威部門公布的內(nèi)容為準!
信管網(wǎng)致力于為廣大信管從業(yè)人員、愛好者、大學(xué)生提供專業(yè)、高質(zhì)量的課程和服務(wù),解決其考試證書、技能提升和就業(yè)的需求。
信管網(wǎng)軟考課程由信管網(wǎng)依托10年專業(yè)軟考教研傾力打造,官方教材參編作者和資深講師坐鎮(zhèn),通過深研歷年考試出題規(guī)律與考試大綱,深挖核心知識與高頻考點,為學(xué)員考試保駕護航。面授、直播&錄播,多種班型靈活學(xué)習(xí),滿足不同學(xué)員考證需求,降低課程學(xué)習(xí)難度,使學(xué)習(xí)效果事半功倍。
發(fā)表評論 查看完整評論 | |