接口部分源代码Word文档格式.docx
《接口部分源代码Word文档格式.docx》由会员分享,可在线阅读,更多相关《接口部分源代码Word文档格式.docx(9页珍藏版)》请在冰豆网上搜索。
totalSeconds=0;
publicTimeSpan(uintinitialSeconds)
totalSeconds=initialSeconds;
publicuintSeconds55
get
returntotalSeconds;
set
totalSeconds=value;
publicintCompareTo(IComparablecomp)
TimeSpancompareTime=(TimeSpan)comp;
if(totalSeconds>
compareTime.Seconds)
return1;
elseif(compareTime.Seconds==totalSeconds)
return0;
else
return-1;
classTester
publicstaticvoidMain()
TimeSpanmyTime=newTimeSpan(3450);
TimeSpanworldRecord=newTimeSpan(1239);
if(myTime.CompareTo(worldRecord)<
0)
Console.WriteLine("
Mytimeisbelowtheworldrecord"
);
elseif(myTime.CompareTo(worldRecord)==0)
Mytimeisthesameastheworldrecord"
Ispentmoretimethantheworldrecordholder"
}56
三、覆盖虚接口程序
以下程序组合了多种功能,请参考如下代码解释并回答问题。
●该程序包含的类的个数和关系?
●类对接口的实现有何区别?
●第一个类中无参数构造函数是否起作用,是否可以删除不用?
●类中的属性在哪里被应用到?
●第一个类中哪些成员被继承,列出所有?
●第二个类中构造方法成员如何实现,有何意义?
可以去掉么?
●第二个类覆盖第一个类中接口虚方法,程序体现了什么功能区别?
●Sorter类有何作用?
你能否根据Sorter类写一个十个数比较大小的冒泡法程序?
●Sorter类中for(inti=0;
swapped;
i++)和//for(inti=0;
i<
bubbles.Length;
i++)两行是否作用相同?
●你知道Console.WriteLine("
runoutter"
和Console.WriteLine("
runinner"
在程序运行过程中可以起到什么作用?
●将Main方法中的TimeSpan对象语句(注释掉的5行)和TimeSpanAdvanced对象语句选择轮流注释,体验排序结果的异同。
●语句Sorter.BubbleSortAscending(raceTimes);
前后的foreach语句功能区别。
publicuintSeconds
{57
publicvirtualintCompareTo(IComparablecomp)
TimeSpancompareTime=(TimeSpan)comp;
if(totalSeconds>
elseif(compareTime.Seconds==totalSeconds)
publicclassTimeSpanAdvanced:
TimeSpan
publicTimeSpanAdvanced(uintinitialSeconds):
base(initialSeconds)
//
publicoverrideintCompareTo(IComparablecomp)
if(base.Seconds>
(compareTime.Seconds+50))
return2;
elseif(base.Seconds<
if(base.Seconds<
(compareTime.Seconds-50))
return-2;
58
classSorter
//Sortthecomparableelementsofanarrayinascendingorder
publicstaticvoidBubbleSortAscending(IComparable[]bubbles)
boolswapped=true;
for(inti=0;
i++)
//for(inti=0;
swapped=false;
for(intj=0;
j<
(bubbles.Length-(i+1));
j++)
if(bubbles[j].CompareTo(bubbles[j+1])>
Swap(j,j+1,bubbles);
swapped=true;
//Swaptwoelementsofanarray
publicstaticvoidSwap(intfirst,intsecond,IComparable[]arr)
IComparabletemp;
temp=arr[first];
arr[first]=arr[second];
arr[second]=temp;
{59
//TimeSpan[]raceTimes=newTimeSpan[4];
//raceTimes[0]=newTimeSpan(153);
//raceTimes[1]=newTimeSpan(165);
//raceTimes[2]=newTimeSpan(142);
//raceTimes[3]=newTimeSpan(108);
TimeSpanAdvanced[]raceTimes=newTimeSpanAdvanced[4];
raceTimes[0]=newTimeSpanAdvanced(153);
raceTimes[1]=newTimeSpanAdvanced(165);
raceTimes[2]=newTimeSpanAdvanced(142);
raceTimes[3]=newTimeSpanAdvanced(108);
foreach(TimeSpantimeinraceTimes)
Console.WriteLine(time.Seconds);
Sorter.BubbleSortAscending(raceTimes);
Listofsortedtimespans:
"
Console.ReadLine();
四、结构体的使用
1.程序功能要求,创建三个结构体,MyCircle,MyCylinder,MyCone分别表示圆形、圆柱体和圆锥体,MyCircle包含一个int类型的成员r表示半径,MyCylinder和MyCone各自包含一个MyCircel类型的成员表示圆柱体和圆锥体的底面,成员h和volumn(都为整型)分别表示圆柱体和圆锥体的高和体积。
写出结构体和程序的主方法求圆柱体和圆锥体的体积。
structMyCircle
publicintr;
structMyCylinder
publicMyCirclec;
60
publicinth;
publicintvolumn;
structMyCone
publicclassTester
Console.Write("
请输入底面半径:
MyCirclec=newMyCircle();
c.r=int.Parse(Console.ReadLine());
请输入圆柱体高度:
MyCylindercy=newMyCylinder();
cy.h=int.Parse(Console.ReadLine());
cy.c=c;
请输入圆锥体高度:
MyConeco=newMyCone();
co.h=int.Parse(Console.ReadLine());
co.c=c;
//计算圆柱体体积
doublex=Math.PI*cy.c.r*cy.c.r;
doubley=x*cy.h;
cy.volumn=(int)y;
//计算圆锥体体积
doublex2=Math.PI*co.c.r*co.c.r;
doubley2=x2*co.h/3;
co.volumn=(int)y2;
//输出结果
//Console.WriteLine("
圆柱体的体积为:
cy.volumn);
Console.Write(cy.volumn);
圆锥体的体积为:
Console.Write(co.volumn);
问题:
(1)若取消//Console.WriteLine("
前的注释替代分开输出的写法,看输出结果何变化,分析原因。
61
(2)若将结构体中的变量不加public编译能通过么?
为什么?
(3)public的变量在Main中的使用方法。
(4)不用new创建结构体将MyCirclec=newMyCircle();
改成什么样的语句起到同样的效果。
(5)结构体中内嵌结构体实例的应用总结。
(6)和类相比结构体适合什么样的情况。