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.
Curs de Programació en Objective-C
Mòdul 1: Introducció a Objective-C
- Introducció a Objective-C
- Configuració de l'Entorn de Desenvolupament
- Sintaxi i Estructura Bàsiques
- Tipus de Dades i Variables
- Operadors i Expressions
Mòdul 2: Flux de Control
Mòdul 3: Funcions i Mètodes
- Definició i Crida de Funcions
- Paràmetres de Funció i Valors de Retorn
- Sintaxi de Mètodes en Objective-C
- Mètodes de Classe i d'Instància
Mòdul 4: Programació Orientada a Objectes
Mòdul 5: Gestió de Memòria
- Introducció a la Gestió de Memòria
- Comptatge Automàtic de Referències (ARC)
- Retenció i Alliberament Manual
- Millors Pràctiques de Gestió de Memòria
Mòdul 6: Temes Avançats
Mòdul 7: Treballant amb Dades
- Gestió d'Arxius
- Serialització i Deserialització
- Conceptes Bàsics de Xarxes
- Treballant amb JSON i XML
Mòdul 8: Desenvolupament d'Interfícies d'Usuari
- Introducció a UIKit
- Vistes i Controladors de Vista
- Disseny Automàtic
- Gestió de l'Entrada de l'Usuari