Objective-C: Malsamoj inter versioj

[nekontrolita versio][nekontrolita versio]
Enhavo forigita Enhavo aldonita
Neniu resumo de redakto
Etikedoj: Poŝtelefona redakto Redakto de poŝaparata retejo
Forviŝis la tutan enhavon el la paĝo
Etikedoj: Poŝtelefona redakto Redakto de poŝaparata retejo
Linio 1:
== Priskribo ==
 
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 ===
 
La ĉefa aldono de sintakso estas la mesaĝoj, kiu estas bazita sur [[Smalltalk Komputillingvo|Smalltalk]].
 
Objektemaj programoj konzistas de ''objektoj'' intersendantaj ''mesaĝojn'' -- t.e. invitojn ruli kelkajn ''metodojn''. En Objective-C mesaĝoj aspektas jene:
<syntaxhighlight lang="objc">
[objekto metodo]
</syntaxhighlight>
Ekzemple:
<syntaxhighlight lang="objc">
cxenLongo = [@"Saluton mondo" length]; // sendu mesaĝon "rulu metodon length" al la ĉeno "Saluton mondo"
</syntaxhighlight>
Mesaĝoj povas enskatoliĝi kaj aldoniĝi parametrojn malantaŭ dupunktoj, ekzemple
<syntaxhighlight lang="objc">
[resulto setFloatValue: [kvanto floatValue]*[kurzo floatValue]];
</syntaxhighlight>
=== Klasoj ===
 
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:
<syntaxhighlight lang="objc">
@interface lumilo : Object {
BOOL lumas; // statuso
}
- (BOOL) lumas; // kapablo: respondu, ĉu ŝaltita
- agorduLumas: (BOOL) novaStato;
- init; // agordu komencan staton
@end
</syntaxhighlight>
La parto ''implementation'' (realigo) eksplikas, kiel la kapabloj efektiviĝu. Tie, oni skribas la kodon de la metodoj, per la jena sintakso:
<syntaxhighlight lang="objc">
@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
</syntaxhighlight>
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:
<syntaxhighlight lang="objc">
#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");
}
</syntaxhighlight>