Ada是否带有内置GUI,是否具有与Oberon相同的独特继承方法?
答案 0 :(得分:3)
很少有编程语言提供内置 GUI,如果你的意思是GUI原语是编程语言本身的固有部分。 Ada可以像其他语言一样使用GUI工具包。准备与Ada一起使用的是GtkAda和QtAda。 RAPID是专为创建Ada应用程序用户界面而设计的界面设计器。
我无法谈论Oberon的继承方法,但Ada WikiBook对Ada的object orientation方法有很好的解释。
答案 1 :(得分:3)
不,Ada没有内置GUI;但是我能想到的最接近的语言是PostScript。 (从技术上讲,Java语言没有;虽然它包含的库也没有。)据说有一个GTK绑定(我根本没用过)和一个OpenGL绑定(我只玩过它;并且老实说,OpenGL绑定比我想要的绑定要薄得多。
Oberon的继承模型(据我所知)是单扩展继承,与Ada相同;虽然Ada确实采用了类似于Java的接口系统。我实际上并没有使用过Oberon,所以我无法真正为你提供这两个人的并列示例,但可以向你展示Ada的例子。
基地:
Type Base is Abstract Tagged Record
Null;
End Record; -- Base
-- Base Operations
Procedure Op( Object : In Out Base );
Procedure Dispatching_Op( Object : In Out Base'Class );
扩展:
Type Extended is New Base With Record
Null;
End Record; -- Extended
Overriding Procedure Op( Object : In Out Extended );
有机构,比如说:
Procedure Op( Object : In Out Base ) is
begin
Put( "Hello" );
end Op;
Procedure Dispatching_Op( Object : In Out Base'Class ) is
begin
Op( Object );
Put_Line( " World." );
end Dispatching_Op;
Procedure Op( Object : In Out Extended ) is
begin
Put( "Goodbye" );
End Op;
给出类型为P {P:K.Base'Class:= K.Extended'(Others =><>);}的对象可以这样调用:
P.Dispatching_Op;
在这个例子中会产生以下结果:
Goodbye World.
答案 2 :(得分:3)
很多编程语言都没有GUI。 Oberon确实如此,但仅仅因为它实际上带有整个操作系统(包括操作系统的GUI)。 Java有两个,但出于同样的原因(JVM本质上是Java的操作系统)。 Delphi有一个,因为当与特定的GUI结合使用时,Delphi本质上就是Pascal的名称。
典型的编程语言旨在超越特定平台,因此大多数用户都希望在他们碰巧正在处理的任何平台(Windows,Linux等)上使用标准GUI。阿达就是其中之一。
这并不意味着没有与Ada一起使用的集成环境。 Gnavi是一个尝试做类似Delphi 的项目,但有Ada和标准的Windows GUI。 GTKAda是一个不同的项目,可帮助Ada程序使用GTK +小部件工具包创建GUI 。 GTK +是Linux上使用的标准GUI工具包之一(可移植到Windows)。
至于继承,我最后一次和Oberon一起玩时,看起来它使用了基于记录类型的简单扩展继承。这也是Ada采取的方法。然而,Ada的调度方法在Oberon所做的事情和C ++的作用之间。机械上它与Oberon相似。唯一有点奇怪的是,例程通过使用该类作为参数和在与类相同的包中定义,而不是显式地与类绑定到类(记录)某种关键字。否则,它看起来会非常相似。
但我相信Oberon所有重写方法都是动态调度,而Ada仅在需要时使用动态调度,因为使用了类范围的指针或引用,就像C ++一样。如果这不包括您的OO问题,您可能需要更加具体地了解您想知道的Oberon OO系统中的内容。