# 2. Kapitel in Java Von Kopf bis Fuß



## Idk (28. Dez 2011)

Ich wollte Fragen ob ich das 2. Kapitel in dem Buch "Java Von Kopf bis Fuß" überspringen kann ??


Ich verstehe das einfach nicht !!!:rtfm:


----------



## Final_Striker (28. Dez 2011)

Lass mich raten, du bist erst 6 Jahre als und glaubst das wäre hier ein Kindergarten oder?

Wenn du es nicht verstehst, dann lies es noch einmal.
Wenn du es dann immer noch nicht verstehst, dann such dir Nachhilfe (wurde dir schon übrigens angeboten).
Wenn du es dann immer noch nicht verstehst, dann lass es sein, vermutlich ist es nichts für dich.

edit:
http://www.java-forum.org/plauderecke/129175-kleine-lerngruppe-fuer-anfaenger.html


----------



## Idk (28. Dez 2011)

Der Beitrag ist aber ziemlich alt.


----------



## Fab1 (28. Dez 2011)

Idk hat gesagt.:


> Der Beitrag ist aber ziemlich alt.



Der Beitrag ist nicht mal eine Woche alt.


----------



## Kababär (28. Dez 2011)

Ich dachte schon, ICH würde den Usern hier tierisch auf die Nerven gehen... 

Niemand erwartet von dir, dass du alles 100% verstehst, vorallem nicht beim 1. Mal Durchlesen.
Verstehst du nur die Hälfte, was dir erzählt wird, lies es nochmal. Versuche zu wissen, auf welche Art und Weise du etwas zu verstehen beginnst. Halte es einfach, denk mal drüber nach um was es geht in dem Kapitel und in welchen Beziehungen die dort aufgeführten Namen stehen ( Bsp. Objekt, Klasse, Methode, Anweisung, etc.. ).

Versuche nicht zu überfliegen und nicht nach dem Motto : Jaja, kenn ich, hab ich schon mal irgendwo gelesen, weiter gehts. Wann kommen die Codes und das Interessante?

Ich denke du bist ungeduldig. Du sollst das nicht auswendig lernen, du musst es verstehen.

Hast du Führerschein? Frag mal deinen Fahrlehrer ob du die Kupplung und die Bremse überspringen darfst.
:autsch:

Wenn du nicht verstehst wie das funktioniert, lies es durch bis zum Erbrechen. Gehts einfach nicht in dein Kopf, schenke es mir, wollt es sowieso kaufen und so spar ich mir Geld.
Und such dir dann anschließend etwas anderes. Beispielsweise C++ oder Python, XHTML, CSS, PHP o.a.
Wird daraus auch nichts, wechsel dein Interesse, bspw. Politiker, Bäcker, Politesse, etc.

mfG


----------



## Marcinek (28. Dez 2011)

Troll. Mehr nicht. :autsch:


----------



## Idk (29. Dez 2011)

Kababär hat gesagt.:


> Ich dachte schon, ICH würde den Usern hier tierisch auf die Nerven gehen...
> 
> Niemand erwartet von dir, dass du alles 100% verstehst, vorallem nicht beim 1. Mal Durchlesen.
> Verstehst du nur die Hälfte, was dir erzählt wird, lies es nochmal. Versuche zu wissen, auf welche Art und Weise du etwas zu verstehen beginnst. Halte es einfach, denk mal drüber nach um was es geht in dem Kapitel und in welchen Beziehungen die dort aufgeführten Namen stehen ( Bsp. Objekt, Klasse, Methode, Anweisung, etc.. ).
> ...



Danke für deinen netten Beitrag. Ich hab gestern meinen Tag in der Bibliothek verbracht und das Kapitel mir in den unterschiedlichsten Büchern durchgelesen und hab es jetzt zur hälfte verstanden.

Also theoretisch kann ich aber ich weiß nicht wie ich es anwenden soll.


----------



## vanny (29. Dez 2011)

Is deine Ausgabe auf Spanisch? ... oder was heisst bei dir "verstehen"?

