Obiectiv-J | |
---|---|
Clasa de limba | multi- paradigma : orientat pe reflexie, orientat pe obiecte , funcțional , imperativ , scripting |
Aparut in | 2008 |
Dezvoltator | 280 North Inc. |
Tip sistem | dinamic , slab , rață |
A fost influențat | Obiectiv-C , JavaScript |
Licență | LGPL |
Site-ul web | cappuccino.org |
Objective-J este un limbaj de programare dezvoltat ca parte a Cappuccino , un cadru de aplicații web. Sintaxa sa este aproape identică cu cea a Objective-C . Objective-J este pentru JavaScript ceea ce este Objective-C pentru limbajul de programare C: este un superset strict, dar compact. Objective-J adaugă moștenirea tradițională și trimiterea dinamică în stil Smalltalk/Objective-C la JavaScript. Pure Javascript are deja conceptul de orientare a obiectelor și moștenire ca limbaj de tip prototip, dar Objective-J adaugă abilitatea de a utiliza programarea bazată pe clasă la JavaScript.
Programele scrise în Objective-J necesită preprocesare înainte de a putea fi executate de mașina virtuală JavaScript într-un browser web. Acest pas poate avea loc în timpul rulării într-un browser web folosind un compilator care traduce programele Objective-J în cod JavaScript pur. Compilatorul Objective-J este scris în JavaScript, astfel încât implementarea programelor Objective-J nu necesită niciun program special de browser.
Prima utilizare la scară largă a Objective-J este asociată cu crearea aplicației web 280Slides bazată pe framework-ul Cappuccino. Deși Objective-J poate fi folosit (și dezvoltat) independent de Cappuccino, Objective-J a fost creat în primul rând pentru a sprijini dezvoltarea web bazată pe Cappuccino.
Objective-J este un superset de JavaScript, ceea ce înseamnă că orice cod JavaScript valid este, de asemenea, cod Objective-J valid. Următorul exemplu ilustrează o definiție Objective-J a unei clase numite Adresă. Această clasă extinde clasa rădăcină CPObject, care joacă un rol similar cu cel al NSObject din Objective-C. Cu excepția numelui obiectului rădăcină, acest cod este, de asemenea, un exemplu de definiție de clasă în Objective-C.
@implementation Adresa : CPObject { CPString nume ; CPString oraș ; } - ( id ) initWithName: ( CPString ) aName city: ( CPString ) aCity { self = [ super init ]; nume = aNume ; oraș = aCity ; întoarce- te pe sine ; } - ( void ) setName: ( CPString ) aName { name = aName ; } - ( CPString ) nume { return name ; } + ( id ) newAddressWithName: ( CPString ) aName city: ( CPString ) aCity { return [[ self alloc ] initWithName : aname city : aCity ]; } @SfârşitCa și în cazul Objective-C, definițiile metodelor de clasă și ale metodelor de instanță încep cu „+” (plus) și, respectiv, „-” (minus).
Spre deosebire de Objective-C, obiectele din Objective-J nu trebuie eliberate, deoarece sunt eliberate automat de colectorul de gunoi JavaScript.