OOP Umstieg auf Java

Happy

Mitglied
Hallo Community,

seit einigen Jahren programmiere ich mit Javascript, PHP und hin und wieder in .NET.
Nun möchte ich Java erlernen. Da Java eine stark objektorientierte Sprache ist, habe ich natürlich meine Schwierigkeiten, da ich vorher noch nie objektorientiert programmiert habe.
Mein Problem liegt darin, dass ich mir noch nicht diese objektorientierte Denkweise eingeprägt habe und bisher nur strukturiert programmiert habe.
Ich weiß nicht, wie ich ein Programm schreiben könnte um es "korrekt" aufzuteilen.

Ich habe mir schon so einiges durchgelesen, mir geht es nicht um Grundlagen wie "Was ist eine Klasse, eine Methode, oder Vererbung?", sondern eher, wie ich ein Programm aufteile.

Hättet ihr einige Denkanstöße, die mir helfen können?
Habt ihr Programmideen für mich, die Wert auf Objektorientierung legen und könntet ihr mir, wenn ich meinen Quelltext dann poste, mir zeigen, wo ich etwas besser machen kann?

Ich hoffe, ich habe mich einigermaßen verständlich ausgedrückt, und dass ihr mir helfen könnt.

Mit freundlichen Grüßen
Happy
 

Empire Phoenix

Top Contributor
MVC bzw ähnliches ist ne gute frundtrennung, an und für sich sit das einfachste einfach nen programm zu schreiben und dann mal hier zu posten und zu fragen wo man das verbessern könnte (Darf natürlich nicht zu komplex sein). Wenn du eine Aufteilung machst versuche einfach folgendes immer zu überlegen.
Warum Mache ich hierraus eine componente?
Was ist die funktion dieser Componente?
Was ist das minimale was diese Componente wissen muss?

Zudem wenn du es noch nicht kennst guck die das Observer pattern an, da du dies in oop oft brauchen wirst. (Es macht auch ohne oop sinn btw)
 

Marco13

Top Contributor
Geek And Poke: Teaching OO :D

Ich glaube, recht naheliegend (schon fast ZU nahe liegend) ist es, irgendwas zu schreiben, was irgendwelche Objekte aus der realen Welt modelliert. MVC... Naja... siehe obiger Link: Was sollte man sich in der realen Welt unter einem "Controller" vorstellen? (Ein Buchhalter, der befördert wurde, ja...). Also, irgendwelche Pseudo-Spiele (nicht graphisch, einfach nur das Modell) wo es eben Spieler und Gegner und Waffen und Power-Ups gibt, oder die GANZ üblen Klassiker wie der Zoo (ja, "Hund" ist ein "Tier" und "Tier" ist ein "Lebewesen" ... ;) ) oder die Lagerverwaltung...
 

Happy

Mitglied
Wie wäre es mit Snake?

Ohne Auswahlmenü oder Optionen. Nur, dass man beim Start des Programmes direkt losspielt.

Hättet ihr Vorschläge (eventuell Pseudocode, wenn ihr möchtet), was ich wo und wie unterbringen kann?

Vielen Dank im Voraus
Happy
 
M

Marcinek

Gast
Ein Spiel eignet sich ja mal gar nicht dazu um OO zu lernen. Hier bist du mehr mit iwelchen Berechnungen beschäftigt und nebenbei das in OO.

Mach doch einfach einen kleinen Kalender.
 
T

tröööt

Gast
verstehe die frage eigentlich nicht ...
grade .NET, oder besser : speziell C#, ist genau so OOP wie java (man kann C# als M$-variante von java sehen, beide haben jedenfalls einen großen einfluss auf den jeweils anderen) ...
auch PHP kann man OOP mäßig schreiben (macht man irgendwie automatisch so bald man eine OOP sprache wie java drauf hat und weis wie man in PHP OOP schreibt) ...

