Pasar al contenido principal
Alexys Lozada
José Luján
Manuel Rodriguez
José Luján
Luis Avilés
Álvaro Felipe
José Luján
Beto Quiroga
Jonathan MirCha
Jonathan MirCha
Álvaro Felipe
Alexys Lozada, Álvaro Felipe, Jonathan MirCha
Beto Quiroga
Alexys Lozada
Alexys Lozada
José Luján
Álvaro Felipe
Álvaro Felipe
Jonathan MirCha
Jonathan MirCha
Alexys Lozada, José Luján
Alexys Lozada, José Luján
Alexys Lozada, José Luján
Camilo Adobe
Álvaro Felipe
José Luján
Jonathan MirCha
Álvaro Felipe
Álvaro Felipe
Beto Quiroga, Alexys Lozada
Álvaro Felipe
Juan Villalvazo
Luis Avilés
Jonathan MirCha
Jonathan MirCha
Jonathan MirCha

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