Manuals
|
Inici » Manuals » Llenguatge de Programació Objective-C » El Llenguatge Objective-C » Definint una Classe La ImplementacióLa definició d'una classe és estructurades molt semblant a la seva declaració. Comença amb la directiva @implementation NomDeClasse : LaSevaSuperclasse
{
declaracions de variables d'instància
}
definicions de mètodes
@end
Tanmateix, cada fitxer d'implementació ha d'importar la seva pròpia interfície. Per exemple,
Això simplifica la implementació i la fà principalment lleials a les definicions de mètodes: #import "NomDeClasse.h" @implementation NomDeClasse definicions de mètodes @end
Els mètodes per una classe estan definits, com les funcions C, dins un parell de claus. Abans de les claus, es declara igual qu en el fitxer de la interfície, però sense el doble punt. Per exemple: {
...
}
- (BOOL)esPle
{
...
}
- (void)posaPle:(BOOL)flag
{
...
}
Els mètodes que tenen un nombre variable d'arguments els agafen com ho faria una funció: #import
Referenciant a Variables d'InstànciaPer defecte, la definició d'un mètode d'instància té totes les variables d'instància de l'objecte dins el seu abast. Pot referir-se-s'hi simplement pel nom. Tanmateix el compilador crea les estructure de C equivalents per guardar les variables d'instància, la naturalessa exacta de la estructura es manté amagada. No necessties cap dels operadors d'estructura ( - (void)posaPle:(BOOL)flag
{
ple = flag;
...
}
Ni l'objecte que rep ni la seva variable d'instància Quan la variable d'instància arriba a un objecte que no és el receptor, el tipus de l'objecte ha de fer-se explícit al compilador a través de la definició estàtica. A la referència a la variable d'instància d'un objecte definit estàticament, l'operador del punter de l'estructura ( Suposa, per exemple, que la classe Germà declara un objecte definit estàticament, @interface Germà : NSObject
{
Germà *bessó;
int gènere;
struct característiques *aparença;
}
Així com les variables d'instància dels objectes declarats estàticament estan dins de l'abast de la classe (estan aquí perqué - ferUnBessóIndèntic
{
if ( !bessó ) {
bessó = [[Germà alloc] init];
bessó->gènere = gènere;
bessó->aparènça = aparença;
}
return twin;
}
L'Abast de les Variables d'InstànciaEncara que estan declarades en la interfície de la classe, les variables d'instància són més una manera de formar en que una classe s'implementa que la forma en que s'utilitza. La interfície d'objecte es bassa en els seus mètodes, no en les seves estructures de dades internes. Sovint, hi han una correspondència un-a-un entre un mètode i una variable d'instància, com en l'exemple següent: - (BOOL)ésPle
{
return ple;
}
Però aquesta necessitat no és el cas. Alguns mètodes poden retornar la informació no guardada en les variables d'intància, i algunes variables d'instància podrien guardar informació que un objecte no està disposat a revelar. Així com una classe es revisada cada cert temps, l'elecció de les variables d'instància poden canviar, fins i tot encara que els mètodes mantenen les mateixes declaracions. Així els missatges són el vehicle per interactuar amb les instàncies de les classes, aquests canvis realment no afectarien la seva intefície. Per reforçar l'abilitat d'un objecte per amagar les seves dades, el compilador limita l'abast de les variables d'instància -- vol dir, que limita la seva visibilitat dins el programa. Però proporciona la flexibilitat, també et permet explícitament assignar l'abast en tres nivells diferents. Cada nivell es marca per una directiva de compilador:
Això s'il·lustra en la Figura 2-4. Figure 2-4 L'abast de les variables d'instància
Una directiva s'aplica a totes les variables d'instància llistades després d'ella, fins sobre de la següent directiva o al final de la llista. En el següent exemple, les variables d'instància @interface Treballador : NSObject
{
char *nom;
@private
int edat;
char *evaluació;
@protected
id feina;
float salari;
@public
id cap;
}
Per defecte, totes les instàncies no marcades (com Totes les variables d'intància que una classe declara, no importa que estiguin marcats, estan dins l'abast de la definició de la classe. Per exemple, una classe que declara la variable d'instància - promocionarA:novaPosició
{
id vell = feina;
feina = novaPosició;
return feina;
}
Com és obvi, si una classe no pot accedir a les seves pròpies variables d'instància, les variables d'instància podrien no poder-se usar. Normalment, una classe també té accés a les variables d'instància de que hereda. L'abilitat de referir-se a una variable d'instància és normalment heredada al llarg abm la variable. Això dona sentit per les classes que tenen totes les seves estructures de dades dins al seu abast, especialment si penses en una definició de classe merament com una elaboració de les classe de les que hereda. El mètode Tanmateix, hi han raons per les quals podries voler restringir la herència de classes amb l'accés directe a una variable d'instància:
En un altre exemple, el marcar una variable Treballador *ceo = [[Treballador alloc] init]; ceo->cap = nil;
Fixeu-vos que l'objecte ha de ser declarat estàticament. Marcant variables d'instància per Carles el 18/08/2004 - 19:28, actualitzat el 18/08/2004 - 19:32 | versió per a imprimir | entreu o registreu-vos per a enviar comentaris
|
apadrinamentsAjuda a fer crèixer la barra verda amb les teves donacions!
8% (20,0 de 256,0€) 61% (190,0 de 314,0€) 88% (1.011,0 de 1.144,5€) 0% (0,0 de 374,1€) 4% (50,0 de 1.235,0€) 47% (545,0 de 1.170,0€) 61% (700,0 de 1.155,0€) comesfa.orgel teu usuariopcionsQui està en líniaAra hi han 3 usuaris i 124 convidats connectats.
Usuaris connectats:
és populard'avui... |