Hallo,
Ik heb in c# een paar klassen gemaakt waarmee ik bepaalde bestandsformaten kan uitlezen en waarmee ik die kan aanmaken. Het gaat bijvoorbeeld om de bestandsformaten voor TomTom (.ov2) en ClieOp03 bestanden.
Nou heb ik dat zo geprogrammeerd dat de structuur van de klassen overeenkomt met de logische indeling van die bestanden. De entiteiten weerspiegelen dus goed de structuur. Maar nu is de vraag hoe je dat dan 'wegschrijft'.
Wat ik nu heb gedaan in het geval van ClieOp is een functie GenerateStream() die je kunt aanroepen op de Transactie (de hoogste entiteit in zo'n bestand). Deze heeft als output een Stream object, die je dan in een andere klasse kunt gebruiken om een bestand weg te schrijven, bijvoorbeeld.
Dat is dus één methode. Een andere methode is dat ik niet een Stream als output gebruik die ergens anders in te implementeren is, maar direct een bestand wegschrijf. Weer een andere optie is om een aparte klasse te maken die als dedicated functie heeft om zo'n Transactie-klasse te genereren op basis van een file als input (en andersom).
Wat is nou gebruikelijk? Hoe kun je hier het beste mee omgaan?
Dit is één voorbeeld, maar het is natuurlijk breed toepasbaar. Ik heb verschillende coördinaatsysteem-klassen gebouwd en hierbij heb ik een algemene klasse CoordinateConverter gebouwd die kan rekenen tussen verschillende formaten. Daar leek me die aanpak handiger.
Ik heb in c# een paar klassen gemaakt waarmee ik bepaalde bestandsformaten kan uitlezen en waarmee ik die kan aanmaken. Het gaat bijvoorbeeld om de bestandsformaten voor TomTom (.ov2) en ClieOp03 bestanden.
Nou heb ik dat zo geprogrammeerd dat de structuur van de klassen overeenkomt met de logische indeling van die bestanden. De entiteiten weerspiegelen dus goed de structuur. Maar nu is de vraag hoe je dat dan 'wegschrijft'.
Wat ik nu heb gedaan in het geval van ClieOp is een functie GenerateStream() die je kunt aanroepen op de Transactie (de hoogste entiteit in zo'n bestand). Deze heeft als output een Stream object, die je dan in een andere klasse kunt gebruiken om een bestand weg te schrijven, bijvoorbeeld.
Dat is dus één methode. Een andere methode is dat ik niet een Stream als output gebruik die ergens anders in te implementeren is, maar direct een bestand wegschrijf. Weer een andere optie is om een aparte klasse te maken die als dedicated functie heeft om zo'n Transactie-klasse te genereren op basis van een file als input (en andersom).
Wat is nou gebruikelijk? Hoe kun je hier het beste mee omgaan?
Dit is één voorbeeld, maar het is natuurlijk breed toepasbaar. Ik heb verschillende coördinaatsysteem-klassen gebouwd en hierbij heb ik een algemene klasse CoordinateConverter gebouwd die kan rekenen tussen verschillende formaten. Daar leek me die aanpak handiger.