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