Objective-C

El Vikipedio, la libera enciklopedio
Saltu al: navigado, serĉo

Komputiko > Programlingvo > Objective-C


Objective-C, ofte nomata mallongige Obj-C, estas objektema komputillingvo implementita kiel etendaĵo de C. Ĝi uziĝis plejparte ĉe la Mac OS X operaciumo kaj la GNUstep programaro, t.e. softvaro kiu uzas la OpenStep strukturon. Obj-C estis antaŭe la ĉefa lingvo uzata por la operaciumo NeXTSTEP, el kiu venis la OpenStep regularo. Nuntempe Obj-C plu vivas kiel la ĉefa lingvo en Mac OS X kaj GNUstep, ambaŭ OpenStep-bazitaj sistemoj.


Priskribo[redakti | redakti fonton]

Objective-C estas tre "maldika" nivelo sur C. Fakte, ĝi havas nur iujn ŝanĝojn de sintakso (por objektemaj espmrimiloj) kaj ĉirkaŭ deko de novaj terminoj. Tial, C-sciantaj povas lerni la lingvon tre rapide.

Mesaĝoj[redakti | redakti fonton]

La ĉefa aldono de sintakso estas la mesaĝoj, kiu estas bazita sur Smalltalk.

Objektemaj programoj konzistas de objektoj intersendantaj mesaĝojn -- t.e. invitojn ruli kelkajn metodojn. En Objective-C mesaĝoj aspektas jene:

 [objekto metodo]

Ekzemple:

 cxenLongo = [@"Saluton mondo" length]; // sendu mesaĝon "rulu metodon length" al la ĉeno "Saluton mondo"

Mesaĝoj povas enskatoliĝi kaj aldoniĝi parametrojn malantaŭ dupunktoj, ekzemple

 [resulto setFloatValue: [kvanto floatValue]*[kurzo floatValue]];

Klasoj[redakti | redakti fonton]

Por krei siajn proprajn tipojn de objektoj oni devas priskribi ilin en klasoj. Oni priskribas klasojn per du partoj: la interfaca kaj la realiga. La interfaca parto enhavas priskribon pri stato de objekto de la klaso kaj ĝiaj kapabloj -- t.e. ĝiaj variabloj kaj metodoj. La sintakso estas la jena:

 @interface lumilo : Object {
    BOOL lumas;                      // statuso 
  }
 - (BOOL) lumas;                     // kapablo: respondu, ĉu ŝaltita
 - agorduLumas: (BOOL) novaStato;
 - init;                             // agordu komencan staton
 @end

La parto implementation (realigo) eksplikas, kiel la kapabloj efektiviĝu. Tie, oni skribas la kodon de la metodoj, per la jena sintakso:

 @implementation lumilo
 - (BOOL) lumas {
   return lumas;                     // redonu variablon (vivas en alia nomspaco ol metodoj)
   }
 - agorduLumas: (BOOL) novaStato {
   lumas = novaStato;
   return self;                      // ĉi tio permesas ĉeni la vokojn al la metodoj
   }
 - init {
   return [self agorduLumas: NO];
   }
 @end

Objektoj konstruiĝas tiam, kiam oni sendas la mesaĝon alloc al la klaso. Klasoj ankaŭ estas objektoj kun metodoj. La metodon init oni alvokas por agordi la komencan staton. Konklude la supre difinita klaso povas uziĝi jene:

 #include <stdio.h>                  // uzu norman C-an en/eligon en la ekzemplo
 int main ()
 {
   id objekto;                       // id signifikas "iu objekto"
   objekto = [[[lumilo alloc] init] agorduLumas: YES];    // komplexa ĉeno de vokoj al metodoj
   printf ("La lumilo \"objekto\" %s.", [objekto lumas]?"lumas":"malhelas");    
 }

Eksteraj ligiloj[redakti | redakti fonton]