2010-09-08 11 views
2

je suis en train d'écrire une simulation sur la fabrication de véhicules, je me demande comment je peux créer des objets en fonction du temps ..créer un objet en fonction du temps en C++

i ont une classe de base du véhicule, et les enfants Moto, voiture, et Un camion. 1 La moto sera fabriquée toutes les heures, 1 voiture sera fabriquée toutes les 3 heures, et 1 camion sera fabriqué toutes les 8 heures.

comment puis-je créer ces objets en fonction de l'heure indiquée?

grâce

+0

Vous parlez de temps de simulation? Si oui, comment conduisez-vous la simulation? Utilisez-vous des incréments de temps fixes, des temps-temps écoulés 'N', ...? –

+0

J'utilise le temps réel, mais plus tard, je veux accélérer le temps, disons 1 mois dans le programme = 10 minutes en temps réel –

+0

Et toutes les productions commencent et se terminent à un multiple fixe d'une unité de temps de base (par exemple ' C * 1h')? Ou à des points arbitraires? –

Répondre

1

Une possibilité est d'avoir un thread dédié à chaque tâche, qui se trouve juste dans une boucle de faire mousser, rincer, créer, sommeil, répétition.

1

Vous pouvez créer des temporisations et attendre ces événements de temporisation. Lorsque le temporisateur expire, vous pouvez créer l'objet correspondant. Vous pouvez surveiller cela dans un fil.

Quand allez-vous détruire ces objets?

+0

le véhicule fabriqué ira à certains processus, ils seront détruits –

0

Si vous voulez avoir un contrôle complet sur la synchronisation (par exemple, vous pouvez incrémenter l'heure indépendamment de la minuterie du système), alors vous aurez besoin de l'implémenter en tant que classe. Puis fournissez une fonction Singleton ou statique pour retourner l'heure actuelle. La classe de temps doit être copiable pour que les objets puissent se souvenir de l'heure de début. En outre, fournir une fonction pour avancer le temps d'une certaine quantité, et pour faire des comparaisons de temps.

l'intérieur de chaque objet fabricable (ou mieux, les usines qui les fabriquent), ajouter deux fonctions:

  1. StartManufacture. Cette fonction devrait se souvenir de l'heure de début.
  2. CheckManufactureComplete. Cette fonction récupère l'heure actuelle et vérifie si le temps d'attente requis s'est écoulé depuis le début de la fabrication.