Fange ich mal mit der Beantwortung der einfachen Frage an:
Bin wohl einer der Gruftis hier und entwickle schon über 30 Jahre Software. Verdiene mit diesem Hobby mein Unterhalt in dem ich für ein großen IT Konzern Software entwickle. Habe aber auch noch ein kleines Gewerbe eben für meine privaten Projekte....
Nun zum schweren Teil:
Software entwickeln wollen impliziert automatisch, dass man sehr viel Lesen muss. Wenn man mit Büchern eher auf Kriegsfuß steht, dann sehe ich hier Eingriffes Problem. Lesen ist das a und o - natürlich müssen das nicht Bücher sein, aber bei Problemen kommt halt oft Google und Co ins Spiel und die Ergebnisse wollen normalerweise gelesen werden ...
Und dann ist wirklich die Frage, was Du genau willst und was du schon kannst. In dem Code im Thread habe ich wirklich etwas mit OO gesehen daher wundert mich die Aussage, dass dies etwas ist, dass Du bereits beherrscht.
Und was willst Du genau lernen? Paar einfache Java Konstrukte wie im Thread sind das eine,aber wirkliches Prigrammieren ist in meinen Augen etwas anderes.
Aus meiner Sicht gibt es viele Dinge, die sehr wichtig sind. Da Java wohl deine Wahl war bezüglich Entwicklung von Software und Java eine Objektorientierte Sprache ist, ist dies eine sehr wichtige Grundlage. Das Buch, dass ich hier am liebsten empfehle, weil es mir sehr gut gefallen hat, ist Object Thinking von Microsoft Press. (Buch, Englisch, ... ja, nicht Dein Freund, aber da kommt man aus meiner Sicht nicht drumherum, wenn man das richtig machen will ....)
Man kann sich auch durchaus mal etwas nach sogenannten Pattern umsehen. Google wird da bestimmt sehr viel zu finden. Das kann etwas helfen, denn dann muss man nicht selbst überlegen, wie man denn evtl. ein Stück Metall in ein Holz bekommt, sondern man erkennt Muster (Nagel, Schraube, ...) und weiß dann genau, wie man die ins Holz bekommt (Hammer, Schraubendreher, ....)
Da du noch sehr am Beginn zu stehen scheinst: evtl. ist ein Kurs für Dich interessant. Da wirst Du dann durch diverse Themen geleitet und am Ende jedes Kapitels gibt es dann hoffentlich Übungsvorschläge.
Dein Beispielmit dem Taschenrechner kann man noch etwas zerlegen. Woraus setzt sich denn Dein Taschenrechner zusammen? So bekommst du dann evtl. einzelne Klassen. Das mag Dir etwas nach ‚Overkill‘ Aussehen, aber das wird später unerlässlich.
Wenn Du dann einzelne Parts entwickelst, dann kannst Du Dich mit dem Berich Testing beschäftigen. Ohne Unit Tests ist jede Entwicklung gleich für einen Zielort: Papierkorb. Ab einer gewissen Größenordnung (und da geht es noch nicht um große Projekte!) ist eine Entwicklung sonst schlicht unmöglich! Und die Qualität ist mehr wie problematisch!
Um den Taschenrechner zu nehmen: der soll doch etwas mehr machen können, oder? Also sollte er doch z.B. Eingaben richtig verarbeiten können. Z.B. gebe ich ein:
(
51
+
13
)
*
7
+
3
*
4
Wie kann man diese Eingaben intern speichern? Wie dann später auswerten? Punkt vor Strich soll er evtl. können?
Das könnte z.B. zu einer Baumstruktur werden. Jeder Baum besteht aus Nodes. Es gibt verschiedene Nodes:
- Zahl - speichert eine Zahl, hat keine Children
- Gruppierung - hat ein Child, evtl. Status Open/Closed
- Operation - Hier gibt es diverse Operationen. Je nach Operation hat man ein oder mehrere Children.
So ein Baum und jeder Node kann geprüft werden auf Vollständigkeit. Das bedeutet, dass es keine Nodes gibt, welche offene Children haben.
So ein Baum oder Node kann evaluiert werden. Der Zahl Node gibt dann nur die Zahl zurück, die Addition gibt halt die Auswertung vom linken Child + Auswertung vom rechten Child zurück, ....
Hier musst Du dann im Detail überlegen, wann welche Eingabe zulässig ist und wie du den Baum aufbaust. Dabei würde ich das Punkt vor Strich Rechnung erst mal weg lassen. Die Operationen werden in der Reihenfolde der Eingabe ausgewertet.
Wenn Du das hast, dann kannst Du noch überlegen, was das Punkt vor Strich bedeutet. Das Ist dann auch relativ einfach, du musst im Baum nur eine Art Drehung ausführen...
Wenn das noch zu kompliziert ist, dann bau einen Taschenrechner, der statt infix Notierung (Operation zwischen den Operanden wie 3 + 4) nur Präfix Notierung versteht, d.h. die Operation kommt vor den Operanden. Also + 3 4 statt 3 + 4. Ein 3 + ( 4 + 5 ) wäre ein + 3 + 4 5.
Das wäre so eine Sache, die mir so durch den Kopf geht. Das wäre eine sehr komplexe Übung mit OO drin und du kannst die einzelnen Teile gut testen da es kaum Abhängigkeiten nach außen gibt. Und du hast Abstrakte Datentypen... sich die Daten vorzustellen ist eine gute Übung. Kannst das aber auch sehr schön auf einem Zettel Papier durchspielen und so ....
Das einfach einmal kurz von meiner Seite aus.
Viele Grüße und Viel Spaß und Erfolg,
Konrad