|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
c语言的编译器,几乎是所有新平台都有的。因此从这点上看,c语言的程序,比其他任何语言更加容易跨平台。编程|收集 1.与布局化编程办法比拟,面向工具编程有哪些长处?
【解答】
(1)以历程为中央和工具为中央的对照
布局化编程办法是以历程为中央的,劈面对一个成绩时,该办法偏重于成绩办理历程的条理布局。面向工具的剖析和计划办法偏重于工具。工具具有特定的举动和属性,举动和属性决意了工具与其他工具的交互感化体例,和工具自己的举动体例。
(2)公然数据和埋没数据的对照
布局化编程办法对数据和历程仅仅举行复杂的包装,这些数据和历程是公然的,大概说程序中的其他代码能够会见这些数据和历程。面向工具的完成埋没了特定的数据,而且只把工具的特定举动公然给用户。完成这些特定举动的代码对用户来讲是不成见的,用户只能会见这些公然的举动。
(3)单一单位和尺度单位的对照
布局化编程办法是基于单一代码单位的。面向工具的编程办法同意工具是自力的。
(4)一次性利用和可重用的对照
依据分歧的完成,布局化历程大概没法重用。而面向工具的办法,工具是一个模块单位。具有完整的实体,因而能够具有高度的可重用性。
(5)有序算法和无序算法的对照
布局化编程办法所开辟的程序,其布局常常是线性的(大概说是自顶向下的)。而面向工具的使用程序是一种基于动静大概事务驱动的程序范例。每一个工具都能够向其他工具发送动静。Windows操纵体系就是如许的程序。
2.扼要回覆以下成绩。
1)举例申明new关头字可用于那些方面?
2)sealed关头字的感化是甚么?甚么情形下必要利用sealed关头字?
3)哪些关头字能够用于版本把持?
【解答】
1)在C#中,new关头字可用作运算符或润色符。作为运算符用于在堆上创立工具和挪用机关函数。作为润色符用于埋没基类成员的承继成员。
2)在类声明中利用sealed润色符可避免别的类承继此类。在办法声明中利用sealed润色符可避免扩大类重写此办法。
sealed润色符次要用于避免非成心的派生,可是它还能促使某些运转时优化。详细说来,因为密封类永久不会有任何派生类,以是对密封类的实例的假造函数成员的挪用能够转换为非假造挪用来处置。
3)override关头字和new关头字都可用于版本把持。
在C#中,默许情形下办法不是假造的。若要使办法成为假造办法,必需在基类的办法声明中利用virtual润色符。然后,派生类可使用override关头字重写基类中的假造办法,或利用new关头字埋没基类中的假造办法。假如override关头字和new关头字均未指定,编译器将收回告诫,而且派生类中的办法将埋没基类中的办法。
3.扼要回覆笼统类和接口的次要区分。
【解答】
笼统类和接口的一个次要不同是:类能够完成多个接口,但仅能从一个笼统类或任何别的范例的类承继。
4.利用托付的长处是甚么?托付和事务有甚么区分和接洽?
【解答】
C#中的托付相似于C或C++中的函数指针。利用托付使程序员能够将办法援用封装在托付工具内。然后能够将该托付工具传送给可挪用所援用办法的代码,而不用在编译时晓得将挪用哪一个办法。与C或C++中的函数指针分歧,托付是面向工具,并且是范例平安的。
C#中的“事务”是当工具产生某些事变时,类向该类的客户供应关照的一种办法。事务最多见的用处是用于图形用户界面;一般,暗示界面中的控件的类具有一些事务,当用户对控件举行某些操纵(如单击某个按钮)时,将关照这些事务。
利用托付来声明事务。托付工具封装一个办法,以即可以匿名挪用该办法。事务是类同意客户为其供应办法(事务产生时应挪用这些办法)的托付的一种办法。事务产生时,将挪用其客户供应给它的托付。
5.编写一个把持台使用程序,完成以下功效,并回覆提出的成绩。
1)创立一个类A,在机关函数中输入“A”,再创立一个类B,在机关函数中输入“B”。
2)从A承继一个名为C的新类,并在C内创立一个成员B。不要为C创立机关函数。
3)在Main办法中创立类C的一个工具,写出运转程序后输入的了局。
4)假如在C中也创立一个机关函数输入“C”,全部程序运转的了局又是甚么?
【解答】
<P> usingSystem;
publicclassA
{
publicA()
{
Console.WriteLine("A");
}
}
publicclassB
{
publicB()
{
Console.WriteLine("B");
}
}
publicclassC:A
{
Bnewb=newB();
}
classMainClass
{
publicstaticvoidMain()
{
Cnewc=newC();
Console.ReadLine();
}
}
输入了局:
B
A
假如在C中也创立一个机关函数输入“C”,即增加:
<P> publicC()
{
Console.WriteLine("C");
}
则全部程序运转的了局为:
B
A
C
6.编写一个把持台使用程序,完成以下功效,并写出运转程序后输入的了局。
1)创立一个类A,在A中编写一个能够被重写的带int范例参数的办法MyMethod,
并在该办法中输入传送的整型值加10后的了局。
2)再创立一个类B,使其承继自类A,然后重写A中的MyMethod办法,将A中接
收的整型值加50,并输入了局。
3)在Main办法平分别创立类A和类B的工具,并分离挪用MyMethod办法。
【解答】
<P> usingSystem;
publicclassA
{
publicvirtualvoidMyMethod(intnum)
{
num+=10;
Console.WriteLine(num);
}
}
publicclassB:A
{
publicoverridevoidMyMethod(intnum)
{
num+=50;
Console.WriteLine(num);
}
}
classMainClass
{
publicstaticvoidMain()
{
Anewa=newA();
newa.MyMethod(2);
Bnewb=newB();
newb.MyMethod(2);
Console.ReadLine();
}
}
输入了局:
12
52
7.假定Node类的每个节点包含有两个字段:m_data(援用节点的数据)和m_next(援用链接列表中的下一项)。这两个字段都是由机关函数办法设置的。该类有两个功效,第一个功效是经由过程名为Data和Next的只读属性会见m_data和m_next字段。第二个功效是对System.Object的ToString假造办法举行重写。试分离用类和泛型两种办法编写程序完成上述功效。
【解答】
<P> usingSystem;
classNode
{
Objectm_data;
Nodem_next;
publicNode(Objectdata,Nodenext)
{
m_data=data;
m_next=next;
}
//会见结点数据
publicObjectData
{
get{returnm_data;}
}
//会见下一个结点
publicNodeNext
{
get{returnm_next;}
}
//猎取结点数据形貌
publicoverrideStringToString()
{
returnm_data.ToString();
}
}
//链表结点类的泛型界说
classNode
{
Tm_data;
Nodem_next;
publicNode(Tdata,Nodenext)
{
m_data=data;
m_next=next;
}
//会见结点数据
publicTData
{
get{returnm_data;}
set{m_data=value;}
}
//会见下一个结点
publicNodeNext
{
get{returnm_next;}
set{m_next=value;}
}
//猎取结点数据形貌
publicoverrideStringToString()
{
returnm_data.ToString();
}
}
//利用结点范例或泛型结点范例
classLinkedList
{
staticvoidMain(string[]args)
{
////创立整数链表
//Nodehead=newNode(5,null);
//head=newNode(10,head);
//head=newNode(15,head);
////遍历链表求整数和
//Int32sum=0;
//for(Nodecurrent=head;current!=null;
//current=current.Next)
//{
//sum+=(Int32)current.Data;
//}
////输入了局
//Console.WriteLine("Sumofnodes={0}",sum);
//用泛型创立整数链表
Nodehead=newNode(5,null);
head=newNode(10,head);
head=newNode(15,head);
//遍历乞降
Int32sum=0;
for(Nodecurrent=head;current!=null;
current=current.Next)
{
sum+=current.Data;
}
//输入
Console.WriteLine("Sumofnodes={0}",sum.ToString());
}
}有专家说:java不是跨平台,java就是平台,这很好的定义了java的特点。有了java,你只需要等待java平台在新平台上移植。这还不错吧!只是,java不是一个平台,而是多个平台。你需要在这个java平台移植到另一个java平台。 |
|