Ejercicio constructor

En la siguiente clase vamos a añadir un constructor que nos obligue a poner el nombre, el dni, pero que el sueldo sea opcional (lo podemos pasar o no) y que si no lo pasamos por defecto valga 1000:

class Empleado {

    public $nombre;
    public $dni;
    public $sueldo;

    function verEmpleado() {
        return $this->nombre . " - " . $this->dni . " - " . $this->sueldo;
    }

    function sueldoNeto() {
        return $this->sueldo * 0.85;
    }

}

Solución:

class Empleado {

    public $nombre;
    public $dni;
    public $sueldo;

    function __construct($nombre, $dni, $sueldo = 1000) {
        if (empty($nombre)){
            throw new Exception("El nombre no puede estar vacío");
        }
        if(!$this->validar_dni($dni)){
            throw new Exception("DNI no válido");
        }
        if ($sueldo<900){
             throw new Exception("El sueldo no puede ser menor que el interprofesional");
        }
        $this->nombre = $nombre;
        $this->dni = $dni;
        $this->sueldo = $sueldo;
    }

    function verEmpleado() {
        return $this->nombre . " - " . $this->dni . " - " . $this->sueldo;
    }

    function sueldoNeto() {
        return $this->sueldo * 0.85;
    }

    function validar_dni($dni) {
        $letra = substr($dni, -1);
        $numeros = substr($dni, 0, -1);
        if (substr("TRWAGMYFPDXBNJZSQVHLCKE", $numeros % 23, 1) == $letra && strlen($letra) == 1 && strlen($numeros) == 8) {
            return true;
        } else {
            return false;
        }
    }

}

Publicado por

Juan Pablo Fuentes

Formador de programación y bases de datos