C++程序設計與實踐:04-第5章 類和對象_第1頁
C++程序設計與實踐:04-第5章 類和對象_第2頁
C++程序設計與實踐:04-第5章 類和對象_第3頁
C++程序設計與實踐:04-第5章 類和對象_第4頁
C++程序設計與實踐:04-第5章 類和對象_第5頁
已閱讀5頁,還剩74頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、1、C+中函數的聲明、定義、調用2、函數的參數和返回值 傳值、指針、引用 默認參數3、函數重載4、內聯函數本章要點類類型。C+語言與C語言最大的不同,在于C+語言增加了面向對象的概念。訪問控制。類的成員包含public、private和protected三類訪問控制。類和對象的關系。類是對象的模型,對象是類的實例。靜態成員。所有的類對象共享該類的靜態數據成員。靜態函數成員只能直接訪問類的靜態數據成員。結構和聯合都是類。一位小學教師Ken希望完成這樣的任務:(1) 針對于小學生正在學習四邊形(quadrangle)的特性,編寫一個小軟件,能夠隨機在屏幕上顯示矩形(rectangle)、正方形(s

2、quare)、平行四邊形(parallelogram)、梯形(trapezoid)和菱形(diamond)五種形體之一(2) 顯示該形體的(隨機產生)(3) 學生復習四邊形的特性,然后根據給出的關鍵數據計算四邊形的面積,軟件判斷其結果的正確性(4) 在學習過程中,軟件記錄產生的每一個四邊形,在學生選擇不再繼續后,將其學習的過程重放一遍,用以重溫,加深印象。 問題分析及建模 為了簡化,我們暫時不考慮四邊形的圖形化表示,而只是用簡單的關鍵參數來表示各種不同的四邊形。 計算四邊形的面積,判斷學生的計算是否正確; 為了便于學習過程重放,生成的每個四邊形需要存儲。可以用鏈表來進行存儲struct Par

3、allelogramstring name;int width, height;其他幾種類型的四邊形的定義與之類似其他幾種類型的四邊形的定義與之類似 為了能夠復習,因此要求將生成的四邊形進行存儲,本設計采用列表的方式存儲。 回憶列表的關鍵:數據的存取、存儲的管理 最直觀的想法是采用來存儲四邊形?存儲的對象可能是不同類型的,怎么定義數組的類型考慮用數組存儲指針,這些指針分別指向不同類型的四邊形對象,地址用void * 類型來統一解決。?有多少個四邊形呢?即數組的大小怎么確定可以先估計一個四邊形的最大個數,然后用一個游標變量來表示生成四邊形的實際個數。struct List void *quadM

4、AXLEN; int len;3、形體和列表類型設計上的缺陷問題:程序代碼可以從列表中非常方便地提取出一個指針(如list.quad0等),但如何確定該指針指向的形體對象的類型?解決方法:重新定義一種新的類型Q,用于描述四邊形的結構體從從Para * 類型到類型到 void * 類型的賦值類型的賦值會丟失類型信息會丟失類型信息5.1 問題引入數組的基礎類型指針是有類型的(假定為Q),這種類型從外表上看起來像是形體類型中的任何一個,即它是一個結構體,并且至少包含一個string類型的name成員struct Quadrangle string name;typedef Quadrangle *Q

5、UADPTR;存儲形式:list.quad0 = reinterpret_cast (¶);struct Node QUADPTR quad; Node *next;struct List Node *head,*tail;C風格方案存在著幾個非常明顯的缺陷:對象的屬性與對象的行為是分離的,二者之間沒有明確而穩固的聯系;對象的行為(函數)成為主導者,對象反而成了被加工者。這與自然的思維有所區別;從信息安全的角度出發,對象的屬性對其他所有客戶程序員(代碼的使用者)都是公開的,也就是不受保護的。C風格程序的一種補風格程序的一種補救方法救方法結構體的類版本 Quadrangle Rectan

6、gle List結構體和聯合體在結構體和聯合體在C+中也是一種特殊中也是一種特殊的類類型的類類型給靜態成員函數一個對象參數,指給靜態成員函數一個對象參數,指明它需要操作哪個對象明它需要操作哪個對象。1. 計算器:Calculator2. 打印機:Printer3. 數據5.8 解決方案面臨的問題:1) 將形體描述由結構體版本改造成為類版本2) 不僅要統計Rectangle類對象的個數,還要統計所有形體對象的數目5.8.1 形體類型的類版本5.8.2 列表類型的類版本p116游泳池過道97001,Lin Lin,F,19UML圖形標識4.6Clock- Hour : int- Minute : int- Second : int+ ShowTime() : void+ SetTime(NewH : int = 0, NewM : int = 0, NewS : int = 0) : voidClockmyClock : Clock- Hour : int- Minute : int- Second : intmyClock : Clock類 A類

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論