|
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
RWK
Anmeldungsdatum: 04.07.2011 Beiträge: 44
|
Verfasst am: 05.12.2013, 13:02 Titel: Excel VBA Class nach FB OOP umsetzen |
|
|
Tag,
ich hätte da mal wieder ein Problem:
Ich habe bisher in Excel eine Einkommensteuerberechnung
in der habe ich ein Klasse der übergebe ich die notwendigen Informationen zur Einkommensteuerberechnung.
Diese Klasse benutzt dann anhand des übergebenen Jahres seinerseits die entsprechende Klasse zur Berechnung der Einkommensteuer des geforderten Jahres. Tuts gut.
Aber wie überführe ich das ganze in hübsches FreeBasic ?
Speziell geht es mir darum wie ich ein Obekt 'ESt' erzeuge, an das ich dann die entsprechende Funktion zur Berechnung hänge?
Code: | Private Sub Berechne()
Dim x As Long
If mTabelle < 1 Or mTabelle > 2 Then Exit Sub
If mZve < 1 Then Exit Sub
x = mZve
Select Case mJahr
Case Is = 2000
Set est = New classESt2000
Case Is = 2001
Set est = New classESt2001
Case Is = 2002, 2003
Set est = New classESt2002
Case Is = 2004
Set est = New classESt2004
Case Is = 2005, 2006
Set est = New classESt2005
Case Is = 2007, 2008
Set est = New classESt2007
Case Is = 2009
Set est = New classESt2009
Case Is = 2010, 2011, 2012
Set est = New classESt2010
Case Is = 2013
Set est = New classESt2013
Case Is >= 2014
Set est = New classESt2014
Case Else
MsgBox "Es sind nur die Jahre ab 2000 unterstützt...", vbOKOnly, "Achtung, Achtung"
End Select
est.Tabelle = mTabelle
If mWaehrung = EUR And mJahr < 2002 Then x = x * 1.95583
If mWaehrung = DEM And mJahr > 2001 Then x = x / 1.95583
est.zvE = CLng(x)
mSteuer = est.steuer
mSolZ = est.SolZ
|
Vielleicht hat wer auf Anhieb einen Ansatz wie man sowas schön gestaltet !?
Achso, vielleicht noch zur Aufklärung. Nach Übergabe eines Wertes an est.zvE = x berechnet die Class direkt die Steuer. Also kann ich danach die berechneten Werte abholen (mSteuer = est.steuer)
Grüße |
|
Nach oben |
|
|
RockTheSchock
Anmeldungsdatum: 04.04.2007 Beiträge: 138
|
Verfasst am: 05.12.2013, 18:16 Titel: |
|
|
Es gibt grundsätzlich 3 Möglichkeiten das umzusetzen.
- Prozedual
- mit Klassen und Vererbung
- Mit einer Klasse ohne Vererbung
Das was am besten ist, hängt davon ab wie lang und komplex die eigentliche Berechnung ist und letztlich von deiner Art zu programmieren.
Klassen haben den größten Nutzen, wenn du wirklich die komplette Palette an Funktionen nutzt bzw. das Programm damit erweitern willst: also Vererbung / Properties / private und public / overloading / cast
Wenn die eigentliche Berechnung aus ein paar Funktionen besteht, die insgesamt vielleicht 100-200 Zeilen beinhalten kannst du komplett auf Klassen verzichten und mit nur einem Modul arbeiten.
Dann reicht vielleicht schon folgende Struktur
Code: | Type EStType
zve As Double
steuer As Double
solz As Double
jahr As Integer
waehrung As String *3
End Type
Sub Berechne2000(ByRef est As EStType)
'...
End Sub
Sub Berechne2001(ByRef est As EStType)
'...
End Sub
Sub Berechne2002_2003(ByRef est As EStType)
'...
End Sub
Function BerechneESt(zve As Double, jahr As Integer, w As String="EUR") As EStType
Dim est As EStType
est.zve = zve
est.jahr = jahr
est.waehrung = w
Select Case jahr
Case Is = 2000
Berechne2000 est
Case Is = 2001
Berechne2001 est
Case Is = 2002, 2003
Berechne2002_2003 est
Case Is = 2004
Case Is = 2005, 2006
Case Is = 2007, 2008
Case Is = 2009
Case Is = 2010, 2011, 2012
Case Is = 2013
Case Is >= 2014
Case Else
Print "Es sind nur die Jahre ab 2000 unterstützt...", "Achtung, Achtung"
End Select
End Function
|
|
|
Nach oben |
|
|
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
|