# Klasse Rechteck definieren



## fiber (4. Nov 2014)

Hallo nochmal.
Ich befasse mich noch mit den Grundlagen von Java ( "java lernen mit BlueJ").
dort ist eine Aufgabe, da weiss ich nicht so genau, was man von mir erwartet, Habe einen Ansatz(?)

Schreiben Sie Java-Anweisungen, die eine Variable *fenster* vom Typ *Rechteck* definieren, anschließend ein *Rechteck*-Objekt erzeugend es dann dieser Variable zuweisen. Der Konstruktor der Klasse *Rechteck* hat zwei *int*-Parameter.


```
public Rechteck(int a, int b)
    {
        this.a = a;
        this.b = b;      
    }
    
    public Rechteck fesnter()
    {
        fenster = new Rechteck();
        fenster.a();
        fenster.b();
    }
```


----------



## Flown (4. Nov 2014)

Ich habe das jetzt mal in einen neuen Thread geschoben, da das Thema nicht zu dem anderen passt.

Aber zu deiner Frage:

Deine Aufgabe ist es eine Variable zu erstellen die fenster heißt und vom Typ Rechteck ist (mit dem Konstruktor passt das schon mal). 


```
Rechteck fenster = new Rechteck(10, 10);
```

Aber deine Methoden a(), b() sollten besser heißen getA() und getB(). Aber noch besser wäre, wenn du a und b gleich in width und height umbenennst und die getter getWidth() getHeight().


----------



## fiber (4. Nov 2014)

so ungefähr?:

```
public class Rechteck
{
    private int width;
    private int height;
    
    public Rechteck(int width, int height)
    {
        this.width = width;
        this.height = height;      
    }
    
    public Rechteck fesnter()
    {
        fenster = new Rechteck();
        fenster.getWidth();
        fenster.getHeigth();
    }
}
```


----------



## fiber (4. Nov 2014)

Sorry, das hier ist die Aktuelle code:


```
public class Rechteck
{
    private int width;
    private int height;
    
    private Rechteck fenster; 
    
    public Rechteck(int width, int height)
    {
        this.width = width;
        this.height = height;
    }
    
    public Rechteck fesnter()
    {
        fenster = new Rechteck();
        fenster.getWidth();
        fenster.getHeigth();
    }
}
```


----------



## Flown (4. Nov 2014)

Was hälst du an deiner Methode fenster so fest?

Ich hab dir erklärt, dass du eine *Variable* die fenster heißt deklarierst:

```
Rechteck fenster;
```

Dann ist die Aufgabenstellung du sollst den Konstruktor aufrufen und das neue Objekt deiner Variable zuweisen!


```
fenster = new Rechteck(10, 10);
```


----------



## fiber (4. Nov 2014)

OK. Poste es dann gleich.


----------



## fiber (4. Nov 2014)

BlueJ ist echt Kompliziert..
Ich komm gerade echt nicht weiter.

Variable deklarieren ist mir klar.
-Rechteck fenster;
Konstruktor mit zwei int Parameter ist auch klar.
-     public Rechteck fesnter()
    {
        fenster = new Rechteck();
        fenster.getWidth();
        fenster.getHeigth();
    }

zuweisen der variable ist mir jetzt auch klar.
-fenster = new Rechteck (10, 10)

Bei mir hakt es halt am BLUEJ selbst.es setzt sehr viel Detail voraus. Ich weiss nicht ,wo ich das alles reinschreiben soll. also wie weit ich in der Rechteck Klasse den code implementieren soll bzw in der anderen Klasse. normalerweise brauche ich doch eine weitere Klasse, um den Konstruktor aufzurufen, oder nicht? würde gerne mit netBeans programmieren aber meine Klausur muss ich mit BlueJ schreiben.


----------



## fiber (4. Nov 2014)

so also ich habe noch mal versucht. und habe zwei Klassen erstellt. einmal Rechteck Klasse:


```
public class Rechteck
{
    private int width;
    private int height;

    public Rechteck(int width, int height)
    {
        this.width = width;
        this.height = height;
    }
}
```
und noch eine Fenster Klasse um den Konstruktor aus der Klasse Rechteck aufzurufen:


```
public class Fenster
{
    private Rechteck fenster;
    
    public Fenster()
    {
        fenster = new Rechteck(20, 30);
    }
}
```


----------



## Flown (4. Nov 2014)

Also wenn du es in BlueJ machen musst, dann richtig:



Spoiler: Erstellen von Objekten



Anhang anzeigen 7031





Spoiler: Erstellen eines Objekts #2



Anhang anzeigen 7032





Spoiler: Erstelltes Objekt und Methoden



