




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
面向對象的程序設計原理與技術1第1頁,共70頁,2023年,2月20日,星期四
課件存放位置2第2頁,共70頁,2023年,2月20日,星期四第一章面向過程與面向對象的程序設計本章的主要目的是理解面向過程的程序設計和面向對象的程序設計在本質上有什么不同。主要從以下幾個方面來講解:計算機的工作過程面向過程的程序設計面向對象的程序設計3第3頁,共70頁,2023年,2月20日,星期四計算機的工作過程例:計算圓面積。
s=3.14*r*r4第4頁,共70頁,2023年,2月20日,星期四輸入設備程序原始數據內存儲器原始數據運算器結果結果輸出設備外存儲器控制器計算機的工作過程—基本結構圖程序5第5頁,共70頁,2023年,2月20日,星期四計算機的工作過程計算機在程序的控制下解題程序設計語言的發展經歷了五代(前三代語言編寫的程序本質上是相同的,都是按照機器的工作過程來編寫,只不過程序的描述語句越來越接近人的思維,通用性越來越強)第一代為機器語言第二代為匯編語言第三代語言為高級語言第四代語言為面向對象的計算機語言第五代語言是按人工智能原理設計的語言6第6頁,共70頁,2023年,2月20日,星期四面向過程的程序設計下面用面向過程的語言解題標準C語言源程序#include<stdio.h>voidmain(){floatr,s;printf("Inputr:");scanf("%f",&r);s=3.14*r*r;printf("Theareais:%f\n",s);}7第7頁,共70頁,2023年,2月20日,星期四例1-1Page2例1-2Page38第8頁,共70頁,2023年,2月20日,星期四面向過程的程序設計人模擬計算機思維來解題(輸入-運算-輸出)程序設計工作主要圍繞解題過程的設計程序功能隱含在程序代碼中—理解困難維護(修改)困難9第9頁,共70頁,2023年,2月20日,星期四面向過程的程序設計在長期的軟件開發實踐中,人們總結出了一些設計原理和系統化的方法,包括:模塊化:如函數抽象:忽略事物間的差異,集中和概括共性的方面,例如復雜問題抽象為用較自然的語句來表示;自頂向下的程序設計方法就是一個從抽象到具體的過程。10第10頁,共70頁,2023年,2月20日,星期四面向過程的程序設計信息隱藏:如局部變量模塊獨立:高內聚和松耦合內聚:內部元素間結合的緊密程度;耦合:模塊間互相依賴的緊密程度。結構程序設計:自頂向下逐步求精的設計方法、單入口單出口的控制結構一句話:功能分解或算法分解11第11頁,共70頁,2023年,2月20日,星期四面向對象的程序設計人類習慣的解決問題的方法:“顧客--服務員”的工作模式。例:去理發館理發面向對象的方法模擬人類習慣的解題方法,用對象分解取代功能分解,程序中的所有對象分工協作,共同完成整個程序的功能。12第12頁,共70頁,2023年,2月20日,星期四面向對象的程序設計面向對象方法的四個要點:(1)面向對象的軟件系統由對象組成;(2)所有的對象劃分為對象類,每個類由數據和方法組成;(3)若干個類按照子類(派生類)與父類(基類)的關系組成了層次結構;--繼承,如汽車與交通工具;(4)對象之間通過傳遞消息互相聯系。OO=對象+類+繼承+消息
13第13頁,共70頁,2023年,2月20日,星期四面向對象的程序設計面向對象方法的優點(1)與人的思維習慣一致(2)穩定性好(3)可重用性好(4)可維護性好
14第14頁,共70頁,2023年,2月20日,星期四例1-3Page6
15第15頁,共70頁,2023年,2月20日,星期四1對象對象相當于現實世界中的實體對象=屬性+方法數據操作內部操作1內部操作2數據公有操作1公有操作216第16頁,共70頁,2023年,2月20日,星期四對象的定義對象是一個封裝體,封裝了數據結構及可以施加在這些數據結構上的操作。對象有對象名;對象中的數據表示對象的狀態,一個對象的狀態只能由該對象本身的操作來改變。對象向外界提供一組服務(即公有的操作),稱為與外界的接口。對象17第17頁,共70頁,2023年,2月20日,星期四對象的特點:以數據為中心對象是主動的實現了數據封裝本質上具有并行性模塊獨立性好對象18第18頁,共70頁,2023年,2月20日,星期四2其他面向對象的概念類(Class)是對具有相同數據屬性和相同操作的一個或一組(集合)相似對象的描述,是一個抽象的概念。類與函數的不同:
類封裝了函數與數據是對問題的抽象描述
函數封裝了語句與數據完成特定的功能例:大小不同、位置不一和顏色不同的圓,可以定義為一個Circle類。例:中國人19第19頁,共70頁,2023年,2月20日,星期四實例(Instance)是由某個特定的類所描述的一個具體的對象。“對象”這個術語,既可以指一個具體的對象,也可以泛指一般的對象,“實例”這個術語,必然是指一個具體的對象。
C++中,要定義一個對象或實例,必須先建立一個這類對象的類。基本概念20第20頁,共70頁,2023年,2月20日,星期四屬性(Attribute)類中所定義的數據,它是對客觀世界實體所具有的性質的抽象。類的每個實例都有自己特有的屬性值。例:圓類(半徑、位置、顏色)在C++語言中把屬性稱為數據成員。基本概念21第21頁,共70頁,2023年,2月20日,星期四方法(Method)對象所能執行的操作,它應用于類或被類中對象使用。在C++中稱為成員函數。通常,一個函數對應一個操作,實現一個功能。例:圓對象響應顯示圓的消息在Circle類中必須定義能夠顯示這個圓的方法,即編寫成員函數Show(intcolor)。基本概念22第22頁,共70頁,2023年,2月20日,星期四消息(Message)對象之間相互請求相互協作的途徑一個消息由下述三部分組成:(1)接收消息的對象;(2)消息選擇符(也稱為消息名);(3)零個或多個變元。例如:MyCircle.Show(GREEN)
;其中:
MyCircle是接收消息的對象的名字
Show是消息選擇符(即消息名)
GREEN是消息的變元。基本概念23第23頁,共70頁,2023年,2月20日,星期四封裝性(Encapsulation)封裝即把數據和實現操作的代碼集中起來放在對象內部,外界通過對象提供的接口來使用它,不需知道內部數據結構細節和實現操作的算法。實現封裝的條件:(1)有一個清楚的邊界(2)有確定的接口(用于接受用戶發送的消息)(3)受保護的內部實現封裝的好處就是實現了信息隱藏,把對象的實現細節對外界隱藏起來了,提高安全性。在C++中,通過定義類來實現封裝。基本概念24第24頁,共70頁,2023年,2月20日,星期四繼承(Inheritance)
指能夠直接獲得已有的性質和特征,而不必重復定義它們。是子類自動地共享基類中定義的數據和方法的機制。例:家族關系繼承具有傳遞性,如果類C繼承類B,類B繼承類A,則類C繼承類A。一個類除了具有該類所描述的性質外,還具有該類上層全部基類描述的一切性質。基本概念25第25頁,共70頁,2023年,2月20日,星期四多態性(Polymorphism)
在類等級的不同層次中,相同的消息,被不同類的對象接收,產生了不同的行為。例:“打”好處:增加軟件系統的靈活性,減少了信息冗余,提高了軟件的可重用性和可擴充性。在C++語言中,多態性是通過虛函數來實現的。(動態聯編)基本概念26第26頁,共70頁,2023年,2月20日,星期四重載(Overloading)
有兩種重載:
函數重載是指在同一作用域內的若干個參數特征不同的函數可以使用相同的函數名字;例:
運算符重載是指同一個運算符可以施加于不同類型的操作數上面。
例:cout<<“2”;表示向屏幕輸出字符串2x<<2;表示將x中的二進制左移2位基本概念27第27頁,共70頁,2023年,2月20日,星期四在C++語言中函數重載是通過靜態聯編實現的,也就是在編譯時根據函數變元的個數和類型,決定到底使用函數的哪個實現代碼;對于重載的運算符,在編譯時根據被操作數的類型,決定使用該算符的哪種語義。
基本概念28第28頁,共70頁,2023年,2月20日,星期四3面向對象建模什么是模型使用模型的好處三種模型模型的表示29第29頁,共70頁,2023年,2月20日,星期四面向對象建模為什么要建模?完全、徹底地理解問題什么是模型?對事物的一種抽象,由一組圖示符號和組織這些符號的規則組成。目的:理解事物。如下圖:30第30頁,共70頁,2023年,2月20日,星期四面向對象建模31第31頁,共70頁,2023年,2月20日,星期四面向對象建模用面向對象方法開發軟件,通常要建立三種形式的模型:
對象模型:描述系統數據結構
動態模型:描述系統控制結構
功能模型:描述系統功能32第32頁,共70頁,2023年,2月20日,星期四4對象模型對象模型表示系統的靜態結構,描述了對象、對象間的關系。建立對象模型用到的圖形符號:(1)表示類的符號(包括屬性和服務)(2)表示類實例的符號(3)表示類間關系的符號33第33頁,共70頁,2023年,2月20日,星期四4.1表示類—&—對象的圖形符號(p12)類—&—對象:含義是“一個類及屬于該類的對象”
34第34頁,共70頁,2023年,2月20日,星期四例:計算圓的面積。表示類—&—對象的圖形符號圓圓的半徑計算圓面積顯示圓面積圓圓的半徑計算圓面積顯示圓面積35第35頁,共70頁,2023年,2月20日,星期四類的命名規則類名應富有描述性、簡潔且無二義性,命名時應該遵守以下幾條準則:
(1)使用標準術語
(2)使用具有確切含義的名詞
(3)必要時用名詞短語作名字:如公司員工表示類—&—對象的圖形符號36第36頁,共70頁,2023年,2月20日,星期四4.2表示類間關系的符號類間、對象間的關系可以概括為泛化關系、組合關系及關聯關系三種關系
1.泛化關系:“是一種”(ISA)“一般─特殊”關系,反映了一個類與若干個互不相容的子類之間的分類關系。高層類(即基類或超類)說明一般(公共)的屬性,低層類(即派生類或子類)說明特殊屬性。37第37頁,共70頁,2023年,2月20日,星期四半圓形表明泛化關系的方向:從半圓弧中點引出的直線指到一般化的類。表示歸納關系的圖形符號38第38頁,共70頁,2023年,2月20日,星期四例:表示泛化關系的圖形符號圖形顏色中心位置筆粗細筆類型移動(move)選擇(select)旋轉(rotate)顯示(display)0維1維定位放大2維定位填充類型放大填充點顯示線終點顯示弧半徑開始角弧角顯示多邊形邊數頂點顯示圓直徑顯示旋轉39第39頁,共70頁,2023年,2月20日,星期四2.組合關系組合關系就是“整體─部分”關系,它反映了對象之間的構成關系。組合關系也稱為聚集關系。在C++語言中,通常是在一個類中包含另一個類的對象成員來實現這種關系。類間關系40第40頁,共70頁,2023年,2月20日,星期四上部:整體對象下部:部分對象標值:該端對象的數量(省略為1)三角形:組合關系的方向(從三角形頂角引出的線指向整體對象,從三角形底邊中點畫出的線連到部分對象)表示組合關系的圖形符號41第41頁,共70頁,2023年,2月20日,星期四例:表示組合關系的圖形符號教材封面前言目錄章習題節1,n42第42頁,共70頁,2023年,2月20日,星期四3.關聯關系
關聯關系反映對象之間相互依賴、相互作用的關系。通常把兩類對象之間的二元關系再細分為一對一(1:1)、一對多(1:M)和多對多(M:N)等三種基本類型。類間關系43第43頁,共70頁,2023年,2月20日,星期四二元關聯的5個要素:連線:連線端點所在的位置表明,這是對象(而不是類)之間的映射關系。類間關系-關聯關系教師書1+44第44頁,共70頁,2023年,2月20日,星期四階參與關聯的對象的個數。階用標在連線端點的單個數字或數值區間表示。例如,“1+”(一個或多個),“3,5”(3至5)等。表示類間關系的圖形符號45第45頁,共70頁,2023年,2月20日,星期四鏈屬性
鏈屬性就是關聯鏈的性質。例如,計算機中每個用戶對不同文件擁有不同的訪問權限,訪問權限就是文件與用戶之間的關聯鏈的屬性。表示類間關系的圖形符號46第46頁,共70頁,2023年,2月20日,星期四限定一個受限的關聯由兩個對象及一個限定詞組成。可以把限定詞看作是一種特殊的鏈屬性。表示類間關系的圖形符號47第47頁,共70頁,2023年,2月20日,星期四消息連接反映了一個對象對另一個對象的處理依賴性。表示類間關系的圖形符號48第48頁,共70頁,2023年,2月20日,星期四例1:一家公司的對象模型。該公司有許多部門,每個部門由一名經理管理,也有的經理不管理任何部門,每個部門生產多種產品,每種產品僅由一個部門生產。公司有許多員工為之工作,員工分為工人和經理,每名工人可參加多個項目,每個項目需要多個工人參與,每位經理可主持多個項目,每個項目由一位經理主持。4.3對象模型例子49第49頁,共70頁,2023年,2月20日,星期四對象模型例子50第50頁,共70頁,2023年,2月20日,星期四5面向對象分析(OOA)什么是面向對象分析?抽取和整理用戶需求并建立問題域精確模型的過程。面向對象分析工作大體上按照下列順序進行:
(1)尋找類—&—對象
(2)識別結構
(3)定義屬性
(4)定義服務51第51頁,共70頁,2023年,2月20日,星期四OOA第一步:確定類—&—對象1、找出候選的類—&—對象有兩種方法:(1)找出問題域中的五類事物作為候選類—&—對象可感知的物理實體,如書、汽車人或組織的角色,如教師、雇員應該記憶的事件,如演出、訪問兩個或多個對象的相互作用,通常具有交易或接觸的性質,如購買,結婚需要說明的概念,如政策(2)將需求分析中的名詞或名詞短語作為候選者52第52頁,共70頁,2023年,2月20日,星期四例1:各劇院的演出售票預訂系統按第一種方法,得到候選的類-&-對象為:劇院、演出、票、預訂、系統例2:按第二種方法,得到候選的類-&-對象為:公司、部門、經理、產品、員工、工人、項目面向對象分析53第53頁,共70頁,2023年,2月20日,星期四2、篩選出正確的類—&—對象從候選的類—&—對象中去掉不正確或不必要的類—&—對象,主要遵循下列原則:冗余的:兩個類名表示了相同的信息無關的:籠統的(模糊的):用精確的代替屬性:去掉無關的屬性操作:動詞定義的操作是否作為類?如撥號實現:分析階段少或不考慮怎樣實現目標系統面向對象分析OOA54第54頁,共70頁,2023年,2月20日,星期四OOA第二步:確定關聯兩個或多個對象之間的相互依賴、相互作用的關系就是關聯。關聯關系的確定(1)抽取需求陳述中使用的描述性動詞或動詞詞組(2)找到隱含的關聯關系(3)補充一些必要的關聯關系(4)去掉不正確或不必要的關聯55第55頁,共70頁,2023年,2月20日,星期四例:例2得到類間的關系為:動詞相關類關系有公司和部門間組合/受限關聯管理部門和經理0/1:1
生產部門和產品1:N
為之工作公司和員工1:N
分為員工和工人ISA(泛化)員工和經理ISA(泛化)參加工人和項目N:N
主持經理和項目1:N面向對象分析OOA56第56頁,共70頁,2023年,2月20日,星期四OOA第三步:確定屬性屬性是對象的特性屬性的確定分析:需求陳述中的名詞詞組表示屬性,形容詞作為確定屬性的線索,如畫一個紅色的圓;選擇:刪去不正確和不必要的屬性57第57頁,共70頁,2023年,2月20日,星期四OOA第四步:識別繼承關系一般說來,可以使用兩種方式建立繼承關系:(1)自底向上:抽象出現有類的共同性質泛化出父類,這個過程實質上模擬了人類歸納思維過程。(2)自頂向下:把現有類細化成更具體的子類,這模似了人類的演繹思維過程。如:頭與眼、鼻、耳、嘴之間是組合關系人、男人、男孩是繼承關系58第58頁,共70頁,2023年,2月20日,星期四OOA第五步:確定操作對象=數據+操作在確定類中應該有的服務時,既要考慮該類實體的常規行為,又要考慮為完成本系統功能所需要提供的操作。59第59頁,共70頁,2023年,2月20日,星期四6面向對象設計(OOD)把分析階段得到的需求轉變成符合成本和質量要求的、抽象的程序實現方案的過程。是一個逐漸擴充模型的過程。在實際的軟件開發過程中分析和設計的界限是模糊的,許多分析結果可以直接映射成設計結果,而在設計過程中又往往會加深和補充對系統需求的理解,從而進一步完善分析結果。。60第60頁,共70頁,2023年,2月20日,星期四面向對象設計(OOD)OOD主要完成下述工作:1.建立類等級面向對象程序的一個突出優點來源于繼承性。應該盡量抽取出相似類的公共屬性和公共服務,以建立這些相似類的父類,并在類等級的適當層次中正確地定義各個屬性和服務。61第61頁,共70頁,2023年,2月20日,星期四面向對象設計(OOD)2.定義屬性所謂定義屬性就是要確定每個屬性的數據類型和數據結構,同時還要確定每個屬性的訪問權限(通常被定義在保護部分或私有部分)。3.定義操作
62第62頁,共70頁,2023年,2月20日,星期四面向對象的設計原則模塊化:對象就是模塊。抽象:類是一種抽象數據類型信息隱藏:信息隱藏通過對象的封裝性實現弱耦合強內聚可重用63第63頁,共70頁,2023年,2月20日,星期四耦合:一個軟件結構內不同模塊之間互連的緊密程度。弱耦合是優秀設計的一個重要標準。在面向對象方法中,對象是最基本的模塊,因此,耦合主要指不同對象之間相互關聯的緊密程度。對象之間的
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 爆破與安全試題及答案
- 保溫工考試試題及答案
- 安全師試題及答案
- 物聯網設備安全漏洞檢測與防護策略在智能交通信號控制系統中的實戰解析報告
- 2025年快時尚零售行業供應鏈優化與變革分析報告
- 安全教育考試試題及答案
- 安全規程考試試題及答案
- 職業教育未來趨勢:2025年職業院校與企業深度合作研究報告
- 2025年醫院信息化建設關鍵環節:電子病歷系統醫療信息化戰略規劃報告
- 大學生膳食營養與健康
- 能源經營產品技術規范-三輪兩輪電動車鋰電池組技術規范V1.0
- 大學專業選擇演講課件
- 茂名酒店行業報告
- 富士康大過管理制度
- 一汽大眾質量控制體系培訓手冊2
- 學校桌椅采購投標方案(技術標)
- 十典九章宣貫(終)
- 用人單位評價調查表
- 江蘇開放大學2023年秋《公共關系原理與實務050010》過程性考核作業三參考答案
- 2023年上海市普通高中學業水平合格性考試物理試(含答案解析)
- 10kV~500kV輸變電及配電工程質量驗收與評定標準:06變電自動化工程
評論
0/150
提交評論