面向對象方法概述_第1頁
面向對象方法概述_第2頁
面向對象方法概述_第3頁
面向對象方法概述_第4頁
面向對象方法概述_第5頁
已閱讀5頁,還剩47頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、面向對象方法概述面向對象方法概述 面向對象方法概述面向對象方法概述v面向對象方法的組成v什么是面向對象v面向對象技術的發展歷史v面向對象的基本概念v面向對象的軟件工程方法 面向對象方法概述面向對象方法概覽面向對象方法概述1 什么是面向對象什么是面向對象 面向對象(Object Oriented)技術是軟件工程領域中的重要技術,這種軟件開發思想比較自然地模擬了人類認識客觀世界的方式,成為當前計算機軟件工程學中的主流方法。應該特別強調的是,面向對象技術不僅僅是一種程序設計方法,更重要的是一種對真實世界的抽象思維方式。 面向對象方法概述1 什么是面向對象什么是面向對象v面向對象方法按照人類的自然思維

2、方式,面對客觀世界建立軟件系統模型:v對象、類、繼承、封裝等基本概念符合人類的自然思維方式。v有利于對業務領域和系統責任的理解。v有利于人員的交流面向對象方法概述1 什么是面向對象什么是面向對象 面向對象技術的基本觀點如下:(1) 客觀世界是由對象組成的,任何客觀的事物或實體都是對象,復雜的對象可以由簡單的對象組成。(2) 具有相同數據和相同操作的對象可以歸并為一個類,對象是對象類的一個實例。(3) 類可以派生出子類,子類繼承父類的全部特性(數據和操作),又可以有自己的新特性。子類與父類形成類的層次結構。(4) 對象之間通過消息傳遞相互聯系。類具有封裝性,其數據和操作等對外界是不可見的,外界只

3、能通過消息請求進行某些操作,提供所需要的服務。 面向對象方法概述1 什么是面向對象什么是面向對象 軟件工程學家Codd和Yourdon認為: 面向對象對象類繼承通信 如果一個軟件系統采用這些概念來建立模型并予以實現,那么它就是面向對象的。面向對象方法概述2 面向對象技術的發展歷史面向對象技術的發展歷史 面向對象方法起源于面向對象程序設計語言,后來才逐步形成了面向對象的分析和設計方法,其發展過程大體上經歷了初始階段、發展階段和成熟階段等過程。面向對象方法概述2 面向對象技術的發展歷史面向對象技術的發展歷史 初始階段60年代末挪威奧斯陸大學和挪威計算中心共同研制的Simula語言是面向對象語言發展

4、歷史上的第一個里程碑,它首先引入了類的概念和繼承機制,后來的一些著名面向對象編程語言(如Smalltalk、C+、Eiffel)都受到Simula的啟發。 KRISTEN NYGAARD(Simula創始人)面向對象方法概述2 面向對象技術的發展歷史面向對象技術的發展歷史 初始階段80年代,Xerox研究中心推出了Smalltalk語言和環境,它具備了面向對象語言的繼承和封裝的主要特征,使面向對象程序設計方法趨于完善,掀起了面向對象研究的高潮。面向對象方法概述2 面向對象技術的發展歷史面向對象技術的發展歷史 發展階段從80年代中期到90年代,面向對象語言十分熱門,大批比較實用的面向對象編程語言

5、(Object Oriented Programming Language,OOPL)涌現出來,如C+、Objective-C、Object Pascal、CLOS(Common Lisp Object System)、Eiffel、Actor等,特別是C+語言已成為目前應用最廣泛的OOPL。Bjarne Stroustrup(C+創始人)面向對象方法概述2 面向對象技術的發展歷史面向對象技術的發展歷史 發展階段90年代中期,出現了JAVA語言。 JAMES GOSLING面向對象方法概述2 面向對象技術的發展歷史面向對象技術的發展歷史 發展階段從80年代中期到90年代,面向對象語言十分熱門,

6、大批比較實用的面向對象編程語言(Object Oriented Programming Language,OOPL)涌現出來,如C+、Objective-C、Object Pascal、CLOS(Common Lisp Object System)、Eiffel、Actor等,特別是C+語言已成為目前應用最廣泛的OOPL。面向對象編程語言的繁榮是面向對象方法走向實用的重要標志,也是面向對象方法在計算機學術界、產業界和教育界日益受到重視的推動力。 面向對象方法概述2 面向對象技術的發展歷史面向對象技術的發展歷史 成熟階段在C+語言十分熱門的時候,人們開始了對面向對象分析(Object Orien

7、ted Anlysis,OOA)的研究,進而延伸到面向對象設計(Object Oriented Design,OOD)。特別是90年代以后,許多專家都在嘗試用不同的方法進行面向對象的分析與設計,其中比較著名的有Booch的方法、Rumbaugh的OMT方法、Coad/Yourdon的方法、Wirtf-Brock的RDD方法、Shlear-Mellor的方法、Gibon的OBA方法、Jacobson的OOSE方法、Martin-Odell的方法、Fusion方法等,這些方法各有所長,力圖解決復雜軟件系統的開發問題。在這段時期,面向對象的分析和設計技術逐漸走向實用,最終形成了從分析、設計到編程、測