Egal welchen Namen das Kind trägt, erst wenn du es Anwenden kannst, hast du es auch verstanden. Da das bei dir nicht der Fall ist hast du nich nur die Hälfte sondern garnichts Verstanden. Also ab zurück ans Zeichenbrett und nochmal von Vorn.


----------



## ARadauer (29. Dez 2011)

Idk hat gesagt.:


> Ich wollte Fragen ob ich das 2. Kapitel in dem Buch "Java Von Kopf bis Fuß" überspringen kann ??
> Ich verstehe das einfach nicht !!!:rtfm:



Mhn nein, das ist ziemlich das wichtigste Konzept. Wenn man das nicht versteht, denkt man einfach zu kompliziert. Ganz einfach. Es gibt Objekte die können was und haben Eigenschaften.
Stell dir ein Spiel vor. Die Spielfigur ist ein Objekt, hat Eigenschaften: Position, Energie usw.. und kann was. laufen, springen usw... fertig ist OOP

Bevor du das Kapitel jetzt 10 mal ließt probiers einfach aus.


----------



## Achille (29. Dez 2011)

Geduld könnte auch gelernt werden, aber es kommt langsam aus der Natur.

Das Buch ist nicht nur Text sondern beinhaltet auch Bilder, man denkt halt auch in Bilder.
Nimm doch mal Bleistift und Radiergummi, und probier dir, dass geschriebene mit einer Zeichnung umzusetzen, Diagramm, Symbole usw. mit irgendeinem Szenario.

Z.B. eine Bibliothek was hat sie, und was kann sie, du läufst in der Bibliothek herum und schreibst(zeichnest) dir das wichtigste auf.

was hat sie: Regale, Bücher und Titel usw.  - Objekte
was kann sie: ausleihen, entleihen usw.      - Methoden

Gibt bestimmt bessere Beispiele.


Frohe Festtage
I.


----------



## Idk (29. Dez 2011)

ARadauer hat gesagt.:


> Mhn nein, das ist ziemlich das wichtigste Konzept. Wenn man das nicht versteht, denkt man einfach zu kompliziert. Ganz einfach. Es gibt Objekte die können was und haben Eigenschaften.
> Stell dir ein Spiel vor. Die Spielfigur ist ein Objekt, hat Eigenschaften: Position, Energie usw.. und kann was. laufen, springen usw... fertig ist OOP
> 
> Bevor du das Kapitel jetzt 10 mal ließt probiers einfach aus.



Hab ich nicht schon gesagt das ich es theoretisch kann ???


----------



## Idk (29. Dez 2011)

Also ich erklär mal was ich so verstanden hab:

Also es gibt eine sogenannte "Superklasse" und unter Klassen. Mann muss nach gemeinsamen
funktionen suchen. Diese kommen dan in die Superklasse und die Unterklassen erben dann von 
ihr. Wenn eine Unterklasse die gleiche Funktion aber nur etwas anders hat kann man diese Funktion neu definieren.

Ist das richtig ??


----------



## schlingel (29. Dez 2011)

> Hab ich nicht schon gesagt das ich es theoretisch kann ???


:lol: So kannst du deinem Chef allerdings nicht kommen wenn du in ferner Zukunft mal etwas implementieren sollst und dann meinst, du könntest es ja theoretisch nur beim praktischen happert es etwas.

Wenn du partout nicht weiter kommst probier einmal hier reinzulesen damit du ein Gefühl für OOP bekommst. Zwar ist die Kapselung die oben angesprochen wurde wichtig allerdings IMHO nicht das wichtigste Prinzip des OOP. Zusätzlich ist auch Design Patterns von Kopf bis Fuß zu empfehlen.

Um es jetzt kurz zu machen: Natürlich kannst du das Kapitel überspringen, mit dem Dasein als Entwickler wird's dann allerdings nichts. Denn wenn du nicht verstehst wie die Konzepte in der Realität aussehen bist du dazu verdammt ein schlechter Entwickler zu sein.

Edit:/ Ja zum Teil ist das richtig.
Es gibt die Konzepte der Vererbung die bei Java gleich zwei Dinge erfüllen. Zum einen wird Code geshared, so wie du es dargestellt hast und zum anderen wird eine IS-A Beziehung erzeugt.

Das heißt wenn deine Klasse Katze von der Klasse Säugetier erbt, kann an jeder Stelle in der ein Säugetier-Objekt erwartet wird auch ein Katzen-Objekt verwendet werden.

Das Code-Sharing wäre dann z.B. die Methode ausscheiden() die, die gekapselten Werte Harnstoffe und Blasendruck verringern und nicht für jedes Säugetier neu implementiert werden müssten.


----------



## ARadauer (29. Dez 2011)

Idk hat gesagt.:


> Also ich erklär mal was ich so verstanden hab:
> 
> Also es gibt eine sogenannte "Superklasse" und unter Klassen. Mann muss nach gemeinsamen
> funktionen suchen. Diese kommen dan in die Superklasse und die Unterklassen erben dann von
> ...



ja, wobei "Mann muss nach gemeinsamen funktionen suchen" .. unser Tagwerk besteht nicht darin, dass wir gemeinsame Funktionen von Klassen suchen und Super Klassen bilden. Das kommt mit der Übung und fällt einem ja auf, wenn man für die x. Klasse die eine Methode schon wieder schreiben muss...


----------



## Kababär (29. Dez 2011)

Dein Problem ist glaube ich, dass du einfach noch keine Vorstellung hast, wofür man soetwas eigentlich braucht. 

Um dir bewusst zu werden, wieso du das ganze lernst und was man damit macht, solltest du mal Tutorials machen und dann dir etwas ausdenken, das du programmieren willst ( soll realistisch sein ) und das probieren, zu realisieren.

Baue beispielsweise mal ein Fahrrad-Online-Shop. 
Da hast du Marken und Fahrradteile. Da gibts auch viele Vererbungen 
Räder, Sattel, Klingel, Licht, Speiche, Lenker, ... daraus entsteht dann dein Fahrrad 

mfG


----------



## schlingel (29. Dez 2011)

Jetzt wo es ARadauer anspricht: Es ist ganz wichtig, dass man sich bewusst sein muss, dass nur weil eine Methode in zwei Klassen ähnliches leistet diese zwei Klassen noch lange nicht eine IS-A Relation haben müssen.

Ableiten sollte man nur wenn es tatsächlich auch im wörtlichen Sinne "IST-EIN" verwendet werden kann. Also wie oben z.B. eine Katze IST-EIN Säugetier. Wenn man jetzt z.B. die Methode hat rüsselSäubern() die einen Schlauch reinigt, sollte man trotzdem den Staubsauger nicht von Elephant ableiten. 

Ein Staubsauger ist nun mal kein Elephant - was ja dann auch wieder ein Säugetier wäre.


----------



## Idk (29. Dez 2011)

Erstmal Danke für die Antworten.

Jetzt hab ich mal einen früheren Ratschlag angenommen und den kompletten Übungs Quelltext
abgeschrieben.



```
import java.util.*;

public class Ratespiel {
 spieler s1;
 spieler s2;
 spieler s3;

 public void starteSpiel() {
  s1 = new Spieler();
  s2 = new Spieler();
  s3 = new Spieler();

  int = tipp1 = 0;
  int = tipp2 = 0;
  int = tipp3 = 0;

  boolean s1hatRecht = false;
  boolean s2hatRecht = false;
  boolean s3hatRecht = false;

  int zielZahl = (int) (Math.random() * 10);
  System.out.println("Ich denke mir eine Zahl zwischen 0 ud 9 aus ...);

  while(true) {
  System.out.println("Die zu ratende Zahl ist " + zielZahl);

  s1.raten();
  s2.raten();
  s3.raten();

  tipp1 = s1.zahl;
  System.out.println(" Spieler eins tippte " + tipp1);

  tipp2 = s2.zahl;
  System.out.println(" Spieler eins tippte " + tipp2);

  tipp3 = s3.zahl;
  System.out.println(" Spieler eins tippte " + tipp3);

  if (tipp1 == zielZahl) {
    s1hatrecht = true;
  }

  if (tipp2 == zielZahl) {
    s2hatrecht = true;
  }
  
  if (tipp3 == zielZahl) {
    s3hatrecht = true;
  }

 if (s1hatRecht || s2hatRecht || s3hatRecht) {

 System.out.println("Wir haben einen Gewinner!");
 System.out.println("Spieler eins hat richtig geraten? " + s1hatRecht);
 System.out.println("Spieler zwei hat richtig geraten? " + s2hatRecht);
 System.out.println("Spieler drei hat richtig geraten? " + s3hatRecht);
 System.out.println("Das Spiel ist aus");
 break;

 } else { 
  System.out.println("Wir müssen weiter machen weil keiner richtig geraten hat");
 }
 }
 }
 }

 public class Spieler {
 int zahl = 0;

 public voiid raten 
 zahl = (int) (Math.random() * 10);
 System.out.println(" Ich tippe auf die Zahl: "
                     + zahl1);

  }
 }


   public class SpielStarter {
     public static void main (String[] args) {
     Ratespiel spiel = new Ratespiel();
     spiel.starteSpiel();
  }
 }
```