in JS sieht das ganze schon etwas anders aus ... es gibt zwar ganz leichte ansätze ... aber wirklich OOP kann man das nicht nennen ...
 
S

Spacerat

Gast
[OT]
gerade .NET, oder besser : speziell C#, ist genau so OOP wie java (man kann C# als M$-variante von java sehen, beide haben jedenfalls einen großen einfluss auf den jeweils anderen)
:lol: Da fragt man sich doch, ob C# die Reste der damaligen MS-JVM (decased 2007) sind... aus dieser wurde J# und dann C#.[/OT]
So strikt OOP-Programmieren wird man wohl auch in Java nicht hinbekommen, irgendwann kommt man um den Fallback auf statische Objekte und Methoden nicht drum rum, z.B. System.out, -.in und/oder -.err, die Math-Utils usw. Es wird aber deutlich weniger als in PHP und ganz anders als in Javascript. Während es in JS afaik keinen unterschied zwischen statischen und Instanzmethoden gibt, kann man es in Java vergessen, Instanzmethoden auf eine Klasse bezogen aufzurufen.
 
M

Marcinek

Gast
Hast du das verlinkte Comic gesehen...!? ???:L Ich weiß ja nicht, ob eine Schlange und Früchte nicht eher OO sind, als eine Woche mit Tagen oder so, aber .... letztlich muss es der TO entscheiden...

Ich sagte ja nicht, dass es nicht OO wäre. Ich sagte nur, dass es sich zum lernen nicht so gut eignet.

Dann lieber etwas, wo die Fachlichkeit gering ist. Und durch den Comic bin ich dann wohl Unterschwällig auf "Kalender" gekommen ^^
 

Happy

Mitglied
Ich denke, die Berechnungen in Snake halten sich gering.
Ich habe Snake übrigens schonmal in einer anderen Sprache programmiert, jedoch nicht objektorientiert.

Natürlich gibt es nicht das perfekte Beispiel, an dem man alles relevante der OO lernt.
Ich denke, eine Vielzahl an Beispielen hilft, zu verstehen, wie man etwas in der OOP programmiert.

Marcinek hat gesagt.:
Hier bist du mehr mit iwelchen Berechnungen beschäftigt und nebenbei das in OO.
Nun ja, das ist eventuell auch gar nicht mal so schlecht. Die Berechnungen bei einem Spiel wie Snake halten sich in Grenzen, und dadurch, dass ich Snake schon einmal in einer strukturierten Programmiersprache geschrieben habe, denke ich, könnte ich erkennen, wie man es in der OOP anders macht.
Wahrscheinlich sind das für euch komplett selbstverständliche Sachen, die einem Umsteiger (in diesem Falle mir) jedoch helfen.

Zu tröööt: Natürlich, man kann in PHP und auch .NET objektorientiert programmieren. Mir geht es jedoch nicht um "Ich möchte objektorientiert programmieren, aber mit den Sprachen, die ich kenne, geht es nicht.". Ich habe bisher immer mit diesen Sprachen nicht objektorientiert geschrieben, auch, wenn sie diese Möglichkeiten (größtenteils) bieten. Und nun möchte ich Java erlernen, und mir auch direkt einen guten Programmierstil in dieser Sprache angewöhnen.


Von meiner Seite aus denke ich, dass ein Projekt wie Snake nicht zu klein, jedoch noch überschaubar ist. Wie würdet ihr ein Projekt wie Snake aufbauen? Mir geht es in erster Linie nicht um Java-Code, sondern um den Aufbau, was man wo unterbringt.

Vielen Dank im Voraus
Happy
 
B

bone2

Gast
Aus was besteht ein Simples Snake denn?

Spielfeld
Schlange (die vielleicht aus vielen Schlangengliedern besteht)
Früchte

dazu dann im MVC Stil
KeyBoardController der Tastatureingaben verarbeitet
ein View das das Spiel in irgendeiner form dastellt (und wenn es erstmal nur ein haufen zeichen in der console sind)
"Spiel" das alles kontrolliert und zb Früchte generiert, aktuelle Punkte zählt,

schön wären noch
Spieler hat einen Persönlichen Highscore
HighscoreListe hat die besten Highscores
Highscore

sjbrown's Guide To Writing Games
bau einfach das in java nach :)
 

Empire Phoenix

Top Contributor
Gerade Spiele sind oft nicht normales oop sondern Entity basiert. (was mehr ein sonderfall der oop darstellt)


(Man versucht ehere composition statt inheritance zu nehmen, weil sonst das ganze ausartet)
OOP:
Ich habe nen object.
Ich habe unterklasse brennbares Object
ich habe unterklasse explodierendes Object.
Was würde ich nun tun bei einen brennenden explodierenden object?

Entity:
Ich habe nen object.
Ich habe das verhalten brennenbar.
Ich habe das verhalten explodierend.
Ich erstelle folglich ein normales object und füge das gewünschte verhalten hinzu.

Im normalen oop hat man zwar auch compositionen, aber eigentlich ist nicht das gesamte framework darauf aufgebaut.
 
S

Spacerat

Gast
Gerade Spiele sind oft nicht normales oop sondern Entity basiert. (was mehr ein sonderfall der oop darstellt)


(Man versucht ehere composition statt inheritance zu nehmen, weil sonst das ganze ausartet)
OOP:
Ich habe nen object.
Ich habe unterklasse brennbares Object
ich habe unterklasse explodierendes Object.
Was würde ich nun tun bei einen brennenden explodierenden object?

Entity:
Ich habe nen object.
Ich habe das verhalten brennenbar.
Ich habe das verhalten explodierend.
Ich erstelle folglich ein normales object und füge das gewünschte verhalten hinzu.

Im normalen oop hat man zwar auch compositionen, aber eigentlich ist nicht das gesamte framework darauf aufgebaut.