Anhang anzeigen 7033



Rechteck:

```
public class Rechteck {
    private int width, height;
    
    public Rechteck(int width, int height) {
        this.width = width;
        this.height = height;
    }
    
    public int getHeight() {
        return height;
    }
    
    public void setHeight(int height) {
        this.height = height;
    }
    
    public int getWidth() {
        return width;
    }
    
    public void setWidth(int width) {
        this.width = width;
    }
}
```

Schreib immer deinen Code in 
	
	
	
	





```
-Tags
```


----------



## fiber (4. Nov 2014)

Die Methoden sind kein Problem. Besten Dank nochmal für die Hilfe und Geduld.
Methoden aufrufen kann ich auch bereits. Ist denn meine Lösung zu der Aufgabenstellung soweit ok?


----------



## Flown (4. Nov 2014)

Ja wenn du deine getter und setter noch dazuschreibst, dann würde ich das so gelten lassen.


----------



## fiber (4. Nov 2014)

ich weiss nicht wie ich die setter-Methoden aufrufen kann. setter-Methoden müssen doch deklariert und initialisiert werden oder?


```
public class Rechteck
{
    private int width;
    private int height;

    public Rechteck(int width, int height)
    {
        this.width = width;
        this.height = height;
    }
    
    public void setWidth(int width)
    {
        this.width = width;
    }
    
    public int getWidth()
    {
        return width;
    }
    
    public void setHeight(int height)
    {
        this.height = height;
    }
    
    public int getHeight()
    {
        return height;
    }
}
```


```
public class Fenster
{
    private Rechteck fenster;

    public Fenster()
    {
        fenster = new Rechteck(20, 30);
    }

    public void gibHoehe()
    {
        fenster.getHeight();
    }
    
    public void gibBreite()
    {
        fenster.getWidth();
    }
}
```


----------



## Flown (4. Nov 2014)

Ich glaube du hast was falsch verstanden. Variablen müssen deklariert und initialisert werden. Methoden sind Klassen/Objekt-Eigenschaften. Je nachdem ob sie static (eine Klassenmethode) oder eine Objekt-Methode (je nach Sichtbarkeit) ist, kann sie mit der Klasse oder mit dem instanzierten Objekt aufgerufen werden.


```
public class Test {
  public static void main(String... args) {
    Rechteck eck = new Rechteck(10, 10);
    System.out.println(eck.getWidth());
    eck.setWidth(20);
    System.out.println(eck.getWidth());
  }
}
```


----------



## fiber (4. Nov 2014)

Ah so! ja das stimmt allerdings.
laut drittes Kapitel müsste ich die Aufgaben eigentlich lösen können. ich habe die Kapiteln 1 und 2 gut verstanden und die Aufgaben ohne Probleme lösen können.Keine Ahnung warum es hakt.Aber die Aufgabenstellung erwartet ja keine Methodenaufrufe.


----------



## fiber (4. Nov 2014)

Noch eine Frage. Warum ist die die Zeile 4 und Zeile 6 identisch? muss das so implementiert werden?


----------



## Flown (4. Nov 2014)

Von meinem Beispielcode?

Damit man sieht, dass sich etwas geändert hat auf der Konsole. Kein normaler Mensch programmiert mit BlueJ, sondern nimmt was anständiges. Diese bieten nur Konsolenausgaben.


----------



## fiber (4. Nov 2014)

Ah ok.
die Uni setzt es halt voraus im 1.sem.


----------



## fiber (7. Nov 2014)

Eine andere Frage, wie kann ich am besten Java lernen?


----------



## Flown (7. Nov 2014)

Naja du kannst es mit einem Buch lernen. Mit den offiziellen Java-Tutorials von Oracle oder Videotutorials. Hängt von deinem Lernstil ab. Aber am wichtigsten ist üben, üben, ... .

Aber es gibt hier genug Threads im Forum die dieses Thema schon unzählige male behandelt haben.


----------



## fiber (7. Nov 2014)

Ja das stimmt schon, bei programmieren muss man selber Aktiv werden und üben, üben, üben und natürlich Tutorials sind auch sehr hilfreich. Aber meine Frage ist eher mit welchem Buch, ob da vielleicht was Empfehlenswertes an Büchern gibt?
das Buch von BlueJ... da fehlen mir die Worte. je höher der Schwierigkeitsgrad wird, desto unverständlicher wird die Sprache.


----------



## Saheeda (7. Nov 2014)

@fiber
Die Frage nach Literatur taucht hier auch alle paar Tage auf, einfach mal suchen.


----------



## fiber (7. Nov 2014)

Dankeschön.


----------

