Oxígeno (lenguaje de programación)

oxígeno
clase de idioma lenguaje de programación y lenguaje de programación orientado a objetos
Apareció en 2005
Desarrollador Software RemObjects
Liberar 6.0 ( 28 de mayo de 2013 )
sido influenciado Objeto Pascal , C#
Licencia Comercial
Sitio web remobjects.com/oxygene

Oxygene ("Oxígeno") (anteriormente conocido como Chrome ("Chrome") ) es un lenguaje de programación desarrollado por RemObjects Software para el estándar Common Language Infrastructure . El lenguaje Oxygene fue creado a partir del lenguaje Object Pascal .

Originalmente vinculado a Delphi.NET , luego de ser adquirido por Embarcadero , Oxygene no es totalmente compatible con versiones anteriores. Por ejemplo, no incluye bibliotecas de clases que sean compatibles con la biblioteca VCL , lo que es criticado por su implementación insuficientemente eficiente, que prácticamente eliminó la migración de aplicaciones heredadas creadas con Delphi o Kylix y el uso de la biblioteca de clases VCL a la plataforma .NET . .

El software RemObjects ofrece integración completa con Visual Studio 2003/2005/2008 y, desde junio de 2010, integración con MonoDevelop y Visual Studio 2010. Actualmente no existe un IDE separado para Oxygene.

Características

Ejemplos de código

hola mundo

espacio de nombres Hola Mundo ; interfaz type HelloClass = class public class method Main ; fin ; implementación método de clase HelloClass . principal ; comenzarSistema . _ consola _ WriteLine ( '¡Hola mundo!' ) ; fin ; fin _


Contenedor Genérico

espacio de nombres GenericContainer ; interfaz type TestApp = class public class method Main ; fin ; Persona = propiedad pública de clase FirstName : String ; propiedad Apellido : Cadena ; fin ; implementación utiliza el sistema . colecciones _ genérico ; método de clase TestApp . principal ; begin var myList := new Lista < Persona >; //escriba la inferencia myList . Añadir ( nueva Persona ( Nombre := 'Iván' , Apellido := 'Petrov' )) ; miLista . Añadir ( nueva Persona ( Nombre := 'Masha' , Apellido := 'Petrova' )) ; miLista . Añadir ( nueva Persona ( Nombre := 'Sergey' , Apellido := 'Petrov' )) ; consola _ WriteLine ( miLista [ 1 ] .Nombre ) ; _ // No se requiere validación Consola . línea de lectura ; fin ; fin _


Clase genérica

espacio de nombres GenericMethodTest ; interfaz type GenericMethodTest = clase estática método de clase pública Main ; método de clase privada Swap < T > ( var izquierda , derecha : T ) ; método de clase DoSwap < T > ( izquierda , derecha : T ) ; fin ; implementación método de clase GenericMethodTest . DoSwap < T > ( izquierda , derecha : T ) ; comenzar var a := izquierda ; var b := derecha ; consola _ WriteLine ( 'Tipo: {0}' , tipo de ( T )) ; consola _ WriteLine ( '-> a = {0}, b = {1}' , a , b ) ; Intercambiar < T > ( var a , var b ) ; consola _ WriteLine ( '-> a = {0}, b = {1}' , a , b ) ; fin ; método de clase GenericMethodTest . principal ; comenzar var a := 23 ; // tipo inferencia var b := 15 ; Intercambiar < Entero > ( a , b ) ; // sin reducción de objetos en esta clase. var aa := 'abc' ; // tipo inferencia var bb := 'def' ; Intercambiar < Cadena > ( aa , bb ) ; // sin reducción de objetos en esta clase. Intercambiar ( 1.1 , 1.2 ) ; // tipo de inferencia para parámetros genéricos Consola . LeerLínea () ; fin ; método de clase GenericMethodTest . Intercambiar < T > ( var izquierda , derecha : T ) ; comenzar var temp := izquierda ; izquierda := derecha ; derecha := temporal ; fin ; fin _

El programa debe generar:

Tipo: Sistema.Int32 -> a = 23, b = 15 -> a = 15, b = 23 Tipo: Sistema.Cadena -> a=abc, b=def -> a=def, b=abc Tipo: Sistema.Doble -> a = 1,1, b = 1,2 -> a = 1,2, b = 1,1 ---


Manejo mejorado de declaraciones de selección

caso aClassID . Hasta la parte superior de 'XYZ' : resultado : = TMyXYZClass ; 'ABC' : resultado := TMyOtherClass ; de lo contrario, generar una nueva excepción ( 'ID de clase no válida' ) ; fin ; case aClass tipo de TMyXYZClass : TMyXYZClass ( aClass ) . hacer algo ; TMyOtherClass : TMyOtherClass ( aClass ) . HazAlgoMás ; de lo contrario, generar una nueva excepción ( 'Referencia de clase no válida' ) ; fin ;

Véase también

Fuentes adicionales

Notas