(1)從問題域中客觀存在的事物出發(fā)來構(gòu)造軟件系統(tǒng),用對(duì)象作為對(duì)這些事物的抽象表示,并以此作為系統(tǒng)的基本構(gòu)成單位。
(2)事物的靜態(tài)特征(即可能用一些數(shù)據(jù)來表達(dá)的特征)用對(duì)象的屬性表示,事物的動(dòng)態(tài)特征(即事物的行為)用對(duì)象的服務(wù)表示。
(3)對(duì)象的屬性與服務(wù)結(jié)合為一體,成為一個(gè)獨(dú)立的實(shí)體,對(duì)外屏蔽其內(nèi)部細(xì)節(jié),即封裝。
(4)對(duì)事物進(jìn)行分類。把具有相同屬性和服務(wù)的對(duì)象歸為一類,類是這些對(duì)象的抽象描述,每個(gè)對(duì)象是它的類的一個(gè)示例。
(5)通過在不同程度上運(yùn)用抽象的原則,可以得到較一般的類和較特殊的類。特殊類繼承一般類的屬性與服務(wù),面向?qū)ο蠓椒ㄖС謱?duì)這種繼承關(guān)系的描述與實(shí)現(xiàn),從而簡(jiǎn)化系統(tǒng)的構(gòu)造過程及其文檔。
(6)復(fù)雜的對(duì)象可以用簡(jiǎn)單的對(duì)象作為其構(gòu)成部分,稱作聚合。
(7)對(duì)象之間通過消息進(jìn)行通信,以實(shí)現(xiàn)對(duì)象之間的動(dòng)態(tài)聯(lián)系。
(8)通過關(guān)聯(lián)表達(dá)對(duì)象之間的靜態(tài)關(guān)系。
面向?qū)ο蟀阉谐绦蛑谐霈F(xiàn)的量都定義為類,一個(gè)合理的類定義中,其屬性和方法都是必須的合理的,能夠合理描述這個(gè)類型完成的任務(wù)。
現(xiàn)在讓我們把所有這些屬性方法分散開來,出現(xiàn)了什么!它變成了C程序的樣子,我們無法分清楚多個(gè)相同name變量是用來描述什么的,我們需要維護(hù)一長(zhǎng)串變量列表和函數(shù)列表。但是對(duì)象語言將一組屬性和函數(shù)封裝在一起,我們聲明了一個(gè)人的對(duì)象便知道他有名字屬性和吃飯動(dòng)作。
我們僅需要維護(hù)少量的類型,類型的屬性則在我們聲明此類的時(shí)候明確理解了因此不需要額外的記憶。對(duì)象語言設(shè)計(jì)更加緊湊明了,代碼意義更加明確。
(1)從問題域中客觀存在的事物出發(fā)來構(gòu)造軟件系統(tǒng),用對(duì)象作為對(duì)這些事物的抽象表示,并以此作為系統(tǒng)的基本構(gòu)成單位。
(2)事物的靜態(tài)特征(即可能用一些數(shù)據(jù)來表達(dá)的特征)用對(duì)象的屬性表示,事物的動(dòng)態(tài)特征(即事物的行為)用對(duì)象的服務(wù)表示。(3)對(duì)象的屬性與服務(wù)結(jié)合為一體,成為一個(gè)獨(dú)立的實(shí)體,對(duì)外屏蔽其內(nèi)部細(xì)節(jié),即封裝。
(4)對(duì)事物進(jìn)行分類。把具有相同屬性和服務(wù)的對(duì)象歸為一類,類是這些對(duì)象的抽象描述,每個(gè)對(duì)象是它的類的一個(gè)示例。
(5)通過在不同程度上運(yùn)用抽象的原則,可以得到較一般的類和較特殊的類。特殊類繼承一般類的屬性與服務(wù),面向?qū)ο蠓椒ㄖС謱?duì)這種繼承關(guān)系的描述與實(shí)現(xiàn),從而簡(jiǎn)化系統(tǒng)的構(gòu)造過程及其文檔。
(6)復(fù)雜的對(duì)象可以用簡(jiǎn)單的對(duì)象作為其構(gòu)成部分,稱作聚合。(7)對(duì)象之間通過消息進(jìn)行通信,以實(shí)現(xiàn)對(duì)象之間的動(dòng)態(tài)聯(lián)系。
(8)通過關(guān)聯(lián)表達(dá)對(duì)象之間的靜態(tài)關(guān)系。
你是說面向?qū)ο缶幊蹋∣OP)嗎?面向?qū)ο缶幊逃袃桑ㄈ??)大特征:封裝、繼承和多態(tài)。
對(duì)于Java來說:封裝即不公開屬性本身,而是公開對(duì)屬性存取操作的方法(getter/setter),在方法中進(jìn)行部分邏輯的判斷保證屬性的值合法(比如年齡必須為大于0的整數(shù));繼承可以實(shí)現(xiàn)類的重用;多態(tài)依賴于繼承存在,在子類中重寫自父類繼承的方法實(shí)現(xiàn)對(duì)象不同時(shí)調(diào)用同樣方法做出不同響應(yīng)。之所以說是三大特征是將繼承與多態(tài)拆開說,但是以我的理解我認(rèn)為沒有繼承就沒有多態(tài)。
把軟件系統(tǒng)看成是各種對(duì)象的集合,這更接近人的思維。軟件需求的變動(dòng)往往是功能的變動(dòng),而功能的執(zhí)行者。更加符合人類的思維,易于編程。
面向?qū)ο蠓椒ǎ∣bject-Oriented Method)是一種把面向?qū)ο蟮乃枷霊?yīng)用于軟件開發(fā)過程中,指導(dǎo)開發(fā)活動(dòng)的系統(tǒng)方法,簡(jiǎn)稱OO (Object-Oriented)方法,是建立在“對(duì)象”概念基礎(chǔ)上的方法學(xué)。對(duì)象是由數(shù)據(jù)和容許的操作組成的封裝體,與客觀實(shí)體有直接對(duì)應(yīng)關(guān)系,一個(gè)對(duì)象類定義了具有相似性質(zhì)的一組對(duì)象。而每繼承性是對(duì)具有層次關(guān)系的類的屬性和操作進(jìn)行共享的一種方式。所謂面向?qū)ο缶褪腔趯?duì)象概念,以對(duì)象為中心,以類和繼承為構(gòu)造機(jī)制,來認(rèn)識(shí)、理解、刻畫客觀世界和設(shè)計(jì)、構(gòu)建相應(yīng)的軟件系統(tǒng)。
結(jié)構(gòu)化分析設(shè)計(jì)方法遵循面向過程的問題求解方法,其中心思想是用計(jì)算機(jī)能夠理解的邏輯來描述和表達(dá)待解決的問題及其具體的解決過程。結(jié)構(gòu)化的程序設(shè)計(jì)的核心就是算法加數(shù)據(jù)結(jié)構(gòu)。 面向過程方法大多基于瀑布模型,需要對(duì)整體結(jié)構(gòu)做以通盤的掌握。當(dāng)用戶的需求發(fā)生變化時(shí),整個(gè)軟件功能就隨之發(fā)生變化,從而導(dǎo)致整個(gè)軟件結(jié)構(gòu)的不穩(wěn)定。同時(shí),過程分析和數(shù)據(jù)分析始終是兩個(gè)相對(duì)獨(dú)立的過程,兩者之間存在著明顯的邊界,這個(gè)問題始終在結(jié)構(gòu)化方法中終沒解決。 對(duì)象是面向?qū)ο蟮某绦蛟O(shè)計(jì)的核心,它由描述狀態(tài)的屬性(變量)和用來實(shí)現(xiàn)對(duì)象行為的方法(函數(shù))組成,完成了從數(shù)據(jù)模型到處理模型的結(jié)合與統(tǒng)一。面向?qū)ο蠓椒ㄕ摰某霭l(fā)點(diǎn)和基本原則是盡可能的模擬人類習(xí)慣的思維方式,使開發(fā)軟件的方法與過程盡可能的接近人類認(rèn)識(shí)世界解決問題的方法與過程。 結(jié)構(gòu)化的程序設(shè)計(jì)是一種自上而下的設(shè)計(jì)方法,設(shè)計(jì)者用一個(gè)主函數(shù)概括出整個(gè)應(yīng)用程序需要做的事情主線,并由對(duì)一系列子函數(shù)的調(diào)用組成。以函數(shù)為中心。 結(jié)構(gòu)化方法是將系統(tǒng)看成是過程的集合,過程與數(shù)據(jù)實(shí)體之間交互,過程接受輸入并產(chǎn)生輸出; 面向?qū)ο蠓椒▌t不再把程序看成工作在數(shù)據(jù)上的一系列過程或函數(shù)的集合,而是把程序看作是相互協(xié)作而又彼此獨(dú)立的對(duì)象的集合。 從概念方面看,結(jié)構(gòu)化軟件是功能的集合;面向?qū)ο筌浖鞘挛飳?duì)象的集合。 從構(gòu)成方面看,結(jié)構(gòu)化軟件是過程和數(shù)據(jù)的集合,以過程為中心;面向?qū)ο筌浖菙?shù)據(jù)和相應(yīng)操作的封裝,以對(duì)象為中心。 從運(yùn)行控制方面看,結(jié)構(gòu)化軟件采用順序處理方式,由過程驅(qū)動(dòng)控制;面向?qū)ο筌浖捎媒换ナ?,并行處理方式,由消息?qū)動(dòng)控制。
結(jié)構(gòu)化程序設(shè)計(jì)特點(diǎn):
優(yōu)點(diǎn): 與非結(jié)構(gòu)化程序相比,結(jié)構(gòu)化程序在調(diào)試、可讀性和可維護(hù)性等方面都有很大的改進(jìn)。
缺點(diǎn):代碼重用性不高:以過程為中心設(shè)計(jì)新系統(tǒng),除了一些標(biāo)準(zhǔn)函數(shù),大部分代碼都必須重新編寫。
由于軟、硬件技術(shù)的不斷發(fā)展和用戶需求的變化,按照功能劃分設(shè)計(jì)的系統(tǒng)模塊容易發(fā)生變化,使得開發(fā)出來的模塊的可維護(hù)性欠佳。
面向過程模式將數(shù)據(jù)與過程分離,若對(duì)某一數(shù)據(jù)結(jié)構(gòu)做了修改,所有處理數(shù)據(jù)的過程都必須重新修訂,這樣就增加了很多的編程工作量。
面向?qū)ο蟮膬?yōu)點(diǎn):
而面向?qū)ο髧@現(xiàn)實(shí)世界的概念來組織模塊,采用對(duì)象描述問題空間的實(shí)體,用程序代碼模擬現(xiàn)實(shí)世界中的對(duì)象,使程序設(shè)計(jì)過程更自然、更直觀。
面向過程是以功能為中心來描述系統(tǒng),而面向?qū)ο笫且詳?shù)據(jù)為中心來描述系統(tǒng)。相對(duì)于功能而言,數(shù)據(jù)具有更強(qiáng)的穩(wěn)定性。
面向?qū)ο竽M了對(duì)象之間的通信。就象人們之間互通信息一樣,對(duì)象之間也可以通過消息進(jìn)行通信。這樣,我們不必知道一個(gè)對(duì)象是怎樣實(shí)現(xiàn)其行為的,只需通過對(duì)象提供的接口進(jìn)行通信并使用對(duì)象所具有的行為功能。而面向過程則通過函數(shù)參數(shù)和全局變量達(dá)到各過程模塊聯(lián)系的目的。
面向?qū)ο蟀岩粋€(gè)復(fù)雜的問題分解成多個(gè)能夠完成獨(dú)立功能的對(duì)象(類),然后把這些對(duì)象組合起來去完成這個(gè)復(fù)雜的問題。采用面向?qū)ο竽J骄拖笤诹魉€上工作,我們最終只需將多個(gè)零部件(已設(shè)計(jì)好的對(duì)象)按照一定關(guān)系組合成一個(gè)完整的系統(tǒng)。這樣使得軟件開發(fā)更有效率。
封裝
封裝是一種把代碼和代碼所操作的數(shù)據(jù)捆綁在一起,使這兩者不受外界干擾和誤用的機(jī)制.封裝可被理解為一種用做保護(hù)的包裝器,以防止代碼和數(shù)據(jù)被包裝器外部所定義的其他代碼任意訪問.對(duì)包裝器內(nèi)部代碼與數(shù)據(jù)的訪問通過一個(gè)明確定義的接口來控制.封裝代碼的好處是每個(gè)人都知道怎樣訪問代碼,進(jìn)而無需考慮實(shí)現(xiàn)細(xì)節(jié)就能直接使用它,同時(shí)不用擔(dān)心不可預(yù)料的副作用。
在JAVA中,最基本的封裝單元是類,一個(gè)類定義著將由一組對(duì)象所共享的行為(數(shù)據(jù)和代碼).一個(gè)類的每個(gè)對(duì)象均包含它所定義的結(jié)構(gòu)與行為,這些對(duì)象就好像是一個(gè)模子鑄造出來的.所以對(duì)象也叫做類的實(shí)例。
在定義一個(gè)類時(shí),需要指定構(gòu)成該類的代碼與數(shù)據(jù).特別是,類所定義的對(duì)象叫做成員變量或?qū)嵗兞?操作數(shù)據(jù)的代碼叫做成員方法.方法定義怎樣使用成員變量,這意味著類的行為和接口要由操作實(shí)例數(shù)據(jù)的方法來定義。
由于類的用途是封裝復(fù)雜性,所以類的內(nèi)部有隱藏實(shí)現(xiàn)復(fù)雜性的機(jī)制.所以JAVA中提供了私有和公有的訪問模式,類的公有接口代表外部的用戶應(yīng)該知道或可以知道的每件東西.私有的方法數(shù)據(jù)只能通過該類的成員代碼來訪問.這就可以確保不會(huì)發(fā)生不希望的事情。
繼承
繼承是指一個(gè)對(duì)象從另一個(gè)對(duì)象中獲得屬性的過程.是面向?qū)ο蟪绦蛟O(shè)計(jì)的三大原則之二,它支持按層次分類的概念.例如,波斯貓是貓的一種,貓又是哺乳動(dòng)物的一種,哺乳動(dòng)物又是動(dòng)物的一種.如果不使用層次的概念,每個(gè)對(duì)象需要明確定義各自的全部特征.通過層次分類方式,一個(gè)對(duì)象只需要在它的類中定義是它成為唯一的 各個(gè)屬性,然后從父類中繼承它的通用屬性.因此,正是由于繼承機(jī)制,才使得一個(gè)對(duì)象可以成為一個(gè)通用類的一個(gè)特定實(shí)例.一個(gè)深度繼承的子類將繼承它在類層次中的每個(gè)祖先的所有屬性。
繼承與封裝可以互相作用.如果一個(gè)給定的類封裝了某些屬性,它的任何子類將會(huì)含有同樣得屬性,另加各個(gè)子類所有得屬性.這是面向?qū)ο蟪绦蛟趶?fù)雜性上呈線性而非幾何增長(zhǎng)的一個(gè)重要概念.新的子類繼承其所有祖先的所有屬性.子類和系統(tǒng)中的其他代碼不會(huì)產(chǎn)生無法預(yù)料的交互作用。
多態(tài)
多態(tài)是指一個(gè)方法只能有一個(gè)名稱,但可以有許多形態(tài),也就是程序中可以定義多個(gè)同名的方法,用"一個(gè)接口,多個(gè)方法"來描述.可以通過方法的參數(shù)和類型引用。
1、強(qiáng)調(diào)從現(xiàn)實(shí)世界中客觀存在的事物(對(duì)象)出發(fā)來認(rèn)識(shí)問題域和構(gòu)造系統(tǒng),使系統(tǒng)能更準(zhǔn)確地反映問題域。
2、運(yùn)用人類日常的思維方法和原則(體現(xiàn)于OO方法的抽象、分類、繼承、封裝、消息等基本原則)進(jìn)行系統(tǒng)開發(fā),有利于發(fā)揮人類的思維能力,有效控制系統(tǒng)復(fù)雜性。
3、對(duì)象的概念貫穿于開發(fā)全過程,使各個(gè)開發(fā)階段的系統(tǒng)成分具有良好的對(duì)應(yīng)關(guān)系,顯著提高系統(tǒng)的開發(fā)效率與質(zhì)量,并大大降低系統(tǒng)維護(hù)的難度。
4、對(duì)象概念的一致性,使參與系統(tǒng)開發(fā)的各類人員在開發(fā)的各階段具有共同語言,有效地改善了人員之間的交流和協(xié)作。
5、對(duì)象的相對(duì)穩(wěn)定性和對(duì)易變因素隔離,增強(qiáng)了系統(tǒng)對(duì)環(huán)境的適應(yīng)能力。
6、對(duì)象、類之間的繼承關(guān)系和對(duì)象的相對(duì)獨(dú)立性,對(duì)軟件復(fù)用提供了強(qiáng)有力的支持。
擴(kuò)展資料:
在面向?qū)ο蟪绦蛟O(shè)計(jì)中,類作為一個(gè)獨(dú)立的單位,它有一個(gè)類名,其內(nèi)部包括成員變量,用于描述對(duì)象的屬性;還包括類的成員方法,用于描述對(duì)象的行為。
在Java程序設(shè)計(jì)中,類被認(rèn)為是一種抽象數(shù)據(jù)類型,這種數(shù)據(jù)類型,不但包括數(shù)據(jù),還包括方法。這大大地?cái)U(kuò)充了數(shù)據(jù)類型的概念。
參考資料來源:
百度百科-面向?qū)ο蠓椒?/p>
面向?qū)ο蠓椒ǖ闹饕卣饔校?/p>
1、封裝性
封裝是一種信息隱蔽技術(shù),它體現(xiàn)于類的說明,是對(duì)象的重要特性。封裝使數(shù)據(jù)和加工該數(shù)據(jù)的方法(函數(shù))封裝為一個(gè)整體,以實(shí)現(xiàn)獨(dú)立性很強(qiáng)的模塊,使得用戶只能見到對(duì)象的外特性(對(duì)象能接受哪些消息,具有那些處理能力),而對(duì)象的內(nèi)特性(保存內(nèi)部狀態(tài)的私有數(shù)據(jù)和實(shí)現(xiàn)加工能力的算法)對(duì)用戶是隱蔽的。
2、繼承性
繼承性是子類自動(dòng)共享父類之間數(shù)據(jù)和方法的機(jī)制。它由類的派生功能體現(xiàn)。一個(gè)類直接繼職其它類的全部描述,同時(shí)可修改和擴(kuò)充。
3、多態(tài)性
對(duì)象根據(jù)所接收的消息而做出動(dòng)作。同一消息為不同的對(duì)象接受時(shí)可產(chǎn)生完全不同的行動(dòng),這種現(xiàn)象稱為多態(tài)性。利用多態(tài)性用戶可發(fā)送一個(gè)通用的信息,而將所有的實(shí)現(xiàn)細(xì)節(jié)都留給接受消息的對(duì)象自行決定,如是,同一消息即可調(diào)用不同的方法。
擴(kuò)展資料
面向?qū)ο蠓椒ǖ膬?yōu)越性
(1)強(qiáng)調(diào)從現(xiàn)實(shí)世界中客觀存在的事物(對(duì)象)出發(fā)來認(rèn)識(shí)問題域和構(gòu)造系統(tǒng),這就使系統(tǒng)開發(fā)者大大減少了對(duì)問題域的理解難度,從而使系統(tǒng)能更準(zhǔn)確地反映問題域。
(2)運(yùn)用人類日常的思維方法和原則(體現(xiàn)于OO方法的抽象、分類、繼承、封裝、消息通訊等基本原則)進(jìn)行系統(tǒng)開發(fā),有益于發(fā)揮人類的思維能力,并有效地控制了系統(tǒng)復(fù)雜性。
(3)對(duì)象的概念貫穿于開發(fā)過程的終,使各個(gè)開發(fā)階段的系統(tǒng)成分具良好的對(duì)應(yīng),從而顯著地提高了系統(tǒng)的開發(fā)效率與質(zhì)量,并大大降低系統(tǒng)維護(hù)的難度。
(4)對(duì)象概念的一致性,使參與系統(tǒng)開發(fā)的各類人員在開發(fā)的各所段具有共同語言,有效地改善了人員之間的交流和協(xié)作。
(5)對(duì)象的相對(duì)穩(wěn)定性和對(duì)易變因素隔離,增強(qiáng)了系統(tǒng)的應(yīng)變能力。
(6)對(duì)象類之間的繼承關(guān)系和對(duì)象的相對(duì)獨(dú)立性,對(duì)軟件復(fù)用提供了強(qiáng)有力的支持。
聲明:本網(wǎng)站尊重并保護(hù)知識(shí)產(chǎn)權(quán),根據(jù)《信息網(wǎng)絡(luò)傳播權(quán)保護(hù)條例》,如果我們轉(zhuǎn)載的作品侵犯了您的權(quán)利,請(qǐng)?jiān)谝粋€(gè)月內(nèi)通知我們,我們會(huì)及時(shí)刪除。
蜀ICP備2020033479號(hào)-4 Copyright ? 2016 學(xué)習(xí)鳥. 頁面生成時(shí)間:2.734秒