實驗項目3-類的設(shè)計與使用_第1頁
實驗項目3-類的設(shè)計與使用_第2頁
實驗項目3-類的設(shè)計與使用_第3頁
實驗項目3-類的設(shè)計與使用_第4頁
實驗項目3-類的設(shè)計與使用_第5頁
已閱讀5頁,還剩6頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、實驗項目3   類的設(shè)計與使用1)      實驗目的(1)、掌握C#中類的結(jié)構(gòu)(2)、掌握構(gòu)造函數(shù)的使用方法(3)、熟練繼承和重載的使用2)      實驗原理(1)類的定義類的定義是以關(guān)鍵字 class 開始,后跟類的名稱。類的主體,包含在一對花括號內(nèi)。下面是類定義的一般形式: 訪問修飾符 static class 類名 : 基類 ,接口序列 類成員 (2)構(gòu)造函數(shù)類的構(gòu)造函數(shù)是類的一個特殊的成員函數(shù),當創(chuàng)建類的新對象時執(zhí)行。構(gòu)造函數(shù)的名稱與類的名稱完

2、全相同,它沒有任何返回類型。(3)類的繼承 語法:class DrevedClass:BaseClass 派生類成員如果類或結(jié)構(gòu)也派生自接口,則用逗號分隔列表中的基類和接口:class DrevedClass:BaseClass,IIntenface1,IIntenface2 派生類成員(4) 重載指在同一作用域內(nèi),可以有一組具有相同函數(shù)名,不同參數(shù)列表的函數(shù),這組函數(shù)被稱為重載函數(shù)。3)      主要儀器及耗材PC、VS2010/2012/20154)      實驗內(nèi)容和步驟實驗內(nèi)容1:圖

3、書類(1)實驗題目: 創(chuàng)建一個描述圖書信息的類并測試。類中應保存有圖書的書號、標題、作者、出版社、價格等信息。(2)實驗步驟:步驟1:定義圖書類Book,Book類中包含isbn(書號)、title(標題)、author(作者)、press(出版社)、price(價格)等私有字段。由于對一本書來說,書號是唯一的,因此,isbn字段應聲明為只讀的。步驟2:為Book類中的每個字段定義相應的屬性,由于isbn字段只讀的,其相應屬性也應該是只讀的。步驟3:為Book類定義兩個構(gòu)造函數(shù),其中,一個構(gòu)造函數(shù)將所有字段都初始化為用戶指定的值,另一個構(gòu)造函數(shù)只要求用戶指定有關(guān)書號的信息,它將調(diào)用上一個構(gòu)造函

4、數(shù)初始化對象,初始化時,價格取0,除書號的其他信息取“未知”。步驟4:為Book類定義方法Show,Show方法用于顯示圖書的所有信息。步驟5:編寫Main方法測試Book類,Main方法中分別使用上述兩個構(gòu)造函數(shù)創(chuàng)建Book對象。 (3)參考代碼:/Test3_1.csusing System;class Bookprivate readonly string isbn; /書號private string title; /標題private string author; /作者private string press; /出版社private int price; /價格public Bo

5、ok(string isbn):this(isbn,"未知","未知","未知",0)/構(gòu)造函數(shù)間的調(diào)用public Book(string isbn,string title,string author,string press,int price)this.isbn=isbn;this.title=title;this.author=author;this.press=press;this.price=price;public string ISBNget return isbn; public string Titleget r

6、eturn title; set title=value; public string Authorget return author; set author=value; public string Pressget return press; set press=value; public int Priceget return price; set price=value; public void Show()Console.WriteLine("書號: 0",isbn);Console.WriteLine("標題: 0",title);Conso

7、le.WriteLine("作者: 0",author);Console.WriteLine("出版社:0",press);Console.WriteLine("價格: 0",price);class Test3_1static void Main() Book book1=new Book("978-7-111-23423-4"); book1.Show(); Console.WriteLine(); book1.Title="C#程序設(shè)計(C#2.0版)" book1.Author=&quo

8、t;劉慧寧" book1.Press="機械工業(yè)出版社" book1.Price=32; book1.Show(); Console.WriteLine(); book1=new Book("978-7-302-15800-4","Java程序設(shè)計","溫秀梅","清華大學出版社",29); book1.Show(); 實驗內(nèi)容2: 簡單幾何圖形描述(1)實驗題目:根據(jù)幾何圖形的組合與繼承關(guān)系定義用于描述點、直線、三角形、四邊形、正方形、圓等幾何圖形的類(或結(jié)構(gòu))。要求首先定義一個幾何