8、試與維護一整套的軟件工程體系。 面向對象方法概述3 面向對象的基本概念面向對象的基本概念 對象對象從不同的角度有不同的含義,我們針對系統開發來討論對象的概念,其定義是:對象(Object)是系統中用來描述客觀事物的一個實體,它是構成系統的一個基本單位,由一組屬性和對這組屬性進行操作的一組服務組成。在這里,屬性和服務是構成對象的兩個基本要素,其定義是:屬性是用來描述對象靜態特征的一個數據項。服務是用來描述對象動態特征(行為)的一個操作序列。 面向對象方法概述3 面向對象的基本概念面向對象的基本概念 例子:面向對象方法概述面向對象的基本概念(例子)面向對象的基本概念(例子) What are th

9、e games objects? What do those objects knowhow to do? What properties do they have?面向對象方法概述面向對象的基本概念(例子)面向對象的基本概念(例子)What are the games objects?v piece, boardCapabilities: What do those objects know how to do?v piece:v be createdv fallv rotatev stop at collisionv board:v be createdv remove rowsv che

10、ck for end of game Properties: What attributes and components do they have?v piece:v orientationv positionv shapev colorv board:v sizev rows面向對象方法概述3 面向對象的基本概念面向對象的基本概念 從一般意義上講,對象是現實世界中的一個實際存在的事物,它可以是有形的,如車輛、房屋等,也可以是無形的,如國家、生產計劃等。而人們在開發一個系統時,則在一定的范圍(也稱問題域)內考慮和認識與系統目標有關的事物,并用系統中的對象來抽象地表示它們。在這里,對象只描述客

11、觀事物本質的、與系統目標有關的特征,而不考慮那些非本質的、與系統目標無關的特征。同時,對象是屬性和服務的結合體,對象的屬性值只能由這個對象的服務來讀取和修改。 面向對象方法概述3 面向對象的基本概念面向對象的基本概念類類(Class)是具有相同屬性和服務的一組對象的集合,它為屬于該類的全部對象提供了統一的抽象描述,其內部包括屬性和服務兩個主要部分。類好比是一個對象模板,用它可以產生多個對象。類所代表的是一個抽象的概念或事物,在客觀世界中實際存在的是類的實例,即對象。 面向對象方法概述3 面向對象的基本概念面向對象的基本概念類舉例:在學校教學管理系統中,“學生”是一個類,其屬性具有姓名、性別、年

12、齡等,可以定義“入學注冊”、“選課”等操作。一個具體的學生“王平”是一個對象,也是“學生”類的一個實例。面向對象方法概述3 面向對象的基本概念面向對象的基本概念類 把眾多的事物歸納并劃分成一些類是人類在認識客觀世界時經常采用的思維方法,分類的原則是抽象,從那些與當前目標有關的本質特征中找出事物的共性,并將具有共同性質的事物劃分成一類,得出一個抽象的概念。例如:人、房屋、樹木等都是一些抽象的概念,它們是一些具有共同特征的事物的集合,稱為類。類的概念使我們能對屬于該類的全部個體事物進行統一的描述,樹具有樹根、樹干、樹枝和樹葉,它能進行光合作用,這個描述適合所有樹,而不必對每一棵具體的樹進行描述。

13、面向對象方法概述3 面向對象的基本概念面向對象的基本概念 封裝封裝(Encapsulation)是把對象的屬性和服務結合成一個獨立的系統單位,并盡可能隱藏對象的內部細節。封裝是面向對象方法的一個重要原則,系統中把對象看成是屬性和對象的結合體,使對象能夠集中而完整地描述一個具體事物。封裝的信息隱蔽作用反映了事物的相對獨立性,當我們從外部觀察對象時,只需要了解對象所呈現的外部行為(即做什么),而不必關心它的內部細節(即怎么做)。面向對象方法概述3 面向對象的基本概念面向對象的基本概念封裝舉例:電視機包括外形尺寸、分辨率、電壓、電流等屬性,具有打開、關閉、調諧頻道、轉換頻道、設置圖象等服務,封裝意味

