Задать вопрос

Взаимодействие объектов в PHP

Для изучения ООП PHP придумал такую задачку:

Есть класс "Город". Со свойством "Длина".
Есть класс "Авто". Со свойством "Скорость".

Создается объект "Город", который должен вывести сообщение о времени потраченном на прохождение объектом "Авто" всей длины "Города". При условии, что существует этот объект "Авто".

Не знаю как их заставить взаимодействовать:

<? 
class Gorod 
{ 
    private $dlina; 
    function __construct($dlina) 
    { 
        $this->dlina = $dlina; 
    }  
    public function getDlina() 
    { 
        return $this->dlina; 
    } 
} 

class Avto
{
private $speed; 
    function __construct($speed) 
    { 
	$this->speed = $speed; 
    } 	
	public function getSpeed() 
    { 
        return $this->speed; 
    } 
}

$a = new Avto("20");
$g = new Gorod("100"); 

//Нужно как-то изменить класс Gorod, что бы он выдал "5" исходя из-того, что существует объект Avto со скоростью 20 и объект город имеет длину 100.
?>
  • Вопрос задан
  • 4157 просмотров
Подписаться 4 Оценить 2 комментария
Пригласить эксперта
Ответы на вопрос 5
Anonym
@Anonym
Программирую немного )
<? 
class City {
    private $length;
    function __construct($length) {
        $this->length = $length;
    }
    public function getLength() {
        return $this->length;
    }
}

class Auto {
    private $speed;
    function __construct($speed) {
        $this->speed = $speed;
    }
    public function getSpeed() {
        return $this->speed;
    }
    public function howLongToGo($length) {
        return $length / $this->speed;
    }
    public function howLongToGoThrowCity(City $city) {
        return $city->getLength() / $this->speed;
    }
}

$a = new Auto(20);
$c = new City(100);

print $a->howLongToGo($c->getLength());
// Или так
print $a->howLongToGoThrowCity($c);
Ответ написан
Комментировать
@zhogar
Попробуйте добавить еще один класс, что-то типа:
class Result
{
private $result; 
    function __construct(...) 
    { 
    $this->result = ...; 
    } 	
    public function Calc() 
    { 
        ...
    } 
}
Ответ написан
@zhogar
Для взаимодействия объектов между собой лучше использовать указатели на эти объекты.
Ответ написан
iproger
@iproger
Безответственный гений
У вас ошибка: "Город", который должен вывести сообщение о времени потраченном на прохождение объектом "Авто".
Есть Город, Авто наследуется от Город. В Авто есть метод Calc, который использует $this->dlina (юзайте length..) и $this->speed.

P.S. Город не знает про авто, а авто зависит от города, имхо :)
Ответ написан
Комментировать
Sild
@Sild
offtop: Пожалуйста, перестаньте смешивать английский и транслит. Не знаете как пишется слово - спросите у переводчиков.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы