Je travaille sur un projet dans un microcontrôleur et j'ai besoin de conserver certains paramètres. Imaginez que c'est un iPod. Je dois enregistrer divers paramètres tels que CurrentSongPlaying
, CurrentVolume
, etc. afin que lorsque je me rallume, je puisse restaurer ces paramètres. Le problème que je rencontre est qu'il est logique de stocker tous mes paramètres non volatiles dans une seule structure que je peux sérialiser/désérialiser de la mémoire, mais je ne peux pas trouver un moyen de rendre cela possible sans que la classe fasse le sérialisation/désérialisation à partir de la mémoire non volatile, y compris chaque classe qui contient un paramètre qui devra être sauvegardé pour les informations de taille/type. Existe-t-il une sorte de modèle de conception qui me permettra de conserver tous ces paramètres en mémoire sans avoir à savoir ce que je sauve?Objets persistants tout en conservant le couplage lâche
Répondre
On dirait que vous avez juste besoin d'un associative array. Un tableau associatif (ou carte) est un conteneur qui vous permet de mapper des valeurs différentes à des clés uniques. Il peut avoir une taille fixe ou dynamique en fonction de l'implémentation. Couplé avec un mécanisme de sérialisation approprié, il vous permet de sauvegarder et restaurer son état sans avoir à connaître son contenu à l'avance.
Cependant, C ne fournit pas cette structure de données prête à l'emploi. Look at this question for a few implementations. L'implémentation la plus courante est la hash table, également appelée carte de hachage.
POO et les classes ne sont pas faciles à mettre en œuvre en C.
Si vous utilisez C est un must, j'écrire le fichier struct. Puis je les lirais et les analyserais lors de l'initialisation au redémarrage.
Vous pouvez considérer cela comme une sérialisation de vos structures.
C'est l'approche que j'ai suggérée dans ma question, le problème est que je dois inclure toutes les autres "classes" (fichiers d'entête) pour tout "objet" (type) que je veux sérialiser afin que la structure puisse les connaître. Comment éviter la "classe" qui fait que l'écriture/la lecture doit inclure chaque fichier contenant un "objet" que je voudrais sauvegarder en mémoire. –
- 1. Couplage lâche des composants
- 2. développement à couplage lâche
- 3. Comment réaliser un couplage lâche avec Ninject
- 4. ASP.NET MVC utilisant le service Web WCF à couplage lâche
- 5. Comment mettre en œuvre couplage lâche avec une architecture SOA
- 6. Définitions courantes dans la conception à couplage lâche
- 7. Services .NET REST, Entity Framework et couplage lâche
- 8. Objets persistants dans ASP.NET
- 9. Couplage lâche des applications et héritage du modèle
- 10. Couplage lâche d'un dialogue modal - est-ce possible?
- 11. Couplage lâche contre cachette de l'information et facilité de changement
- 12. Autoriser l'image tout en conservant le centre
- 13. Parallel.ForEach tout en conservant l'ordre
- 14. Objets personnalisés persistants
- 15. Hibernate: objets persistants
- 16. Objets persistants et __repr__
- 17. Existe-t-il d'autres avantages pour le code à couplage lâche en plus de TDD?
- 18. DAL Datamapper objets gras persistants
- 19. Programmation aux interfaces et utilisant le couplage lâche - studing TDD, tests unitaires et DI
- 20. crash tout en conservant excel gérer
- 21. SVN Exporter tout en conservant les permissions
- 22. Passer une liste tout en conservant l'original
- 23. Couplage lâche de COM en C# ou Comment éviter COMException 0x80040154
- 24. Comment réaliser un couplage lâche entre les pilotes JDBC et le code source?
- 25. Comment le couplage lâche MVVM se compare-t-il à MVP?
- 26. La convention sur la configuration va-t-elle contre le couplage lâche?
- 27. Comment modifier le texte tout en conservant la fontification d'origine?
- 28. Mise à l'échelle du canevas tout en conservant le centre
- 29. Conserve le même texte tout en conservant les caractères spéciaux
- 30. Bash, trouver et supprimer tout en conservant le répertoire
Pouvez-vous montrer un exemple, pseudo-code à tout le moins, de ce que vous essayez d'atteindre? – netcoder
Ne pouvez-vous pas passer en C++? Héritage/polymorphisme rend tout ce genre de choses beaucoup plus facile! –
On dirait que vous avez juste besoin d'un tableau associatif. – netcoder