C程序設(shè)計(jì)簡(jiǎn)明教程第3篇在C中實(shí)現(xiàn)面向?qū)ο蟾拍頮第1頁(yè)
C程序設(shè)計(jì)簡(jiǎn)明教程第3篇在C中實(shí)現(xiàn)面向?qū)ο蟾拍頮第2頁(yè)
C程序設(shè)計(jì)簡(jiǎn)明教程第3篇在C中實(shí)現(xiàn)面向?qū)ο蟾拍頮第3頁(yè)
C程序設(shè)計(jì)簡(jiǎn)明教程第3篇在C中實(shí)現(xiàn)面向?qū)ο蟾拍頮第4頁(yè)
C程序設(shè)計(jì)簡(jiǎn)明教程第3篇在C中實(shí)現(xiàn)面向?qū)ο蟾拍頮第5頁(yè)
已閱讀5頁(yè),還剩9頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、第3章 面向?qū)ο蟪绦蛟O(shè)計(jì)一、對(duì)象和類(lèi)    OOP(Object-Oriented Programming)是一種基于對(duì)編程元素的現(xiàn)實(shí)理解,允許程序員在編程時(shí)即定義數(shù)據(jù)元素,又定義可對(duì)這些數(shù)據(jù)元素進(jìn)行的操作。· 對(duì)象:包含數(shù)據(jù)和操作的實(shí)體,如汽車(chē)、人等。 · 類(lèi):是 C# 中的一種結(jié)構(gòu),用于在程序中模擬現(xiàn)實(shí)生活的事物。 · 定義訪問(wèn)修飾符 class <類(lèi)名>          / 類(lèi)的主體     &#

2、160;  如:    class Employee          / 類(lèi)的主體    · 成員變量 · 語(yǔ)法:訪問(wèn)修飾符 類(lèi)型 成員變量; · 說(shuō)明:訪問(wèn)修飾符主要有以下幾鐘:    public:可以被所有類(lèi)訪問(wèn)    internal:可以被當(dāng)前程序集訪問(wèn)    protected:可被所屬類(lèi)和子類(lèi)訪問(wèn) &#

3、160;  private:只能被所屬類(lèi)訪問(wèn) · 類(lèi)的默認(rèn)訪問(wèn)修飾符為internal,而類(lèi)成員為private。 · protected、public和internal修飾的成員變量采用帕斯卡命名法,私有成員采用駱駝命名法。 · 示例:分析員工類(lèi)Employee中需要包含姓名、性別、職稱(chēng)、薪水等信息,因此可以定義一個(gè)如下所示的類(lèi):    class Employee           private string _nam

4、e;       private char _gender;       private string _qualification;       private uint _salary;      · 若要訪問(wèn)Employee類(lèi)中的屬性,則應(yīng)先創(chuàng)建類(lèi)的實(shí)例或?qū)ο蟆?#160;       Emp

5、loyee objEmployee = new Employee(); · 使用點(diǎn)號(hào)訪問(wèn)成員變量        objEmployee._name = “張三"        objEmployee._name = 'M' 二、構(gòu)造函數(shù)和析構(gòu)函數(shù)·     構(gòu)造函數(shù)      類(lèi)的一種特殊方法,每次創(chuàng)建類(lèi)的實(shí)例都會(huì)調(diào)用它,

6、其功能是將成員變量的值初始化為某個(gè)默認(rèn)值。      語(yǔ)法:          訪問(wèn)修飾符 類(lèi)名(參數(shù))                      / 構(gòu)造函數(shù)的主體        

7、;        說(shuō)明:        Ø 可以帶參數(shù)Ø 無(wú)返回值Ø 若類(lèi)中沒(méi)有定義構(gòu)造函數(shù),則運(yùn)行庫(kù)將自動(dòng)提供默認(rèn)的無(wú)參的構(gòu)造函數(shù)。示例1:無(wú)參的構(gòu)造函數(shù)class Employeeprivate string _name;    private char _gender;    private string _qualification; &#

8、160;  private uint _salary;/ 默認(rèn)構(gòu)造函數(shù)    private Employee()           _qualification = “研究生"    static void Main(string args)         / 調(diào)用默認(rèn)構(gòu)造函數(shù)      &#

9、160; Employee objEmployee = new Employee();        Console.WriteLine(“資格= " + objEmployee._qualification);        Console.WriteLine(“薪水= " + objEmployee._salary);          

