版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、面向?qū)ο竺嫦驅(qū)ο驝+程序設計程序設計徐徐 建建南京理工大學計算機學院南京理工大學計算機學院主要內(nèi)容n面向?qū)ο蟪绦蛟O計概述n類和對象n構(gòu)造函數(shù)與析構(gòu)函數(shù)n繼承和派生類n類的其他特性n運算符重載n輸入輸出流課時安排n理論學習40學時上機實驗8學時n課外上機實驗8學時面向?qū)ο蟪绦蛟O計概述面向?qū)ο蟪绦蛟O計概述n面向?qū)ο蠛兔嫦驅(qū)ο蟪绦蛟O計n面向?qū)ο蟪绦蛟O計的基本概念n面向?qū)ο筌浖闹匾匦砸?、面向?qū)ο蠛兔嫦驅(qū)ο蟪绦蛟O計一、面向?qū)ο蠛兔嫦驅(qū)ο蟪绦蛟O計n什麼是面向?qū)ο髮ο髮ο螅╫bject) 任何可以被感覺到的事物。面向面向(oriented) 直接面對,以對象為中心。面向?qū)ο竺嫦驅(qū)ο螅∣bject Ori
2、ented) 直接面對你能感覺到的任何事物。面向?qū)ο缶幊堂嫦驅(qū)ο缶幊蹋∣bject Oriented Programming)直接面對軟件所要模擬的客觀世界中的事物,將它們直接映射到軟件系統(tǒng)的解空間中,成為組成軟件的對象。面向?qū)ο竺嫦驅(qū)ο骎S.面向過程程序設計面向過程程序設計n面向過程程序設計例如,一個學校管理軟件中可以包含如下的數(shù)據(jù)結(jié)構(gòu)和操作:typedef struct studenttypedef struct teacherchar name10; char name10;long num; double salary;int age; int age;char sex; char s
3、ex; student; teacher;void enroll(student* ptr) void raise(teacher* ptr).ptr-num+;ptr-salary += 100;void print(student* ptr) void print(teacher* ptr).main().student Zhang;/ 定義學生數(shù)據(jù)模塊teacher Li;/ 定義教師數(shù)據(jù)模塊enroll(&Zhang);/ 操作與被操作數(shù)據(jù)匹配enroll(&Li);/ 操作與被操作數(shù)據(jù)失配print(&Zhang);/ 操作與被操作數(shù)據(jù)匹配.n面向?qū)ο蟪绦蛟O計
4、面向?qū)ο蟪绦蛟O計(Object Oriented Programming)吸取結(jié)構(gòu)化程序設計的一切優(yōu)點,又考慮了所模擬的現(xiàn)實世界與程序解空間的直接映射關系;采用數(shù)據(jù)抽象和信息隱藏技術使得數(shù)據(jù)和(施加于數(shù)據(jù)的)操作成為不可分割的整體;程序由類定義、類實例(對象)和對象之間的動態(tài)聯(lián)系組成;程序的重用性好、易于維護和擴展較好地解決了軟件復雜性控制和生產(chǎn)率的提高。面向?qū)ο竺嫦驅(qū)ο骎S.面向過程程序設計面向過程程序設計用面向?qū)ο蟮脑O計方法實現(xiàn)前例的功能:class student/ 類定義/ 屬性char name10;long num;int age;char sex; / 方法public: voi
5、d enroll() . ; friend ostream& operator(ostream& out, student stud) . ;.;class teacher/ 類定義/ 屬性char name10;double salary;int age;char sex; / 方法public: void raise() . ; friend ostream& operator(ostream& out, teacher teach) . ;.;main(). / 類實例 對象student Zhang;teacher Li;/ 對象方法調(diào)用Zhang.en
6、roll();Li.raise();cout Zhang;cout Li;.面向?qū)ο蟪绦蛟O計的方法p建立模型模型是對事物特征和變化規(guī)律的一種抽象,是對客體認識的深化。被模擬的系統(tǒng):感性具體針對問題的概念抽象模擬系統(tǒng):實體(對象)映射映射建模實現(xiàn)的概念(類)抽象思維抽象知性思維思維具體具體思維面向?qū)ο蟪绦蛟O計語言nSimula引入了數(shù)據(jù)抽象概念以及類和繼承機制。 Ada,Modula-2 等語言在它的基礎上發(fā)展起來。nSmalltalk第一個真正的面向?qū)ο蟮某绦蛟O計語言。該語言引入和完善了類、方法、實例等概念,應用了繼承和動態(tài)鏈接機制,是一種完全面向?qū)ο蟮某绦蛟O計語言。面向?qū)ο蟪绦蛟O計語言nLI
7、SP 語言家族是一種以表處理表達為特色的人工智能程序設計語言。70 年代以來,在 LISP 的基礎上開發(fā)出許多 LISP 家族的面向?qū)ο蟪绦蛟O計語言,例如:nFlavorsnLOOPS(Lisp Object Oriented Programming System)nCommonLOOPSnCommonObjectsnCLOS(Common Lisp Object System)面向?qū)ο蟪绦蛟O計語言nC+C+ 是在 C 程序設計語言的基礎上進行擴充,增加了相應的面向?qū)ο髾C制的混合型面向?qū)ο蟮某绦蛟O計語言。 由于 C+ 既具有完備的面向?qū)ο髾C制,又保持了 C 的靈活高效和對 C 程序的兼容性,是
8、目前使用最廣泛的面向?qū)ο蟪绦蛟O計語言之一。常用的 C+ 語言版本有:nMS-C+、Turbo C+、Boland C+、Visual C+ 和GCC 等。面向?qū)ο蟪绦蛟O計語言nJava由 Sun Microsystems 公司開發(fā)的一種完全面向?qū)ο蟮某绦蛟O計語言。 Java 編譯器生成的是一種稱為“字節(jié)碼”的中間碼文件,該文件的執(zhí)行是由運行在不同計算機平臺上的 Java 虛擬機 JVM(Java Virtual Machine)完成的,所以 Java 語言非常適合網(wǎng)絡編程,實現(xiàn)程序的跨平臺、跨介質(zhì)運行的需要。面向?qū)ο蟪绦蛟O計語言nC#C# 是由 Microsoft 公司近年來開發(fā)一種直接用于在
9、 Microsoft Net 平臺上更易于編譯產(chǎn)生網(wǎng)絡程序(字節(jié)碼程序)的面向?qū)ο蟪绦蛟O計語言。該語言具有 Java 程序的跨介質(zhì)運行機制,在一定程度上保持了 C 的風格和高效率,并融入了 VB 語言開發(fā)程序的友好性和方便性,但目前還不能實現(xiàn)跨平臺運行二、面向?qū)ο蟪绦蛟O計的基本概念n對象(object)n消息(message)n類(class)對象 對象的定義在客觀世界中,對象是任何可以感覺到的事物。對象可以是自然事物(人、動物、植物等),組織結(jié)構(gòu)(學校、院系、班級等),(人類的)物質(zhì)產(chǎn)品(房屋、汽車、計算機等)和信息產(chǎn)品(文章、樂曲、規(guī)則、計劃等)等。對象可小可大,可簡單可復雜;復雜對象可以
10、由簡單對象構(gòu)成。無論對象的類型、大小、復雜程度多么不同,都具有共同的特性:對象 對象的定義無論對象的類型、大小、復雜程度多么不同,都具有共同的特性: 有一個特定的名字以區(qū)別于其他對象; 有一組屬性,用來描述對象的靜態(tài)特性; 有一組行為,用來描述對象的動態(tài)特性; 對象的操作可分為兩類:n對內(nèi)提供自身服務的行為n對外為其他對象提供服務的行為。對象(2) 對象的狀態(tài)p在客觀世界中,對象的狀態(tài)是同類型的不同實例獨立存在的依據(jù),也是這些對象的行為表現(xiàn)差異的基礎。p在面向?qū)ο蟮能浖?,對象的狀態(tài)是同類對象屬性的靜態(tài)類型和這些屬性的動態(tài)值的總和。一個對象一旦創(chuàng)建,由靜態(tài)類型所描述的屬性存儲區(qū)域就被分配確定,
11、描述不同對象差異的屬性動態(tài)值可以在對象創(chuàng)建的同時被確定,并由對象的相應行為修改。對象(3)對象的特性n模塊獨立性:對象的行為僅由對象本身的狀態(tài)確定,而對象的狀態(tài)和行為的操作細節(jié)被封閉在模塊內(nèi);n動態(tài)連接性:對象(模塊)之間通過消息機制,實現(xiàn)不同對象行為的動態(tài)連接,完成確定任務;n易維護性:維護工作被最大程度地限定在對對象的狀態(tài)和行為的確定規(guī)則(對象的定義類)的維護。消息(message)(1)消息的定義n消息是一個對象請求另一個對象執(zhí)行其某種行為操作(也稱為方法)的規(guī)格說明。這種規(guī)格說明總是由消息的接收者(提供方法的對象)、消息所請求的方法(方法名)和實現(xiàn)方法的必要參數(shù)組成的。所以在面向?qū)ο蟮?/p>
12、程序中,消息通常的表示形式是:對象名.方法。消息(message)(2)消息的性質(zhì)n同一對象可以接受不同形式的多個消息,并產(chǎn)生不同的響應;n相同形式的消息可以發(fā)送給不同接收對象,所獲得的響應可以截然不同;n消息的發(fā)送者可以不必考慮消息接收者是否會響應消息,消息接收者對消息的響應并不是必須的。消息(message)(3)消息的響應n接收消息的對象的狀態(tài)和消息所請求的方法決定了消息的響應。消息響應所引起的操作主要包括四種:返回對象的狀態(tài);修改對象的狀態(tài);完成特定的操作;改變系統(tǒng)的某些狀態(tài)。消息(message)(4)消息序列n與現(xiàn)實世界中一樣,在面向?qū)ο筌浖倪\行中一個任務所涉及的操作總會有多個對
13、象的參與和多次按順序相互作用才能完成,使得這些對象能夠按任務要求的順序相互通訊的消息組成的序列被稱為消息序列。類(class)(1)類的定義n在客觀世界中,類是對一組具有共同特性(屬性和行為)的客觀事物的抽象概念。n在面向?qū)ο蟮能浖?,類是由程序員自定義的具有特定數(shù)據(jù)結(jié)構(gòu)和建立數(shù)據(jù)結(jié)構(gòu)上的操作功能的抽象數(shù)據(jù)類型。 類(class)(2)類與對象的關系n類是創(chuàng)建對象的模板,提供了對象的構(gòu)造規(guī)則。n對象是類的實例,按類提供的規(guī)則構(gòu)造的數(shù)據(jù)。n同一類的不同實例(對象)必須具有:相同的操作集合;相同的靜態(tài)屬性集合;不同的對象名和屬性動態(tài)值三、面向?qū)ο筌浖闹匾匦詎抽象性(abstraction)n封
14、裝性(encapsulation)n繼承性(inheritance)n多態(tài)性(polymorphism)1 抽象性(abstraction)n抽象是對具體對象(問題)進行概括,抽出這一抽象是對具體對象(問題)進行概括,抽出這一類對象的公共性質(zhì)并加以描述的過程。類對象的公共性質(zhì)并加以描述的過程。先注意問題的本質(zhì)及描述,其次是實現(xiàn)過程或細節(jié)。 數(shù)據(jù)抽象:描述某類對象的屬性或狀態(tài)(對象相互區(qū)別的物理量)。 代碼抽象:描述某類對象的共有的行為特征或具有的功能。 抽象的實現(xiàn):通過類的聲明。1 抽象性(abstraction)實例鐘表n數(shù)據(jù)抽象: int Hour,int Minute,int Secon
15、dn代碼抽象: SetTime(),ShowTime() class Clock public: void SetTime(int NewH,int NewM,int NewS); void ShowTime(); private: int Hour,Minute,Second; ;1 抽象性(abstraction)實例人n數(shù)據(jù)抽象: char *name,char *gender,int age,int idn代碼抽象:生物屬性角度:nGetCloth(), Eat(), Step(), 社會屬性角度:nWork(), Promote() ,2 封裝性(encapsulation) 什麼是
16、封裝 具有一個確定的邊界,對象的所有數(shù)據(jù)成員 (屬性)、成員函數(shù)(行為)都被固定在這個 邊界內(nèi)部。 對象屬性的私有部分和行為的實現(xiàn)代碼受到保 護,其他對象不能直接修改該對象所擁有的數(shù) 據(jù)和代碼。 具有一個接口,這個接口描述對象之間的相互 作用(請求和響應)的規(guī)格說明,即消息。封裝反映了客觀世界中事物的基本特性。2 封裝性(encapsulation) 什麼是協(xié)議 對象對外服務的說明。對象的操作行為有三類:n私有(私有(private)操作,不向外界公開的對象行為,只)操作,不向外界公開的對象行為,只供對象自身調(diào)用供對象自身調(diào)用n保護(保護(protected)操作,向受限的外界公開)操作,向受
17、限的外界公開的對象行為,允許對象自身和派生類對象調(diào)用;的對象行為,允許對象自身和派生類對象調(diào)用;n公有(公有(public)操作)操作,向外公開的功能,向外公開的功能的對象的對象行為行為,允許對象自身、派生類對象和其他對象允許對象自身、派生類對象和其他對象調(diào)用,調(diào)用,即協(xié)議的內(nèi)容。即協(xié)議的內(nèi)容。 2 封裝性(encapsulation) 面向?qū)ο筌浖姆庋b性 實現(xiàn)數(shù)據(jù)隱藏和軟件安全的關鍵。 將設計與使用分隔,提供使用而隱藏設計。 將功能與實現(xiàn)分隔。提供功能而隱藏實現(xiàn)。封裝的三個重要概念: 封裝的原理 抽象數(shù)據(jù)類型; 封裝的實現(xiàn) 類定義; 封裝的單位 對象。2 封裝性(encapsulation
18、) 實例 class Clock public: void SetTime(int NewH,int NewM,int NewS); void ShowTime(); private: int Hour,Minute,Second; ;邊界特定的訪問權限3 繼承性(inheritance) 什麼是繼承繼承表達了一種對象類之間的依賴關系,它使得某類對象可以在另一類對象的屬性和行為的基礎上建造自己的屬性和行為。繼承反映了客觀世界中事物間的基本結(jié)構(gòu)關系。具有繼承關系的類間具有如下特征: 類間具有共享特征(數(shù)據(jù)和代碼的共享); 類間具有細微的差別和新增部分(非共享的數(shù) 據(jù)和代碼); 類間具有層次結(jié)構(gòu)。
19、 3 繼承性(inheritance) 繼承的分類具有繼承關系的類自然地被分為兩種:父類(基類):提供共享數(shù)據(jù)和功能的類。子類(派生類):繼承共享數(shù)據(jù)和功能的類。 按繼承源劃分: 單繼承:從單一父類繼承屬性和行為。 多繼承 :從多個父類繼承屬性和行為。 按繼承的內(nèi)容劃分: 取代繼承:子類可取代父類的作用。 包含繼承:子類包含了父類的全部特征。 受限繼承:子類只能繼承父類的某些特征。 特化繼承:子類是父類的一種特殊類。3 繼承性(inheritance) 繼承與封裝 繼承不破壞封裝; 繼承提供了一種靜態(tài)共享手段; 封裝提供了一種動態(tài)共享手段。 繼承與委托 繼承與委托的共同之處 通過代碼重用提 供
20、功能操作的共享。 繼承使得類之間的共享操作都由基類對象完 成,提供了從一般類構(gòu)造特殊類的手段。繼承 提供的共享是靜態(tài)實現(xiàn)的,即類之間的共享是 在類定義的編譯時確定的。3 繼承性(inheritance) 繼承與委托 繼承與委托的共同之處 通過代碼重用提 供功能操作的共享。 繼承使得類之間的共享操作都由基類對象完 成,提供了從一般類構(gòu)造特殊類的手段。繼承 提供的共享是靜態(tài)實現(xiàn)的,即類之間的共享是 在類定義的編譯時確定的。 委托是將一個對象的操作或操作的一部分交給 另一個特定對象去完成。委托提供的共享既可 以靜態(tài)實現(xiàn)又可以動態(tài)實現(xiàn),即在類對象的操 作執(zhí)行時確定委托對象。 3 繼承性(inheritance) 面向?qū)ο筌浖睦^承性 實現(xiàn)軟件代碼重用和結(jié)構(gòu)化的重要手段。 能清晰體現(xiàn)類之間的層次結(jié)構(gòu)關系; 能減小代碼和數(shù)據(jù)的重復冗余度,大大提高 了程序的代碼重用性; 能通過增加一致性來減少模塊間的接口和界 面,大大提高程序的易維護性; 繼承是
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度生物制藥廠房租賃合同及藥品研發(fā)生產(chǎn)服務協(xié)議3篇
- 科技力量團隊榮耀
- 2025年度精密模具加工委托合同協(xié)議書4篇
- 2025年度柴油發(fā)電機租賃與環(huán)保檢測服務協(xié)議3篇
- 二零二五年度出租車租賃運營管理承包合同3篇
- 二零二五年度餐飲行業(yè)健康證照辦理服務合同樣本3篇
- 2025年度產(chǎn)學研合作知識產(chǎn)權共享合同2篇
- 專業(yè)鉆掘設備出租協(xié)議規(guī)范文本一
- 個人租車合同協(xié)議書
- 2025年度廁所清潔能源應用與改造合同3篇
- 深圳2024-2025學年度四年級第一學期期末數(shù)學試題
- 中考語文復習說話要得體
- 《工商業(yè)儲能柜技術規(guī)范》
- 華中師范大學教育技術學碩士研究生培養(yǎng)方案
- 醫(yī)院醫(yī)學倫理委員會章程
- xx單位政務云商用密碼應用方案V2.0
- 風浪流耦合作用下錨泊式海上試驗平臺的水動力特性試驗
- 高考英語語法專練定語從句含答案
- 有機農(nóng)業(yè)種植技術操作手冊
- 塑料件缺陷匯總
- 2020年的中國海外工程示范營地申報材料及評分標準
評論
0/150
提交評論