C#面向对象编程技术 (2).doc_第1页
C#面向对象编程技术 (2).doc_第2页
C#面向对象编程技术 (2).doc_第3页
C#面向对象编程技术 (2).doc_第4页
C#面向对象编程技术 (2).doc_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实验七 面向对象编程技术实验目的1. 类的声明2. 对象的实例化3. 静态成员和非静态成员4. 掌握如何定义类的方法(函数)5. 掌握如何调用方法6. 构造函数实验要求:掌握类的声明,对象的声明和实例化,类中静态成员及非静态成员的定义和访问,类中方法函数的定义和调用,构造函数的设计等。实验步骤1. 类的声明:类是C#的一种自定义数据类型。声明格式为 :类修饰符 class 类名 :基类类名 类的成员;方括号括起的内容表示可选的内容(根据实际情况可以有,也可以没有)。类修饰符目前一般省略。基类类名在目前也省略。类的成员定义类似于普通变量的定义。但前面可以有成员修饰符。成员修饰符表示成员的可见范围,目前主要有public 和private两种。Public 修饰的成员可以在类的外部直接访问,而private的成员只能在该类内部可见(该类内部的方法可以访问)。例子定义一个表示车辆信息的类(有3个成员变量)class Vehicle public int passengers; public int fuelcap; public int mpg;;练习1:定义一个表示学生成绩类,成员包含学生的姓名、班级、成绩和科目class student Public char name10; Public char banji5; Public float sore; Public char subject10;2. 对象的声明:定义类仅仅是定义了类的结构。一般要利用这个类型生成相应的对象,才能够使用对象的成员。声明对象名格式():类名 对象名例:Vehicle minivan;创建类的实例:使用new 关键字可以建立类的一个实例:对象名 = new 类名();创建了相应的实例后,可以使用 对象名.成员名 的方式访问对象的成员例:using System;class ClassApublic int mm;class ClassB public static void Main() ClassA a; / a.mm = 100; / 错误,对象未实例化 a = new ClassA(); a.mm = 100; / 正确 Console.WriteLine(a.mm); 练习2:利用上面定义的学生成绩类,创建对象,并访问对象成员 Student a=new student ();a. name=”abc”;a. banji=”class 5”;a. sore=95;a. subject=”chinese”;console.WriteLine();console.WriteLine(a.banji);console.WriteLine(a.sore);console.WriteLine(a.subject);3. 静态成员和非静态成员静态成员在声明成员的指令前加上static 保留字静态成员属于类共同所有,非静态成员属于类的对象所有练习3:类定义如下:class ClassApublic int m1;public string m2;public static string m3;编写一个程序,要求访问以上所有成员(注意区分静态成员和非静态成员的访问方法)。using System;namespace there class ClassA public int m1; public string m2; public static string m3; class ClassB public static void Main() ClassA a; ClassA b; b = new ClassA(); a = new ClassA(); ClassA.m3 = HELLO.; Console.WriteLine(ClassA.m3); b.m1 = 10; b.m2 = ORANGE!; Console.WriteLine(b.m2); Console.WriteLine(b.m1); 4. 定义类的方法方法函数的定义格式如下:修饰符 返回值类型 方法名(形式参数列表) 方法体语句例子:using System;class Student / int id; string name; public void sayHello() Console.WriteLine(Hi!);class Test public static void Main() Student s1=new Student(); s1.sayHello(); 类的方法表示对象可以完成的某种功能,或者可以进行的某种运算。思考:指出下列程序代码中的错误,并改正class Teststatic void Main() Texst2 s=new M(); s.M();Class Test2Public int M()Console.WriteLine(Welcome);Return 0;练习4:1 在Student类中增加一个表示知识多少的成员变量 Knowledge。study方法可以增加Knowledge的值。请根据这个假设定义一个study方法。在Main()方法中调用这个study方法,并显示调用前和调用后 Knowledge的值。using System;class student public void sayHello() Console.WriteLine(Hi!); public int knowledge=0; public void study(int id,string name) Console.WriteLine(knowlege=0,knowledge+1); public static void Main() student stu1=new student(); Console.WriteLine(knowlege=0,stu1.knowledge); stu1.study(6,elli); 5. 调用方法一般同一个方法调用的时候都有一些区别,这些调用之间的区别使用参数来指定。比如,调用Console.WriteLine()方法,使用不同的参数,产生的效果也会不同。参数可以有多个,类似于变量,需要指定参数的类型。在方法定义的时候,把所用的参数(形参)依次列出:修饰符 返回值类型 方法名(类型1 参数名1, 类型2 参数名2, 类型3 参数名3,.) 方法体语句注意:参数之间使用逗号分隔,而且每个参数前面都必须有类型。我们有时候需要了解方法执行的结果。可以通过方法的返回值来表示方法执行的结果。返回值的类型在方法头中指定。实际返回的值,在方法体中通过return 语句指定。return 语句后接一个表达式,表示要把return后接的表达式的值返回到调用者。如果方法不需要返回值,则返回类型为 void(无类型),在方法体中直接使用return 返回。也可以不用 return,让方法体执行结束后直接返回。例:表示汽车加速的方法:using System;class Car public double v=0.0; public double Acce(double a) v = v+a; return v; public static void Main() Car t1 = new Car (); Console.WriteLine(v0=0, t1.v); Console.WriteLine(v1=0, t1.Acce(4); Console.WriteLine(v2=0, t1.v); 使用不同的参数调用的时候,对对象的影响是不同的。练习5:给Car类添加一个表示目前汽车前进方向的数据成员Direct(单位为角度)。方法Turn表示调整汽车的方向。定义并调用这个Turn方法,并返回调整之后的汽车方向using System;class Car public double v = 0.0; public double Acce(double a) v = v + a; return v; public double direct=0.0; public double Turn(double b) direct = direct + b; return direct; public static void Main() Car t1 = new Car(); Console.WriteLine(v0=0, t1.v); Console.WriteLine(v1=0, t1.Acce(4); Console.WriteLine(v2=0, t1.v); Console.WriteLine(direct=0,t1.direct); Console.WriteLine(direct1=0,t1.Turn(5); Console.WriteLine(direct2=0,t1.direct); 6. 构造函数构造函数:构造函数是类的特殊成员,具有特殊的名字,并且是由系统自动调用,而不能有代码直接调用的。为了在生成对象的时候对对象进行初始化,需要使用构造函数。构造函数也是类的方法成员。构造函数的方法名必须与类名相同。在对象生成时,可以设置构造函数的参数。构造函数没有返回值(注意也不是void)。using System;class Point int x, y; public Point(int x0, int y0) x=x0; y=y0; / 构造函数 public void sayHello() Console.WriteLine(Hello, I am in (0,1)., x, y); class Test public static void Main() Point p1 = new Point(6, 5); / 生成对象时,构造函数被自动调用 p1.sayHello(); 练习6:完成一个表示坦克的类的设计,要求实现以下功能:具有重量Weight和油量Oil数据成员。在生成对象时,可以对数据成员进行初始化。具有表示开动的方法Drive,该方法表示开动一定的距离Distance。开动时,需要耗费一定的油量为 Weight * Distance*0.1。另外还有一个方法ShowState,可以显示该坦克的所有数据成员的数值。参考测试主程序:class Testpublic static void Main() Tank t=new Tank(2000, 500); t.ShowState(); t.Drive(500); t.ShowState();class Tan

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论