это сценарий связи между классом водителя и классом автомобиля.
водитель может управлять автомобилем.
- водитель может ускорять автомобиль.
- водитель может проверить, может ли он управлять им.
- водитель может проверить, доступно ли его водительское удостоверение
диаграмма классов
я хочу реализовать этот сценарий на диаграмме классов
пример кода ниже
, пожалуйста, обратите внимание, что это не фактический код. Это фиктивный код
код для классаВодитель
Class driver {
private $car;
private $license
private $name
public __construct(Car $car,$license){
$this->car = $car;
$this->$license = $license;
}
//driver can accelerate car
public accelerating(){
$this->car->accelerate();
}
checkDriverlicenceIsavailable(){
$av = ($this->license)?true:false;
return $av;
}
canDriveVehicle(){
$cd = ($this->car->$vehicleType= 'luxuary car')?true:false
return $cd;
}
}
код для класса автомобиля
Class Car {
private $xlocation;
private $ylocation;
private $xspeed;
private $yspeed;
private $vehicleType;
public __construct($xlocation,$ylocation,$xspeed = 0,$yspeed = 0,$vehicleType){
$this->xlocation = $xlocation;
$this->ylocation = $ylocation;
$this->xspeed = $xspeed;
$this->yspeed = $yspeed;
$this->vehicleType = $vehicleType;
}
public drive(){
$this->xlocation + ($this->xspeed*(1));
$this->ylocation + ($this->yspeed*(1));
}
public park(){
$this->speed = 0;
}
public accelerate(){
$this->xspeed++;
$this->yspeed++;
}
}
, чтобы показать, что водитель может разогнать автомобиль,
в классе водителя есть accelerating()
метод, и он вызовет метод ускорения класса автомобиля.
в классе автомобиля accelerate()
метод работает только на xspeed
, yspeed
Является ли этот подход правильным?
этот подход не нарушает инкапсуляцию?
, если нет необходимости в таком методе в классе драйвера, чтобы показать, что драйвер может принятьАрендовать автомобиль тогда, как реализовать водитель может ускорить автомобиль в коде?