Ada有内置的GUI吗?它有和Oberon一样独特的继承方式吗?
发布于 2011-08-29 09:58:10
不,Ada没有内置的图形用户界面;但是我能想到的最接近的语言是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‘(Other => <>);}的对象,可以这样调用:
P.Dispatching_Op;在这种情况下会产生以下结果:
Goodbye World.发布于 2011-08-27 20:21:58
很少有编程语言提供内置的GUI,如果您的意思是说GUI原语是编程语言本身的固有部分。Ada可以像其他语言一样利用GUI工具包。可以与Ada一起使用的有GtkAda和QtAda。RAPID是专门为创建Ada应用程序用户界面而设计的界面设计器。
我不能谈论Oberon的继承方法,但Ada WikiBook对Ada的object orientation方法有很好的描述。
发布于 2011-08-29 21:19:59
并不是很多编程语言都带有GUI。Oberon做到了,但仅仅是因为它实际上附带了一个完整的操作系统(包括该操作系统的GUI)。Java有两个,但出于完全相同的原因( JVM本质上是Java的操作系统)。Delphi有一个,因为Delphi本质上是Pascal的名字,当它与特定的GUI结合在一起时。
典型的编程语言旨在超越特定的平台,因此大多数用户将希望在他们碰巧使用的任何平台(Windows、Linux等)上使用标准GUI。Ada就是其中之一。
这并不意味着没有与Ada一起使用的集成环境。 是一个尝试做一些类似于Delphi的项目,但是使用Ada和标准的Windows GUI。 是一个不同的项目,它帮助Ada程序使用GTK+小部件工具包创建GUI widget。GTK+是在Linux上使用的标准图形用户界面工具包之一(并且可以移植到Windows)。
至于继承,上一次我玩Oberon时,它看起来像是使用了基于记录类型的简单扩展继承。这也是Ada采取的方法。然而,Ada的调度方法有点介于Oberon和C++之间。从机械上讲,它类似于Oberon。唯一有点奇怪的是,例程绑定到类(记录),因为使用该类作为参数和在与类相同的包中定义,而不是使用某种关键字显式定义。否则,它看起来会很相似。
但我相信在Oberon中,所有覆盖的方法都是动态分派,而Ada只在需要时才使用动态分派,因为使用了类范围的指针或引用,就像C++一样。如果这还不能涵盖您的OO问题,那么您可能需要更具体地了解您想知道的Oberon的OO系统是什么。
https://stackoverflow.com/questions/7213265
复制相似问题