En aquest tema, aprendrem sobre la sintaxi dels mètodes en Objective-C, incloent-hi com definir-los i com cridar-los. Els mètodes són funcions associades a una classe o a una instància d'una classe, i són fonamentals per a la programació orientada a objectes.

Definició de Mètodes

Mètodes d'Instància

Els mètodes d'instància són aquells que operen sobre una instància específica d'una classe. Es defineixen utilitzant el signe menys (-) abans del nom del mètode.

- (retornTipus)nomMetode:(tipusParametre)parametre;

Exemple:

- (void)diHola {
    NSLog(@"Hola, món!");
}

Mètodes de Classe

Els mètodes de classe són aquells que es poden cridar sense crear una instància de la classe. Es defineixen utilitzant el signe més (+) abans del nom del mètode.

+ (retornTipus)nomMetode:(tipusParametre)parametre;

Exemple:

+ (void)diHola {
    NSLog(@"Hola des de la classe!");
}

Crida de Mètodes

Crida de Mètodes d'Instància

Per cridar un mètode d'instància, primer hem de crear una instància de la classe i després utilitzar la notació de claudàtors.

Exemple:

// Definició de la classe
@interface Salutacions : NSObject
- (void)diHola;
@end

@implementation Salutacions
- (void)diHola {
    NSLog(@"Hola, món!");
}
@end

// Crida del mètode d'instància
Salutacions *salutacio = [[Salutacions alloc] init];
[salutacio diHola];

Crida de Mètodes de Classe

Per cridar un mètode de classe, utilitzem el nom de la classe seguit de la notació de claudàtors.

Exemple:

// Definició de la classe
@interface Salutacions : NSObject
+ (void)diHola;
@end

@implementation Salutacions
+ (void)diHola {
    NSLog(@"Hola des de la classe!");
}
@end

// Crida del mètode de classe
[Salutacions diHola];

Paràmetres i Valors de Retorn

Els mètodes poden acceptar paràmetres i retornar valors. La sintaxi per a definir mètodes amb paràmetres és la següent:

- (retornTipus)nomMetode:(tipusParametre1)parametre1 altreParametre:(tipusParametre2)parametre2;

Exemple:

- (int)sumaDe:(int)a i:(int)b {
    return a + b;
}

Per cridar aquest mètode:

Salutacions *salutacio = [[Salutacions alloc] init];
int resultat = [salutacio sumaDe:5 i:3];
NSLog(@"El resultat és %d", resultat);

Exemples Pràctics

Exemple 1: Mètode d'Instància amb Paràmetres

@interface Calculadora : NSObject
- (int)sumaDe:(int)a i:(int)b;
@end

@implementation Calculadora
- (int)sumaDe:(int)a i:(int)b {
    return a + b;
}
@end

Calculadora *calc = [[Calculadora alloc] init];
int resultat = [calc sumaDe:10 i:20];
NSLog(@"El resultat de la suma és %d", resultat);

Exemple 2: Mètode de Classe amb Valor de Retorn

@interface Utilitats : NSObject
+ (NSString *)salutacioAmbNom:(NSString *)nom;
@end

@implementation Utilitats
+ (NSString *)salutacioAmbNom:(NSString *)nom {
    return [NSString stringWithFormat:@"Hola, %@!", nom];
}
@end

NSString *missatge = [Utilitats salutacioAmbNom:@"Anna"];
NSLog(@"%@", missatge);

Exercicis Pràctics

Exercici 1

Defineix una classe Persona amb un mètode d'instància que accepti el nom i l'edat de la persona i imprimeixi un missatge de benvinguda.

Solució:

@interface Persona : NSObject
- (void)benvingudaAmbNom:(NSString *)nom iEdat:(int)edat;
@end

@implementation Persona
- (void)benvingudaAmbNom:(NSString *)nom iEdat:(int)edat {
    NSLog(@"Benvingut/da, %@! Tens %d anys.", nom, edat);
}
@end

Persona *persona = [[Persona alloc] init];
[persona benvingudaAmbNom:@"Joan" iEdat:30];

Exercici 2

Defineix una classe Matematiques amb un mètode de classe que accepti dos nombres i retorni el seu producte.

Solució:

@interface Matematiques : NSObject
+ (int)producteDe:(int)a i:(int)b;
@end

@implementation Matematiques
+ (int)producteDe:(int)a i:(int)b {
    return a * b;
}
@end

int resultat = [Matematiques producteDe:4 i:5];
NSLog(@"El producte és %d", resultat);

Resum

En aquesta secció, hem après sobre la sintaxi dels mètodes en Objective-C, incloent-hi com definir mètodes d'instància i de classe, com cridar-los, i com treballar amb paràmetres i valors de retorn. També hem vist exemples pràctics i hem realitzat exercicis per reforçar els conceptes apresos. Ara estem preparats per avançar cap a temes més avançats en Objective-C.

© Copyright 2024. Tots els drets reservats