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
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.
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
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
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
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
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
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
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
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";
}
}
¿Has encontrado un error o tienes una sugerencia para mejorar esta leccion?
Escribenos¿Te está gustando el curso?
Tenemos cursos premium con proyectos reales y soporte personalizado.
Descubrir cursos premium