实验报告4类与对象.docx
- 文档编号:30090079
- 上传时间:2023-08-04
- 格式:DOCX
- 页数:17
- 大小:74.45KB
实验报告4类与对象.docx
《实验报告4类与对象.docx》由会员分享,可在线阅读,更多相关《实验报告4类与对象.docx(17页珍藏版)》请在冰豆网上搜索。
实验报告4类与对象
实验名称:
类与对象
一.实验目的:
(1)理解C#语言是如何体现面向对象编程基本思想;
(2)掌握类对象的定义;
(3)了解类的封装方法,以及如何创建类和对象;
(4)了解成员变量和成员方法的特性;
(5)掌握静态成员的用法;
(6)掌握构造函数和析构函数的含义与作用、定义方式和实现,能够根据要求正确定义和重载构造函数。
能够根据给定的要求定义类并实现类的成员函数;
(7)掌握参数传递的用法;
(8)掌握属性的作用和使用。
二.上机内容:
1)创建MyDataTime类,熟悉构造函数、析构函数的定义方法、属性的定义方法以及一般方法的定义过程。
(2)创建Fraction类,掌握运算符重载、静态方法的使用及其与实例方法的区别。
(3)创建Swap类,掌握C#方法中参数的传递。
(4)整理上机步骤,总结经验和体会。
(4)完成实验报告。
四.上机步骤:
类的创建与应用:
创建一个MyDataTime类,要求如下:
(1)私有字段:
year,month,day;
(2)属性:
Year,Month,Day。
注意在定义Month和Day的settor时要检验设置值的有效性,其中
,
,同时在对Day进行设置的时候要注意闰年和平年的2月的天数。
(3)方法:
构造函数:
根据需求确定不同参数列表的构造方法。
析构函数:
提示析构对象。
PrintMyDataTime:
以“2011/4/24”、“2011年4月24日”、“2011.4.24”、“二〇一一年四月二十四日”的形式输出Year,Month和Day。
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Text;
namespaceConsoleApplication1
{
classMyDataTime
{
privateintyear;
publicintYear
{
set{year=value;}
get{returnyear;}
}
privateintmonth;
publicintMonth
{
set
{
if(value>=1&&value<=12)
{
month=value;
}
else
{
Console.WriteLine("month的赋值范围为[1,12];您输入的值不正确");
}
}
get{returnmonth;}
}
publicintday;
publicintDay
{
set
{
if(month==2)
{
if(year%400==0||(year%100!
=0&&year%4==0))
{if(value>=1&&value<=29)
{day=value;}
else
{
if(value>=1&&value<=28)
{day=value;}
}
}
}
elseif(month==1||month==3||month==5||month==7||month==8||month==10||month==12)
{if(value>=1&&value<=31)
{day=value;}
}
else{if(value>=1&&value<=30){day=value;}}
}
get{returnday;}
}
publicMyDataTime(intx,inty,intz)
{Year=x;
Month=y;
Day=z;
}
publicvoidshow1()
{
Console.WriteLine("您输入的时间是:
{0}/{1}/{2}",year,month,day);
}
publicvoidshow2()
{
Console.WriteLine("您输入的时间是:
{0}年{1}月{2}日",year,month,day);
}
publicvoidshow3()
{
Console.WriteLine("您输入的时间是:
{0}.{1}.{2}",year,month,day);
}
}
classProgram
{
staticvoidMain(string[]args)
{
Console.WriteLine("请输入年:
");
inta=int.Parse(Console.ReadLine());
Console.WriteLine("请输入月:
");
intb=int.Parse(Console.ReadLine());
Console.WriteLine("请输入日:
");
intc=int.Parse(Console.ReadLine());
MyDataTimek=newMyDataTime(a,b,c);
k.show1();
k.show2();
k.show3();
Console.ReadLine();
}
}
}
通过类程序说明静态变量/方法与实例变量/方法的区别:
创建一个分数类(Fraction),要求如下:
私有字段:
FenZi,FenMu
构造函数:
Fraction(intFenZi,intFenMu),注意要校验分母,不能为0;
方法:
重载运算符
和-(负号),完成分数的加减乘除以及求相反数运算。
注意四种运算均为静态方法。
DaoShu:
求分数的倒数。
GongYueShu,GongBeiShu:
分别用于求两个整数的公约数和公倍数,可以用于上述分数运算结果的化简;
Display:
用于在屏幕上输出分数,形式为:
。
ToDouble:
用于将分数转换为一个小数。
注意:
运算符重载、公约数、公倍数、倒数为静态方法,其余为实例方法。
在验证程序中要用到两类方法,并体会两类方法的区别。
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Linq;
usingSystem.Text;
namespaceConsoleApplication29
{
classFraction
{
privateintFenZi;
publicintX
{
set{FenZi=value;}
get{returnFenZi;}
}
privateintFenMu;
publicintY
{
set
{
if(value==0)
{Console.WriteLine("分母不能为0!
");}
else
{FenMu=value;}}
get{returnFenMu;}
}
publicFraction(intFenZi,intFenMu)
{
this.FenZi=FenZi;
this.FenMu=FenMu;
}
publicvoiddisplay()
{
Console.WriteLine("得到分数:
{0}/{1}",FenZi,FenMu);
}
publicdoubleToDouble()
{
doubleg=Convert.ToDouble(FenZi/FenMu);
returng;
}
publicstaticintgongyueshu(inta1,intb1)
{
intt=1;
do
{
if(b1!
=0)
{
t=a1%b1;
a1=b1;
b1=t;
}
else{break;}
}while(t!
=0);
t=a1;
returnt;
}
publicstaticintgongbeishu(inta2,intb2)
{
inth=a2*b2;
ints=gongyueshu(a2,b2);
h=h/s;
returnh;
}
publicstaticvoiddaoshu(inta3,intb3)
{
intt=gongyueshu(a3,b3);
a3=a3/t;
b3=b3/t;
Console.WriteLine("{0}/{1}",a3,b3);
}
publicstaticFractionoperator*(Fractionf1,Fractionf2)
{
Fractionf=newFraction(0,0);
f.FenZi=f1.FenZi*f2.FenZi;
f.FenMu=f1.FenMu*f2.FenMu;
intx1=gongyueshu(f.FenZi,f.FenMu);
f.FenZi=f.FenZi/x1;
f.FenMu=f.FenMu/x1;
returnf;
}
publicstaticFractionoperator/(Fractionf1,Fractionf2)
{
Fractionf=newFraction(0,0);
f.FenZi=f1.FenZi*f2.FenMu;
f.FenMu=f1.FenMu*f2.FenZi;
intx1=gongyueshu(f.FenZi,f.FenMu);
f.FenZi=f.FenZi/x1;
f.FenMu=f.FenMu/x1;
returnf;
}
publicstaticFractionoperator+(Fractionf1,Fractionf2)
{
Fractionf=newFraction(0,0);
f.FenZi=f1.FenZi*f2.FenMu+f2.FenZi*f1.FenMu;
f.FenMu=f1.FenMu*f2.FenMu;
intx1=gongyueshu(f.FenZi,f.FenMu);
f.FenZi=f.FenZi/x1;
f.FenMu=f.FenMu/x1;
returnf;
}
publicstaticFractionoperator-(Fractionf1,Fractionf2)
{
Fractionf=newFraction(0,0);
f.FenZi=f1.FenZi*f2.FenMu-f2.FenZi*f1.FenMu;
f.FenMu=f1.FenMu*f2.FenMu;
intx1=gongyueshu(f.FenZi,f.FenMu);
f.FenZi=f.FenZi/x1;
f.FenMu=f.FenMu/x1;
returnf;
}
}
classProgram
{
staticvoidMain(string[]args)
{Console.WriteLine("请输入第一个分数:
");
Console.WriteLine("请输入分子:
");
intaa=int.Parse(Console.ReadLine());
Console.WriteLine("请输入分母:
");
intba=int.Parse(Console.ReadLine());
if(ba==0)
{
Console.WriteLine("分母不能为0!
请重新输入一个不为0的数:
");
ba=int.Parse(Console.ReadLine());
}
Console.WriteLine("请输入第二个分数:
");
Console.WriteLine("请输入分子:
");
intab=int.Parse(Console.ReadLine());
Console.WriteLine("请输入分母:
");
intbb=int.Parse(Console.ReadLine());
if(bb==0)
{
Console.WriteLine("分母不能为0!
请重新输入一个不为0的数:
");
bb=int.Parse(Console.ReadLine());
}
Fractionf1=newFraction(aa,ba);
Fractionf2=newFraction(ab,bb);
Fractionfa=f1+f2;
Fractionfb=f1-f2;
Fractionfc=f1*f2;
Fractionfd=f1/f2;
fa.display();
fb.display();
fc.display();
fd.display();
Console.ReadLine();
}
}
}
方法中参数的传递:
创建一个Swap类,分别定一个采用值参数、引用型参数、输出型参数、数组型参数的方法,完成两个整型数据和整型数组的排序和输出。
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Linq;
usingSystem.Text;
namespaceConsoleApplication30
{
classSwap
{
publicstaticvoidzhican(inta1,inta2)
{
intt=0;
if(a1>a2)
{
Console.WriteLine("{0}>{1}",a1,a2);
}
else
{
t=a1;a1=a2;a2=t;
Console.WriteLine("{0}>{1}",a1,a2);
}
}
publicstaticvoidxingcan(refinta3,refinta4)
{
intt;
if(a3 { t=a4; a4=a3; a3=t; Console.WriteLine("{0}>{1}",a3,a4); } else {Console.WriteLine("{0}>{1}",a3,a4);} } publicstaticvoidUseOut(outinta5,outinta6) { intt; a5=98; a6=565; if(a5 { t=a5; a5=a6; a6=t; Console.WriteLine("{0}>{1}",a5,a6); } else {Console.WriteLine("{0}>{1}",a5,a6);} } publicstaticvoidShuZu(paramsint[]k) { for(inti=0;i { for(intj=i+1;j { intt=0; if(k [i]>k[j]) { t=k[i];k[i]=k[j];k[j]=t; } } } Console.WriteLine("最后数组的顺序: "); for(inti=0;i { Console.Write("{0}",k[i]); } } } classProgram { staticvoidMain(string[]args) { Console.WriteLine("***值参数***"); Console.WriteLine("请输入两个数: "); intb1=int.Parse(Console.ReadLine()); intb2=int.Parse(Console.ReadLine()); Swap.zhican(b1,b2); Console.WriteLine("b1={0},b2={1}",b1,b2); Console.WriteLine("***引用型参数***"); Console.WriteLine("请输入两个数: "); intb3=int.Parse(Console.ReadLine()); intb4=int.Parse(Console.ReadLine()); Swap.xingcan(refb3,refb4); Console.WriteLine("b3={0},b4={1}",b3,b4); Console.WriteLine("***输出参数***"); intb5,b6; Swap.UseOut(outb5,outb6); Console.WriteLine("b5={0},b6={1}",b5,b6); Console.WriteLine("***数组型参数***"); Swap.ShuZu(23,65,9,8,78,98,4); Console.ReadLine(); } } }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验 报告 对象