Bin ich zu dumm fürs programmieren?

...komplette Frage anzeigen

11 Antworten

Es sind halt selbst bei einem einfachen Java-Programm sehr viele anspruchsvolle Konzepte auf einmal, die allesamt erklärungsbedürftig sind und deren Notwendigkeit sich nicht auf Anhieb erschließt.

Da reicht es nicht, dass es einmal "Klick" macht. Das muss mindestens 20 mal "Klick" machen, bis es einmal "Klack" macht und man sich an diese Konzepte halbwegs gewöhnt hat.

Ich kenne viele - vor allem ältere - Entwickler, die sich nie mit der objektorientierten Programmierung angefreundet haben. Sie nutzen zwar Klassen, aber die Programmstruktur ist klassisch prozedural und bestenfalls als modularisiert zu bezeichnen.

Gut, was soll man empfehlen? Vielleicht tatsächlich erst mal mit einer einfachen Skriptsprache beginnen, wie MonkeyKing empfiehlt. Dann kann man sich zunächst auf die Basics konzentrieren: Variablen, Schleifen, Bedingungen, Ein-/Ausgaben, Modularisierung in Unterprogramme und Funktionen. Und erst in einem zweiten Schritt den objektorientierten Ansatz erlernen.

Oder den anderen Weg gehen und die ganzen "modernen" Konzepte einfach mal anzuwenden, ohne sie groß zu hinterfragen. Und erst in einem zweiten Schritt tiefer eintauchen und wirklich verstehen, warum das im Vergleich mit anderen denkbaren Alternativen sinnvoll ist.

Naah. Das muss nur einmal richtig klick machen. Die Antwort von Peter lustig ist super.

Ich stelle mir Klassen ähnlich vor. Sie beschreiben quasi Dinge. Und diese Dinge können was. (Methoden) 

Ich geb dir noch ein zweites Beispiel: nehmen wir das Spiel Schiffe versenken.

Wir haben 2 Spieler. 2 Spielfelder und Schiffe.

Spieler Spielfeld und Schiff kann man als Klassen definieren.

Jeder Spieler hat ein eigenes Spielfeld. (Eine Instanz der Klasse in der Spieler Klasse. 

Spielfeld owngameboard = New Spielfeld() )

In meinem Beispiel kennt der Spieler auch das Gegner Spielfeld.

Spielfelder haben Schiffe 

(z.b. ArrayList<Ship> Schiffe = New arraylist<ship>() )

Hier als Liste gespeichert. 

Die Schiffe selbst haben eine Eigenschaft trefferpunkte. 

Und eine Liste von x,y Koordinaten welche die Position darstellen.

Spieler können Auf dem Spielfeld Schiffe platzieren und einen Schuss auf das Spielfeld abgeben.

Z.b. die Methoden placeShip(x,y) und shootAt(x,y)

Diese Methoden über nehmen jeweils das platzieren und die entsprechende Logik dahin ter und saß Schüssen auf eine Koordinate des Spielfeldes.

Nur mal so als kleineres ausführliches Beispiel.

Man kann schön sehen das jede Klasse quasi eine Aufgabe über nimmt.

Zusätzlich kann man Klassen auch spezialisieren. Auch ableiten genannt.

Nehmen wir an wir haben eine Ship Klasse. Und wir wollen ein Schiff mit besonderen Eigenschaften. Z.b. battleship

Das battleship hat durch die Ableitung alle Eigenschaften eines Schiffes. In unserem Beispiel die trefferpunke.

Und sagen wir einen spezialskill oder einen Effekt der beim zerstören ausgeführt wird.

Z.b. die zusätzliche Methode: fireFooCannons.

In dem array auf dem Spielfeld kann man die battleships einfach reinpacken weil das array Schiffe hält.

Niemand ist zu dumm fürs Programmieren. Wenn du trotz Bemühungen nichts verstehst, liegt das wahrscheinlich daran, dass du aus einer falschen Quelle lernst. Ich selbst hatte anfangs das gleiche Problem wie du, weil ich zum lernen nur Youtube-Tutorials verwendet habe, die mich nicht ẃeiterbrachten.

 

Ich hoffe, du hast durch das Lernen mit einem Buch mehr Erfolg. Bei mir hat es jedenfalls geklappt. Das Buch, mit dem ich  Java (meine erste Sprache) gelernt habe, ist übrigens "Programmieren lernen mit Java" vom Rheinwerk-Verlag.