9、圖形接口描述所有幾何圖形的共有特性,上述幾何圖形都必須現(xiàn)實該接口,并且其中用于描述點的類型最好定義為結(jié)構(gòu)。(2)實驗步驟: 步驟1:定義幾何圖形接口Shape。Shape接口中包含屬性Color,用于讀取和設(shè)置幾何圖形的顏色;包含方法Draw、Erase、Move,用于繪制、擦拭、移動幾何圖形。由于屬性Color的類型無法用基本數(shù)據(jù)類型準確描述,程序中還需要另外定義一個表示顏色的枚舉類型CColor(實驗上,.NET框架類庫中定義有一個Color結(jié)構(gòu),它可以更好地表示顏色,你們可以直接使用它)。步驟2:定義點結(jié)構(gòu)Point實現(xiàn)Shape接口。Point結(jié)構(gòu)中除實現(xiàn)Shape接口的所有成員外,還

10、必須包含兩個int型私有字段x、y及相應屬性,它們用于表示點的坐標。另外,還應為Point結(jié)構(gòu)定義構(gòu)造函數(shù),并重寫方法ToString。步驟3:定義直線類Line實現(xiàn)Shape接口。Line類中除實現(xiàn)Shape接口的所有成員外,還必須包含兩個Point型私有字段point1、point2及相應屬性,它們用于表示直線兩個頂點的坐標。另外,還應為Line類定義構(gòu)造函數(shù),并重寫方法ToString。步驟4:定義三角形類Triange實現(xiàn)Shape接口。Triangle類中除實現(xiàn)Shape接口的所有成員外,還必須包含三個Point型私有字段及相應屬性,它們用于表示三角形三個頂點的坐標。另外,還應為tr

11、iangle類定義方法Area(求面積)和構(gòu)造函數(shù),并重寫方法ToString。步驟5:定義四邊形類Quadrilateral實現(xiàn)Shape接口。Quadrilateral類中除實現(xiàn)Shape接口中的所有成員外,還必須包含四個Point型私有字段及相應屬性,它們用于表示四邊形四個頂點的坐標。另外,還應為Quadrilateral類定義方法Area(求面積)和構(gòu)造函數(shù),并重寫方法ToString。由于程序后面還需要在Quadrilateral類的基礎(chǔ)上派生出正方形類,因此,實現(xiàn)Shape接口時,應該將方法Draw、Erase、Move聲明為虛擬的,另外,重寫方法ToString時,不妨將它聲明為

12、密封的。步驟6:定義圓類Circle實現(xiàn)Shape接口。Circle類中除實現(xiàn)Shape接口的所有成員外,還必須包含一個Point型私有字段、一個int型私有字段及相應屬性,它們分別用于表示圓的圓心坐標及半徑;另外,還應為Circle類定義Area(求面積)和構(gòu)造函數(shù),并重寫方法ToString。步驟7:定義正方形類Square繼承Quadrilateral類。Square類中應重寫方法Draw、Erase、Move并定義構(gòu)造函數(shù)。步驟8:定義Main方法測試上面定義的類。 (3)參考代碼:/Test3_2.csusing System;/定義一個顏色的枚舉enum CColorBLACK,B

13、LUE,BROWN,CYAN,GRAY,GREEN,ORANGE,PINK,RED,WHITE,YELLOW/定義一個幾何圖形接口interface ShapeCColor Colorget;set;/繪制的方法void Draw();/擦拭的方法void Erase();/移動的方法void Move();/定義一個點的結(jié)構(gòu)來實現(xiàn)Shape幾何圖形的接口struct Point:Shapeprivate CColor color;private int x,y;public CColor Colorget return color; set color=value; public int X

