2011-08-27 5 views
2

Ada에는 내장 GUI가 포함되어 있으며 Oberon과 동일한 고유 한 계승 방법이 있습니까?Ada에서 상속을 구현하는 방법과 GUI가 내장되어 있습니까?

+1

참고 자료 : Erich는 원래 질문에 대한 의견으로이 질문을 제기했습니다. http://stackoverflow.com/questions/7182968/where-can-i-learn-oberon-and-what-ide-can-use , 그리고 여기에 친절하게 다시 촉구했다. Oberon에 주로 관심이있는 경우 해당 질문도 확인해야합니다. –

답변

3

아니요, Ada에는 기본 제공 GUI가 제공되지 않습니다. 하지만 제가 생각할 수있는 가장 가까운 언어는 포스트 스크립트입니다. (기술적으로 Java 언어는 포함되지 않지만 포함 된 라이브러리는 그렇습니다.) GTK 바인딩 (내가 전혀 사용하지 않은)과 OpenGL 바인딩 솔직히 OpenGL 바인딩은 내가 원하는 것보다 훨씬 더 얇은 바인딩이다.)

오베론의 상속 모델 (내가 이해하는 것처럼)은 Ada와 동일한 단일 확장 상속이다. Ada는 Java와 유사한 인터페이스 시스템을 통합합니다. 저는 실제로 오베론을 사용하지 않았기 때문에이 두 가지에 대한 예시를 실제로 제공 할 수는 없지만 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); 

는 말 : 형 P {P의 객체를 주어진

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; 

: K.Base'Class : = K.Extended '(기타 => <>)}는 다음과 같이 호출 할 수 있습니다.

P.Dispatching_Op; 

그리고이 경우에 다음과 같은 결과를 생성 할 것이다 : 프로그래밍 언어의

Goodbye World. 
+3

가장 일반적인 Ada 스타일은 키워드에 소문자를 사용하고 식별자에 대소 문자를 혼합하는 것입니다. 예를 들어'procedure Op (Object : in Base); ' –

+1

... 그러나 Ada는 대소 문자를 구별하지 않으므로 * 아무것도 실행하지 않습니다. (그러므로 키스가 "스타일"이라는 단어를 사용함) –

+0

나는 대소 문자를 구분하지 않는다. 필자는 너무 오랫동안 (또는 충분히 길지 않게) 쉬프트를 유지하기 때문에 프로그래밍 언어가 질식해야하는 좋은 이유가 없다 ... 사실, _style_이 모두 중요하다면 컴파일러 자체가 코드를 넣을 수없는 이유가 없다. 그 스타일의 소스. – Shark8

3

GUI를 제공하는 프로그래밍 언어는 거의 없으며, GUI 기본 요소가 프로그래밍 언어 자체의 본질적인 부분이라는 것을 의미합니다. Ada는 다른 언어와 같은 GUI 도구 키트를 사용할 수 있습니다. 에이다와 함께 사용할 준비가 된 사람들은 GtkAdaQtAda입니다. 그리고 RAPID은 Ada 응용 프로그램 사용자 인터페이스를 만들기 위해 특별히 고안된 인터페이스 디자이너입니다.

Oberon의 상속 접근법에 대해서는 말할 수 없지만 Ada WikiBook에는 object orientation에 대한 Ada의 접근 방식에 대한 좋은 글이 있습니다.

+1

이 [Q & A] (http://stackoverflow.com/questions/6755110/how-to-use-gtk-with-ada)도 참조하십시오. – trashgod

3

아니 많이는 GUI와 함께. Oberon은 실제로 전체 운영 체제 인 (해당 운영 체제의 GUI 포함)이과 함께 제공되기 때문에 오베론이 수행합니다. 자바는 몇 가지를 가지고 있지만 정확한 이유는 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은 모든 오버라이드 메소드가 동적 디스패치 인 반면 Ada는 클래스 전체 포인터 또는 C++처럼 사용되는 참조로 인해 필요할 때만 동적 디스패치를 ​​사용합니다. 그것이 귀하의 OO 문제를 다루지 않는다면, 당신이 궁금해하는 Oberon OO 시스템에서 무엇인지에 대해 더 구체적으로 밝혀야 할 것입니다.

+0

Oberon에서는 정적 및 동적 디스패치를 ​​모두 사용할 수 있습니다. 사실 엄밀히 말해서, 오베론은 실제로 어떤 파견기구도 제공하지 않지만, 당신 스스로 쉽게 프로그램 할 수 있습니다. Wirth는 "Programming in Oberon"에서 정적 및 동적 디스패치에 대한 예제를 제공합니다. 그는 정적 디스패치는 보편적이며 기본 유형에 추가 된 메소드에 유용하지만 동적 디스패치는 다른 모든 것에 대한 것입니다. 주요한 동기는 많은 OOP 언어에서 흔히 볼 수있는 취약한 기본 클래스 문제를 피하는 것으로 보인다. – trijezdci

관련 문제