Laden...

Tarifmanager

Erstellt von kingpin166 vor 18 Jahren Letzter Beitrag vor 18 Jahren 2.397 Views
K
kingpin166 Themenstarter:in
8 Beiträge seit 2005
vor 18 Jahren
Tarifmanager

Moin,

bin dabei einen Tarifmanager für meinen alten Chef zu schreiben. Es geht dabei um Mobilfunkverträge.
Die Sache der Berechnung usw ist easy und auch nicht das Problem, aber da ich gerade erst angefangen habe mich mit objektorientierter Programmierung zu beschäftigen bin ich immer noch am rätseln, wie ich die Welt eines Tarifkalkulators auf Klassen und Objekte runterbreche.

Hier meine Vorstellung.
Ich definiere mir eine Klasse "TARIF" und zu ihr gehören Unterklassen mit den jeweiligen Namen der Tarife. In der Oberklasse "TARIF" stehen die Attribute wie Kosten für Festnetz Hauptzeit, Festnetz Nebenzeit, SMS usw usw usw...
In den Unterklassen stehen jetzt die konkreten Werte für die Attribute.
Dann besitzt die Oberklasse eine Methode "berechne_tarif", welche vererbt wird und von jeder Unterklasse anders behandelt wird (Stichwort: Polymorphism).

Die ganzen Minutenpreise für HZ, NZ usw wollte ich seperat in eine txt oder xml Datei speichern, so dass man die auch mal fix ändern kann und nciht in den Quellcode dafür muss. Schließlich soll mein Chef das bedienen können.

Was ihr jetzt machen sollt ist eigentlich nur folgendes:
Sind meine Gedanken so richtig bis jetzt, also läßt sich auf diese Art und Weise ein Programm schustern ?
Bedenkt bitte ich stehe am Anfang mit OOP und die Grundbegriffe sind mir bisher nur durchs Lesen in Büchern bekannt sowie ein wenig durch "pyhthon" und "object pascal"

mfg
und vielen dank schon mal für Ratschläge

49.485 Beiträge seit 2005
vor 18 Jahren

Hallo kingpin166,

der Ansatz ist schon mal nicht schlecht, allerding ist eine eigene Unterklasse für jeden Tarif ist wohl ein ziemlicher Overkill. Dadurch kann man ja außerdem keinen neuen Tarif hinzufügen, ohne etwas zu (um-)zuprogrammieren. Besser wäre es, wenn BerechneTarif eine allgemeine Berechnungsvorschrift enthält, die für alle Tarife funktioniert. Dazu enthält die Klasse Tarif Variablen für Preis pro Einheit, Taktung (in Sekunden), Einwahlpreis und was es noch alles gibt. Die einzelnen Tarife sind dann Objekte zur Klasse Tarif.

Natürlich kann es dann auch vorkommen, dass ein neues Tarifmodell aufkommt, dass BerechneTarif nicht packt, aber dann kann man BerechneTarif immer noch erweitern.

Natürlich ist auch eine Lösung in der Mitte denkbar, bei der es eine Unterklasse pro Tarifart (Zeitbasiert, Volumenbasiert, Flatrate, ...) gibt, aber die einzelnen Tarife wären dann immer noch Objekte zu der jeweiligen Tarifart.

herbivore

K
kingpin166 Themenstarter:in
8 Beiträge seit 2005
vor 18 Jahren

Moin,

und danke 👍

Das hat mir schon mal nen bissel weiter geholfen.
Also der Tarifrechner solls nicht übertreiben, als letztlich wird vom Benutzer nur angegeben wieviel Minuten er zur Hauptzeit ins Festnetz Telefoniert oder in andere Netze usw... also eine komplette Maske runter.
Habe das Program schon zu 70 % fertig gehabt in Delphi, aber komplett ohne OOP und ein wenig umständlich in der Berechnung.

Das Problem denke ich wird sein eine einheitliche Berechnung zu finden, die für alle Tarife gilt. Denkbar ist natürlich erst einmal davon auszugehen, dass man die Preise für HZ, NZ mal der eingegebenen Minuten nimmt und dann aufaddiert.
Aber die Tarife sind mitlerweile so mit Extras voll, u.a Freiminuten, die nur ins eigene Netz gelte oder eben auch Tarife, wo die ersten 20-30 € nicht berechnet werden, sondern mit der Grundgebühr verrechnet.

Wenn ich das richtig verstanden habe könnte ich also sagen, dass der Vodafone 50,100,200 (falls bekannt 😉 ) in eine Unterklasse werfen, die Volumentarif heißt und den Genion Home und Prepaid in Zeittarif , welche dann ihre Berechnung anders ausführen.

So dann muss ich gleich nochmal ein wenig vorgreifen:
Wie lege ich die Daten für die Tarife am besten in meine txt, bzw xml Datei ab ?
Dachte dabei an das Format:
[Tarifname]
::fn_hz == 0.05
::fn_nz == 0.03
::sms == 0.18
...
... usw.
[Tarifname2]

Und gleich die nächste Frage hinterher. Wäre es nicht sinnvoller in C# xml Dateien zu benutzen oder sind txt einfacher zu händeln mittels String auslesen usw ?

49.485 Beiträge seit 2005
vor 18 Jahren

Hallo kingpin166,

Wenn ich das richtig verstanden

ich denke schon.

Was die Speicherung der Konfiguration angeht, könnte Das neue Konfigurationsmodell im .NET Framework 2.0 für dich interessant sein. Es gibt aber noch eine Reihe weiter Threads zu dem Thema, insbesondere zu XML.

herbivore