Erste Schritte Einstieg

R

Rowmain

Gast
Hallo zusammen. Vor einigen Tagen habe ich angefangen Java zu lernen und bin auf dieses Forum gestossen. Nun wollte ich fragen, womit ich anfangen soll, denn Programierkenntnisse habe ich bisher nur wenige (weiss nur die ganz grundliegenden Sachen: Variablen, Schleifen, ein wenig Theorie usw.)

Aus einem Buch zu lernen wurde mir nicht empfohlen, da man halt liest und beispiele nachschreibt. Bzw. man sollte selber ein Programm erfinden und schreiben. So behält man auch am meisten.

Ein guter Freund von mir meinte ich soll mit OOP anfangen, da ich bereits einige "Rechner" geschrieben habe.
Er hat mir nun vorgeschlagen ein Programm zu schreiben, bei welchem sich ein Kreis um die Maus dreht. Habe ein wenig angefangen und komme trotzdem nicht weit, da mir einfach die Kenntnisse Fehlen und ich die Befehle nicht weiss. Auch nach intensivem Surfen habe ich nicht besonders viel auf die Reihe gekriegt...

Hier noch der Code für die Interessierenden. (Weiss nicht wie ich ein Kreis erstellen kann und als solches schieben...)
Java:
package Pckg;


import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.*;

import javax.swing.JFrame;
import javax.swing.JPanel;

	public class Interface extends JPanel implements MouseMotionListener
	{
		public int mX, mY;
		
		public Interface() {
			addMouseMotionListener(this);
			setVisible(true);
		}
	
		public void mouseMoved(MouseEvent me) {
			mX = (int) me.getPoint().getX();
			mY = (int) me.getPoint().getY();
			repaint();
		}
	
		public void mouseDragged(MouseEvent me) {
			mouseMoved(me);
		}	
		
		public void paint(Graphics g) {
			g.setColor(Color.green);
			g.fillOval(mX-25, mY-25, 10, 10);
		}
  
		public static void main(String[] args) {
			JFrame f = new JFrame();
			f.getContentPane().add(new Interface());
			f.setSize(400, 400);
			f.show();
		}
   
	}

Nun wollte ich fragen, wie ihr angefangen habt und mir vielleicht Tipps für den Einstieg geben.
 

hdi

Top Contributor
Hey,

Das setVisible(true) brauchst du im Konstruktor deines JPanels nicht aufrufen, da das Panel automatisch sichtbar wird wenn dessen Container (in deinem Fall das Frame) sichtbar wird.

Statt dessen solltest du das setVisible(true) also beim JFrame aufrufen, und zwar an Stelle von show(). show() ist nämlich deprecated, d.h. veraltet und sollte nicht mehr verwendet werden.

Ansonsten: Mit OOP hat das Beispiel finde ich nicht so viel zu tun.. Aber wenn du's so sehen willst, okay. Was da als erstes zu bemängeln wäre:

Java:
 public int mX, mY;

Die sollten beide nicht public sein, sondern private. Stichwort Datenkapselung, das ist einer der großen Begriffe aus der OOP. In deinem Bsp ändert das zwar nichts. Und das bringt mich zu Punkt 2:

Das Programm (main-Methode) sollte in eine eigene Klasse ausgelagert werden. Also trenn deine Objekt-Klassen (die Klasse Interface) vom Programm, und schreib für die main-Methode eine eigene Klasse "Main" oder "Start" oder sowas.

Punkt 3: "Interface" ist kein guter Name für eine Klasse. Denn es gibt neben Klassen tatsächlich Datenstrukturen die man interface nennt. (wenn du das I mal klein schreibst wist du sehen dass es auch ein Keyword ist. Der Editor hier im Forum beachtet keine Klein-/Großschreibung und highlighted das in deinem Post als Keyword). Nenn die Klasse nach dem, was sie tut, bzw. wofür sie da ist. Sowas wie "AnimationPanel" würd hier wohl passen.

