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