实验面向对象编程技术
实验目的:
1. 类的声明
2. 对象的实例化
3. 静态成员和非静态成员
4. 掌握如何定义类的方法
5. 掌握如何调用方法
6. 构造函数
实验准备:
参考课件:《第7章 面向对象编程技术.ppt》
实验内容:
1) 类的声明:

类是C#的一种自定义数据类型。声明格式为 :
[类修饰符] class 类名 [:基类类名]
{
    类的成员
}
方括号括起的内容表示可选的内容(根据实际情况可以有,也可以没有)。类修饰符目前一般省略。基类类名在目前也省略。
类的成员定义类似于普通变量的定义。但前面可以有成员修饰符。成员修饰符表示成员的可见范围,目前主要有public 和private两种。Public 修饰的成员可以在类的外部直接访问,而private的成员只能在该类内部可见(该类内部的方法可以访问)。
[例子]定义一个表示车辆信息的类(有3个成员变量)
class Vehicle
{
    public int passengers;
    public int fuelcap;
    public int mpg;
}
练习1:定义一个表示学生成绩类,成员包含学生的姓名、班级、成绩和科目

public  class Scourse
{
    string name;
    string _class;
    double score;
string C#
 
}





2) 对象的声明:
定义类仅仅是定义了类的结构。一般要利用这个类型生成相应的对象,才能够使用对象的成员。
声明对象名格式():
类名  对象名
例:Vehicle minivan;
创建类的实例:
使用new 关键字可以建立类的一个实例:
对象名 = new 类名();
创建了相应的实例后,可以使用 对象名.成员名 的方式访问对象的成员

例:
using System;
class ClassA
{
public int mm;
};
class ClassB
{
    public static void  Main()
    {
        ClassA  a;
        // a.mm = 100; // 错误,对象未实例化
        a = new ClassA();
        a.mm = 100;  // 正确
        Console.);
    }
}


练习2:利用上面定义的学生成绩类,创建对象,并访问对象成员
public class Scourse
{
    string name;
    string _class;
    double score;
    public static void Main() {
        Scourse st1;
        st1 = new Scourse();
        st1.name = "张三";
        Console.WriteLine(st1.name);
    }
   
}
writeline方法属于类
3) 静态成员和非静态成员
静态成员在声明成员的指令前加上static 保留字
静态成员属于类共同所有,非静态成员属于类的对象所有
练习3:类定义如下:
class ClassA
{
public  int  m1;
public  string  m2;
public  static  string  m3;
};
编写一个程序,要求访问以上所有成员。
class ClassA
{
    public int m1;
    public string m2;
    public static string m3;
    public static void Main()
    {
        ClassA a = new ClassA();
        a.m1 = “m1”;
        a.m2 = "m2";
        m3 = "m3";
        Console.WriteLine(a.m1 + "\n" + a.m2 + "\n" + ClassA.m3);
    }
};











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 Test
{
static void Main()
{
    M();
}
}
int M()
{
Console.WriteLine("Welcome");
}
using System;
    class Test
    {
    static void Main()
    {Test t= new Test();
        t.M();
    }
   
    void M()
    {
    Console.WriteLine("Welcome");
    }
}
练习4:
1 在Student类中增加一个表示知识多少的成员变量 Knowledge。study方法可以增加Knowledge的值。请根据这个假设定义一个study方法。在Main()方法中调用这个study方法,并显示调用前和调用后 Knowledge的值。
using System;
class Student
{
    int Knowledge;
    // int id; string name;
public  void study()
    {
        Knowledge++;
    }
public void sayHello() { Console.WriteLine(" Knowledge" + Knowledge); }
}
class Test
{
    public static void Main()
    {
        Student s1 = new Student();
        s1.sayHello();
        s1.study();
        s1.sayHello();
    }
}
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方法,并返回调整之后的汽车方向
class Car
{
    public double Direct;
    public double v = 0.0;
    public double Acce(double a)
    { v = v + a; return v; }
    double Turn()
    {
        Direct++;
        return Direct;
    }
    public static void Main()
    {
        Car t1 = new Car();
        Console.WriteLine("Direct{0}", t1.Turn());
        Console.WriteLine("v0={0}", t1.v);
        Console.WriteLine("v1={0}", t1.Acce(4));
        Console.WriteLine("v2={0}", t1.v);
    }
}
6) 构造函数
构造函数:
构造函数是类的特殊成员,具有特殊的名字,并且是由系统自动调用,而不能有代码直接调用的。
为了在生成对象的时候对对象进行初始化,需要使用构造函数。
构造函数也是类的方法成员。构造函数的方法名必须与类名相同。在对象生成时,可以设置构造函数的参数。
构造函数没有返回值(注意也不是void)。
using System;
class Point
{
    int x, y;
    public Point(int x0, int y0) {x=x0; y=y0; } // 构造函数   
    public void sayHello()

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。