Pasar al contenido principal

¡Feliz Día México 🇲🇽! Lo celebramos con 20% de descuento en todo EDteam. La oferta termina en

Alexys Lozada
Jose Luján
Manu Rodríguez
Jose Luján
Luis Avilés
Álvaro Felipe
Jose Luján
Beto Quiroga
Jon MirCha
Álvaro Felipe
Alexys Lozada, Álvaro Felipe, Jon MirCha
Beto Quiroga
Alexys Lozada
Alexys Lozada
Jose Luján
Álvaro Felipe
Álvaro Felipe
Jon MirCha
Jon MirCha
Alexys Lozada, Jose Luján
Alexys Lozada, Jose Luján
Alexys Lozada, Jose Luján
Camilo Adobe

Tipos de clases en PHP

Tipos de clases en PHP

Hola gente de EDteam...

...soy su amigo y docente digital Jonathan MirCha, y en esta ocasión quiero hablarles de los tipos de clases que existen en PHP.

  1. Instanciables: Pueden ser instanciadas (se pueden crear objetos) y/o se pueden heredar.
  2. Heredadas: Guardan relación con métodos y atributos de otra.
  3. Finales: Son instanciables pero no se pueden heredar.
  4. Abstractas: Sirven de modelo para otras, NO se pueden instanciar y DEBEN heredarse.

Cuando una clase abstracta, tiene métodos abstractos, estos sólo se deben definir, no deben tener cuerpo. El algoritmo del método abstracto debe ser implementado en las clases que hereden la clase abstracta. Las clases que heredan una abstracta, deben de implementar todos los métodos abstractos de la clase padre. NO existen atributos abstractos.

Ejemplos:

Crea un archivo en tu localhost que se llame evolucion_telefono.php, copia y pega este código:

<?php
//Clase Instanciable
class Telefono {
  public $marca;
  public $modelo;
  protected $medio = 'alámbrico';
  protected $transmision = 'análoga';

  function __construct($marca, $modelo) {
    $this->marca = $marca;
    $this->modelo = $modelo;
  }

  public function llamar() {
    echo '<p>Riiing Riiing!!!</p>';
  }

  public function ver_info() {
    echo "
      <ul>
        <li>$this->marca</li>
        <li>$this->modelo</li>
        <li>$this->medio</li>
        <li>$this->transmision</li>
      </ul>
    ";
  }
}

//Clase Heredada
class Celular extends Telefono {
  protected $medio = 'inalámbrico';
  protected $transmision = 'digital';

  function __construct($marca, $modelo) {
    parent::__construct($marca, $modelo);
  }

  public function vibrar() {
    echo '<p>BRRRR BRRRR!!!</p>';
  }
}

//Clase Final
final class SmartPhone extends Celular {
  public $datos = 'Tengo WIFI';

  function __construct($marca, $modelo) {
    parent::__construct($marca, $modelo);
  }

  public function conectar() {
    echo 'Acceso a Internet!!!';
  }

  public function ver_info() {
    echo "
      <ul>
        <li>$this->marca</li>
        <li>$this->modelo</li>
        <li>$this->medio</li>
        <li>$this->transmision</li>
        <li>$this->datos</li>
      </ul>
    ";
  }
}

/* ********************************************* */

echo '<h1>Herencia y Polimorfismo en PHP</h1>';

echo '<h2>Evolución del Teléfono</h2>';

echo '<h3>Teléfono:</h3>';
$tel_casa = new Telefono('Panasonic', 'KX-TS550');
$tel_casa->llamar();
$tel_casa->ver_info();

echo '<h3>Celular:</h3>';
$mi_cel = new Celular('Nokia', '5120');
$mi_cel->llamar();
$mi_cel->vibrar();
$mi_cel->ver_info();

echo '<h3>SmartPhone:</h3>';
$mi_sp = new SmartPhone('Motorola', 'G4');
$mi_sp->llamar();
$mi_sp->vibrar();
$mi_sp->conectar();
$mi_sp->ver_info();

Crea un archivo en tu localhost que se llame poligonos.php, copia y pega este código:

<?php
abstract class Poligono {
  protected static $lados;
  abstract protected function perimetro();
  abstract protected function area();
}

class Triangulo extends Poligono {
  private $lado_a;
  private $lado_b;
  private $lado_c;
  private $altura;
  public static $lados = 3;

  public function __construct($a, $b, $c, $h) {
    $this->lado_a = $a;
    $this->lado_b = $b;
    $this->lado_c = $c;
    $this->altura = $h;
  }

  public function perimetro() {
    return $this->lado_a + $this->lado_b + $this->lado_c;
  }

  public function area() {
    return ($this->lado_b * $this->altura) / 2;
  }
}

class Cuadrado extends Poligono {
  private $lado;
  public static $lados = 4;

  public function __construct($l) {
    $this->lado = $l;
  }

  public function perimetro() {
    return $this->lado * self::$lados;
  }

  public function area() {
    return pow($this->lado, 2);
  }
}

/* ********************************************* */

echo '<h1>Abstracción en PHP</h1>';

echo '
  <h2>Polígonos</h2>
  <p>Figura geométrica plana que está limitada por tres o más rectas y tiene tres o más ángulos y vértices.</p>
  <h3>Perímetro</h3>
  <p>El perímetro de un polígono es igual a la suma de las longitudes de sus lados.</p>
  <h3>Área</h3>
  <p>El área de un polígono es la medida de la región o superficie encerrada por un polígono.</p>
  <hr>
';

echo '<h2>Triángulo</h2>';
$triangulo = new Triangulo(5, 2, 6, 4);
echo '<p>Un triángulo tiene <b>' . Triangulo::$lados. '</b> lados</p>';
echo '<p>El perímetro de mi triángulo es: ' . $triangulo->perimetro() . ' el área es: ' . $triangulo->area() . '</p>';

echo '<h2>Cuadrado</h2>';
$cuadrado = new Cuadrado(5);
echo '<p>Un cuadrado tiene <b>' . Cuadrado::$lados. '</b> lados</p>';
echo '<p>El perímetro de mi cuadrado es: ' . $cuadrado->perimetro() . ' el área es: ' . $cuadrado->area() . '</p>';

Si tienes dudas en los códigos anteriores, te dejo este videotutorial donde te explico el tema a detalle.

Recuerda que si quieres saber más de PHP, en EDteam tenemos los siguientes cursos para ti:

Se despide su amigo y docente digital Jonathan MirCha, sean felices, hasta siempre, nos leemos la próxima semana... 

    ...bye ;)

Suscríbete al blog de EDteam

Ingresa tu correo electrónico para recibir nuestro boletín semanal