En este tema, exploraremos los conceptos fundamentales de la Programación Orientada a Objetos (POO) en Objective-C, centrándonos en las clases y los objetos. Aprenderemos cómo definir clases, crear instancias de objetos y utilizar propiedades y métodos.

Conceptos Clave

  1. Clase: Una plantilla o blueprint que define las propiedades y comportamientos (métodos) comunes a todos los objetos de ese tipo.
  2. Objeto: Una instancia de una clase. Cada objeto tiene su propio estado y puede ejecutar los métodos definidos en su clase.
  3. Propiedades: Variables que pertenecen a una clase y describen las características de los objetos.
  4. Métodos: Funciones que pertenecen a una clase y definen el comportamiento de los objetos.

Definición de Clases

En Objective-C, una clase se define utilizando dos archivos: un archivo de interfaz (.h) y un archivo de implementación (.m).

Archivo de Interfaz (.h)

El archivo de interfaz declara la estructura de la clase, incluyendo sus propiedades y métodos.

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

@interface Persona : NSObject

@property (nonatomic, strong) NSString *nombre;
@property (nonatomic, assign) NSInteger edad;

- (void)saludar;

@end

Archivo de Implementación (.m)

El archivo de implementación define el comportamiento de los métodos declarados en la interfaz.

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

@implementation Persona

- (void)saludar {
    NSLog(@"Hola, mi nombre es %@ y tengo %ld años.", self.nombre, (long)self.edad);
}

@end

Creación de Objetos

Para crear un objeto de una clase, utilizamos el método alloc para asignar memoria y init para inicializar el objeto.

// main.m
#import <Foundation/Foundation.h>
#import "Persona.h"

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        Persona *persona = [[Persona alloc] init];
        persona.nombre = @"Juan";
        persona.edad = 30;
        [persona saludar];
    }
    return 0;
}

Explicación del Código

  1. Importación de Archivos: Importamos los archivos necesarios (Foundation y Persona).
  2. Creación de Objeto: Utilizamos [[Persona alloc] init] para crear una nueva instancia de Persona.
  3. Asignación de Propiedades: Asignamos valores a las propiedades nombre y edad.
  4. Llamada a Método: Llamamos al método saludar del objeto persona.

Ejercicio Práctico

Ejercicio 1: Definir una Clase Coche

  1. Crear el archivo de interfaz Coche.h:

    #import <Foundation/Foundation.h>
    
    @interface Coche : NSObject
    
    @property (nonatomic, strong) NSString *marca;
    @property (nonatomic, assign) NSInteger año;
    
    - (void)detalles;
    
    @end
    
  2. Crear el archivo de implementación Coche.m:

    #import "Coche.h"
    
    @implementation Coche
    
    - (void)detalles {
        NSLog(@"Marca: %@, Año: %ld", self.marca, (long)self.año);
    }
    
    @end
    
  3. Crear un objeto Coche y utilizar sus propiedades y métodos:

    // main.m
    #import <Foundation/Foundation.h>
    #import "Coche.h"
    
    int main(int argc, const char * argv[]) {
        @autoreleasepool {
            Coche *miCoche = [[Coche alloc] init];
            miCoche.marca = @"Toyota";
            miCoche.año = 2020;
            [miCoche detalles];
        }
        return 0;
    }
    

Solución del Ejercicio

Al ejecutar el código anterior, deberías ver la siguiente salida en la consola:

Marca: Toyota, Año: 2020

Resumen

En esta sección, hemos aprendido los conceptos básicos de clases y objetos en Objective-C. Hemos visto cómo definir una clase utilizando archivos de interfaz y de implementación, cómo crear instancias de objetos y cómo utilizar propiedades y métodos. Estos conceptos son fundamentales para la Programación Orientada a Objetos y serán la base para temas más avanzados en Objective-C.

En el próximo tema, exploraremos la herencia, un concepto clave en la POO que permite crear nuevas clases basadas en clases existentes.

© Copyright 2024. Todos los derechos reservados