接口部分源代码.docx

上传人:b****6 文档编号:4478630 上传时间:2022-12-01 格式:DOCX 页数:9 大小:16.52KB
下载 相关 举报
接口部分源代码.docx_第1页
第1页 / 共9页
接口部分源代码.docx_第2页
第2页 / 共9页
接口部分源代码.docx_第3页
第3页 / 共9页
接口部分源代码.docx_第4页
第4页 / 共9页
接口部分源代码.docx_第5页
第5页 / 共9页
点击查看更多>>
下载资源
资源描述

接口部分源代码.docx

《接口部分源代码.docx》由会员分享,可在线阅读,更多相关《接口部分源代码.docx(9页珍藏版)》请在冰豆网上搜索。

接口部分源代码.docx

接口部分源代码

接口部分源代码

分析实现接口的程序文件

分析以下实现接口的程序文件并回答问题:

●本程序中的接口包含方法的构成是哪些;

●实现接口的类包含哪些元素?

●类实现接口方法的参数如何变换实现的?

●给出程序的输出结果。

代码如下:

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");

else

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

{57

returntotalSeconds;

}

set

{

totalSeconds=value;

}

}

publicvirtualintCompareTo(IComparablecomp)

{

TimeSpancompareTime=(TimeSpan)comp;

if(totalSeconds>compareTime.Seconds)

return1;

elseif(compareTime.Seconds==totalSeconds)

return0;

else

return-1;

}

}

publicclassTimeSpanAdvanced:

TimeSpan

{

publicTimeSpanAdvanced(uintinitialSeconds):

base(initialSeconds)

{

//

}

publicoverrideintCompareTo(IComparablecomp)

{

TimeSpancompareTime=(TimeSpan)comp;

if(base.Seconds>compareTime.Seconds)

{

if(base.Seconds>(compareTime.Seconds+50))

return2;

else

return1;

}

elseif(base.Seconds

{

if(base.Seconds<(compareTime.Seconds-50))

return-2;

else

return-1;58

}

else

return0;

}

}

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;

}

}

}

}

//Swaptwoelementsofanarray

publicstaticvoidSwap(intfirst,intsecond,IComparable[]arr)

{

IComparabletemp;

temp=arr[first];

arr[first]=arr[second];

arr[second]=temp;

}

}

classTester

{59

publicstaticvoidMain()

{

//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;60

publicinth;

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)和类相比结构体适合什么样的情况。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 外语学习 > 法语学习

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1