Cómo se usa
Esta página cubre todo lo de la lección 5: clases y objetos, propiedades y métodos, encapsulamiento, constructores, herencia, interfaces y traits.
Hay 9 preguntas y 3 ejercicios, con corrección inmediata.
Preguntas
Todavía sin contestar · 9 preguntas
Clases y objetos
1. ¿Qué es una clase y qué es un objeto?
Elegí una opción para verla
La clase define qué datos y operaciones tiene algo; el objeto es una instancia concreta creada con new.
2. ¿Qué hace new Producto(...)?
Elegí una opción para verla
Crea un objeto y ejecuta el constructor con los datos que se le pasan.
3. ¿A qué se refiere $this dentro de un método?
Elegí una opción para verla
Al objeto actual: el que se está usando cuando se llama al método.
Encapsulamiento y constructor
4. ¿Qué logra declarar una propiedad como private?
Elegí una opción para verla
El encapsulamiento: el objeto cuida sus datos y solo los modifica a través de sus métodos, que pueden validar antes de guardar.
5. ¿Cuándo se ejecuta el constructor?
Elegí una opción para verla
Al crear el objeto. Sirve para exigir los datos obligatorios desde el principio.
6. ¿Qué pasa si el constructor recibe un precio negativo y en él se valida?
Elegí una opción para verla
Se puede lanzar una excepción y evitar que exista un objeto inválido. Es mejor que corregir el dato tres pantallas después.
Herencia e interfaces
7. ¿Cuándo conviene la herencia?
Elegí una opción para verla
Cuando existe una relación «es un». Si no, conviene composición o una interfaz.
8. ¿Qué es una interfaz?
Elegí una opción para verla
Un contrato: dice qué métodos tiene que tener una clase, sin decir cómo. Varias clases distintas pueden implementar la misma interfaz.
9. ¿Para qué sirve un trait?
Elegí una opción para verla
Para reutilizar código entre clases que no comparten una jerarquía. Es una pieza de código que se «pega» a la clase.
Ejercicios de práctica
Ejercicio 1
Escribí una clase Producto con propiedades private y un constructor que las reciba. Creá un objeto y mostrá su nombre.
class Producto
{
public function __construct(
private string $nombre,
private float $precio,
private int $stock,
) {}
public function nombre(): string
{
return $this->nombre;
}
}
$yerba = new Producto("Yerba mate 1 kg", 1850.50, 24);
echo $yerba->nombre();Ejercicio 2
Agregá a la clase un método valorEnStock() que devuelva precio por stock.
public function valorEnStock(): float
{
return $this->precio * $this->stock;
}Ejercicio 3
Escribí una interfaz Imprimible con el método resumen(): string y hacé que Producto la implemente.
interface Imprimible
{
public function resumen(): string;
}
class Producto implements Imprimible
{
// ...
public function resumen(): string
{
return "{$this->nombre}: \${$this->precio}";
}
}Cómo saber si está bien
Si acertaste 7 o más, la lección está firme. La diferencia entre herencia, interfaz y trait es lo que más se confunde: volvé a esa sección si dudaste.
Lo que hay que poder explicar
- Clase = molde; objeto = instancia.
$thises el objeto actual.private+ métodos = encapsulamiento.- El constructor exige los datos obligatorios.
- Herencia «es un», interfaz contrato, trait código compartido.
Licencia. El material de esta página es elaboración propia de Prof Mauro Bobyk —a partir de las fuentes que detalla el pie del sitio— y se publica bajo una licencia Creative Commons BY-NC-SA 4.0.