Aber immerhin ist beides OOP. Was hat man den in nicht OOP-Sprachen? Ich habe ein Programm und verzweige entsprechend?
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
B Umstieg von C# nach Java Java Basics - Anfänger-Themen 18
C Java umstieg Java Basics - Anfänger-Themen 2
haansn08 Umstieg von VB.NET zu Java Java Basics - Anfänger-Themen 11
S Umstieg von C++ auf Java? Java Basics - Anfänger-Themen 9
V [UMSTIEG]Java...Tutorials... Java Basics - Anfänger-Themen 6
T Umstieg von Python auf Java Java Basics - Anfänger-Themen 7
H Umstieg von Schul-Java auf. Java Basics - Anfänger-Themen 42
P Umstieg von Delphi nach Java Java Basics - Anfänger-Themen 2
E Erste Schritte Umstieg von PHP - Deklaration Java Basics - Anfänger-Themen 9
N Umstieg auf objektorintierte Programmierung Java Basics - Anfänger-Themen 2
H .java Dateien in Eclipse einbinden und ausführen Java Basics - Anfänger-Themen 1
onlyxlia Schlüsselworte Was meint man mit "einen Typ" in Java erstellen? Java Basics - Anfänger-Themen 2
O Java Kara geschweifte Klammern Java Basics - Anfänger-Themen 2
richis-fragen Mausrad logitech kann links und rechts klick wie in java abragen. Java Basics - Anfänger-Themen 15
XWing Java Klssenproblem Java Basics - Anfänger-Themen 4
R Umgebungsvariable java -cp gibt immer Java-Hilfe... Java Basics - Anfänger-Themen 3
farbenlos Csv Datei in Java einlesen Java Basics - Anfänger-Themen 18
F TableModelListener: java.lang.ArrayIndexOutOfBoundsException: 132 Java Basics - Anfänger-Themen 3
G Java 8 - Support-Ende Java Basics - Anfänger-Themen 7
T Java Weihnachtsbaum + Rahmen Java Basics - Anfänger-Themen 1
N Will mit Java anfangen Java Basics - Anfänger-Themen 13
Ü Java Array - Buchstaben als Zahlen ausgeben Java Basics - Anfänger-Themen 22
M Java Iterator Verständnisfrage Java Basics - Anfänger-Themen 6
M Java Mail Programm Java Basics - Anfänger-Themen 4
Sniper1000 Java 391 für Windows Java Basics - Anfänger-Themen 37
J Java long- in int-Variable umwandeln Java Basics - Anfänger-Themen 6
JaZuDemNo Java im Studium Java Basics - Anfänger-Themen 7
E Java Programm zur anzeige, ob Winter- oder Sommerzeit herrscht Java Basics - Anfänger-Themen 62
I QR code in Java selber generieren Java Basics - Anfänger-Themen 5
V Java-Ausnahmebehandlung: Behandlung geprüfter Ausnahmen Java Basics - Anfänger-Themen 1
krgewb Java Streams Java Basics - Anfänger-Themen 10
A Überwältigt von der komplexen Java Welt Java Basics - Anfänger-Themen 29
O Mehrfachvererbung auf Spezifikations- und Implementierungsebene in Java. Interfaces Java Basics - Anfänger-Themen 19
John_Sace Homogene Realisierung von Generics in Java ? Java Basics - Anfänger-Themen 19
P Meldung aus Java-Klasse in Thread an aufrufende Klasse Java Basics - Anfänger-Themen 1
R mit Java API arbeiten Java Basics - Anfänger-Themen 9
P JDK installieren Probleme bei der Java-Installation Java Basics - Anfänger-Themen 8
S Java: Wie sortiere ich eine ArrayList benutzerdefinierter Objekte nach einem bestimmten Attribut? Java Basics - Anfänger-Themen 2
Timo12345 JNLP File mit Java öffnen Java Basics - Anfänger-Themen 2
S Video Editierung mit Java.._ Java Basics - Anfänger-Themen 2
F Einstelungen in Java - CursorBlinkRate Java Basics - Anfänger-Themen 10
A PHP $_POST["name"] in Java Java Basics - Anfänger-Themen 3
vivansai21 Is there a oneliner to create a SortedSet filled with one or multiple elements in Java? Java Basics - Anfänger-Themen 9
Athro-Hiro Weißes Bild in Java erstellen Java Basics - Anfänger-Themen 3
Arjunreddy Can someone please tell me how to use a debugger in BlueJ(a Java environment) Java Basics - Anfänger-Themen 1
M Java assoziationen (UML) Java Basics - Anfänger-Themen 8
H Excel-Tabellen mit Java erstellen Java Basics - Anfänger-Themen 4
Simon16 Java ArrayListe von einer Klasse sortieren Java Basics - Anfänger-Themen 2
P Wie kann ich in meinem Java Programm etwas dauerhaft speichern? Java Basics - Anfänger-Themen 5
H Nutzt Eclipse alle CPU-Threads beim Ausführen von Java-Programmen? Java Basics - Anfänger-Themen 4
xXGrowGuruXx Java einstieg, leichte sache 0 verstanden Java Basics - Anfänger-Themen 7
A java.sql.SQLException: Data type mismatch. Java Basics - Anfänger-Themen 1
H Java-Programm zur Ausgabe von Zuständen Java Basics - Anfänger-Themen 80
N Java Spiel Figur auf dem Hintergrundbild bewegen. Java Basics - Anfänger-Themen 11
G Kann Java-Programm nicht als jar aufrufen, auch als EXE nicht Java Basics - Anfänger-Themen 19
N Java Taschenrechner hat Jemand vlt einen Tipp dafür wie ich jetzt die buttons verbinden kann und das Ergebnis auf dem textfield anzeigen lassen kann Java Basics - Anfänger-Themen 13
A Lerngruppe Java Java Basics - Anfänger-Themen 2
G Help me in the Java Program Java Basics - Anfänger-Themen 2
L Java- Vererbung Java Basics - Anfänger-Themen 4
LimDul Suche Java Stream Tutorial Java Basics - Anfänger-Themen 2
_so_far_away_ Ich möchte Java lernen Java Basics - Anfänger-Themen 11
benny1993 Java Programm erstellen für ein Fußball-Turnier Java Basics - Anfänger-Themen 3
M Datentypen While-Schleife eine Java Methode erstellen Java Basics - Anfänger-Themen 3
V Bild per Java Script austauschen Java Basics - Anfänger-Themen 7
MoxMorris this Keyword in Java Java Basics - Anfänger-Themen 14
D Wie kann man in Java nach Arrays auf Duplikate prüfen Java Basics - Anfänger-Themen 12
wolei JAVA Zeitdifferenz feststellen. Java Basics - Anfänger-Themen 4
DiyarcanZeren Rekursion in Java Java Basics - Anfänger-Themen 5
wolei Java generic interface in a generic class Java Basics - Anfänger-Themen 6
monsterherz Ablauf der Erstellung eines Java Programmes Java Basics - Anfänger-Themen 17
monsterherz Circle.java:5: error: <identifier> expected Java Basics - Anfänger-Themen 2
julian-fr Wie kann ich am besten Java lernen? Java Basics - Anfänger-Themen 17
A Java-Properties und -RessourceBundles Java Basics - Anfänger-Themen 5
lrnz22 Java-Basics-Aufgabe Java Basics - Anfänger-Themen 8
R Java kann nicht installiert werden Java Basics - Anfänger-Themen 8
marcelnedza Finde meinen Fehler in einer Methode nicht, Java Karol Java Basics - Anfänger-Themen 15
G In ein java Dokument Ton einbinden Java Basics - Anfänger-Themen 1
C was heisst es wenn java ']' erwartet ? Java Basics - Anfänger-Themen 2
KeinJavaFreak Erste Schritte Programm "Java(TM) Platform SE binary " nicht vorhanden Java Basics - Anfänger-Themen 1
KeinJavaFreak Erste Schritte Java "Executable Jar File" nicht vorhanden Java Basics - Anfänger-Themen 1
melisax Java 2D-Array Tabelle Java Basics - Anfänger-Themen 4
melisax Java Array Wert an bestimmtem Index angeben Java Basics - Anfänger-Themen 14
J Java Testklasse Java Basics - Anfänger-Themen 5
P Java Selenium . Parameterized.Parameters erzeugt eine Fehlermeldung Java Basics - Anfänger-Themen 14
W Java-Code mit Array Java Basics - Anfänger-Themen 14
W Java-Code Java Basics - Anfänger-Themen 2
P BeforeEach AfterEach werden nicht ausgeführt. Java / Selenium Java Basics - Anfänger-Themen 4
A Wie führe ich eine Batch-Datei von meiner Java-Anwendung aus? Java Basics - Anfänger-Themen 18
W Java code- TicTac toe Java Basics - Anfänger-Themen 51
Ostkreuz Java Docs Java Basics - Anfänger-Themen 9
R Java boolean Unterschied " == " und " = " Java Basics - Anfänger-Themen 3
D Java Programm mit Batch-Datei starten Java Basics - Anfänger-Themen 32
W Java-code Java Basics - Anfänger-Themen 8
W Java-code Java Basics - Anfänger-Themen 9
W Java-Code erklären Java Basics - Anfänger-Themen 6
A Java Kurs / Tutorial Java Basics - Anfänger-Themen 6
K Java Lotto Spiel; ich komme nicht weiter Java Basics - Anfänger-Themen 15
R Operatoren Rechenoperation in Java verwenden für Calculator Java Basics - Anfänger-Themen 2
P Java 2n Potenzieren Java Basics - Anfänger-Themen 1
J Java Hamster Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben