classDiagram %% Base SUMO vehicle class MSVehicle { +getCarFollowModel() +getLaneChangeModel() } %% Plexe extension class PlexeVehicle { -MSCFModel* active_cfmodel -MSLaneChangeModel* active_lcmodel +setActiveCFModel(name) +setActiveLCModel(name) +switchModelsAtRuntime() } MSVehicle <|-- PlexeVehicle %% Car-following models class MSCFModel class MSCFModel_EIDM class MSCFModel_Krauss class MSCFModel_ACC class MSCFModel_PLEXE_CC MSCFModel <|-- MSCFModel_EIDM MSCFModel <|-- MSCFModel_Krauss MSCFModel <|-- MSCFModel_ACC MSCFModel <|-- MSCFModel_PLEXE_CC %% Lane change models class MSLaneChangeModel class LC2013 { } class PlexeLCModel { +collectiveLaneChange() +leaderChecksFollowers() } MSLaneChangeModel <|-- LC2013 MSLaneChangeModel <|-- PlexeLCModel %% Associations PlexeVehicle --> MSCFModel : active_cfmodel PlexeVehicle --> MSLaneChangeModel : active_lcmodel