14、著將這些屬性和服務結合成一個不可分的整體,它對外有一個顯示屏、插頭和一些按鈕等接口,用戶通過這些接口使用電視機,而不關心其內部的實現細節。面向對象方法概述3 面向對象的基本概念面向對象的基本概念封裝 與封裝密切相關的概念是可見性,它是指對象的屬性和服務允許對象外部存取和引用的程度。在軟件上,封裝要求對象以外的部分不能隨意存取對象的內部數據(屬性),從而有效地避免了外部錯誤對它的交叉感染,使軟件錯誤能夠局部化,大大減少了查錯和排錯的難度。另外,當對象內部需要修改時,由于它只通過少量的服務接口對外提供服務,便大大減少了內部修改對外部的影響,即減少了修改引起的波動效應。面向對象方法概述3 面向對象的

15、基本概念面向對象的基本概念封裝 封裝也有副作用,如果強調嚴格的封裝,則對象的任何屬性都不允許外部直接存取,因此就要增加許多沒有其他意義、只負責讀或寫的服務,從而為編程工作增加了負擔,增加了運行開銷。為了避免這一點,語言往往采取一種比較靈活的做法,即允許對象有不同程度的可見性。 面向對象方法概述3 面向對象的基本概念繼承面向對象的基本概念繼承 繼承(Inheritance)是指子類可以自動擁有父類的全部屬性和服務。繼承簡化了人們對現實世界的認識和描述,在定義子類時不必重復定義那些已在父類中定義過的屬性和服務,只要說明它是某個父類的子類,并定義自己特有的屬性和服務即可。 面向對象方法概述3 面向對

16、象的基本概念繼承面向對象的基本概念繼承舉例:考慮輪船和客輪兩個類,輪船具有噸位、時速、吃水線等屬性和行駛、停泊等服務,客輪具有輪船的全部屬性和服務,又有自己的特殊屬性(如載客量)和服務(如供餐),因此客輪是輪船的子類,輪船是客輪的父類。與父類/子類等價的其他術語有一般類/特殊類、超類/子類、基類/派生類等。面向對象方法概述3 面向對象的基本概念繼承面向對象的基本概念繼承一個類可以是多個父類的子類,它從多個父類中繼承了屬性與服務,這稱為多繼承(Multiple Inheritance)。舉例:客輪既是一種輪船,又是一種客運工具,它可以繼承輪船和客運工具這兩個類的屬性和服務。面向對象方法概述3 面

17、向對象的基本概念繼承面向對象的基本概念繼承繼承對于軟件復用是十分有益的,如果將OO方法開發的類作為可復用構件,那么在開發新系統時可以直接復用這個類,還可以將其作為父類,通過繼承而實現復用,從而大大擴展了復用的范圍。面向對象方法概述3 面向對象的基本概念消息面向對象的基本概念消息 消息(Message)是對象發出的服務請求,一般包含提供服務的對象標識、服務標識、輸入信息和應答信息等信息。通常,一個對象向另一個對象發出消息請求某項服務,接收消息的對象響應該消息,激發所要求的服務操作,并將操作結果返回給請求服務的對象。 面向對象方法概述3 面向對象的基本概念消息面向對象的基本概念消息 舉例:使用電視

18、機時,用戶通過按鈕或遙控器發出轉換頻道的消息,電視機變換對電視臺的接收信號頻率,并將結果顯示給用戶。在這里,用戶發出的信息包括:接受者-電視機;要求的服務-轉換頻道;輸入信息-轉換后的頻道序號;應答信息-轉換后頻道的節目。 面向對象方法概述3 面向對象的基本概念消息面向對象的基本概念消息 面向對象技術的封裝機制使對象各自獨立,各司其職,消息通信則為它們提供了唯一合法的動態聯系途徑,使它們的行為能夠相互配合,構成一個有機的運動的系統。面向對象方法概述3 面向對象的基本概念消息面向對象的基本概念消息 面向對象技術的封裝機制使對象各自獨立,各司其職,消息通信則為它們提供了唯一合法的動態聯系途徑,使它

19、們的行為能夠相互配合,構成一個有機的運動的系統。面向對象方法概述3 面向對象的基本概念結構與連接面向對象的基本概念結構與連接 任何事物之間都不是互相孤立,而是彼此聯系的,并因此構成一個有機的整體。對象之間常見的聯系包括: 分類關系,即一般與特殊結構; 組成關系,即整體與部分結構; 對象屬性之間的靜態聯系,即實例連接; 對象行為之間的動態聯系,即消息連接。 面向對象方法概述3 面向對象的基本概念結構與連接面向對象的基本概念結構與連接 (1) 一般與特殊結構 面向對象方法概述3 面向對象的基本概念結構與連接面向對象的基本概念結構與連接 (1) 一般與特殊結構又稱分類結構(classificatio

20、n structure),它是由一組具有一般與特殊關系(即繼承關系)的類所組成的結構。其中,由一些單繼承關系的類形成的結構稱為層次結構,由一些多繼承關系的類形成的結構稱為網格結構,上圖顯示了一般與特殊的結構。面向對象方法概述3 面向對象的基本概念結構與連接面向對象的基本概念結構與連接 (2) 整體與部分結構又稱組裝結構(composition structure),它描述對象之間的組成關系,即一個(或一些)對象是另一個對象的組成或部分。例如,大學中的系由辦公室、實驗室、資料室等組成, 辦公室、實驗室、資料室 對象類與 系 對象類之間是部分與整體的關系。 。面向對象方法概述3 面向對象的基本概念

