Parking, conception OOP - Design personnalisé [fermé
-
13-11-2019 - |
Question
Je travaille sur l'exemple du parking et je fais quelques hypothèses pendant que je conçois.
J'ai quelques questions dans l'attribution d'attributs aux éléments / objets.
1) Si le parking n'est pas affecté par un système, c'est-à-dire que l'utilisateur juste dans le lot, trouve un endroit approprié (voiture / vélo / camion / handicapé) et parcourt sa voiture.
Je pense que je n'ai pas besoin d'un objet de stationnement, mais à la place, je peux garder un compte de no_of_free_places pour chacun des catégories_of_parking_space.
Étant donné que l'espace de stationnement est grand, nous maintenons simplement trois variables.
- no_of_free_slots_car
- no_of_free_slots_bike
- no_free_slots_truck
- no_free_slots_handicapp
Lorsqu'un véhicule arrive, nous diminuons simplement l'une des valeurs ci-dessus (ce qui signifie que les places x disponibles, l'utilisateur en choisit un et les parcs), et lorsque les véhicules sortent, nous augmentons la valeur correspondante. (En bref, le parking n'est attribué par personne, le véhicule va simplement dans l'un des endroits et parcs éligibles)
2) En supposant que nous avons un seul parking mondial.
-> Le start_time / end_time devrait-il être un attribut de véhicule?
Ou
-> véhicule_id, start_time, end_time faites partie du parking.
3) En supposant la nécessité d'un objet de stationnement, si 4_Wheeler, 2_Wheeler, handicapé, être un type d'énumération, ou une classe distincte.
Si son énumération, nous pouvons utiliser FindEmptySlot (ParkingSpace_Type);
S'ils sont complètement des classes séparées et que le parking a une méthode FindEmptySlot ();
Comment pouvons-nous obtenir la fente appropriée?
Le parking sera chargé de fixer le démarrage du véhicule, les heures de fin, n'est-ce pas?
Si le a plusieurs montants, 1hr - 20 $, 2h - 30 $, 3h - 40 $, 5h - 50 $
Est-ce que cela a une partie de la classe de parking ou, incluez-les dans une classe distincte "parking"
La solution
D'accord,
- Je n'ai pas vraiment compris la question, mais j'utiliserais en effet un tableau
ParkingSpace
objets pour décrire les espaces du parc. - Étant donné que le temps est par véhicule, le temps doit être fixé sur le véhicule.
- J'utiliserais une classe différente pour chacun, et chacun devrait prolonger la classe abstraite
Vehicle
. Il permet une flexibilité avec des attributs communs et uniques de chaque type de véhicule (numéro de série pour tous les véhicules, mais seuls 4_Wheelers ont des portes par exemple). Quant à la façon de trouver des espaces de stationnement vides, chacunParkingSpace
L'objet aurait un$takenBy
La propriété, qui détiendrait une instance de l'objet du véhicule l'occupe. Il devrait par défaut ànull
, alors, vous itérez simplement à travers le tableau d'espaces de votreParkingLot
classe, et trouvez celui avec$space->takenBy == null
.