Aber jetzt sollen woll da angeblich 19 Fehler drin sein und ich verstehe noch weniger als vorher.
Ich glaube einfach das ich aufgeben sollte nur schade ist das ich jetzt schon etwa 150 Euro
für Bücher ausgegeben habe.;rtfm:


----------



## Kababär (29. Dez 2011)

Nicht verzagen. Geh zurück an Kapitel 1. Und dort zur Hälfte ca. ( kp, hab das Buch nicht )

Da müsste stehen wie ein Programm aufgebaut wird. Vergleiche das wieder gelesene mit dem Quellcode. 
Siehe da, das was ganz unten steht, müsste ganz oben stehen. 
Irre ich mich oder nicht, aber muss 


```
public class Spieler {
 int zahl = 0;
 
 public voiid raten 
 zahl = (int) (Math.random() * 10);
 System.out.println(" Ich tippe auf die Zahl: "
                     + zahl1);
```

Nicht ganz oben stehen, denn du musst zuerst definieren, bevor du benutzen kannst.
Tu n'es pas stupide, mais tu as de donner un peu plus d'effort.

Verstehst du nicht. Warum? Weil du nicht weißt, was es heißt, für dich sind die Wörter nicht deklariert, haben keine Werte. Würde ich jedem französischen Wort das deutsche Wort geben, würdest du es verstehen. ( abgesehen von der Grammatik )

Apropo Grammatik, achte auf Grammatik. Solche Übungen sind oft darauf aus, ob du dir viele Formatierungen, richtige Schreibweisen, Grammatik wie Syntax behalten kannst. Wenn nicht,
 les dir nochmal durch wie if-Anweisungen aufgebaut sind und wie while-Schleife, for-Schleifen, was am Anfang stehen muss und was am Ende stehen muss.

Das schaffst du 

Wie alt bist du? Machst du Schule?

mfG

edit : Und wenn du wirklich nicht mehr willst, dann geb ich dir meine Adresse und dann kannst du die Bücher zu mir schicken 

:rtfm::rtfm:


----------



## gman (29. Dez 2011)

> Aber jetzt sollen woll da angeblich 19 Fehler drin



Welche denn? Wenn dir Fehler angezeigt werden, dann guck sie dir auch an und
versuche die Ursache dafür zu finden.

Wenn du dir den Code in deinem letzten Post anguckst dürfte dir schon durch
die Einfärbung etwas auffallen. Das dürfte schon mal der erste Fehler sein.
Kann sein das die anderen nur Folgefehler sind, da hab ich jetzt nicht mehr 
weiter geguckt.

Und: NEIN. Du solltest nicht aufgeben, sondern dir realistischere Ziele setzen.
Du kannst nicht sagen "Ich werde jetzt Programmierer", sondern du musst dich
durch die ganzen Grundlagen kämpfen die dich vielleicht gar nicht interessieren.


----------



## Final_Striker (29. Dez 2011)

Idk hat gesagt.:


