close
The Wayback Machine - https://web.archive.org/web/20151117021059/https://codmasters.ru/thread-33-1-1.html

CodMasters.ru

 Забыли пароль?
 Регистрация
Поиск
Просмотр: 151|Ответ: 0

Remobjects Oxygene

[ Партнёрская ссылка ]
Image

5

Темы

5

Сообщения

0

Кредиты

Administrator

Rank: 9Rank: 9Rank: 9

Кредиты
0

Image Украина

Image Опубликовано: 16-8-2015 10:56:42
| Показать все сообщения |Read mode
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 на данный момент не существует.
Image


Особенности
  • интеграция с CLI.
  • Основан на Object Pascal с добавлением множества новых возможностей.
  • Поддержка механизма «контракты для классов» («class contracts») — механизм ограничения на данные, схожий с контрактным программированием.
  • Определение переменных непосредственно внутри блока кода.
  • Анонимные типы.
  • Анонимные методы и делегаты.
  • Асинхронные методы и работа с потоками.
  • Лямбда-исчисление.
  • Поддержка .NET 2.0.
  • Обобщённые типы и методы. (только для .NET 2.0)
  • Обнуляемые типы (Nullable types). (только для .NET 2.0)
  • Итераторы.
  • Частичные классы (для .NET 1.1 и 2.0)
  • Методы-расширения (Extension methods).
  • Поддержка LINQ.
  • Вывод типов.
  • Виртуальные свойства и события.
  • Улучшенная поддержка событий с несколькими обработчиками (multicast events).
  • Инициализаторы переменных внутри кода.
  • Улучшенная поддержка циклов for.
  • Знак двоеточия для безопасной работы с типами.
  • Поддержка WPF.
  • Полная поддержка альтернативных фреймворков, созданных для Visual Studio (смотри Portable.NET и Mono (среда разработки))



Hello World
  1. namespace HelloWorld;
  2.   
  3. interface

  4. type
  5.   HelloClass = class
  6.   public
  7.     class method Main;
  8.   end;
  9.   
  10. implementation

  11. class method HelloClass.Main;
  12. begin
  13.   System.Console.WriteLine('Hello World!');
  14. end;
  15.   
  16. end.
Скопировать код
Обобщённый контейнер
  1. namespace GenericContainer;

  2. interface

  3. type
  4.   TestApp = class
  5.   public
  6.     class method Main;
  7.   end;
  8.   
  9.   Person = class
  10.   public
  11.     property FirstName: String;
  12.     property LastName: String;      
  13.   end;        

  14. implementation

  15. uses
  16.   System.Collections.Generic;

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

  26. end.
Скопировать код
Обобщённый класс

  1. namespace GenericMethodTest;

  2. interface

  3. type
  4. GenericMethodTest = static class
  5. public
  6.   class method Main;
  7. private
  8.   class method Swap<T>(var left, right : T);
  9.   class method DoSwap<T>(left, right : T);
  10. end;

  11. implementation

  12. class method GenericMethodTest.DoSwap<T>(left, right : T);
  13. begin
  14.   var a := left;
  15.   var b := right;
  16.   Console.WriteLine('Type: {0}', typeof(T));
  17.   Console.WriteLine('-> a = {0}, b = {1}', a , b);
  18.   Swap<T>(var a, var b);
  19.   Console.WriteLine('-> a = {0}, b = {1}', a , b);
  20. end;

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

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

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

  32. class method GenericMethodTest.Swap<T>(var left, right : T);
  33. begin
  34.   var temp := left;
  35.   left:= right;
  36.   right := temp;
  37. end;

  38. 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
---

Улучшенная обработка операторов выбора
  1. case aClassID.ToUpper of
  2.    'XYZ': result := TMyXYZClass;
  3.    'ABC': result := TMyOtherClass;
  4. else raise new Exception('Неправильный ID класса');
  5. end;
Скопировать код
  1. case aClass type of
  2.    TMyXYZClass: TMyXYZClass(aClass).DoSomething;
  3.    TMyOtherClass: TMyOtherClass(aClass).DoSomethingElse;
  4. else raise new Exception('Неправильная ссылка на класс');
  5. end;
Скопировать код



Скачать:

Для ответа необходима авторизация Вход | Регистрация

Формула начисления кредитов

Архив|Мобильная версия|Dark room|CodMasters.ru  Image

Рейтинг@Mail.ru
Яндекс.Метрика

17-11-2015 05:10 GMT+3 , Processed in 0.031684 sec., 9 queries , Gzip On, Memcache On.

Powered by Discuz! X3.2

Release 20150609, © 2001-2015 Comsenz Inc.

MultiLingual version, Rev. 445, © 2009-2015 codersclub.org

Quick Reply Наверх Return to the list