




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、1Chapter 1 Object-Oriented Programming1.1 Object-Oriented and Procedural Programming (面向對象和面向過程編程面向對象和面向過程編程)1.2 Classes and Abstract Data Types (類與抽象數(shù)據(jù)類型類與抽象數(shù)據(jù)類型)1.3 The Client/Server Model and Message Passing (客戶客戶/服務器模式與消息傳遞服務器模式與消息傳遞)1.4 Inheritance and Polymorphism (繼承與多態(tài)繼承與多態(tài))1.5 Interfaces an
2、d Components (接口與組件接口與組件)21.1 Object-Oriented and Procedural Programming1. Procedural Programming(面向過程編程面向過程編程)模擬模擬計算機思維計算機思維來解決問題(輸入來解決問題(輸入-運算運算-輸出)輸出)編程工作主要是圍繞解題編程工作主要是圍繞解題過程來過程來設計設計算法算法(algorithm)函數(shù)函數(shù)構成程序中的模塊構成程序中的模塊 main() sub1() sub2() subN() sub11() subN1() subNk() 缺陷缺陷: 軟件維護困難軟件維護困難難以修改和擴充難以
3、修改和擴充 軟件重用困難軟件重用困難數(shù)據(jù)和操作是分離的數(shù)據(jù)和操作是分離的結構化程序設計的方法結構化程序設計的方法自頂向下自頂向下 模塊化設計模塊化設計 結構化編碼結構化編碼 2功能分解功能分解2. Object-Oriented Programming(面向對象編程面向對象編程)盡可能模擬盡可能模擬人類人類習慣的思維方式,分析、設計和實現(xiàn)一個習慣的思維方式,分析、設計和實現(xiàn)一個軟件系統(tǒng)的方法。軟件系統(tǒng)的方法。使用接近于人類認識世界和解決問題的方法。使用接近于人類認識世界和解決問題的方法。Classes and Objects(類和對象類和對象) 現(xiàn)實世界和編程世界現(xiàn)實世界和編程世界456體形龐
4、大體形龐大,長鼻子長鼻子身體表面有毛,一般分頭、頸、身體表面有毛,一般分頭、頸、軀干、四肢和尾五個部分軀干、四肢和尾五個部分用肺呼吸;體溫恒定用肺呼吸;體溫恒定哺乳和胎生哺乳和胎生用肺呼吸;體溫恒定用肺呼吸;體溫恒定哺乳和胎生哺乳和胎生身體表面有毛,一般分頭、頸、身體表面有毛,一般分頭、頸、軀干、四肢和尾五個部分軀干、四肢和尾五個部分嗅覺靈敏度高嗅覺靈敏度高, 連續(xù)奔跑連續(xù)奔跑吐舌頭吐舌頭.汪汪叫汪汪叫哺乳動物哺乳動物entity(實體實體)elephant7品牌品牌汽車自重汽車自重顏色顏色價格價格移動移動鳴笛鳴笛剎車剎車油耗油耗汽車載重量汽車載重量靜態(tài)特性靜態(tài)特性(屬性屬性attribute
5、)動態(tài)特性動態(tài)特性(行為行為behavior)汽車銷售汽車銷售carbrand color price fuel_consumptionmovebrakecruzebrand CHEVROLETcolor redprice 8.8fuel_consumption 6.9movebrakeAudiQ5brand Audicolor whiteprice 40fuel_consumption 9.5movebrakecar什么是類(class)?是對現(xiàn)實生活中具有是對現(xiàn)實生活中具有相同屬性和行為相同屬性和行為的的實體實體進行進行抽象的抽象的描述,是一個描述,是一個抽象數(shù)據(jù)類型抽象數(shù)據(jù)類型(abst
6、ract data type)8carbrand color price fuel_consummovebrake通過類能夠將抽象通過類能夠將抽象后的后的屬性屬性和和行為行為聚聚集在一起集在一起將有關事物的將有關事物的共性共性歸納、集歸納、集中起來中起來無須了解其無須了解其底層底層實現(xiàn)細節(jié)實現(xiàn)細節(jié)通過類能夠將抽象通過類能夠將抽象后的后的屬性屬性和和行為行為聚聚集在一起集在一起學生類教師類手機類類的類的C+描述描述9class car string brand/品牌品牌string color;/顏色顏色float price;/價格價格float fuel_consumption;/油耗油耗
7、void move()/移動移動 void brake()/剎車剎車 ;data member(數(shù)據(jù)成員數(shù)據(jù)成員)function member(函數(shù)成員函數(shù)成員)method(方法方法)在程序中,屬性在程序中,屬性( (attribute) )是用是用數(shù)據(jù)數(shù)據(jù)表示,而行為表示,而行為( (behavior)用用函數(shù)函數(shù)來來實現(xiàn)實現(xiàn)什么是對象(object)? 類的類的實例化實例化(instantiation )10cruzebrand CHEVROLETcolor redprice 8.8fuel_consum 6.9movebrakeAudiQ5brand Audicolor whitep
8、rice 40fuel_consum 9.5movebrake對象的對象的C+描述描述11int main() car cruze; cruze. brand=“CHEVROLET”; cruze. color=“red”; return 0;classobjectUser-Defined Data Types (自定義數(shù)據(jù)類型自定義數(shù)據(jù)類型) variable(變量變量)12現(xiàn)實世界現(xiàn)實世界entity(實體實體)object對象對象class類類編程世界編程世界抽象抽象(abstract)實例化實例化instantiation對應對應抽象是指從現(xiàn)實世界抽象是指從現(xiàn)實世界實體實體中中抽取抽取
9、最本質最本質的與的與特定特定應用應用相相關關的特性加以描述的過程的特性加以描述的過程. .抽象主要是針對實體的抽象主要是針對實體的屬性屬性和和行為行為。cruzebrand CHEVROLETcolor redprice 8.8fuel_consumption 6.9movebrake car cruze; cruze. brand=“CHEVROLET”; cruze. color=“red”; carbrand color price fuel_consumptionmovebrakeclass car string brandstring color;float price;float
10、fuel_consumption; void move() void brake() ;面向對象編程是面向對象編程是用用對對象分解象分解取代功能分解,取代功能分解,程序中的所有對象分工程序中的所有對象分工協(xié)作,共同完成整個程協(xié)作,共同完成整個程序的功能。序的功能。1.1 Object-Oriented and Procedural ProgramminguC+C+面向象面向象程序框架程序框架13class oneclass one;classclass twotwo;././其他類其他類classclass n n;int main()/主函數(shù)主函數(shù) . return 0;構成程序的基構成程序
11、的基本模塊是本模塊是類類(classes ) 著重于著重于”類類”的設計的設計 面向對象程序設計面向對象程序設計=對象對象+類類+繼承繼承+消息消息 1.2 Classes and Abstract Data Types14uEncapsulation (封裝封裝)信息隱藏信息隱藏(Information Hiding)(Information Hiding)隱藏實現(xiàn)細節(jié)隱藏實現(xiàn)細節(jié), ,用戶不可見用戶不可見整體整體以完整形式呈現(xiàn)出來以完整形式呈現(xiàn)出來 接口接口通過必要的接口與外界聯(lián)系通過必要的接口與外界聯(lián)系 15classcarbrand color price fuel_consummov
12、ebrake16什么是封裝(encapsulation)? ?封裝是將對象的封裝是將對象的屬性屬性和和行為行為組合成一個獨立的組合成一個獨立的單單位位,并盡可能隱藏對象內部細節(jié),只保留必要,并盡可能隱藏對象內部細節(jié),只保留必要的對外接口,使之與外界聯(lián)系。的對外接口,使之與外界聯(lián)系。17制藥廠制藥廠電話號碼廠址產品目錄產品配方原料庫存查詢產品價格產品生產方法計算產品生產成本電話號碼廠址產品目錄產品配方原料庫存查詢產品價格產品生產方法計算產品生產成本查詢電話號碼查詢電話號碼查詢廠址查詢廠址查詢產品目錄查詢產品目錄查詢原料庫存查詢原料庫存訪問控制訪問控制18封裝的步驟封裝的步驟設置屬性的可見性設置屬
13、性的可見性創(chuàng)建訪問屬性的方法創(chuàng)建訪問屬性的方法在訪問屬性的方法中加在訪問屬性的方法中加入控制語句入控制語句全部設置為全部設置為私有私有查詢電話號碼、查詢電話號碼、查詢廠址等查詢廠址等方法方法來來訪問對應的屬性訪問對應的屬性“原料庫存原料庫存”的訪的訪問問控制控制進行細化進行細化19制藥廠制藥廠電話號碼廠址產品目錄產品配方原料庫存查詢產品價格產品生產方法計算產品生產成本電話號碼廠址產品目錄產品配方原料庫存查詢產品價格產品生產方法計算產品生產成本查詢電話號碼查詢電話號碼查詢廠址查詢廠址查詢產品目錄查詢產品目錄查詢原料庫存查詢原料庫存能夠保護隱私能夠保護隱私隱藏實現(xiàn)細節(jié)隱藏實現(xiàn)細節(jié)方便加入控制語句方
14、便加入控制語句可重用性可重用性封裝的優(yōu)點封裝的優(yōu)點? ?20C+語言對封裝的支持語言對封裝的支持C+語言的語言的類類是支持封裝的模塊。是支持封裝的模塊。C+C+的類能夠將抽象后的的類能夠將抽象后的屬性屬性和和行為行為聚集在一聚集在一起起C+C+使用關鍵字使用關鍵字publicpublic和和privateprivate來對類的屬性和來對類的屬性和行為進行行為進行訪問控制訪問控制( (access control) )。 public public表示是表示是公有的,公有的,privateprivate表示是私有的表示是私有的21制藥廠制藥廠class pharmaceutical_factor
15、y private private : int tele_num;/電話號碼電話號碼 string address;/地址地址 string product_list;/目錄目錄 string product_formula;/產品配方產品配方 float stock;/庫存庫存 float method() float cost() publicpublic: int inquire_ tele_num() /查詢電話號碼查詢電話號碼 string inquire_ address() /查詢地址查詢地址 string inquire_ product_list() /查詢目錄查詢目錄 fl
16、oat inquire_price() float inquire_ stock() ;函數(shù)成員可以函數(shù)成員可以隱藏或不隱藏隱藏或不隱藏數(shù)據(jù)成員是隱藏數(shù)據(jù)成員是隱藏函數(shù)成員可以函數(shù)成員可以隱藏或不隱藏隱藏或不隱藏電話號碼廠址產品目錄產品配方原料庫存查詢產品價格產品生產方法計算產品生產成本查詢電話號碼查詢電話號碼查詢廠址查詢廠址查詢產品目錄查詢產品目錄查詢原料庫存查詢原料庫存 uAbstract Data Types (Abstract Data Types (抽象數(shù)據(jù)類型抽象數(shù)據(jù)類型) )當一個數(shù)據(jù)類型僅暴露其當一個數(shù)據(jù)類型僅暴露其公有接口公有接口,而將其,而將其私有實現(xiàn)隱藏私有實現(xiàn)隱藏起來,
17、就稱這個數(shù)據(jù)類型是抽象起來,就稱這個數(shù)據(jù)類型是抽象(AbstractAbstract)。抽象抽象(AbstractAbstract)強調的是使程序設計人員無須了解其強調的是使程序設計人員無須了解其底層實現(xiàn)細節(jié)底層實現(xiàn)細節(jié)(low-level implementation details)。在面向對象編程中,通過在面向對象編程中,通過類類的設計,對抽象數(shù)據(jù)類型提供的設計,對抽象數(shù)據(jù)類型提供直接的支持。直接的支持。例如例如: : C+中的字符串類中的字符串類string221.2 Classes and Abstract Data Types1.3 The Client/Server Model
18、and Message Passing23人們習慣的工作方式:人們習慣的工作方式:“顧客顧客-服務員服務員”的模式的模式。uThe Client/Server Model(客戶客戶/服務器模式服務器模式)24通常,類和對象表現(xiàn)為服務器通常,類和對象表現(xiàn)為服務器(server),而,而使用使用類和對象的模塊,表現(xiàn)為客戶類和對象的模塊,表現(xiàn)為客戶(client),客戶通過,客戶通過特殊的方式請求服務。特殊的方式請求服務。字符串類string 公共接口: 創(chuàng)建string 銷毀string 合并string 計算string長度int main() string s1=“Hello”; couts1
19、.length()endl; return 0;serverclient請求服務請求服務25uMessage Passing(消息傳遞消息傳遞) 一個公司有人事部、財一個公司有人事部、財務部、和銷售部。務部、和銷售部。 每個部門有自己的數(shù)據(jù)每個部門有自己的數(shù)據(jù)和處理數(shù)據(jù)的方法和處理數(shù)據(jù)的方法人事檔案人事檔案財務報表財務報表銷售數(shù)據(jù)銷售數(shù)據(jù) 每個部門的數(shù)據(jù)不對外每個部門的數(shù)據(jù)不對外公開公開 部門之間通過發(fā)送部門之間通過發(fā)送消息消息獲取對方的數(shù)據(jù)獲取對方的數(shù)據(jù)要使某一個對象實現(xiàn)某一要使某一個對象實現(xiàn)某一種行為種行為(即操作即操作),應當向它,應當向它傳送相應的傳送相應的消息消息。 什么是消息什么是
20、消息(MessageMessage) ?消息是向某個對象提出消息是向某個對象提出執(zhí)行執(zhí)行該對象具有的某該對象具有的某個個方法方法的的申請申請。對象之間就是這樣通過發(fā)送和接收消息互相對象之間就是這樣通過發(fā)送和接收消息互相聯(lián)系聯(lián)系進行進行協(xié)作協(xié)作的。的。 C+中消息傳遞的實現(xiàn)中消息傳遞的實現(xiàn):通過通過調用調用對象的函數(shù)成員(方法)來請求服對象的函數(shù)成員(方法)來請求服務,這種調用稱為向該對象發(fā)送了一個消息。務,這種調用稱為向該對象發(fā)送了一個消息。 int main() string s1=“Hello” int n=s1.length(); return 0;method invocation(方
21、法調用方法調用)1.4 Inheritance and Polymorphism Inheritance(繼承繼承)提供提供類復合類復合的實現(xiàn)的實現(xiàn)機制,有助于實現(xiàn)代碼的機制,有助于實現(xiàn)代碼的重用重用。繼承是面。繼承是面向對象程序設計的向對象程序設計的關鍵關鍵。 Polymorphism(多態(tài)多態(tài))提供類對象提供類對象接口接口與其與其具體實現(xiàn)具體實現(xiàn)相分離的手段多態(tài)是面向相分離的手段多態(tài)是面向對象程序設計的對象程序設計的補充補充。28uInheritance(繼承繼承)29什么是繼承什么是繼承(inheritance) )?特殊類的對象擁有其一般類對象的全部屬性和行為特殊類的對象擁有其一般類對
22、象的全部屬性和行為,稱作特殊類對一般類的繼承。,稱作特殊類對一般類的繼承。30derived class or child class( (派生類或子類派生類或子類) )base class or parent class( (基類或父類基類或父類) )一個類(派生類或子類)可以在另一個已定義一個類(派生類或子類)可以在另一個已定義類(基類或父類)的基礎上進行定義。派生類可類(基類或父類)的基礎上進行定義。派生類可以以繼承繼承基類中的屬性和行為,也可以基類中的屬性和行為,也可以定義自己定義自己的的屬性和行為。屬性和行為。繼承構成一種類與類的繼承構成一種類與類的層次模型層次模型( (inheri
23、tance hierarchies ) )。繼承對于軟件復用繼承對于軟件復用(software reusability)有著重有著重要意義,利用繼承可以簡化程序設計的步驟。它要意義,利用繼承可以簡化程序設計的步驟。它是面向對象技術能夠提高軟件開發(fā)效率的重要原是面向對象技術能夠提高軟件開發(fā)效率的重要原因之一。因之一。3132base class(基類基類) )derived class(派生類派生類) )大哥大手機品牌 顏色 價格 打出電話接聽電話彩屏手機彩屏發(fā)彩信放音樂智能手機觸摸屏上網放視頻品牌、顏色品牌、顏色 價價格格 、打、打出電話、出電話、接聽電接聽電話話品牌、顏色品牌、顏色 價價格格
24、 、彩、彩屏、打出屏、打出電話、接電話、接聽電話、聽電話、發(fā)彩信、發(fā)彩信、放音樂放音樂繼承的繼承的C+描述描述33class: public ;34uPolymorphism(Polymorphism(多態(tài)多態(tài)) ) 35什么是多態(tài)什么是多態(tài) (Polymorphism (Polymorphism) )? 在在類等級類等級的不同層次中,的不同層次中,相同的消相同的消息息,被,被不同類不同類的對象接收,產生的對象接收,產生了了不同的行為不同的行為。多態(tài)性體現(xiàn)在不同類型的多態(tài)性體現(xiàn)在不同類型的手機采用不同的手機采用不同的行為(界面)行為(界面)來實現(xiàn)同一個功能來實現(xiàn)同一個功能36如在如在Windows環(huán)境下,環(huán)境下,用鼠標雙擊一個用鼠標雙擊一個文件對象文件對象(即向對象傳送一個消息即向對象傳送一個消息),如果對象是一個可執(zhí)行文如果對象是一個可執(zhí)行文件,則會執(zhí)行此程序,如件,則會執(zhí)行此程序,如果對象是一個文本文件,果對象是一個文本文件,則啟動文本編輯器并打開則啟動文本編輯器并打開該文件。該文件。在在C+中,通過中,通過虛函數(shù)虛函數(shù)(Virtual Function )機制來實現(xiàn)機制來實現(xiàn)多態(tài)。多態(tài)。1.5 Interfaces and Compon
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年河北能源職業(yè)技術學院單招職業(yè)傾向性測試題庫必考題
- 第六單元 寫作《表達要得體》教學設計2024-2025學年統(tǒng)編版語文八年級上冊
- 第一單元第三課《搜索網絡信息》教學設計 2023-2024學年浙教版(2013)初中信息技術七年級上冊
- 第二單元第10課一、《制作生日蛋糕出現(xiàn)的動畫》教學設計 2023-2024學年人教版初中信息技術八年級上冊
- 2025至2030年中國柱修邊模具數(shù)據(jù)監(jiān)測研究報告
- 江蘇省徐州市沛縣、新沂市等2縣市2023-2024學年高二上學期12月聯(lián)考地理試題(解析版)
- 10 青山處處埋忠骨 第二課時(教學設計)-2023-2024學年統(tǒng)編版語文五年級下冊
- 高中信息技術必修二2.3《信息系統(tǒng)的優(yōu)勢和局限性》教學設計
- 2025年鶴壁職業(yè)技術學院單招職業(yè)技能測試題庫完整版
- 農產品批發(fā)綜合市場項目風險分析與應對措施
- 廖常初《FX系列LC編程及應用》課后習題答案
- 輪狀病毒性腸炎
- 世界社會主義五百年
- 加氫裂化操作工題庫(合并版)
- 正大集團大豬場開發(fā)流程
- 高中政治必修四知識體系每單元的總體框架
- 房地產金融創(chuàng)新與風險防范的理論演進
- GB/T 41255-2022智能工廠通用技術要求
- GB/T 41029-2021石油天然氣鉆井海洋棄井作業(yè)規(guī)程
- 深入推進依法行政
- GB/T 4026-1992電器設備接線端子和特定導線線端的識別及應用字母數(shù)字系統(tǒng)的通則
評論
0/150
提交評論