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