> Aber jetzt sollen woll da angeblich 19 Fehler drin sein und ich verstehe noch weniger als vorher.



Vielleicht wenn du nicht 2 Dutzend Fehler reingetippt hättest, würde es sogar laufen.



> Ich glaube einfach das ich aufgeben sollte nur schade ist das ich jetzt schon etwa 150 Euro
> für Bücher ausgegeben habe.



Bücher alleine bringen einem nichts, wenn man es nicht selbst will. Da kannst du auch 1000€ dafür ausgeben.


----------



## Fab1 (29. Dez 2011)

Zeile 6 - 8 das spieler gehört groß


```
// hier gehört das erste = weg

  int tipp1 = 0; // richtig
  int = tipp2 = 0; // falsch
  int = tipp3 = 0;
```


```
System.out.println("Ich denke mir eine Zahl zwischen 0 ud 9 aus ...); // Hast du das abschließende " vergessen. Gehört in die Klammer rein So:

  System.out.println("Ich denke mir eine Zahl zwischen 0 ud 9 aus ...");
```


```
public voiid raten // ein i gehört weg und die Klammern () und { hast du vergessen
 zahl = (int) (Math.random() * 10);
 System.out.println(" Ich tippe auf die Zahl: " + zahl1); // soll wahrscheinlich zahl heißen
 
  }
 }
```


```
public class Spieler {
 int zahl = 0;
 
 public void raten() {
 zahl = (int) (Math.random() * 10);
 System.out.println(" Ich tippe auf die Zahl: " + zahl);
 
  }
 }
```

Eine Klasse gehört in eine eigene File, also einfach dafür eine neue Klasse anlegen.

[Edit] bin wohl nicht der schnellste :/ [/Edit]


----------



## Idk (29. Dez 2011)

wofür stehen eigentlich die leeren Klammern nach jeder Methode udn noch eine Frage :

Viel euch das erlernen des Konzepts der OO-programmierung auch so schwer und habt ihr auch so 
lange gebraucht ??


----------



## Kababär (29. Dez 2011)

Leere Klammern stehen eigentlich, sofern ich weiß, dafür, dass dort später ein Wert eingesetzt wird.
Aber ehrlich gesagt, kann das auch totaler Quatsch sein, ich weiß es nämlich selbst nicht genau!

Was findest du lange? Du bist seit 3 Tagen dabei?
Ich bin nicht konsequent dabei. Viele sagen, dass man mindestens ein halbes Jahr braucht, viele brauchen ein Jahr, langsame Typen brauchen 2 Jahre. Das kommt immer auf die Person selbst an wie lang man etwas versteht, ....

mfG


----------



## Idk (29. Dez 2011)

Wenn man sich nicht so sicher ist sollte man das hier besser nicht schreiben und ich glaube nicht das es Menschen gibt die 2 Jahre brauchen um das Komzept der OO-Programmierung zu lernen.


----------



## Camill (29. Dez 2011)

Kababär hat schon recht, in den Klammern können sogenannte Parameter übergeben werden.
Nachlesen kannst du das ganze HIER.


----------



## Marcinek (29. Dez 2011)

Idk hat gesagt.:


> Wenn man sich nicht so sicher ist sollte man das hier besser nicht schreiben und ich glaube nicht das es Menschen gibt die 2 Jahre brauchen um das Komzept der OO-Programmierung zu lernen.



Ich behaupte, dass du neue Rekorde aufstellen wirst. So wie du jetzt lernst ist es einfach falsch.

Du benötigst einen Lehrer, der dir das beibringt und entsprechende Konzepte im Zusammenhang erklärt.


----------



## Idk (29. Dez 2011)

Ich denke wenn ich in der Lerngruppe bin wird alles besser:applaus:


Das programmieren fällt mir eigentlich schon leicht, ich konnte "schon" am 2. Tag einen Taschenrechner programmieren :toll:. Nur an diesem Kapitel mit der OOen-programmierung
scheiterts.


----------



## Kababär (30. Dez 2011)

So lange du so optimistisch bleibst wie du jetzt bist, ... 

mfG und gute Nacht


----------