Bei mir hatte es nicht lange gedauert, bis ich Java drauf hatte, da ich zuvor C und C++ sowie Python konnte. Das Prinzip der Objektorientierung ist gar nicht so kompliziert, wie man denkt. Man braucht nur eine gute Erklärung. Im Grunde simpel.

Eine Klasse ist ein Bauplan, der festlegt, was ein Objekt dieser Klasse kann und hat. Attribute und Methoden werden durch die Klasse festgelegt. Ein Objekt ist im Grunde nur eine Entität, die nach diesem Bauplan erstellt wurde. Sie besitzt für die durch die Klasse festgelegten Attribute Werte, die nicht denen eines anderen Objekts der gleichen Klasse ähneln müssen. Eine Methode ist eine Art und Weise, mit dem Objekt der Klasse zu interagieren und das Objekt zu manipulieren.

Nehmen wir ein Beispiel. Die Klasse Auto legt Attribute fest, die jedes Objekt der Klasse hat, solche Dinge wie den Verbrauch, die Motorleistung, was weiß ich, ich kenne mich nicht sonderlich gut mit Autos aus. Das Auto kann fahren, beschleunigen, oder bremsen, das wären also die Methoden. Ein Porsche, der ein Objekt dieser Klasse Auto ist, wird vermutlich andere Attributwerte haben, als ein älterer VW, trotzdem sind beides Objekte, die dem Bauplan "Auto" entsprechen.

Gruß

Okay meine Sicht (nicht böse gemeint):

Fang mit den Grundlagen an (also keine OO vorerst). Wie genau erstellt man Methoden, wie sind Methoden aufgebaut usw.

Das gleiche mit Klassen. Objekte kannste erstmal außen vor lassen.

So wie ich es atm sehe versuchst du von Krabbeln direkt zu Mondmission überzugehen (funzt selten).

Java "lernen" (man lernt nie aus) dauert ca. 1-2 Jahr (zumindest innerhalb des Studiums, dazu kommen noch Projekte).

Das dauert schon ein Weilchen. Bei mir ist der Aha-Effekt meist nur dann gefallen als ich es tatsächlich auch einmal selbst benötigt habe. Alles in allem würde ich sagen dass es bei mir durchaus bis zur jetzigen Reife an die 10 Jahre gedauert hat. Allerdings bin ich eher im technischen Bereich unterwegs womit ich eher mit Hardwarenahen Sprachen zu tun hatte und mich jetzt erst richtig mit objektorientierten Sprachen beschäftigt habe.

Kommt auf deinen Lerntyp an. Wenn du dir Dinge eher verbildlichst, dann stell dir Klassen etc. einfach als Dinge des realen Lebens vor.

Klasse Auto, hat Methoden fahren und parken. In der Familie gibt es zwei Autos, Auto 1 und Auto 2. Das sind jeweils "Instanzen", also "Produkte aus Auto". Nach diesem Schema kannst du versuchen, dir andere Bereiche der OOP anzueignen.

Java ist auch nicht gerade die einfachste Programmiersprache. Versuch dich vielleicht erst mal an einer Scriptsprache wie Python, da kommst du schneller zu Ergebnissen. 

Komisch ! Keiner fragt dich was für Voraussetzungen du mitbringst. Welchen Bildungsstand hast du überhaupt.

Denn : Wie du selber sagst: Einem Kindergartenkind kann man nicht die Einsteinsche Relativitätstheorie erklären. Wäre sinnlos.

Ich bin durch die ersten 2 Semester gekommen ohne den ganzen Krams zu verstehen.. Zuerst klick hat es tatsächlich gemacht als ich alleine etwas entwickeln musste und mich damit selbst beschäftigen musste. (Stackoverflow & Google hatten mir damals große Dienste geleistet)

Wenn einmal der Groschen gefallen ist dann fängt der ganze Krams auch an richtig Spaß zu machen. 

Ebenfalls zu empfehlen ist Code von anderen zu lesen & versuchen zu verstehen. (https://github.com/trending/java)

Nun, wenn du keine lust mehr hast am lernen werde ich dich auch nicht mit sowas wie "Du lernst das schon" oder "Ich habe auch so lange gebraucht" ankommen und dir einfach sagen, dass du es lassen sollst.

Also, solltest du keine Lust haben es zu lernen, dann mach es einfach nicht. Du musst es auch nicht machen.

Lg, Victor.

blackoutX2 28.06.2017, 21:09

ich hab schon lust nur verstehe ich wie gesagt bestimme dinge gar nicht

0
MarklinHD 28.06.2017, 21:18
@blackoutX2

Wenn du es nicht verstehst dann lass es dir anders erklären.

0

Was möchtest Du wissen?