I Protocolli

      2 commenti su I Protocolli

xcode_framework

Un protocollo è un gruppo di proprietà correlate a dei  metodi che possono essere implementati da qualsiasi  classe. I protocolli inoltre possono essere paragonate alle interfaccia Java.Credo che un esempio pratico rendi meglio l’idea di cosa sia un protocollo e come utilizzarlo.Creiamo un nuovo progetto e diamogli un nome qualsiasi, una volta fatto ciò  creiamo un nuovo protocollo file->new->file->objective-c protocol  e diamogli come nome RegoleStradali.

creating-a-protocol

Il nostro protocollo ci permette di “catturare”  i comportamenti che si dovrebbero rispettare quando si è a bordo di un veicolo. L’utilizzo di un protocollo ci permette di poterlo applicare su oggetti arbitrari, in modo da non essere costretti a ereditare tale comportamento da una determinata superclasse. il metodi che dichiariamo nel nostro protocollo sono i seguenti.

 

[code lang=”obj-c”]

#import <Foundation/Foundation.h>

@protocol RegoleStradali <NSObject>

-(void)segnaleDiStop;

-(void)segnaleGirareADestra;

-(void)segnaleGirareASinistra;

@end

[/code]

 

Da notare che <NSObject> non sta indicare la classe NSObject ma esso ci dice che tutti gli oggetti conformi al protocollo RegoleStradali devono essere conformi anche al protocollo NSObject.

Ora creiamo 2 classi (che ereditano da NSObject) la prima classe la chiamiamo Bicicletta la seconda Automobile.

Iniziamo nell’implementare la classe bicicletta.

 

[code lang=”obj-c”]

#import <Foundation/Foundation.h>

#import "RegoleStradali.h"

@interface Bicicletta : NSObject<RegoleStradali>

-(void)iniziaPedalare;

-(void)stopPedalare;

@end

[/code]

 

file.m

 

[code lang=”obj-c”]

#import "Bicicletta.h"

@implementation Bicicletta

-(void)iniziaPedalare{

NSLog(@"inizio a pedalare");

}

-(void)stopPedalare{

NSLog(@"smetto di pedalare");

}

-(void)segnaleDiStop{

NSLog(@"mi fermo");

}

-(void)segnaleGirareADestra{

NSLog(@"Estendo il braccio verso destra ");

}

-(void)segnaleGirareASinistra{

NSLog(@"Estendo il braccio verso sinistra ");

}

@end

[/code]

 

Ora implementiamo la classe Automobile

file.h

 

[code lang=”obj-c”]

#import <Foundation/Foundation.h>

#import "RegoleStradali.h"

@interface Automobile : NSObject<RegoleStradali>

-(void)accellero;

-(void)freno;

@end

[/code]

 

file.m

 

[code lang=”obj-c”]

@implementation Automobile

-(void)accellero{

NSLog(@"accellero ");

}

-(void)freno{

NSLog(@"freno");

}

-(void)segnaleDiStop{

NSLog(@"mi fermo e accendo il segnale di stop");

}

-(void)segnaleGirareADestra{

NSLog(@"metto la freccia a destra");

}

-(void)segnaleGirareASinistra{

NSLog(@"metto la freccia a sinistra");

}

@end

[/code]

Come possiamo notare  pur se entrambi le classi  appartengono ad uno stesso contesto (veicolo) hanno dei comportamenti leggermente diversi, ad esempio come si può notare dalla classe bicicletta l’azione che comporta lo spostamento verso destra è indicato dall’azione che effettua il braccio, mentre per quanto concerne la classe automobile tale azione è illustrata con un differente comportamento.

Spero che vi sia stato tutto chiaro per qualsiasi dubbio lasciate un commento oppure contattateci tramite la nostra pagina di facebook.