Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Incapsulamento: scrivere una classe in Objective C

La dichiarazione di una classe e i principi dell'incapsulamento in pratica
La dichiarazione di una classe e i principi dell'incapsulamento in pratica
Link copiato negli appunti

L'interfaccia, nella programmazione object oriented, serve ad una entità (un oggetto) per mostrare i metodi che ha per rispondere ai messaggi esterni. Questo per ottemperare al principio del'incapsulamento.

Interfaccia

Vediamo un esempio di interfaccia di una classe:

//definizione dell'interfaccia: "PrimaClasse.h"
#import <Foundation/Foundation.h>
@interface PrimaClasse : NSObject
{
  // variabili d'istanza (private)
  int intero;
  NSString *stringa;
}
// metodi setter e getter
- (void) setIntero : (int) parametro;
- (int) intero;
- (void) setStringa : (NSString *) parametro;
- (NSString *) stringa;
// metodi di istanza
- (NSString *) metodoSenzaParametri;
- (NSString *) metodoConUnParametro:(NSString *) parametro;
// metodo di classe
+ (NSString *) metodoDiClasse
{
  return @"Invocato metodo statico";
}
@end

L'interfaccia di una classe inizia sempre con la parola chiave @interface e termina con la parola chiave @end.

Subito dopo @interface segue il nome della classe, i due punti ed il nome della classe base, da cui l'oggetto deriva. Per convenzione il nome delle classi segue lo standard "CamelCase", ovvero le iniziali delle parole che compongono la classe sono in maiuscolo.

Nelle parentesi graffe si definiscono le variabili di istanza e all'esterno, prima della parola chiave @end, possiamo inserire le dichiarazioni dei metodi e delle proprietà (metodi setter/getter).

Implementazione

Il file di implementazione inizia sempre con una riga di codice che "importa" il file di interfaccia:

#import "PrimaClasse.h"

Anche in questo caso tutto il codice andrà scritto all'interno delle parole chiave @implementation NomeClasse e @end.

Ogni metodo implementato inizia con la stessa definizione che è stata scritta nel file interfaccia. Il corpo del metodo è delimitato dalle parentesi graffe.

#import "PrimaClasse.h"
@implementation PrimaClasse
// Metodi setter e getter
- (void) setIntero : (int) parametro {	intero = parametro; }
- (int) intero { return intero; }
- (void) setStringa : (NSSTring *) parametro {
  [stringa autorelease];
  stringa=[parametro retain];
}
- (NSSTring *) stringa { return stringa; }
// Metodi di istanza
- (NSSTring *) metodoSenzaParametri {
  return @"Non ho parametri";
}
- (NSSTring *) metodoConUnParametro:(NSSTring *) parametro {
  return [NSString stringWithFormat:@"Il parametro passato è %@", parametro];
}
// Metodo di classe
+ (NSString *) metodoDiClasse {
  return @"Invocato metodo statico";
}
@end

Abbiamo definito quindi le nostre proprietà, tramite getter e setter, i metodi di PrimaClasse ed abbiamo definito un metodo statico.

Utilizzeremo questa classe per sviluppare gli esempi nelle prossime lezioni, dove, tra l'altro, approfondiremo l'uso delle stringhe in Objective C e la dichiarazione di proprietà nella versione 2.0.

Ti consigliamo anche