• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

Hilfe bei meinem Programmier-Projekt gesucht

rokki

Newbie
Hallo,

ich soll mich für Info nun mit einem Steuerberechner näher beschäftigen. Nach Eingabe verschiedener Merkmale und Szenarien soll mir der Rechner Steuerersparnisse ausrechnen können. Nun suche ich alle möglichen Steuerrechner, die ihr vielleicht schon mal selbst programmiert oder eingesetzt habt. In unserem Kurs muss ich jeder zunächst selbst einer Teilaufgabe widmen. Mein Thema ist Immobilien geworden. Meine Kumpels setzen sich mit Spenden und Hochzeiten auseinander. Nach der Zusammenarbeit soll ein Prognosenrechner für die Steuererklärung fertiggestellt sein.

Am besten erkläre ich euch erst, was genau der Rechner können muss. Die Umsetzung des Finanzrechners dürfte nicht so aufwendig werden. Ich habe z. B. ein festes Kapital und lege das über ein paar Jahre zu einem festen Zinssatz an. Sobald die Laufzeit beendet ist, kriege ich das eingezahlte Geld (Kapital) und die Zinsen gutgeschrieben. Eigentlich sollte ich damit keine Probleme haben. Jetzt wird es aber doch etwas komplizierter. Der Steuerrechner kommt ins Spiel. Zum Beispiel kaufe ich mir ein Objekt. Hier gibt es wieder Unterschiede. Nachdem ich gewählt habe, ob es sich um ein Haus oder eine Wohnung handelt, muss ich angeben, ob es ein Alt- oder Neubau ist. Je nachdem berechnet sich dann ein Steuervorteil, der auch wieder abhängig vom Wohnort ist. Die genaue Summe soll dann mein Rechner herausfinden.

Ein wenig habe ich mich umgesehen und ich hoffe, dass mir folgende helfen könnten:

http://www.krinke.intragenius.de/152-950/Steuerrechner.htm
http://www.pp-gruppe.de/kapitalanleger/steuerrechner.html
http://www.immorechner.de/miro498/calc_steuer.htm?page=calc_steuer
http://www.fellowhome.de/steuern-sparen/steuerrechner-fuer-immobilien/
http://www.steuerimmobilie.de/steuerrechner.html

Mich würde interessieren, welche Programmiersprache ich am besten nehmen soll. Zunächst soll es sich um eine Einzel- danach um eine Gruppenarbeit handeln. Ich dacht da an Pascal oder Ruby bzw. an PHP, wenn es eine Webandwendung werden soll

Welche Programmiersprache sollte ich einsetzen? Wichtig ist, dass ich mein Projekt später mit anderen einfach erweitern kann. Habt ihr vielleicht auch selbst einige Beispiele, die ihr mir zeigen könntet? Den Code brauche ich natürlich nicht unbedingt, falls ichr Angst habt, dass ich abkupfere.

Schöne Grüße
 

abgdf

Guru
Erstmal zur Sprache: Ich würde Python 2.7 nehmen:

- Leicht zu lernen,
- sehr sauberer, gut zu wartender Code,
- wahlweise objektorientiert, auch modular,
- viele Webframeworks, -module usw. (die Google-Engine ist z.B. wohl in Python),
- Möglichkeit grafischer Oberflächen mit Qt, Gtk (wxWidgets), Tk

Nachteil: Weniger schnell als C/C++, da mehr Wert darauf gelegt wird, daß die Programmierung für den Programmierer leichter und schneller ist (flexible, dynamische Datentypen wie Listen und Dictionaries (Hashes)). Wenn man aber nicht gerade 3D-Shooter programmiert, ist die Geschwindigkeit durchaus ausreichend.
Weitere Eigenschaft: Der Code kann nicht gut verschlüsselt/zurückgehalten werden, wenn der Anwender das Programm erhält. Ist also nicht so gut für ClosedSource-Projekte geeignet, bei denen das Programm herausgegeben werden soll.

http://www.python-forum.de

Zum Steuerrechner: Die Auslegung von Gesetzen läßt sich meist nicht gut programmieren. Das geht nur bei relativ "mechanischen" Gesetzen mit wenig Wertungsspielraum. Und auch da läuft es oft darauf hinaus, daß der Benutzer Fragen beantworten muß, die er meist nicht versteht. Hier z.B. ein Gebührenrechner für Rechtsanwalts- und sonstige Prozeßkosten:

http://rvg.pentos.ag

Das Steuerrecht ist ja als besonders kompliziert bekannt und wird auch andauernd geändert. Ich würde empfehlen, sich mit Fragen zur Besteuerung von Immobilien (Gegenstandswert: Mehrere 100.000,- EUR) lieber an einen guten Steuerberater zu wenden.

Gruß
 

spoensche

Moderator
Teammitglied
Der Nachteil von Python ist, dass es keine wirklichen private Klassenvariablen gibt und daher auch keine Kapselung. Pascal und Ruby würde ich nicht nehmen.

PHP oder Python ist zu empfehlen.
 

abgdf

Guru
spoensche schrieb:
Der Nachteil von Python ist, dass es keine wirklichen private Klassenvariablen gibt und daher auch keine Kapselung.
Hmm, wenn man von außen auf die Klassenvariable einfach nicht zugreift, obwohl man es dürfte, hat man dann bzgl. der Kapselung nicht dasselbe, als wenn man gar nicht erst auf die Klassenvariable zugreifen dürfte?

Typischerweise werden in Python solche Sachen, die in der Klasse intern sein sollen, mit "__" gekennzeichnet, also z.B.
Code:
self.__internState__ = False
oder so. Da ist recht klar, daß niemand von außen zugreifen soll, auch wenn er's kann.
Ich denke schon, daß auch so immer noch Kapselung möglich ist.
 

framp

Moderator
Teammitglied
abgdf schrieb:
spoensche schrieb:
Der Nachteil von Python ist, dass es keine wirklichen private Klassenvariablen gibt und daher auch keine Kapselung.
Hmm, wenn man von außen auf die Klassenvariable einfach nicht zugreift, obwohl man es dürfte, hat man dann bzgl. der Kapselung nicht dasselbe, als wenn man gar nicht erst auf die Klassenvariable zugreifen dürfte?

Typischerweise werden in Python solche Sachen, die in der Klasse intern sein sollen, mit "__" gekennzeichnet, also z.B.
Code:
self.__internState__ = False
oder so. Da ist recht klar, daß niemand von außen zugreifen soll, auch wenn er's kann.
Ich denke schon, daß auch so immer noch Kapselung möglich ist.
Es ist sicherlich schöner wenn die Sprache schon Datenkapselung garantiert. Aber es ist in Python Konvention mit __ private Variablen zu kennzeichnen und die sollte man dann also auch einhalten. Ist ein Workaround - funktioniert aber auch :roll:
 

abgdf

Guru
Das kann man sicher so sehen. Ich glaube aber, es ist Absicht: In Python wird ja alles weggelassen, was als überflüssig erkannt wird, wenn man nur ein bißchen anders und vielleicht moderner denkt, z.B. die in anderen Sprachen üblichen Semikolons (Plural laut Wikipedia grammatisch ok) am Zeilenende.
Ich glaube, private Variablen und Methoden gibt es absichtlich nicht, weil man sie weglassen kann, ohne etwas zu verlieren (s.o.). Wie die Semikolons.

Gruß
 

framp

Moderator
Teammitglied
abgdf schrieb:
... Ich glaube, private Variablen und Methoden gibt es absichtlich nicht, weil man sie weglassen kann, ohne etwas zu verlieren (s.o.). ...
Wenn Du in einer Library - als Beispiel ist das eine Herzschrittmacher Library - einer der nur die Frequenz messen will - aus versehen - Deine lokale Variable, die die Schlagfrequenz des Herzens definiert, um den Faktor 10 erhöht - interessiert Dich das als Programmierer eher peripher - aber der, der den Herzschrittmacher am Körper trägt - wird ziemliche Probleme haben ...
 

spoensche

Moderator
Teammitglied
Man kann sich auch mit einem Dekorierer, der den Zugriff regelt, Abhilfe schaffen und die Kapselung selbst Coden. :)
 

abgdf

Guru
Ist doch immer besser, wenn man mal im Lehrbuch nachguckt:

Es gibt in Python private Klassenvariablen (Klassenattribute).
Sie werden durch "__" vor der Bezeichnung gekennzeichnet.
Folgendes Beispiel:
Code:
#!/usr/bin/env python
# coding: iso-8859-1

class MyClass:

    def __init__(self):
        self.public = 5
        self.__veryPrivate = 10

    def showVeryPrivate(self):
        print "Aus der Klasse selbst: " + str(self.__veryPrivate)

obj = MyClass()
print obj.public
obj.showVeryPrivate()

print
print "Von außerhalb (geht nicht):"
print
print obj.__veryPrivate
;)

Gruß
 

spoensche

Moderator
Teammitglied
Du kannst aber per
Code:
obj.__dict__['__variable']
darauf zugreifen, also nicht wirklich private. ;)
 
Schau dir mal Gambas an http://gambas.sourceforge.net/en/main.html, damit programmiere ich seit Jahren alles von Kommandozeile über Web-Geschichten bis hin zu kleinen und großen Projekten für KDE/Gnome unter Linux.

Es ist schnell, läuft stabil und bietet alles was du brauchst. Zumindest die stabile 2er-Version müsste in den repos für alle Distributionen fertig erhältlich sein. Und es gibt eine sehr aktive und vom Macher der Suite liebevoll betreute (englische) Mailingliste.

Und keine Angst: es ist kein VB-Clone, sondern strukturell eher mit Pascal vergleichbar (trotz der Syntax), wobei ich nicht einschätzen kann, ob du nun ganz besondere Dinge brauchst, die es (noch) nicht bietet.

Einfach mal austesten.

Grüße

Rolf
 
Oben