Punkt 4: Man sollte nicht die paint(Graphics) Methode überschreiben, sondern die Methode paintComponent(Graphics). Also schmeiß die paint raus und mach statt dessen:

Java:
   public void paintComponent(Graphics g) {
            super.paintComponent(g); // löscht vor dem Neuzeichnen den aktuellen Inhalt)
            g.setColor(Color.green);
            g.fillOval(mX-25, mY-25, 10, 10);
        }

Punkt 5: mouseDragged soltle nicht an mouseMoved() weiterleiten, da das widersprüchlich ist. Es ist zwar löblich dass du redundanten Code vermeiden willst, und weiterleitest. Aber noch besser wäre es das, was in der mouseMoved() steht in eine ganz eigene Methode auszulagern, und diese dann sowohl in der mouseMoved() als auch in der mouseDragged() aufzurufen.

Ne Kleinigkeit: Statt getX() und getY() auf dem Point kannst du direkt auf dem Event-Objekt die Methoden getX() und getY() aufrufen. Der Unterschied ist dass die dir bereits einen int liefern, und du damit nicht mehr casten musst.

Der Rest passt soweit. Ich finde die Aufgabe die dir dein Freund gegeben hat aber nicht all zu gut. Erstens ist das wie gesagt kaum objektorientiert umzusetzen, zweitens müsstest du jetzt für die Animation einen neuen Thread starten, und Multi-Threading ist schon ziemlich anspruchsvoll, und nix für den Anfang.

Kuck mal auf der Website in meiner Signatur vorbei. Da gibt's auch Übungsaufgaben, das erste Blatt fordert gleich mal ein stark objektorientiertes Design.
 

puelo

Mitglied
Also ich kann dir mal meine bisherigen Themen von meiner Uni sagen. Du musst dann halt einfach dir Beispiele überlegen die du dann jeweils mit der Methode umsetzt.
Man muss einfach ein bisschen programmieren, dann bekommt man so ein bisschen das Gefühl dafür.
Ich persönlich würde wohl noch nicht direkt mit graphischen Dingen wie ein GUI oder Mouse-Bewegungen anfangen, sondern erstmal nur in der Kommandozeile bleiben.

Die Themen waren:

1. Einführung, Variablentypen, einfache Berechnungen und Funktionen
2. Schleifen und Verzweigungen
3. Arrays
4. Methoden und Rekursion
5. Objektorientierung I, Einführung in NetBeans
6. Objektorientierung II, Datenstrukturen I (List)
7. Datenstrukturen II (Queue und Stack)
8. Interfaces, Vererbung I
9. Vererbung II, generische Datentypen

Das wars bisher...
 
B

bur

Gast
Aus einem Buch zu lernen wurde mir nicht empfohlen
Ich würde sehr empfehlen aus einem Buch zu lernen. Zumindest die Grundlagen sollte man sich so aneignen, damit man die Sprache wirklich durchschaut hat. Oder kennst du OOP schon gut? Das wäre natürlich was anderes. Aber wenn nicht, das muss man sich meiner Meinung nach unbedingt anlesen. Sonst fummelt man sich irgendwie durch ohne die Sprache wirklich zu nutzen.

Es stimmt allerdings dass man nur lernt wenn man selber programmiert. Dazu gibt es zwei Möglichkeiten. Einmal solltest du die Beispiel im Buch nicht einfach stumpf abtippen, sondern nur ganz schnell überfliegen damit du weißt was rauskommen soll. Und dann versuch das selber zu coden. Wenn was nicht klappt, guck im Beispiel nach.

Die andere (bessere) Möglichkeit, schreib einfach selber kleine Programme die zu den Beispielen passen. Oder verbessere die Beispiele.

Ein, wie ich finde, sehr gutes Buch ist Java ist auch eine Insel (auch kostenlos online lesbar). An deiner Stelle würde ich das lesen und mit den Erkenntnissen kannst du dann dein Programm immer weiter ausbauen.

So mache ich es zumindest und mittlerweile ist schon ein ziemlich brauchbares Tool dabei rausgekommen.
 

Final_Striker

