Buenos días, tengo que hacer el siguiente ejercicio y tengo un par de preguntas:

Para crear los vehículos tendría que hacerlo en la clase principal, ¿cómo puedo saber por la clase de vehículo con el método getVehiclesCreatives () cuántos vehículos he creado?

Cuando se usa el método ir con el vehículo1 digamos "100km" ¿Cómo se puede agregar al kilometraje del vehículo1?

Muchas gracias

Cree una clase Vehicle que tenga los métodos de clase getVehiclesCreated () y getKmTotals (); así como el método de getKmRecorridos (). Pruebe la clase a través de una aplicación que realice, al menos, las siguientes acciones: - Crea 3 vehículos - Ir con el vehículo 1 - Ir con el vehículo 2 - Ir con el vehículo 3 - Ver kilometraje del vehículo1 - Ver kilometraje del vehículo2 - Ver kilometraje del vehículo3 - Ver el kilometraje total del vehículo

<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<?php
include ("./vehiculo.php");

    $vehiculo1 = new vehiculo();
    $vehiculo2 = new vehiculo();
    $vehiculo3 = new vehiculo();

    $vehiculo1 ->andar(100);
    $vehiculo1 ->getKmRecorridos();




?>

Clase vehiculo

<?php

class vehiculo {

public static $vehiculosCreados = 0;
public static $kmTotales;
public $kmRecorridos;

function getVehiculosCreados() {
    return $this->vehiculosCreados;
}

function getKmTotales() {
    return $this->kmTotales;
}

function getKmRecorridos() {
    return $this->kmRecorridos;
}

function setVehiculosCreados($vehiculosCreados) {
    $this->vehiculosCreados = $vehiculosCreados;
}

function setKmTotales($kmTotales) {
    $this->kmTotales = $kmTotales;
}

function setKmRecorridos($kmRecorridos) {
    $this->kmRecorridos = $kmRecorridos;
    static $kmTotales;
    $this->kmTotales = $kmRecorridos + $kmTotales;
}

function andar($kms) {

    $kmRecorridos = $kms + $kmRecorridos;
}

function crearVehiculo($vehiculosCreados) {
    $this->$vehiculosCreados++;
}

}

php
2
Felipe jimenez prieto 16 feb. 2018 a las 16:01

2 respuestas

La mejor respuesta

Para obtener el número de instancias de su clase, debe hacer dos cosas:

  • En el método __construct de su clase, incremente su
    Propiedad vehiculosCreados al hacer referencia a self en lugar de
    this.
  • Cree una función estática que devuelva el vehiculosCreados
    propiedad que también hace referencia a self en lugar de this.

Consulte esta pregunta / respuesta para obtener más información.

class vehiculo {

  public static $vehiculosCreados = 0;
  public static $kmTotales;
  public $kmRecorridos;

  public function __construct() {
    self::$vehiculosCreados++;
  }

  function getVehiculosCreados() {
   return self::$vehiculosCreados;
  }

  ..

}

Y puedes obtener el total de instancias de tu clase con vehiculo::getVehiculosCreados()

En cuanto a sumar a la distancia que ha viajado, parece tener dos variables, una para rastrear la distancia específica del automóvil y otra para rastrear todas las distancias del automóvil. Para incrementar ambos podemos hacerlo en la misma función:

public function andar($kms) {
  $this->kmRecorridos += $kms;
  self::$kmTotales += $this->kmRecorridos;
}

Y puede acceder al total con vehiculo::$kmTotales y la distancia específica del automóvil con $vehiculo->getKmRecorridos().

self::$kmTotales rastreará todas tus instancias de la distancia de vehiculo mientras que kmRecorridos rastreará solo la distancia recorrida del objeto actual. Sin embargo, puedo estar malinterpretando lo que quieres, ¡así que avísame si es así!

0
Wild Beard 16 feb. 2018 a las 16:28

Para obtener la cantidad de clases de las que ha creado una instancia, debe tener una variable compartida entre todas ellas. Puede hacer esto declarando $vehiculosCreados como una variable estática. Luego, simplemente necesita incrementar esta variable en el constructor de su clase.

Para actualizar el número de kilómetros recorridos, debe incrementar el valor de $kmRecorridos en $kms. Invirtió las variables en su función andar, debería ser $kmRecorridos += $kms.

Para tener el número total de kilómetros recorridos, ¡también deberá declarar $kmTotales como variable estática!

0
MRousse 16 feb. 2018 a las 13:12