14、get return x; set x=value; public int Yget return y; set y=value; public Point() public Point(int x,int y)this.x=x;this.y=y;this.color=CColor.RED;public void Draw()Console.WriteLine("繪制一個點");public void Erase()Console.WriteLine("擦拭一個點");public void Move()Console.WriteLine("移

15、動一個點");/重寫ToString()方法public override string ToString()return "("+x+","+y+")"/定義一個直線的類來實現(xiàn)Shape接口class Line:Shapeprivate CColor color;/頂點private Point point1,point2;public CColor Colorget return color; set color=value; public Point Point1get return point1; set point

16、1=value; public Point Point2 get return point2; set point2=value; public Line() public Line(Point p1,Point p2) point1=p1; point2=p2;public void Draw() Console.WriteLine("繪制一條直線");public void Erase() Console.WriteLine("擦拭一條直線");public void Move() Console.WriteLine("移動一條直線&quo

17、t;); /也重寫一下ToString方法public override string ToString() return "("+point1.ToString()+","+point2.ToString()+")"/定義一個三角形的類同時讓它實現(xiàn)Shape接口class Triangle:Shapeprivate CColor color;/定義三角形的三個頂點private Point point1,point2,point3;public CColor Colorget return color; set color=valu

18、e; public Point Point1get return point1; set point1=value; public Point Point2get return point2; set point2=value; public Point Point3get return point3; set point3=value; public Triangle() public Triangle(Point p1,Point p2,Point p3) point1=p1; point2=p2; point3=p3; public void Draw() Console.WriteLi

19、ne("繪制一個三角形"); public void Erase() Console.WriteLine("擦拭一個三角形"); public void Move() Console.WriteLine("移動一個三角形"); /增加一個三角形自己的求面積的方法 public double Area() double area=Math.Abs(point1.X*point2.Y+point2.X*point3.Y+point3.X*point1.Y -point1.X*point3.Y-point2.X*point1.Y-point

20、3.X*point2.Y)/2.0; return area; /同樣也重寫一下ToString方法 public override string ToString() return "("+point1.ToString()+","+point2.ToString()+","+point3.ToString()+")" /定義一個四邊形的類同樣實現(xiàn)Shape接口class Quadrilateral:Shapeprivate CColor color;/定義四邊形的四個頂點private Point point1

21、,point2,point3,point4;public CColor Colorget return color; set color=value; public Point Point1get return point1; set point1=value; public Point Point2get return point2; set point2=value; public Point Point3get return point3; set point3=value; public Point Point4get return point4; set point4=value;

22、public Quadrilateral() public Quadrilateral(Point p1,Point p2,Point p3,Point p4)point1=p1;point2=p2;point3=p3;point4=p4;public virtual void Draw()Console.WriteLine("繪制一個四邊形");public virtual void Erase()Console.WriteLine("擦拭一個四邊形");public virtual void Move()Console.WriteLine("

23、;移動一個四邊形");/定義一個四邊形求面積的方法public double Area()double area=Math.Abs(point1.X*point2.Y-point2.X*point1.Y+point2.X*point3.Y -point3.X+point2.Y+point3.X*point4.Y-point4.X*point3.Y +point4.X*point1.Y-point1.X*point4.Y)/2.0; return area;/重寫ToString方法public sealed override string ToString()return "

24、;("+point1.ToString()+","+point2.ToString()+","+point3.ToString()+","+point4.ToString()+")"/定義一個圓的類同樣讓它實現(xiàn)Shape接口class Circle:Shapeprivate CColor color;/定義一個圓心private Point point;/定義圓的半徑private int radius;public CColor Colorget return color; set color=valu

25、e; public Point Pointget return point; set point=value; public int Radiusget return radius; set radius=value; public Circle() public Circle(Point p,int r)point=p;radius=r; public void Draw()Console.WriteLine("繪制一個圓");public void Erase()Console.WriteLine("擦拭一個圓");public void Move(

26、)Console.WriteLine("移動一個圓");/定義一個方法求的面積public double Area()return Math.PI*radius*radius;/同樣重寫ToString讓它格式化字符串public override string ToString() return "("+point.ToString()+","+radius+")"/定義一個正方形的類,并且它讓繼承于四邊形的類class Square:Quadrilateralpublic Square() public Squ

27、are(Point p1,Point p2,Point p3,Point p4):base(p1,p2,p3,p4) public override void Draw()Console.WriteLine("繪制一個正方形");public override void Erase()Console.WriteLine("擦拭一個正方形");public override void Move()Console.WriteLine("移動一個正方形");/定義一個類放入Main()方法class Test3_2 static void Main()Point p1=new P

溫馨提示

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

評論

0/150

提交評論