Ada에는 내장 GUI가 포함되어 있으며 Oberon과 동일한 고유 한 계승 방법이 있습니까?Ada에서 상속을 구현하는 방법과 GUI가 내장되어 있습니까?
답변
아니요, 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.
가장 일반적인 Ada 스타일은 키워드에 소문자를 사용하고 식별자에 대소 문자를 혼합하는 것입니다. 예를 들어'procedure Op (Object : in Base); ' –
... 그러나 Ada는 대소 문자를 구별하지 않으므로 * 아무것도 실행하지 않습니다. (그러므로 키스가 "스타일"이라는 단어를 사용함) –
나는 대소 문자를 구분하지 않는다. 필자는 너무 오랫동안 (또는 충분히 길지 않게) 쉬프트를 유지하기 때문에 프로그래밍 언어가 질식해야하는 좋은 이유가 없다 ... 사실, _style_이 모두 중요하다면 컴파일러 자체가 코드를 넣을 수없는 이유가 없다. 그 스타일의 소스. – Shark8
GUI를 제공하는 프로그래밍 언어는 거의 없으며, GUI 기본 요소가 프로그래밍 언어 자체의 본질적인 부분이라는 것을 의미합니다. Ada는 다른 언어와 같은 GUI 도구 키트를 사용할 수 있습니다. 에이다와 함께 사용할 준비가 된 사람들은 GtkAda과 QtAda입니다. 그리고 RAPID은 Ada 응용 프로그램 사용자 인터페이스를 만들기 위해 특별히 고안된 인터페이스 디자이너입니다.
Oberon의 상속 접근법에 대해서는 말할 수 없지만 Ada WikiBook에는 object orientation에 대한 Ada의 접근 방식에 대한 좋은 글이 있습니다.
이 [Q & A] (http://stackoverflow.com/questions/6755110/how-to-use-gtk-with-ada)도 참조하십시오. – trashgod
아니 많이는 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 시스템에서 무엇인지에 대해 더 구체적으로 밝혀야 할 것입니다.
Oberon에서는 정적 및 동적 디스패치를 모두 사용할 수 있습니다. 사실 엄밀히 말해서, 오베론은 실제로 어떤 파견기구도 제공하지 않지만, 당신 스스로 쉽게 프로그램 할 수 있습니다. Wirth는 "Programming in Oberon"에서 정적 및 동적 디스패치에 대한 예제를 제공합니다. 그는 정적 디스패치는 보편적이며 기본 유형에 추가 된 메소드에 유용하지만 동적 디스패치는 다른 모든 것에 대한 것입니다. 주요한 동기는 많은 OOP 언어에서 흔히 볼 수있는 취약한 기본 클래스 문제를 피하는 것으로 보인다. – trijezdci
- 1. raytracing에 내장되어 있습니까?
- 2. YUI.lang.extend가 이런 식으로 상속을 구현하는 이유는 무엇입니까?
- 3. nosetests 용 GUI가 있습니까
- 4. Boost Library에 GUI가 있습니까?
- 5. C#에서 상속을 구현하는 방법은 무엇입니까?
- 6. BOINC : programm을 코딩하는 방법과 클라이언트/서버 시스템에이를 구현하는 방법이 있습니까?
- 7. Ada에서 문자열의 문자 찾기
- 8. ada에서 mod 연산자 사용
- 9. Ada에서 삽입물 사용?
- 10. 하스켈의 '어쩌면'함수가 스칼라에 내장되어 있습니까?
- 11. GWT에 차트 기능이 내장되어 있습니까?
- 12. 이렇게하는 PHP 함수가 내장되어 있습니까?
- 13. XSLT를 생성하는 좋은 GUI가 있습니까?
- 14. Ada에서 디자인 패턴 참조 구현?
- 15. Ada에서 레코드의 동적 배열 할당
- 16. 개인 상속을 사용할 권리가 있습니까?
- 17. Ruby on Rails에서 액티브 레코드 상속을 구현하는 방법은 무엇입니까?
- 18. Java 용 iBatis를 사용하여 상속을 구현하는 방법은 무엇입니까?
- 19. Java에서 저장 단위 변환 유틸리티가 내장되어 있습니까?
- 20. 왜 springsource.com 웹 사이트가 drupal에 내장되어 있습니까?
- 21. Android에 서버 푸시 기능이 내장되어 있습니까?
- 22. ZipArchive php Class - PHP에 내장되어 있습니까?
- 23. 셰어 포인트와 비슷하지만 레일에 루비가 내장되어 있습니까?
- 24. .NET에서 실행을 지연시키는 IEnumerable 클래스가 내장되어 있습니까?
- 25. Liferay에는 웹 분석 도구가 내장되어 있습니까?
- 26. .NET에는 여러 컬렉션에 대해 IEnumerable이 내장되어 있습니까?
- 27. 레일 3에는 merb의 run_later 함수가 내장되어 있습니까?
- 28. .Net에 Playing Card 라이브러리가 내장되어 있습니까?
- 29. 연락처 목록에서 연락처를 얻는 방법과 onCreate() 이후의 기능을 구현하는 방법
- 30. Hibernate 통계를 보여주는 멋진 GUI가 있습니까?
참고 자료 : Erich는 원래 질문에 대한 의견으로이 질문을 제기했습니다. http://stackoverflow.com/questions/7182968/where-can-i-learn-oberon-and-what-ide-can-use , 그리고 여기에 친절하게 다시 촉구했다. Oberon에 주로 관심이있는 경우 해당 질문도 확인해야합니다. –