Oxygene (язык программирования) | это... Что такое Oxygene (язык программирования)? (original) (raw)

У этого термина существуют и другие значения, см. Oxygene.

Oxygene

Chrome-128.png
Релиз: 4.0.25 (20 августа 2010)
Испытал влияние: Object Pascal, C#
Лицензия Commercial
Сайт: Oxygene Homepage

Oxygene («Кислород») (ранее известный как Chrome («Хром»)) — язык программирования, разработанный компанией RemObjects Software для стандарта Common Language Infrastructure. Язык Oxygene был создан на основе языка Object Pascal.

Первоначально привязанный к Delphi.NET, после приобретения прав компанией Embarcadero, Oxygene не обладает полной обратной совместимостью. Так, например, в его состав не входят библиотеки классов, совместимые с VCL, что практически исключает перенос на платформу .NET унаследованных приложений, созданных с помощью Delphi или Kylix и использовавших библиотеку классов VCL.

Компания «RemObjects Software» предлагает полную интеграцию с Visual Studio 2003/2005/2008, а с июня 2010 года - интеграцию с MonoDevelop и Visual Studio 2010. Отдельного IDE для Oxygene на данный момент не существует.

Содержание

Особенности

Примеры кода

Hello World

namespace HelloWorld;

interface

type HelloClass = class public class method Main; end;

implementation

class method HelloClass.Main; begin System.Console.WriteLine('Hello World!'); end;

end.

Обобщённый контейнер

namespace GenericContainer;

interface

type TestApp = class public class method Main; end;

Person = class public property FirstName: String; property LastName: String;
end;

implementation

uses System.Collections.Generic;

class method TestApp.Main; begin var myList := new List; //вывод типов myList.Add(new Person(FirstName := 'Иван', LastName := 'Петров'));
myList.Add(new Person(FirstName := 'Маша', LastName := 'Петрова')); myList.Add(new Person(FirstName := 'Сергей', LastName := 'Петров'));
Console.WriteLine(myList[1].FirstName); //Проверка не требуется Console.ReadLine;
end;

end.

Обобщённый класс

namespace GenericMethodTest;

interface

type GenericMethodTest = static class public class method Main; private class method Swap(var left, right : T); class method DoSwap(left, right : T); end;

implementation

class method GenericMethodTest.DoSwap(left, right : T); begin var a := left; var b := right; Console.WriteLine('Type: {0}', typeof(T)); Console.WriteLine('-> a = {0}, b = {1}', a , b); Swap(var a, var b); Console.WriteLine('-> a = {0}, b = {1}', a , b); end;

class method GenericMethodTest.Main; begin var a := 23;// вывод типа var b := 15; DoSwap(a, b); // никаких приведений базового типа к дочернему (downcasting) для Object в этом классе.

var aa := 'abc';// вывод типа var bb := 'def'; DoSwap(aa, bb); // никаких приведений базового типа к дочернему (downcasting) для Object в этом классе.

DoSwap(1.1, 1.2); // вывод типа для обобщённых параметров Console.ReadLine(); end;

class method GenericMethodTest.Swap(var left, right : T); begin var temp := left; left:= right; right := temp; end;

end.

Программа должна вывести:

Type: System.Int32 -> a = 23, b = 15 -> a = 15, b = 23 Type: System.String -> a = abc, b = def -> a = def, b = abc Type: System.Double -> a = 1,1, b = 1,2 -> a = 1,2, b = 1,1

Улучшенная обработка операторов выбора

case aClassID.ToUpper of 'XYZ': result := TMyXYZClass; 'ABC': result := TMyOtherClass; else raise new Exception('Неправильный ID класса'); end;

case aClass type of TMyXYZClass: TMyXYZClass(aClass).DoSomething; TMyOtherClass: TMyOtherClass(aClass).DoSomethingElse; else raise new Exception('Неправильная ссылка на класс'); end;

См. также

Дополнительные источники

Просмотр этого шаблона .NET Framework
Архитектура Base Class LibraryCommon Language Infrastructure.NET assemblyметаданныеCOM Interop
Инфраструктура Common Language RuntimeCommon Type SystemCommon Intermediate Language • Virtual Execution System • Dynamic Language Runtime
Языки Microsoft C#Visual Basic .NETC++/CLI (Managed) • Visual J#JScript .NETWindows PowerShellIronPythonIronRubyF#Spec#Sing#
Другие языки A#Boo • IronLisp • L# • NemerleP#PascalABC.NETPHPScala • Delphi Prism
Windows Foundations PresentationCommunicationWorkflow
Компоненты ADO.NET (Entity Framework · Data Services) · ASP.NET (AJAX · MVC · Dynamic Data) · .NET Remoting · Language Integrated Query · Windows CardSpace · Windows Forms · XAML · ClickOnce · Dynamic Language Runtime · Parallel FX Library (PLINQ · TPL)
Реализации DotGNUMono.NET Compact Framework (Xbox 360) • .NET Micro FrameworkPortable.NETXNA FrameworkSilverlight • Shared Source Common Language Infrastructure
Сравнения C# и Java • C# и Visual Basic .NET
Будущие технологии Acropolis • Jasper
Просмотр этого шаблона Pascal
Диалекты Clascal • Concurrent Pascal • DelphiPascalObject PascalOxygene • SuperPascal
Компиляторы Коммерческие C/ALDelphiDelphi Prism (Oxygene) • FrameworkPascal • HP Pascal • IP Pascal • PocketStudio • Prospero Pascal Бесплатные ACKFree PascalGNU PascalMIDletPascal • Pic Micro Pascal • Turbo51 • Vector Pascal[1] Неподдерживаемые JRT • Microsoft PascalObject Pascal (Apple) • Pascal/MT+ • THINK Pascal • Turbo PascalUCSD PascalVirtual Pascal
IDE DelphiLazarusMSEide+MSEguiPascalABC.NET
Персоны Никлаус Вирт • Ларри Теслер (англ.) • Андерс Хейлсберг