21、結構與連接面向對象的基本概念結構與連接 (3) 實例連接實例連接反映對象之間的靜態聯系,它是通過對象的屬性來表現對象之間的依賴關系。在面向對象的術語中,對象之間的實例連接被稱為鏈接(Link),而存在實例連接的對象類之間的聯系稱為關聯(Association)。例如,教師與學生是獨立的兩個類,它們之間存在教學聯系,這種聯系是通過類中的教學課程、時間、地點等屬性建立起來的。面向對象方法概述3 面向對象的基本概念結構與連接面向對象的基本概念結構與連接 (4) 消息連接消息連接描述了對象之間的動態聯系,即如果一個對象在執行自己的服務時,需要通過消息請求另一個對象為它完成某個服務,那么就說第一個對象與

22、第二個對象之間存在著消息連接。消息連接是有向的,從消息發送者指向消息接收者。 一般與特殊結構、整體與部分結構、實例連接和消息連接都是面向對象的分析和設計階段必須考慮的重要概念,只有在分析和設計階段認清問題域中的這些結構與連接關系,編程時才能準確而有效地反映問題域。 面向對象方法概述3 面向對象的基本概念多態性面向對象的基本概念多態性 多態性(Polymorphism)是指在父類中定義的屬性或服務被子類繼承后,可以具有不同的數據類型或表現出不同的行為。在體現一般與特殊關系的一個類層次結構中,不同層次的類可以共享一個操作,但卻有各自不同的實現。當一個對象接收到一個請求時,它根據其所屬的類,動態地選

23、用在該類中定義的操作。 面向對象方法概述3 面向對象的基本概念多態性面向對象的基本概念多態性 舉例:在父類幾何圖形中定義了一個服務繪圖,但并不確定執行時繪制一個什么圖形。子類橢圓和多邊形都繼承了幾何圖形類的繪圖服務,但其功能卻不相同:一個是畫橢圓,一個是畫多邊形。當系統的其他部分請求繪制一個幾何圖形時,消息中的服務都是繪圖,但橢圓和多邊形接收到該消息時卻各自執行不同的繪圖算法。 面向對象方法概述3 面向對象的基本概念多態性面向對象的基本概念多態性 多態性機制不但為軟件的結構設計提供了靈活性,減少了信息冗余,明顯提高了軟件的可復用性和可擴充性。多態性的實現需要OOPL提供相應的支持,與多態性實現

24、有關的語言功能包括:重載(overload)、動態綁定(dynamic binding)、類屬(generic)。 面向對象方法概述3 面向對象的基本概念主動對象面向對象的基本概念主動對象 主動對象(Active Object)是一組屬性和一組服務的封裝體,其中至少有一個服務不需要接收消息就能主動執行(稱為主動服務)。 主動對象的作用是描述問題域中具有主動行為的事物以及在系統設計時識別的任務,其主動服務描述相應任務所應完成的操作。在系統實現階段,主動服務應該被實現為一個能并發執行的、主動的程序單位,如進程或線程。 除了具有主動服務外,主動對象的其他方面與被動對象沒有什么不同,主動對象中也可以有

25、一些在消息的驅動下執行的一般任務。 面向對象方法概述4 面向對象的軟件工程方法 面向對象的軟件工程方法是面向對象方法在軟件工程領域的全面運用,涉及到從面向對象分析(OOA)、面向對象設計(OOD) 、面向對象編程(OOP)、面向對象測試(Object Oriented Testing,OOT)到面向對象軟件維護(Object Oriented Software Maintenance,OOSM)的全過程。 面向對象方法概述4 面向對象的軟件工程方法 面向對象的分析面向對象的分析(OOA)就是運用面向對象的方法進行需求分析,其主要任務是分析和理解問題域,找出描述問題域和系統責任所需的類及對象,分析它們的內部構成和外部關系,建立OOA模型。 面向對象方法概述4 面向對象的軟件工程方法 面向對象的設計面向對象的設計(OOD)就是根據已建立的分析模型,運用面向對象技術進行系統軟件設計。它將OOA模型直接變成OOD模型,并且補充與一些實現有關的部分,如人機界面、數據存儲、任務管理等。OOA與OOD采用一致的表

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論