Oxygene (limbaj de programare)

oxigen
Clasa de limba limbaj de programare și limbaj de programare orientat pe obiecte
Aparut in 2005
Dezvoltator Software-ul RemObjects
Eliberare 6.0 ( 28 mai 2013 )
A fost influențat Obiect Pascal , C#
Licență comercial
Site-ul web reobjects.com/oxygene

Oxygene ("Oxygen") (cunoscut anterior ca Chrome ("Chrome") ) este un limbaj de programare dezvoltat de RemObjects Software pentru standardul Common Language Infrastructure . Limbajul Oxygene a fost creat din limbajul Object Pascal .

Inițial legat de Delphi.NET , după ce a fost achiziționat de Embarcadero , Oxygene nu este complet compatibil cu versiunea inversă. De exemplu, nu include biblioteci de clase care sunt compatibile cu biblioteca VCL , care este criticată pentru implementarea sa insuficient de eficientă, care practic a eliminat portarea aplicațiilor moștenite create cu Delphi sau Kylix și utilizarea bibliotecii de clase VCL pe platforma .NET .

RemObjects Software oferă integrare completă cu Visual Studio 2003/2005/2008, iar din iunie 2010 - integrare cu MonoDevelop și Visual Studio 2010. În prezent, nu există un IDE separat pentru Oxygene.

Caracteristici

Exemple de cod

salut lumea

namespace Hello World ; interfata tip HelloClass = clasă public class metoda Main ; sfârşitul ; implementare metoda clasei HelloClass . principal ; startSystem _ _ Consola . WriteLine ( „Bună ziua, lume!” ) ; sfârşitul ; sfârşitul .


Container generic

namespace GenericContainer ; interfata tip TestApp = clasă public class method Main ; sfârşitul ; Persoană = clasă proprietate publică Prenume : String ; proprietate LastName : String ; sfârşitul ; implementare folosește System . colectii . generic ; metoda clasei TestApp . principal ; begin var myList := listă nouă < Persoană >; //deducere de tip myList . Adăugați ( Persoană nouă ( Prenume := 'Ivan' , Nume := 'Petrov' )) ; lista mea . Adăugați ( Persoană nouă ( Prenume := 'Masha' , Nume := 'Petrova' )) ; lista mea . Adăugați ( Persoană nouă ( Prenume := 'Sergey' , Nume := 'Petrov' )) ; Consola . WriteLine ( myList [ 1 ] . Prenume ) ; // Nu este necesară validarea Consolă . readline ; sfârşitul ; sfârşitul .


Clasa generică

namespace GenericMethodTest ; interfata tip GenericMethodTest = clasa statica metoda clasei publice Main ; metoda clasei private Swap < T > ( var stânga , dreapta : T ) ; metoda clasei DoSwap < T > ( stânga , dreapta : T ) ; sfârşitul ; implementare metoda clasei GenericMethodTest . DoSwap < T > ( stânga , dreapta : T ) ; începe var a := stânga ; var b := dreapta ; Consola . WriteLine ( 'Tip: {0}' , tip de ( T )) ; Consola . WriteLine ( '-> a = {0}, b = {1}' , a , b ) ; Swap < T > ( var a , var b ) ; Consola . WriteLine ( '-> a = {0}, b = {1}' , a , b ) ; sfârşitul ; metoda clasei GenericMethodTest . principal ; începe var a := 23 ; // tip inference var b := 15 ; DoSwap < Integer > ( a , b ) ; // nicio reducere pentru Object din această clasă. var aa := 'abc' ; // tip inference var bb := 'def' ; DoSwap < String > ( aa , bb ) ; // nicio reducere pentru Object din această clasă. DoSwap ( 1.1 , 1.2 ) ; // tip deducere pentru parametrii generici Console . ReadLine () ; sfârşitul ; metoda clasei GenericMethodTest . Schimbați < T > ( var stânga , dreapta : T ) ; start var temp := left ; stânga := dreapta ; dreapta := temp ; sfârşitul ; sfârşitul .

Programul ar trebui să scoată:

Tip: System.Int32 -> a = 23, b = 15 -> a = 15, b = 23 Tip: System.String -> a=abc, b=def -> a=def, b=abc Tip: sistem.dublu -> a = 1,1, b = 1,2 -> a = 1,2, b = 1,1 ---


Gestionare îmbunătățită a instrucțiunilor select

caz aClassID . În sus din „XYZ” : rezultat : = TMyXYZClass ; „ABC” : rezultat := TMyOtherClass ; altfel ridică o nouă excepție ( „ID de clasă nevalid” ) ; sfârşitul ; caz aClass tip de TMyXYZClass : TMyXYZClass ( aClass ) . Fă ceva ; TMyOtherClass : TMyOtherClass ( aClass ) . DoSomethingElse ; altfel ridică o nouă excepție ( 'Referință de clasă nevalidă' ) ; sfârşitul ;

Vezi și

Surse suplimentare

Note