10、60; 示例2:帶摻的構(gòu)造函數(shù)class Employeeprivate string _name;    private char _gender;    private string _qualification;    private uint _salary;/ 默認(rèn)構(gòu)造函數(shù)    private Employee()           _qualification = “大學(xué)

11、畢業(yè)生"/ 參數(shù)化構(gòu)造函數(shù)private Employee(string strQualification, string strName,char gender, uint empSalary)    _qualification =  strQualification;    _name = strName;                  

12、  _gender = gender;                    _salary = empSalary;                         &

13、#160;  public static void Main(string args)                                / 調(diào)用默認(rèn)構(gòu)造函數(shù)          

14、        Employee objGraduate = new Employee();                  / 調(diào)用參數(shù)化構(gòu)造函數(shù)                  Em

15、ployee objMBA = new Employee(“ACCPS3“, ”張亮影“, 男', 5500);                  Console.WriteLine(“默認(rèn)構(gòu)造函數(shù)輸出: n資格=“ + objGraduate._qualification);            

16、      Console.WriteLine(“n參數(shù)化構(gòu)造函數(shù)輸出: n資格= " +objMBA._qualification);              · 析構(gòu)函數(shù) 是C#中的另一種特殊方法,用于執(zhí)行清除操作。聲明方法與構(gòu)造函數(shù)類(lèi)似,只是在名字前加沙鍋內(nèi)代子號(hào)()。    Ø 語(yǔ)法    類(lèi)名() 

17、;          / 析構(gòu)函數(shù)的主體        Ø 說(shuō)明     一個(gè)類(lèi)只能有一個(gè)析構(gòu)函數(shù)     析構(gòu)函數(shù)不能重載     不能顯式或手動(dòng)調(diào)用,只能由垃圾回收器自動(dòng)調(diào)用。    Ø 示例:   

18、60;   Employee()       /實(shí)現(xiàn)析構(gòu)函數(shù)三、方法    方法可執(zhí)行對(duì)象的行為,類(lèi)中的方法通常包括在調(diào)用類(lèi)時(shí)要使用的操作語(yǔ)句。· 方法聲明   語(yǔ)法:       訪問(wèn)修飾符 返回類(lèi)型 方法名(參數(shù)列表)             &

19、#160;   /方法的主體        · 說(shuō)明:    方法不返回值,則返回類(lèi)型為void。若需要,則用return 表達(dá)式帶回返回值。    參數(shù)列表可選。    訪問(wèn)修飾符默認(rèn)為private。 · 示例    class Point        

20、   int x;       int y;       void Assign()                     System.Console.WriteLine(“輸入點(diǎn)的值");     

21、60;        x = int.Parse(System.Console.ReadLine();              y = int.Parse(System.Console.ReadLine();           · 調(diào)用方法    格式:對(duì)

22、象名.方法(參數(shù)列表);    示例         class ComplexNumber                      private int _real;         

23、    private int _imaginary;                          private void Accept()                 

24、;              Console.WriteLine(“請(qǐng)輸入實(shí)數(shù)部分");                  _real = int.Parse(Console.ReadLine();          &

25、#160;       Console.WriteLine(“請(qǐng)輸入虛數(shù)部分");                  _imaginary = int.Parse(Console.ReadLine();               

26、0;            void ShowResult()                                    Console.WriteLine(

27、“相加之和為:");                      Console.WriteLine(_real + "+" + _imaginary + "i");               

28、60;             / 此方法用于將兩個(gè)復(fù)數(shù)相加              ComplexNumber Add(ComplexNumber objParam1)               

29、;                     objParam1._real += _real ;                      objParam1._imaginary += _

30、imaginary;                      return objParam1;                          

31、 STAThread             public static void Main(string args)                            ComplexNumber objNumber

32、1 = new ComplexNumber();               ComplexNumber objNumber2 = new ComplexNumber();               objNumber1.Accept();      

33、60;        objNumber2.Accept();               ComplexNumber objTemp = objNumber1.Add(objNumber2);               objTemp.ShowR

34、esult();             四、方法重載    在實(shí)際生活中,有些職責(zé)或任務(wù)有共同的名稱(chēng),例如,我們每個(gè)月都會(huì)有各種需要支付的費(fèi)用,如電話(huà)費(fèi)、手機(jī)費(fèi)、電費(fèi)、煤氣費(fèi)、水費(fèi)等。雖然都叫付費(fèi),但其支付的過(guò)程可能不同,因此,在C#中,可以利用方法重載來(lái)實(shí)現(xiàn)付費(fèi)這一任務(wù)。例如:   Class BillPayment         

35、        void PayBill(int telephoneNumber)                     /此方法用于支付固定電話(huà)話(huà)費(fèi)              void PayBill(long consume

36、rNumber)                     /此方法用于支付電費(fèi)              void PayBill(long consumerNumber, double amount)        &

37、#160;            /此方法用于支付移動(dòng)電話(huà)話(huà)費(fèi)                      注意,不能根據(jù)返回類(lèi)型來(lái)重載方法。· 基于不同數(shù)量的參數(shù)的方法重載    int greatest(int num1, int num2) &#

38、160;        Console.WriteLine(“0 和 1 相比, 最大的是: ", num1, num2);          if(num1 > num2)                      

39、60;     return num1;                    else                           

40、; return num2;                    int greatest(int num1, int num2, int num3)               Console.WriteLine(“0, 1 和 2 相比, 最大的是: ", num1, num2, num3); 

41、;         if(num1 > num2 && num1 > num3)                           return num1;          &#

42、160;         else if(num2 > num1 && num2 > num3)                           return num2;        &

43、#160;           else                           return num3;               ·

44、 基于不同類(lèi)型的參數(shù)的方法重載    int greatest(int numbers)             int temp = numbers0;         for(int i = 1;i < numbers.Length;i+)           

45、0;                if(temp < numbersi)                   temp = numbersi;           

46、;       return temp;        double greatest(double numbers)             double temp = numbers0;         for(int i = 1;i < numbers.Length;i+)&#

47、160;                    if(temp < numbersi)            temp = numbersi;              &#

48、160;   return temp;    五、屬性    C#中通過(guò)屬性特性來(lái)讀取和寫(xiě)入字段,而不直接進(jìn)行讀取和寫(xiě)入,以此來(lái)提供對(duì)字段的進(jìn)一步保護(hù)。用戶(hù)可以象訪問(wèn)字段那樣訪問(wèn)屬性。因此,屬性進(jìn)一步對(duì)類(lèi)的數(shù)據(jù)進(jìn)行了封裝。· 格式: 訪問(wèn)修飾符 數(shù)據(jù)類(lèi)型 屬性名       get ;      set ;   ·  例如:&#

49、160;   class Employee             private static string _name;         private static string _id;         public string Id  /屬性名,公有的采用帕斯卡命名,私有的采用駱駝命名  

50、0;      /讀取屬性            get                                 return _id;

51、60;                         / 設(shè)置屬性            set               &

52、#160;                 / 驗(yàn)證輸入長(zhǎng)度小于 2                     if (_id.Length > 2)       &

53、#160;             _id = value;                           · 屬性類(lèi)型         可讀可寫(xiě)

54、0;        只讀         訪問(wèn)修飾符 數(shù)據(jù)類(lèi)型 屬性名                         get ;         &

55、#160;        只寫(xiě)         訪問(wèn)修飾符 數(shù)據(jù)類(lèi)型 屬性名                    set ;          · 靜態(tài)屬性訪問(wèn)修飾符s

56、tatic 數(shù)據(jù)類(lèi)型 屬性名get;set; 該屬性屬于整個(gè)類(lèi),而不是類(lèi)的實(shí)例。 · 綜合示例         class SavingsAccount         / 類(lèi)字段用于存儲(chǔ)帳號(hào)、余額和已獲利息         private int _accountNumber;     

57、    private double _balance;         private double _interestEarned;         / 利率是靜態(tài)的,因?yàn)樗袔?hù)獲得的利息相同         private static double _interestRate;   

58、60;     / 構(gòu)造函數(shù)初始化類(lèi)成員         public SavingsAccount(int accountNumber, double balance)                          

59、0; this._accountNumber = accountNumber;                   this._balance       = balance;                &

60、#160; / 只讀 AccountNumber 屬性         public int AccountNumber                            get      

61、60;                                        return _accountNumber;       

62、60;                              / 只讀Balance屬性         public double Balance      

63、60;      get                                if (_balance < 0)          &

64、#160;        Console.WriteLine("沒(méi)有可用余額");                   return _balance;               

65、0;               /讀寫(xiě)InterestEarned屬性         public double InterestEarned         get            

66、60;               return _interestEarned;                  set               

67、60;            / 驗(yàn)證數(shù)據(jù)                   if (value < 0.0)                

68、                            Console.WriteLine(“利息不能為負(fù)數(shù)");                   

69、;      return;                                      _interestEarned = value;   &

70、#160;                       /靜態(tài)屬性InterestRate         public static double InterestRate             

71、          get                                 return _interestRate;        

72、                     set                                 / 驗(yàn)

73、證數(shù)據(jù)                   if (value < 0.0)                             

74、                  Console.WriteLine(“利率不能為負(fù)數(shù)");                           

75、return;                                      else            

76、;                                   _interestRate = value / 100;            

77、;                                     static void Main(string args)          

78、60;             / 創(chuàng)建 SavingsAccount 的對(duì)象                     SavingsAccount objSavingsAccount =  new SavingsAccount(12345, 5000);   

79、;                  Console.WriteLine(“輸入到現(xiàn)在為止已獲得的利息和利率");                     objSavingsAccount.InterestEarned = In

80、t64.Parse(Console.ReadLine();                     SavingsAccount.InterestRate = Int64.Parse(Console.ReadLine();               

81、0;     objSavingsAccount.InterestEarned += objSavingsAccount.Balance * SavingsAccount.InterestRate;                     Console.WriteLine("獲得的總利息為: 0",     

82、;        objSavingsAccount.InterestEarned);                          六、索引器    請(qǐng)看一個(gè)例子,一家公司某個(gè)部門(mén)人數(shù)很多,假設(shè)部門(mén)經(jīng)理需要一份員工記錄,或許是用于更新資料,或許只是了解一

83、個(gè)信息,不定義傳統(tǒng)的方法來(lái)設(shè)置職員記錄或其他方法來(lái)獲取職員記錄,而是在類(lèi)中定義一個(gè)索引器,是很有道理的,索引器可以為員工的編號(hào)。索引器是一種特殊的方法,索引器允許使用方括號(hào)進(jìn)行訪問(wèn),而不是常規(guī)的get和set方法調(diào)用。使用索引器,使客戶(hù)端代碼更簡(jiǎn)潔。· 語(yǔ)法    訪問(wèn)修飾符 數(shù)據(jù)類(lèi)型 this數(shù)據(jù)類(lèi)型 標(biāo)識(shí)符         get;          set;    

84、60;  · 說(shuō)明    索引器一般用于類(lèi)的數(shù)組元素    允許按數(shù)組方式來(lái)檢索對(duì)象的數(shù)組元素。·  示例    class Photo         string _title;         public Photo(string title)   &

85、#160;                        this._title = title;                  public string Title    

86、                        get                            

87、                   return _title;                               &

88、#160;          class Album                          / 該數(shù)組用于存放照片             

89、;      Photo photos;                   public Album(int capacity)                     

90、;                          photos = new Photocapacity;                     

91、                 public Photo thisint index                              &#

92、160;            get                                         

93、          / 驗(yàn)證索引范圍                           if (index < 0 | index >= photos.Length)      

94、;                                                 Console.WriteLine(&q

95、uot;索引無(wú)效");                            / 使用 null 指示失敗                  

96、;          return null;                                         &

97、#160;             / 對(duì)于有效索引,返回請(qǐng)求的照片                            return photosindex;    

98、                                    set                 

99、;                            if (index < 0 | index >= photos.Length)                 

100、0;                                   Console.WriteLine("索引無(wú)效");          &#

101、160;                 return;                                 

102、0;       photosindex = value;                       public Photo thisstring title              get  

103、                       / 遍歷數(shù)組中的所有照片                   foreach (Photo p in photos)    

104、                                    / 將照片中的標(biāo)題與索引器參數(shù)進(jìn)行比較            

105、60;        if (p.Title = title)                     return p;                 &#

106、160;                    Console.WriteLine("未找到");                   / 使用 null 指示失敗    

107、0;              return null;                       class TestIndexer       static void Main(string args) 

108、        / 創(chuàng)建一個(gè)容量為 3 的相冊(cè)         Album friends = new Album(3);         / 創(chuàng)建 3 張照片         Photo first = new Photo("Jenn");  &#

109、160;      Photo second = new Photo("Smith");         Photo third = new Photo("Mark");         / 向相冊(cè)加載照片         friends0 = first;         friends1 = second;         friends2 = third;         / 按索引檢索

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論