版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、C+程序相關(guān)設(shè)計(jì)教案第1節(jié) 面向?qū)ο蟮姆椒▉?lái)自實(shí)踐1 面向?qū)ο蠓椒ǖ挠蓙?lái)2 OO方法的引入3 程序設(shè)計(jì)的質(zhì)量因素4 設(shè)計(jì)中常見(jiàn)的問(wèn)題5 程序設(shè)計(jì)常識(shí)與技巧 2C+程序相關(guān)設(shè)計(jì)教案1面向?qū)ο蠓椒ǖ挠蓙?lái)1-1 早期程序設(shè)計(jì)語(yǔ)言的發(fā)展Fortran, Cobol, APL, C 等出現(xiàn)是為了方便的編寫(xiě)代碼。特點(diǎn):方便, 易學(xué),小巧簡(jiǎn)潔的設(shè)計(jì)是最好的技巧3C+程序相關(guān)設(shè)計(jì)教案1面向?qū)ο蠓椒ǖ挠蓙?lái)1-2 現(xiàn)代程序設(shè)計(jì)語(yǔ)言C+, Ada, Java 等與傳統(tǒng)的語(yǔ)言相反,顯得十分龐大,難以學(xué)會(huì)。特點(diǎn):龐雜難學(xué)編寫(xiě)程序比原來(lái)要長(zhǎng)的多!4C+程序相關(guān)設(shè)計(jì)教案1面向?qū)ο蠓椒ǖ挠蓙?lái)1-3 Why?程序員:定義+聲明
2、+描述+許多困難=保證代碼的一致性現(xiàn)代語(yǔ)言:不一致性是語(yǔ)法錯(cuò)誤!代碼可以自我文檔化 (業(yè)界趨勢(shì))!語(yǔ)言的本身沒(méi)有任何的優(yōu)點(diǎn)(代碼可能會(huì)一樣的糟糕)5C+程序相關(guān)設(shè)計(jì)教案1面向?qū)ο蠓椒ǖ挠蓙?lái)1-4 面向?qū)ο蠓椒ㄅc程序復(fù)雜性的關(guān)系OOP編寫(xiě)小程序時(shí) “弊大于利”, 適合復(fù)雜程序程序設(shè)計(jì)的復(fù)雜性來(lái)源 應(yīng)用本身的復(fù)雜性 (程序員無(wú)法決定) 程序?qū)崿F(xiàn)的復(fù)雜性大大增加 (程序員可以控制)返回6C+程序相關(guān)設(shè)計(jì)教案2 面向?qū)ο蠓椒ǖ囊?-1 面向?qū)ο蠓椒ǖ某霭l(fā)點(diǎn)盡可能的模擬人的思維方式去解決問(wèn)題以對(duì)象為中心:特殊 歸納 -一般 - 演繹 -特殊問(wèn)題空間與解空間的矛盾客觀世界的動(dòng)態(tài)特性 解空間的復(fù)雜算法運(yùn)動(dòng)
3、與實(shí)體的統(tǒng)一 解空間程序與數(shù)據(jù)的分離7C+程序相關(guān)設(shè)計(jì)教案2 面向?qū)ο蠓椒ǖ囊?-2 面向?qū)ο蠓椒ǖ暮?jiǎn)單概括客觀世界都是由對(duì)象組成的。所有的對(duì)象都可以劃分為抽象的類(lèi)。可以按基類(lèi)和派生類(lèi)的關(guān)系組成類(lèi)的層次結(jié)構(gòu)。對(duì)象間的通信僅通過(guò)消息傳送機(jī)制。8C+程序相關(guān)設(shè)計(jì)教案2 面向?qū)ο蠓椒ǖ囊?-3 Coad & Yourdon的定義 (1991)Object-Oriented=Objects+Classfication+Inheritance+Communication with messages9C+程序相關(guān)設(shè)計(jì)教案2 面向?qū)ο蠓椒ǖ囊?-4 類(lèi)和對(duì)象的概念對(duì)象(Object):一個(gè)包含數(shù)據(jù)結(jié)構(gòu)
4、和施加其上的操作的封裝體。類(lèi)(Class):對(duì)具有相同屬性和行為的一個(gè)或多個(gè)對(duì)象的描述。類(lèi)中定義的數(shù)據(jù)(實(shí)體的性質(zhì)),稱(chēng)為屬性(Attribute)類(lèi)中的操作(服務(wù)),稱(chēng)為方法(Method)10C+程序相關(guān)設(shè)計(jì)教案2 面向?qū)ο蠓椒ǖ囊?-5 聚合關(guān)系(Aggregation)是“整體部分”的關(guān)系,它反映了對(duì)象之間的構(gòu)成關(guān)系;是類(lèi)與類(lèi)關(guān)聯(lián)的特例。相關(guān)概念關(guān)聯(lián):對(duì)象之間相互依賴(lài)和作用的關(guān)系舉例:汽車(chē)發(fā)動(dòng)機(jī)電腦顯示器11C+程序相關(guān)設(shè)計(jì)教案2 面向?qū)ο蠓椒ǖ囊?-6 繼承關(guān)系(Inheritance) 是“一般特殊”的關(guān)系,它反映了基類(lèi)與若干個(gè)互不相容的子類(lèi)之間的分類(lèi)關(guān)系。 相關(guān)概念繼承:(廣
5、義)直接獲得已有的特征和性質(zhì),而不必重新定義(狹義)子類(lèi)自動(dòng)的共享基類(lèi)中定義的數(shù)據(jù)與方法一種機(jī)制 舉例:汽車(chē)轎車(chē)電腦筆記本電腦12C+程序相關(guān)設(shè)計(jì)教案2 面向?qū)ο蠓椒ǖ囊?-7 練習(xí) 分析下列對(duì)象之間的關(guān)系“家具、沙發(fā)、衣柜、電視柜、服裝、襯衣,褲子、家用電器、電視、DVD機(jī)、組合音響、功放和音箱”13C+程序相關(guān)設(shè)計(jì)教案2 面向?qū)ο蠓椒ǖ囊?-8 消息(Message) 消息:對(duì)象之間通信的一種構(gòu)造。 組成部分: 接收消息的對(duì)象 消息名 若干個(gè)變?cè)祷?4C+程序相關(guān)設(shè)計(jì)教案3程序設(shè)計(jì)質(zhì)量的因素3-1 高內(nèi)聚性的函數(shù):函數(shù)的命名:用函數(shù)的完成的任務(wù)(動(dòng)詞短語(yǔ))。如果出現(xiàn)命名的困難情況 多
6、個(gè)動(dòng)詞出現(xiàn),那么內(nèi)聚性很可能較差。例如:insertItem();/ok;insertOrRemoveItem; /暴露了函數(shù)的低內(nèi)聚性注意:也不要把函數(shù)分成小塊,造成接口泛濫!15C+程序相關(guān)設(shè)計(jì)教案3程序設(shè)計(jì)質(zhì)量的因素3-2 接口的低耦合度:期望:盡量減少函數(shù)接口中的元素?cái)?shù)量;可以通過(guò)合并對(duì)相同數(shù)據(jù)的操作來(lái)減少接口處錯(cuò)的情況;找到內(nèi)聚和耦合的結(jié)合點(diǎn)。16C+程序相關(guān)設(shè)計(jì)教案3程序設(shè)計(jì)質(zhì)量的因素3-3 經(jīng)典設(shè)計(jì)案例Booch(客戶機(jī)與服務(wù)器的連接方案)面向?qū)ο蠓椒ê瘮?shù)與數(shù)據(jù)的綁定服務(wù)器對(duì)象客戶對(duì)象數(shù)據(jù)服務(wù)器方法服務(wù)器方法服務(wù)器方法數(shù)據(jù)客戶方法客戶方法客戶方法客戶方法返回17C+程序相關(guān)設(shè)計(jì)教
7、案4程序設(shè)計(jì)常見(jiàn)問(wèn)題-命名沖突開(kāi)發(fā)小組原因1:在一個(gè)C+程序中函數(shù)的名字是唯一的。原因2:當(dāng)開(kāi)發(fā)人員較多時(shí),保持命名一致性是一件很困難的事情。原因3:命名是有一定的規(guī)定標(biāo)準(zhǔn)的。解決:面向?qū)ο蟮姆椒ň徑饬诉@一問(wèn)題:它允許在不同類(lèi)中聲明同名的函數(shù)!返回18C+程序相關(guān)設(shè)計(jì)教案5程序設(shè)計(jì)的常識(shí)與技巧5-1 穩(wěn)定性是第一原則:程序是否穩(wěn)定可靠是可用的首要條件穩(wěn)定性不只是在一般狀況下,而是在各種情況下例如:網(wǎng)站在10個(gè)用戶連接點(diǎn)擊正常,不代表100個(gè)用戶同時(shí)連接點(diǎn)擊也正常;可以在網(wǎng)上找一些測(cè)試網(wǎng)站,測(cè)一下自己做的網(wǎng)站的性能。19C+程序相關(guān)設(shè)計(jì)教案5程序設(shè)計(jì)的常識(shí)與技巧5-2 可維護(hù)性和可讀性:寫(xiě)程序時(shí)
8、要考慮可讀性,為以后自己維護(hù)或同事維護(hù)提供方便;影響可讀性的原因:使用大量的遞歸;來(lái)回的跳轉(zhuǎn) 關(guān)于Goto語(yǔ)句;不常用的算法等。20C+程序相關(guān)設(shè)計(jì)教案5程序設(shè)計(jì)的常識(shí)與技巧5-3 可移植性的考慮:不只要在windows中正常運(yùn)行,還要考慮Linux, Unix等系統(tǒng)是否可以運(yùn)行;影響可移植性的原因:例如,在C程序中使用大量的庫(kù)函數(shù)造成了不統(tǒng)一;Java的統(tǒng)一性正在逐步解決這些問(wèn)題。21C+程序相關(guān)設(shè)計(jì)教案5程序設(shè)計(jì)的常識(shí)與技巧5-4 好的代碼風(fēng)格 整齊,易懂,但未必高效:函數(shù)和變量取名標(biāo)準(zhǔn);代碼要對(duì)齊(tab=4),不要太多縮進(jìn);函數(shù)盡量少用參數(shù),一定要校驗(yàn)每個(gè)函數(shù)的返回值;在函數(shù)開(kāi)始位置定
9、義和聲明所有的變量, 對(duì)變量初始化;注意不要寫(xiě)太長(zhǎng)的函數(shù);慎用“宏”,用則大寫(xiě)之;(例如:#define MY_MACRO 25)22C+程序相關(guān)設(shè)計(jì)教案5程序設(shè)計(jì)的常識(shí)與技巧5-5 C/C+語(yǔ)言編碼書(shū)寫(xiě)的小技巧:If (data_Found) do_Something();技巧:“即使是單句程序也用 ”返回23C+程序相關(guān)設(shè)計(jì)教案完C+程序相關(guān)設(shè)計(jì)教案匈牙利命名法(Hungarian Notation)規(guī)則:Prefix-BaseTag-Name其中標(biāo)準(zhǔn)的Prefix (可選) 有:p 指針,rg 集合,c 計(jì)數(shù)器,h 句柄另外約定:C+成員變量由m開(kāi)頭:如,m_fInit全局變量由g開(kāi)頭:
10、如, g_fFlag25C+程序相關(guān)設(shè)計(jì)教案匈牙利命名法(Hungarian Notation)其中BaseTag數(shù)據(jù)類(lèi)型有(C+):void vint iBOOL fUNIT uiBYTE bCHAR chWCHAR wchULONG- ulLONG lDWORD dwHRESULT hr DWORD- w返回26C+程序相關(guān)設(shè)計(jì)教案關(guān)于Goto語(yǔ)句的使用使用原則:?jiǎn)稳肟诤蛦纬隹诳梢允褂肎oto;盡量不用多于1個(gè)的Goto語(yǔ)句標(biāo)記;保證使用Goto不產(chǎn)生代碼“死角”;一般不往回跳轉(zhuǎn),可以向前跳轉(zhuǎn)。返回27C+程序相關(guān)設(shè)計(jì)教案關(guān)于函數(shù)的長(zhǎng)度IBM公司在1986年統(tǒng)計(jì)數(shù)據(jù)表明最容易出錯(cuò)的函數(shù)是超
11、過(guò)500行的函數(shù)。1991年統(tǒng)計(jì)數(shù)據(jù)表明少于143行的函數(shù)的出錯(cuò)率比長(zhǎng)函數(shù)的出錯(cuò)率要低倍!返回28C+程序相關(guān)設(shè)計(jì)教案關(guān)于變量初始化的問(wèn)題大多數(shù)情況,變量不必初始化,但是:?jiǎn)栴}1:在程序中間的初始賦值語(yǔ)句被跳過(guò);問(wèn)題2:在初始賦值前就開(kāi)始訪問(wèn)該變量;問(wèn)題3:有些語(yǔ)言的初值是隨機(jī)的(C/C+),無(wú)法判定初值。29C+程序相關(guān)設(shè)計(jì)教案關(guān)于變量初始化的問(wèn)題例1:HRESULT hr;/ 因此:第一句改為 HRESULT hr=S_OK;LPSTR str = (LPSTR) LocalAlloc (LPTR, size)/ 內(nèi)存分配不一定成功if (str) hr = S_OK; / 這句加 else hr=E_FAIL; return hr;? 若hr初值恰巧=S_OK,那程序就有問(wèn)題了 ?30C+程序相關(guān)設(shè)計(jì)教案關(guān)于函數(shù)返回值的問(wèn)題例:wcscpy ( wcServerIP, WinsAnsiToUnicode(cAddr,NULL) ); 注: WinsAnsiToUnic
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 房屋貼皮維修工人和工頭的合同(2篇)
- 二零二五年度男方房產(chǎn)贈(zèng)與女方及子女的財(cái)產(chǎn)贈(zèng)與合同14篇
- 二零二五年度離婚后子女撫養(yǎng)費(fèi)及探望權(quán)執(zhí)行合同4篇
- 2025年度智能農(nóng)貿(mào)場(chǎng)裝修升級(jí)合同4篇
- 二零二五年度農(nóng)藥行業(yè)供應(yīng)鏈金融服務(wù)合同4篇
- 二零二五版模具維修改型及知識(shí)產(chǎn)權(quán)保護(hù)合同3篇
- 二零二五版金融控股公司首席風(fēng)險(xiǎn)官(CRO)合同3篇
- 2025年度寧波高端住宅項(xiàng)目購(gòu)房合同范本4篇
- 2025年度特色民宿搭棚建設(shè)合同4篇
- 2025年度外墻涂料專(zhuān)業(yè)承包及售后服務(wù)合同4篇
- 長(zhǎng)亭送別完整版本
- 2024年英語(yǔ)高考全國(guó)各地完形填空試題及解析
- 智能養(yǎng)老院視頻監(jiān)控技術(shù)方案
- 你比我猜題庫(kù)課件
- 無(wú)人駕駛航空器安全操作理論復(fù)習(xí)測(cè)試附答案
- 建筑工地春節(jié)留守人員安全技術(shù)交底
- 默納克-NICE1000技術(shù)交流-V1.0
- 蝴蝶蘭的簡(jiǎn)介
- 老年人心理健康量表(含評(píng)分)
- 《小兒靜脈輸液速度》課件
- 營(yíng)銷(xiāo)人員薪酬標(biāo)準(zhǔn)及績(jī)效考核辦法
評(píng)論
0/150
提交評(píng)論