Leccion 27 de 75 10 min de lectura

Clases y Objetos

La Programacion Orientada a Objetos (POO) es un paradigma que organiza el codigo en clases y objetos. En esta leccion aprenderemos los conceptos fundamentales.

¿Que es una clase?

Una clase es una plantilla que define la estructura de algo. Piensa en ella como un plano de arquitecto: describe como sera una casa, pero no es una casa en si misma.

PHP
<?php
declare(strict_types=1);

class Coche
{
    public string $marca;
    public string $modelo;
    public string $color;
}

Esta clase Coche tiene tres propiedades: marca, modelo y color. Las propiedades son variables que pertenecen a la clase.

Convencion de nombres

Los nombres de clases se escriben en PascalCase: primera letra de cada palabra en mayuscula. Ejemplos: Coche, CuentaBancaria, UsuarioAdmin.

¿Que es un objeto?

Un objeto es una instancia de una clase. Si la clase es el plano, el objeto es la casa construida. Podemos crear multiples objetos a partir de la misma clase.

PHP
<?php
declare(strict_types=1);

class Coche
{
    public string $marca;
    public string $modelo;
    public string $color;
}

// Crear un objeto (instancia) de la clase Coche
$miCoche = new Coche();

// Asignar valores a las propiedades
$miCoche->marca = 'Toyota';
$miCoche->modelo = 'Corolla';
$miCoche->color = 'rojo';

// Acceder a las propiedades
echo $miCoche->marca;  // Toyota
echo $miCoche->modelo; // Corolla

El operador -> (flecha) se usa para acceder a las propiedades de un objeto, tanto para leerlas como para asignarles valores.

Multiples objetos

Cada objeto es independiente. Cambiar uno no afecta a los demas:

PHP
<?php
declare(strict_types=1);

class Coche
{
    public string $marca;
    public string $modelo;
}

$coche1 = new Coche();
$coche1->marca = 'Toyota';

$coche2 = new Coche();
$coche2->marca = 'Honda';

echo $coche1->marca; // Toyota
echo $coche2->marca; // Honda

Propiedades con tipos y valores por defecto

PHP
<?php
declare(strict_types=1);

class Producto
{
    public string $nombre;
    public float $precio;
    public int $stock = 0;          // Valor por defecto
    public bool $disponible = true;
}

$producto = new Producto();
$producto->nombre = 'Laptop';
$producto->precio = 999.99;

echo $producto->stock; // 0 (valor por defecto)

Objetos en arrays

PHP
<?php
declare(strict_types=1);

class Producto
{
    public string $nombre;
    public float $precio;
}

$productos = [];

$p1 = new Producto();
$p1->nombre = 'Laptop';
$p1->precio = 999.99;
$productos[] = $p1;

$p2 = new Producto();
$p2->nombre = 'Mouse';
$p2->precio = 29.99;
$productos[] = $p2;

foreach ($productos as $producto) {
    echo "{$producto->nombre}: \${$producto->precio}\n";
}

Ejercicios

Ejercicio 1: Clase Persona

Crea una clase Persona con propiedades nombre, edad y email. Crea dos personas e imprime sus datos.

Ver solucion
PHP
<?php
declare(strict_types=1);

class Persona
{
    public string $nombre;
    public int $edad;
    public string $email;
}

$persona1 = new Persona();
$persona1->nombre = 'Ana Garcia';
$persona1->edad = 28;
$persona1->email = 'ana@email.com';

$persona2 = new Persona();
$persona2->nombre = 'Carlos Lopez';
$persona2->edad = 35;
$persona2->email = 'carlos@email.com';

echo "{$persona1->nombre}, {$persona1->edad} años - {$persona1->email}\n";
echo "{$persona2->nombre}, {$persona2->edad} años - {$persona2->email}\n";

Ejercicio 2: Clase Libro

Crea una clase Libro con titulo, autor, paginas y leido (bool, por defecto false). Crea tres libros y muestra cuales estan leidos.

Ver solucion
PHP
<?php
declare(strict_types=1);

class Libro
{
    public string $titulo;
    public string $autor;
    public int $paginas;
    public bool $leido = false;
}

$libro1 = new Libro();
$libro1->titulo = 'Clean Code';
$libro1->autor = 'Robert C. Martin';
$libro1->paginas = 464;
$libro1->leido = true;

$libro2 = new Libro();
$libro2->titulo = 'The Pragmatic Programmer';
$libro2->autor = 'David Thomas';
$libro2->paginas = 352;

$libro3 = new Libro();
$libro3->titulo = 'PHP 8 Objects';
$libro3->autor = 'Matt Zandstra';
$libro3->paginas = 576;
$libro3->leido = true;

$libros = [$libro1, $libro2, $libro3];

echo "Libros leidos:\n";
foreach ($libros as $libro) {
    if ($libro->leido) {
        echo "- {$libro->titulo} ({$libro->autor})\n";
    }
}

Ejercicio 3: Lista de tareas

Crea una clase Tarea con descripcion y completada. Crea un array con 5 tareas y muestra solo las pendientes.

Ver solucion
PHP
<?php
declare(strict_types=1);

class Tarea
{
    public string $descripcion;
    public bool $completada = false;
}

$tareas = [];

$t1 = new Tarea();
$t1->descripcion = 'Revisar correos';
$t1->completada = true;
$tareas[] = $t1;

$t2 = new Tarea();
$t2->descripcion = 'Estudiar PHP';
$tareas[] = $t2;

$t3 = new Tarea();
$t3->descripcion = 'Hacer ejercicio';
$t3->completada = true;
$tareas[] = $t3;

$t4 = new Tarea();
$t4->descripcion = 'Leer documentacion';
$tareas[] = $t4;

$t5 = new Tarea();
$t5->descripcion = 'Practicar POO';
$tareas[] = $t5;

echo "Tareas pendientes:\n";
foreach ($tareas as $tarea) {
    if (!$tarea->completada) {
        echo "- {$tarea->descripcion}\n";
    }
}

¿Te está gustando el curso?

Tenemos cursos premium con proyectos reales y soporte personalizado.

Descubrir cursos premium