Top Contributor
Aus einem Buch zu lernen wurde mir nicht empfohlen, da man halt liest und beispiele nachschreibt. Bzw. man sollte selber ein Programm erfinden und schreiben

... da mir einfach die Kenntnisse Fehlen und ich die Befehle nicht weiss. Auch nach intensivem Surfen habe ich nicht besonders viel auf die Reihe gekriegt...

Aus diesem Grund nimmt man auch ein Buch und liest sich wenigstens die Grundlagen durch. Wie willst du was programmieren, wenn du nicht weißt wie?

Um schreiben zu können, hast du doch auch zuerst die einzelnen Buchstaben gelernt.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
xXGrowGuruXx Java einstieg, leichte sache 0 verstanden Java Basics - Anfänger-Themen 7
L Einstieg Objektorientierung Java Basics - Anfänger-Themen 10
D Java Einstieg Java Basics - Anfänger-Themen 4
G JAVA Einstieg Java Basics - Anfänger-Themen 26
X Erste Schritte Einstieg ins Programmieren Java Java Basics - Anfänger-Themen 2
V Erste Schritte Hilfe gesucht beim einstieg in Java und erste Aufgaben aus der Berufsschule Java Basics - Anfänger-Themen 9
M Wie schaffe ich den Einstieg? Java Basics - Anfänger-Themen 2
T Einstieg in "grafische Progammierung" + Rechnen in Flussdiagramm Java Basics - Anfänger-Themen 2
B Einstieg in swing GUI Java Basics - Anfänger-Themen 7
R Einstieg in Programmierung Java Basics - Anfänger-Themen 8
Z Einstieg in LWJGL Java Basics - Anfänger-Themen 7
D Erste Schritte Einstieg in die Java Spiel Programmierung Java Basics - Anfänger-Themen 7
W Einstieg Objektorientierung Java Basics - Anfänger-Themen 4
Grejak OOP Einstieg in Objekt-Orientierte-Programmierung Java Basics - Anfänger-Themen 3
E Hilfe beim Einstieg Java Basics - Anfänger-Themen 46
R Einstieg Java Basics - Anfänger-Themen 4
F Einstieg Java Basics - Anfänger-Themen 3
Bastler66 Erste Schritte Einstieg JDK Java Basics - Anfänger-Themen 3
S Erste Schritte Der Einstieg in Java Java Basics - Anfänger-Themen 8
R Einstieg Webentwicklung Java Basics - Anfänger-Themen 3
A Einstieg in Java. Java Basics - Anfänger-Themen 21
N Java Einstieg Schiffe versenken Java Basics - Anfänger-Themen 4
C JAVA - Einstieg mit Eclipse - Update Sites und Ähnliches Java Basics - Anfänger-Themen 6
A Datenbanken - ein Einstieg Java Basics - Anfänger-Themen 4
A Einstieg in JSF Java Basics - Anfänger-Themen 4
A Einstieg in die Programmierung Java Basics - Anfänger-Themen 20
G Einstieg EJB3 Java Basics - Anfänger-Themen 2
M XML-Einstieg Java Basics - Anfänger-Themen 4
M Einstieg in die Webentwicklung mit Java? Java Basics - Anfänger-Themen 16
D Einstieg Java Basics - Anfänger-Themen 4
S MS Visual Studio.NET und Einstieg in Visual JAVA# Java Basics - Anfänger-Themen 27
P Java beginner - Buch: Java- Einstieg für Anspruchsvolle Java Basics - Anfänger-Themen 6
G Einstieg in Java Java Basics - Anfänger-Themen 5
S Was zum Einstieg probieren? Java Basics - Anfänger-Themen 8
S Fragen zum Einstieg Java Basics - Anfänger-Themen 9
K Probleme beim Einstieg Java Basics - Anfänger-Themen 2
S Tipps zum Einstieg in Java Java Basics - Anfänger-Themen 30
A Hilfe beim Java-Einstieg Java Basics - Anfänger-Themen 3
J Java-Einstieg ;-) )) Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben