freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

面向?qū)ο蟪绦蛟O(shè)計(jì)課程設(shè)計(jì)指導(dǎo)書(shū)-展示頁(yè)

2025-06-19 13:12本頁(yè)面
  

【正文】 作為其數(shù)據(jù)成員。 但是,反之則不成立。如果一個(gè)類(lèi)的成員函數(shù)以某種方式使用到另一個(gè)類(lèi)對(duì)象時(shí),則該類(lèi)就依賴(lài)于另一個(gè)類(lèi)。實(shí)際上,當(dāng)一個(gè)類(lèi)的數(shù)據(jù)成員的類(lèi)型是另一個(gè)類(lèi)時(shí),則這兩個(gè)類(lèi)是關(guān)聯(lián)的。 圖 類(lèi)圖中的屬性和方法 如果一個(gè)類(lèi)的對(duì)象能操作另一個(gè)類(lèi)的對(duì)象,則該類(lèi)與另一個(gè)類(lèi)關(guān)聯(lián)。 在 UML 表示中, 關(guān)聯(lián)關(guān)系用帶開(kāi)口箭頭的實(shí)線表示。因此,可以將 Car 類(lèi)作為Vehicle類(lèi)的派生類(lèi),同時(shí)建立 Tire類(lèi)與 Circle類(lèi)之間的關(guān)聯(lián)關(guān)系: ? class Car : public Vehicle ? { ? ... ? private: ? vectorTire tires。如果要設(shè)計(jì)一個(gè)程序?qū)Ω咚俟返慕煌ㄟM(jìn)行圖形模擬,則程序應(yīng)當(dāng)為轎車(chē)、卡車(chē)以及其他車(chē)輛構(gòu)造相應(yīng)模型。 這種處理的技術(shù)被稱(chēng)為“關(guān)聯(lián)”( association),每一個(gè) Tire 對(duì)象與一個(gè) Circle 對(duì)象關(guān)聯(lián)。 ? Circle boundary。 但是輪胎和圓之間還是存在某種關(guān)系,一個(gè)輪胎有一個(gè)圓形輪廓。汽車(chē)輪胎并不一定就是圓的。的確,這些方法在考慮一個(gè)圓形時(shí)是必須具備的。 但對(duì)繼承關(guān)系的濫用確實(shí)存在。 繼承關(guān)系存在于一般類(lèi)(基類(lèi))和具體類(lèi)(派生類(lèi))之間,這種關(guān)系常被描述成 is— a 關(guān)系。 我們已經(jīng)學(xué)過(guò)了類(lèi)的繼承關(guān)系。例如,當(dāng)發(fā)現(xiàn)一些類(lèi)具有相同的行為時(shí),完全可以將這個(gè)行為提取出來(lái)放到一個(gè)基類(lèi)中,從而使設(shè)計(jì)更合理并可節(jié)省精力。 如 果在檢查了所有主要任務(wù)兵發(fā)現(xiàn)它們都可以通過(guò)類(lèi)和職責(zé)來(lái)解決時(shí),基于 CRC 卡片方法的設(shè)計(jì)工作便完成了。如果需要,可以對(duì)卡片中的職責(zé)進(jìn)行刪除、移動(dòng)、分解或者合并。一些研究者認(rèn)為,一個(gè) CRC 卡片中不應(yīng)包含超過(guò)三個(gè)不同的職責(zé)。 需要注意的是,在 CRC 卡片上列出的職責(zé)都是高層的(即粗粒度的)。一個(gè)較為有效的做法是將 CRC 卡片分類(lèi),將相互有聯(lián)系的卡片放到一起,然后通過(guò)移動(dòng)一個(gè)標(biāo)記來(lái)模擬任務(wù)的執(zhí)行,即通過(guò)標(biāo)記在不同卡片中的移 動(dòng)來(lái)指示當(dāng)前活動(dòng)的對(duì)象。如果沒(méi)有,則增加該職責(zé)。 在本例中,要計(jì)算發(fā)票的合計(jì)金額,則需要每個(gè)項(xiàng)目的金額(單項(xiàng)小計(jì));所以項(xiàng)目類(lèi)便成為發(fā)票類(lèi)的協(xié)作者。 如果一個(gè)類(lèi)可以獨(dú)立地完成指派給它的職責(zé),則不需要做進(jìn)一步的工作。簡(jiǎn)單地說(shuō),這種方法工作過(guò)程如下:為每一個(gè)類(lèi)構(gòu)造一個(gè)如圖 所示的索引卡片,稱(chēng)為 CRC 卡片;當(dāng)在任務(wù)描述中碰到一些動(dòng)詞時(shí),則應(yīng)考慮將該動(dòng)作指定給某個(gè)類(lèi)去完成,即在該類(lèi)中設(shè)計(jì)相應(yīng)的成員函數(shù)完成該動(dòng)作;將動(dòng)作對(duì)應(yīng)類(lèi)的 CRC 卡片去處,并把其職責(zé)記錄在卡片INVOICE Sam’s Small Applications 100 Main Street Anytown,CA 98765 AMOUNT DUE:$ ITEM Q ty Price Total Toaster 3 $ $ Hair Dryer 1 $ $ Car Vacuum 2 $ $ 中;如果在完成該動(dòng)作的過(guò)程中需要用到其他類(lèi),則將這些其他類(lèi)構(gòu)成該類(lèi)的協(xié)作者,也將被記錄在卡片中。 可以采用 CRC 卡片方法來(lái)很好地完成上述設(shè)計(jì)任務(wù)。仍以上面的發(fā)票程序?yàn)槔?,程序中?yīng)當(dāng)有一個(gè)類(lèi)用來(lái)計(jì)算合計(jì)金額。換句話說(shuō),需要確定每個(gè)類(lèi)需要什么樣的成員函數(shù),從而完成程序的功能。在進(jìn)行討論的時(shí)候,將所有關(guān)于類(lèi)的設(shè)計(jì)構(gòu)思記下來(lái)并添加到該列表中;最后對(duì)該類(lèi)列表進(jìn)行篩選,去掉沒(méi)有價(jià)值的候選項(xiàng)。例如,如果需要完成的工作 是打印如圖 所示的發(fā)票,很明顯可以構(gòu)造的類(lèi)有:發(fā)票( invoice)、項(xiàng)目( item)和客戶( customer)。我們已經(jīng)使用一些類(lèi)來(lái)表示有形的實(shí)體,例如產(chǎn)品、圓、時(shí)鐘等;另一些類(lèi)用來(lái)表示抽象的概念,例如:流、串。當(dāng)采用面向?qū)ο蟮脑O(shè)計(jì)過(guò)程時(shí),需要完成以下任務(wù): ; ,即需要做什么樣的動(dòng)作; 。 在運(yùn)行( deployment)階段將程序 交付給用戶,用戶安裝并使用系統(tǒng)以獲得所需的功能。 測(cè)試( testing)階段的工作就是通過(guò)測(cè)試來(lái)驗(yàn)證程序完成了所要的功能。 在實(shí)現(xiàn)( implementation)階段,編寫(xiě)程序代碼來(lái)具體實(shí)現(xiàn)所設(shè)計(jì)的類(lèi)及其成員函數(shù)。在此基礎(chǔ)上,如果采用面向?qū)ο笤O(shè)計(jì),則需要設(shè)計(jì)出所使用的類(lèi)以及這些類(lèi)的主要成員函數(shù)。 在設(shè)計(jì)( design)階段,要為系統(tǒng)的實(shí)現(xiàn)做必要的 設(shè)計(jì)。作為需求文檔的一部分,用戶手冊(cè)用來(lái)說(shuō)明用戶如何操作軟件以使用這些功能。下面對(duì)這 5 個(gè)階段做一個(gè) 概括性的描述: ? 分析 ? 設(shè)計(jì) ? 實(shí)現(xiàn) ? 測(cè)試 ? 運(yùn)行 在分析 (analysis)階段 ,需要明確項(xiàng)目將完成什么任務(wù)(目標(biāo)),但并不考慮程序具體如何實(shí)現(xiàn)這些功能。 第二章 預(yù)備知識(shí) 軟件生命周期 軟件生命周期的定義是:一個(gè)軟件從構(gòu)思到最終停止使用所經(jīng)歷的所有活動(dòng)。在演示答辯時(shí),概念準(zhǔn)確,能夠?qū)Τ绦蚬δ苓M(jìn)行充分的驗(yàn)證。 2.對(duì)于沒(méi)有提供源代碼的程序,實(shí)現(xiàn)后最高成績(jī)?yōu)閮?yōu)。 1.對(duì)于已經(jīng)提供源代碼的程序,如果沒(méi)有實(shí)現(xiàn)擴(kuò)展功能,最高成績(jī)?yōu)榱肌? 附錄 B 給出了課程設(shè)計(jì)報(bào)告的格式。后面兩道題目沒(méi)有提供相應(yīng)的源代碼。 第四章提供了六個(gè)可供選擇的課程設(shè)計(jì)題目,進(jìn)一步豐富學(xué)生的選擇性。還提供了一個(gè)實(shí)例演示整個(gè)過(guò)程。 第二章講述進(jìn)行面向?qū)ο蟪绦蛟O(shè)計(jì)的方法。課程設(shè)計(jì)報(bào)告的格式見(jiàn)附錄 A。 3. 所編寫(xiě)出的程序要能正確運(yùn)行,具有友好的操作方式。 1. 利用 CRC 卡片設(shè)計(jì)類(lèi)和類(lèi)中的方法,并使用 UML 繪制類(lèi)圖,然后實(shí)現(xiàn)該程序。 《面 向 對(duì) 象 程 序 設(shè) 計(jì)》 課 程 設(shè) 計(jì) 指 導(dǎo) 書(shū) 劉 平 山 寧 黎 華 桂 林 電 子 科 技 大 學(xué) 目 錄 第一章 課程設(shè)計(jì)目標(biāo) 本次課程設(shè)計(jì)的綜合訓(xùn)練能幫助學(xué)生建立面向?qū)ο笏枷氲乃季S方式,加深對(duì)面向?qū)ο罄碚摵突局R(shí)的理解,掌握使用 C++語(yǔ)言進(jìn)行面向?qū)ο蟪绦蛟O(shè)計(jì)的基本方法;培養(yǎng)學(xué)生利用面向?qū)ο蠹夹g(shù)解決實(shí)際問(wèn)題的能力。從而使得學(xué)生增加對(duì)面向?qū)?象方法和思想的感性認(rèn)識(shí),最終能夠讓學(xué)生能夠利用 C++語(yǔ)言以面向?qū)ο蟮乃季S方式編寫(xiě)出一些小型可靠的面向?qū)ο蟪绦颍瑤椭鷮W(xué)生系統(tǒng)地掌握面向?qū)ο蟪绦蛟O(shè)計(jì)技術(shù),切實(shí)提高面向?qū)ο蟮乃季S能力和程序設(shè)計(jì)能力。 2. 編寫(xiě)的程序要具有良好的可讀性,在適當(dāng)?shù)牡胤揭由献⑨專(zhuān)麛?shù)據(jù)成員和方法應(yīng)取一些有意義的名詞,養(yǎng)成良好的編程習(xí)慣。 4. 撰寫(xiě)課程設(shè)計(jì)報(bào)告。 第一章說(shuō)明課程設(shè)計(jì)目標(biāo)和考核標(biāo)準(zhǔn)。學(xué)生按照本書(shū)所介紹的方法進(jìn)行訓(xùn)練能夠有效提高以面向?qū)ο笏季S思考的能力。 第三章提供了五個(gè)課程設(shè)計(jì)題目,學(xué)生可以通過(guò)這 5 個(gè)題目來(lái)學(xué)習(xí),并完成擴(kuò)展部分,達(dá)到課程設(shè)計(jì)的要求。前四個(gè)題目提供了源代碼參考,并要求有相應(yīng)的擴(kuò)展。 附錄 A 介紹了向量 vector。 附錄 C 給出 了第四章四個(gè)題目的參考源代碼。如果實(shí)現(xiàn)了擴(kuò)展功能,最高成績(jī)?yōu)閮?yōu)。 3.程序能正常運(yùn)行。 5.課程設(shè)計(jì)說(shuō)明書(shū)格式規(guī)范,圖表完整,字跡工整、整齊。大多數(shù)軟件工程師把軟件開(kāi)發(fā)過(guò)程分解為如下 5 個(gè)階段。分析階段需要生成一份需求文檔( requirement document) ,在其中詳細(xì)地描述了程序?qū)⒁獙?shí)現(xiàn)的各種功能。在需求文檔中也應(yīng)該包括系統(tǒng)的穩(wěn)定規(guī)定,例如程序必須在給定時(shí)間內(nèi)處理多少輸入,或者對(duì)于系統(tǒng)內(nèi)存和磁盤(pán)空間的最大需求方面的規(guī)定。首先需要分析所面臨問(wèn)題的結(jié)構(gòu)。相應(yīng)地,本階段的產(chǎn)品是對(duì)所采用的類(lèi)及其主要成員函數(shù)的描述,以及用來(lái)描述類(lèi)之間關(guān)系的圖表。本階段最終產(chǎn)生一個(gè)完整的程序。在這個(gè)階段,測(cè)試人員提交一份測(cè)試報(bào)告,說(shuō)明所進(jìn)行的測(cè)試和測(cè)試的結(jié)果。 CRC 卡片 在軟件開(kāi)發(fā)的設(shè)計(jì)階段,主要目的是構(gòu)造適當(dāng)?shù)慕Y(jié)構(gòu),使得在計(jì)算機(jī)上實(shí)現(xiàn)既定的任務(wù)成為可能。 一個(gè)類(lèi)表示了一些有用的概念。一個(gè)確定類(lèi)的簡(jiǎn)單法則是,從任務(wù)描述的名詞中尋找可能的構(gòu)造的類(lèi)。將所有可能需要構(gòu)造的類(lèi)記錄在一個(gè)列表中是一個(gè)好習(xí)慣。 圖 發(fā)票 一旦確定了系統(tǒng)需要構(gòu)造的的類(lèi)之后,接下來(lái)需要為每一個(gè)類(lèi)定義行為。相應(yīng)地,確定成員函數(shù)的一 般方法是關(guān)注任務(wù)描述中的動(dòng)詞,并將其作為成員函數(shù)分配到適當(dāng)?shù)念?lèi)中去。接下來(lái),應(yīng)當(dāng)考慮在哪一個(gè)類(lèi)中完成這個(gè)功能:是由客戶類(lèi)計(jì)算自己的應(yīng)付款項(xiàng)?還是由項(xiàng)目類(lèi)自己統(tǒng)計(jì)?或者由發(fā)票類(lèi)來(lái)計(jì)算該數(shù)據(jù)?在本例中,最好是由發(fā)票類(lèi)來(lái)負(fù)責(zé)實(shí)現(xiàn)合計(jì)金額的計(jì)算。 CRC 表示類(lèi)( Class)、職責(zé)( Responsibilities)和協(xié)作( Collaborators)。 再來(lái)考慮上例:假設(shè)將計(jì)算合計(jì)金額的職責(zé)分配給發(fā)票類(lèi)完成,那么就要在發(fā)票類(lèi)的 CRC 卡片的左邊標(biāo)記“計(jì)算合計(jì)金額”這樣一個(gè)指責(zé)。反之,如果一個(gè)類(lèi)在完成指定職責(zé)的過(guò) 程中必須借助別的類(lèi),則要將這些類(lèi)寫(xiě)在該類(lèi)的 CRC 卡片的右邊。這時(shí),需要檢查對(duì)應(yīng)項(xiàng)目類(lèi)的 CRC 卡片,確認(rèn)其中已經(jīng)有了“單項(xiàng)小計(jì)”這一職責(zé)功能。 如何知道正在做正確的事情?對(duì)于每一個(gè)動(dòng)作對(duì)應(yīng)的職責(zé)功能,應(yīng)通過(guò)各個(gè) CRC 卡片中已記錄的職責(zé),來(lái)分析它具體做什么事情。這樣,不但可以確認(rèn)設(shè)計(jì)的正確性,還可以幫助理解各個(gè)類(lèi)之間的協(xié)作關(guān)系,從而達(dá)到更好的設(shè)計(jì)目的。有時(shí),單個(gè)職責(zé)可能在類(lèi)中對(duì)應(yīng)兩個(gè)或更多的成員函數(shù)來(lái)實(shí)現(xiàn)。 CRC 卡片是作為非正式目的的而使用的,用于更好地構(gòu)造類(lèi)和及其屬性。如果發(fā)現(xiàn)目前 CRC 卡片中的內(nèi)容已經(jīng)比較混亂,完全可以丟棄,因?yàn)檫@是一個(gè)非正式的過(guò)程。 圖 CRC卡片 UML 類(lèi)圖 在設(shè)計(jì)一個(gè)程序時(shí),了解類(lèi)之間的關(guān)系是十分重要的,這將在多方面有助于設(shè)計(jì)。除此之外,如何一些類(lèi)之間已經(jīng)被確認(rèn)相互不存在關(guān)系,則可以將這些類(lèi)分派給不同的程序設(shè)計(jì)人員去實(shí)現(xiàn),而不必?fù)?dān)心它們之間是否有足夠的溝通或協(xié)調(diào)。繼承關(guān)系是一種非常 重要的類(lèi)關(guān)系,但絕非唯一有用的關(guān)系,而且在實(shí)踐中常有被濫用的嫌疑。例如:每一輛卡車(chē)都是車(chē)輛,每一個(gè)存儲(chǔ)賬戶都是銀行賬戶,每一個(gè)正方形都是矩形(等寬并等高),等等,它們描述的正是這種關(guān)系。例如,考慮一個(gè)表示汽車(chē)輪胎的Tire 類(lèi)作為 Circle 類(lèi)的派生類(lèi)嗎?似乎是合理的,因?yàn)?Circle 類(lèi)中的一些方法對(duì) Tire類(lèi)也是很有用的,例如: Tire類(lèi)可以繼承 Circle類(lèi)中關(guān)于計(jì)算半徑、周長(zhǎng)和圓心的這些方 法。雖然這種繼承關(guān)系可以為程序員帶來(lái)便利,但是就這兩個(gè)類(lèi)所代表的概念來(lái)講,它們之間并不存在這種繼承關(guān)系。輪胎是汽車(chē)的一部分,而圓是幾何對(duì)象。 C++允許構(gòu)造這種關(guān)系,其方法如下: ? class Tire ? { ? ... ? private: ? string rating。 ? }。 再看另一個(gè)例子。 每一輛轎車(chē)都是 (is— a)車(chē)輛,每一輛轎車(chē)也都有輪胎(并且數(shù)量是 4 個(gè),如果加上備用胎,則是 5 個(gè))。 ? }。圖 是一個(gè)有繼承關(guān)系和關(guān)聯(lián)關(guān)系的類(lèi)圖。例如,對(duì)于一個(gè) Car 類(lèi)對(duì)象,通過(guò)簡(jiǎn)單地訪問(wèn) Tire 類(lèi)數(shù)據(jù)成員來(lái)操作 Tire 類(lèi)對(duì)象,而 Tire 類(lèi)對(duì)象通過(guò)一個(gè)成員變量指向 Circle類(lèi)的一個(gè)對(duì)象;所以類(lèi) Car 與類(lèi) Tire、類(lèi) Tire 與類(lèi) Circle 之間就存在著關(guān)聯(lián)關(guān)系。 需要說(shuō)明的是,關(guān)聯(lián)關(guān)系與前面講到的依賴(lài)關(guān)系是相互聯(lián)系的。而關(guān)聯(lián)關(guān)系是一種程度更深的依賴(lài)關(guān)系,如果一個(gè)類(lèi)與另一個(gè)類(lèi)存在關(guān)聯(lián)關(guān)系,則它們之間必定存在依賴(lài)關(guān)系。如果一個(gè)類(lèi)與另一個(gè)類(lèi)存在關(guān)聯(lián)關(guān)系,則該類(lèi)對(duì)象包含其關(guān)聯(lián)類(lèi)對(duì)象的位置,這通常是由于該類(lèi)中包含了其關(guān)聯(lián)對(duì)象的類(lèi)對(duì)象(數(shù)據(jù)成員)。例如, Purse 類(lèi)與 Coin 類(lèi)存在依賴(lài)關(guān)系,但并不一定就和 Coin 類(lèi)發(fā)生關(guān)聯(lián)。 在前面的章節(jié)中, 介紹了用 UML 來(lái)表示依賴(lài)關(guān)系,它是一個(gè)帶開(kāi)口箭頭的虛線。為了進(jìn)一步區(qū)分和記憶這三種容易混淆的 UML 表示,表列出了這三種 UML 關(guān)系符號(hào)。這里所說(shuō)的屬性是指從外部可 見(jiàn)的對(duì)象特征。一般來(lái)說(shuō),類(lèi)屬性對(duì)應(yīng)類(lèi)的數(shù)據(jù)成員。相反,只在類(lèi)中設(shè)置了一個(gè)從午夜到現(xiàn)在的總秒數(shù)、而在需要時(shí)計(jì)算出上面三個(gè)數(shù)值。類(lèi)名在最上面,屬性在中間,成員函數(shù)在最下面。這類(lèi)類(lèi)圖可用于理解設(shè)計(jì)該類(lèi)圖的 用意。例如,由于 Vehicle 類(lèi)型對(duì)象包含 Tire類(lèi)型對(duì)象成員而表示成關(guān)聯(lián)關(guān)系,不必在 Vehicle類(lèi)的屬性中列出屬性 tires。在閱讀其他相關(guān)書(shū)籍時(shí),常常可以看到多種不同的表示關(guān)聯(lián)關(guān)系的方法。其含義是,可以通過(guò)一個(gè)類(lèi)操 作另一個(gè)類(lèi)的對(duì)象,但反之則不行。 當(dāng)然,如果在 Tire 類(lèi)對(duì)象中設(shè)置一個(gè)指針,用于指向其所屬的 Vehicle類(lèi)對(duì)象,則稱(chēng)這種關(guān)聯(lián)關(guān)系為雙向( bidi
點(diǎn)擊復(fù)制文檔內(nèi)容
畢業(yè)設(shè)計(jì)相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1