C#实验三实验报告.doc
. . . . #X实 验 报 告实验课程名称: 面向对象的程序设计 实验项目名称:实验三C#面向对象程序设计专 业 班 级: #学 号: X姓 名: 新浪微博:圣痕轨迹指 导 教 师: X实验三 C#面向对象程序设计一、实验目的1.理解C#语言是如何表达面向对象编程基本思想。2.掌握类对象的定义。3.了解类的封装方法,以与如何创建类和对象。4.了解成员变量和成员方法的特性。5.掌握静态成员的用法。6.掌握构造函数和析构函数的含义与作用、定义方式和实现,能够根据要求正确定义和重载构造函数。能够根据给定的要求定义类并实现类的成员函数。7.理解类的成员的访问控制的含义,公有、私有和保护成员的区别。8.掌握参数传递的用法。9.掌握属性的作用和使用。二、实验要求1. 分析程序,上机验证结果。2. 写出程序,并调试程序,要给出测试数据和实验结果。3. 整理上机步骤,总结经验和体会。4. 完成实验日志和上交程序。三、实验容题目一:程序分析(1)分析下面两个程序,确定那个程序好,说明理由。程序1:程序2:第二个好,能让我们更直观的看清圆的周长和面积。(2)分析程序,写出程序的运行结果,并上机进行验证。(3)分析程序,写出程序的运行结果,并上机进行验证。(4)分析程序,写出程序的运行结果,并上机进行验证,然后回答后面问题。请回答以下问题:(1) 按你自己的算法修改以上程序,比如可只输出生成的账户数。(2) 把注释去掉后会怎样,为什么?没有影响,因为注释不影响程序执行。(3) 为什么display用类名直接引用,可以用对象来引用么?尝试输出结果。不能用对象来引用。(4) 类的静态变量和非静态变量的引用区别。判断一下语句的正确性:静态方法只能使用静态变量,不能使用实例变量。因为对象实例化之前,实例变量不可用。这个观点真确么?()类的静态变量只有一个版本,所有实例对象引用的都是同一个版本。()对象实例化后,每个实例变量都被制作了一个副本,它们之间互不影响。()题目二:程序编写(1) 实现一个包含类属性方法的简单加法程序,并能显示结果。namespace TestclassAdd double a, b;public Add(double a, double b) this.a = a; this.b = b; publicvoid DisplayAdd() Console.WriteLine("0", a + b); staticvoid Main(string args) double a, b;Console.WriteLine("请输入要求和的两个数:"); a = Convert.ToInt64(Console.ReadLine(); b = Convert.ToInt64(Console.ReadLine(); Add s = newAdd(a, b); s.DisplayAdd(); Console.ReadLine(); (2) 实现一个Person类,要求:属性包含、年龄、号、工作、工资等,并显示各属性的值。namespace PersonclassPerson string name, id, job; int age; double wage;private Person(string name, int age, string id, string job, double wage) this.name = name; this.age = age; this.id = id; this.job = job; this.wage = wage; privatevoid DisplayPerson() Console.WriteLine(":0n年龄:1n号:2n工作:3n工资:4 ", name, age, id, job, wage); staticvoid Main(string args) Person p = newPerson("圣痕轨迹", 20, "130*", "学生", 0); p.DisplayPerson(); Console.ReadLine(); (3)编写一个传值调用的程序。程序功能要求:程序首先给整型变量x 和y 赋初值3,5,然后使用传值调用方式调用方法对x 和y 做乘方并与输出x 和y 的乘方值,最后输出x和y得值。再将此方法给为对象调用加ref修饰查看输出结果差异。using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace Test6classPower void DisplayPower1(double x, double y) x = Math.Pow(x, 2); y = Math.Pow(y, 2);Console.WriteLine("x的值为:0,y的值为:1", x, y); void DisplayPower2(ref double x, ref double y) x = Math.Pow(x, 2); y = Math.Pow(y, 2);Console.WriteLine("x的值为:0,y的值为:1", x, y); staticvoid Main(string args) double a = 3, b = 5; Power A = newPower(); A.DisplayPower1(a, b);Console.WriteLine("传值调用后a的值为:0,b的值为:1", a, b); A.DisplayPower2(ref a, ref b);Console.WriteLine("引用调用后a的值为:0,b的值为:1", a, b); Console.ReadLine(); 思考题1 方法的参数传递有哪些方式?区别时什么?方法的参数传递分为参数按值传递和参数按引用传递两种:参数按值传递是在调用带参数的方法时,参数的值复制到方法中;参数按引用传递是一个方法的参数是对象或数组。2 什么是构造方法。构造方法是一种特殊的成员方法,在C#中,任何变量在被使用前都必须先设置初值.C#提供了为类的成员变量赋初值的专门方法。实验总结通过本次上机实验,我理解了C#语言是如何表达面向对象编程基本思想,掌握了类对象的定义,了解类的封装方法、如何创建类和对象,以与成员变量和成员方法的特性。掌握了静态成员的用法和构造函数和析构函数的含义与作用、定义方式和实现,能够根据要求正确定义和重载构造函数。还能够根据给定的要求定义类并实现类的成员函数。最后,还掌握了参数传递的用法和属性的作用和使用5 / 5