En aquest tema, explorarem els conceptes fonamentals de la programació orientada a objectes (POO) en Objective-C, centrant-nos en les classes i els objectes. Aprendrem com definir classes, crear instàncies d'aquestes classes (objectes) i utilitzar-les en el nostre codi.

Objectius d'Aprenentatge

  • Entendre què són les classes i els objectes.
  • Aprendre a definir classes en Objective-C.
  • Crear i utilitzar objectes.
  • Comprendre la diferència entre variables d'instància i variables de classe.

Què és una Classe?

Una classe és una plantilla o un model que defineix les propietats (variables) i els comportaments (mètodes) que els objectes d'aquest tipus poden tenir. En altres paraules, una classe és una definició de com ha de ser un objecte.

Definició d'una Classe

En Objective-C, una classe es defineix en dos fitxers: un fitxer d'interfície (.h) i un fitxer d'implementació (.m).

Fitxer d'Interfície (.h)

El fitxer d'interfície conté la declaració de la classe, incloent les seves propietats i mètodes.

// Persona.h
#import <Foundation/Foundation.h>

@interface Persona : NSObject

@property (nonatomic, strong) NSString *nom;
@property (nonatomic, assign) NSInteger edat;

- (void)saludar;

@end

Fitxer d'Implementació (.m)

El fitxer d'implementació conté la definició dels mètodes declarats en el fitxer d'interfície.

// Persona.m
#import "Persona.h"

@implementation Persona

- (void)saludar {
    NSLog(@"Hola, el meu nom és %@ i tinc %ld anys.", self.nom, (long)self.edat);
}

@end

Què és un Objecte?

Un objecte és una instància d'una classe. Quan creem un objecte, estem creant una instància específica d'una classe amb les seves pròpies propietats i comportaments.

Creació d'un Objecte

Per crear un objecte en Objective-C, utilitzem el mètode alloc per al·locar memòria per a l'objecte i el mètode init per inicialitzar-lo.

// Creació d'un objecte de la classe Persona
Persona *persona = [[Persona alloc] init];
persona.nom = @"Joan";
persona.edat = 30;
[persona saludar];

Variables d'Instància i Variables de Classe

Variables d'Instància

Les variables d'instància són propietats que pertanyen a una instància específica d'una classe. Cada objecte té la seva pròpia còpia de les variables d'instància.

Variables de Classe

Les variables de classe (també conegudes com a variables estàtiques) són compartides per totes les instàncies d'una classe. Es declaren amb el modificador static.

// Exemple de variable de classe
static NSInteger nombreDePersones = 0;

@implementation Persona

- (instancetype)init {
    self = [super init];
    if (self) {
        nombreDePersones++;
    }
    return self;
}

+ (NSInteger)nombreDePersones {
    return nombreDePersones;
}

@end

Exercicis Pràctics

Exercici 1: Definir una Classe

Defineix una classe anomenada Cotxe amb les següents propietats i mètodes:

  • Propietats: marca (NSString), model (NSString), any (NSInteger)
  • Mètode: descripcio que imprimeixi una descripció del cotxe.

Solució

Fitxer d'Interfície (Cotxe.h):

#import <Foundation/Foundation.h>

@interface Cotxe : NSObject

@property (nonatomic, strong) NSString *marca;
@property (nonatomic, strong) NSString *model;
@property (nonatomic, assign) NSInteger any;

- (void)descripcio;

@end

Fitxer d'Implementació (Cotxe.m):

#import "Cotxe.h"

@implementation Cotxe

- (void)descripcio {
    NSLog(@"Cotxe: %@ %@, Any: %ld", self.marca, self.model, (long)self.any);
}

@end

Exercici 2: Crear i Utilitzar un Objecte

Crea un objecte de la classe Cotxe i utilitza el mètode descripcio per imprimir la descripció del cotxe.

Solució

// Creació d'un objecte de la classe Cotxe
Cotxe *cotxe = [[Cotxe alloc] init];
cotxe.marca = @"Toyota";
cotxe.model = @"Corolla";
cotxe.any = 2020;
[cotxe descripcio];

Resum

En aquest tema, hem après els conceptes bàsics de les classes i els objectes en Objective-C. Hem vist com definir classes, crear objectes i utilitzar variables d'instància i de classe. Aquests conceptes són fonamentals per a la programació orientada a objectes i seran la base per a temes més avançats en el futur.

En el següent tema, explorarem la Herència, un altre concepte clau de la programació orientada a objectes.

© Copyright 2024. Tots els drets reservats