# Ich steige da nicht durch!



## Hier! (27. Nov 2005)

http://wwwcs.upb.de/cs/ag-wehrheim/vorlesungen/ws05/gp/uebung/b5.pdf


könnte sich da bitte jemand mal die aufgabe 3 angucken und mir ein beispiel schicken!?

ich steige da nicht durch!


mfg
Ivo


----------



## Roar (27. Nov 2005)

lol, klar... 1 tag vor abgabetermin fängst du mal an dich damit zu beschäftigen und hoffst einfach mal darauf dass hier leute sind die nix anderes zu tun haben als hausaufgaben zu lösen? 
*verschoben*


----------



## Hier! (27. Nov 2005)

Ne nicht ganz, ich habe mich schon länger damit beschäftigt, aber aufgabe 3 ist für mich ein buch mit 7 Siegeln!


----------



## Roar (27. Nov 2005)

da wirst doch wohl schon einen ansatz haben, oder? zumindest aufgabe a) sollte lösbar sein. wenn du allerdings nie an den vorlesungen teilgenommen hast, hastdu sicher ein problem


----------



## André Uhres (27. Nov 2005)

:meld: 





> ...Objekte vom Typ Punkt (bekannt aus der Vorlesung)...


Ich war leider bei der Vorlesung auch nicht dabei, so ein Mist  :bae:


----------



## Hier! (27. Nov 2005)

Doch ich war da... und a war nicht das problem... nur wie kann ich (siehe aufgabe b)) 2 Rechtecke vergleichen wenn nur eins übergeben wird....??


----------



## lin (27. Nov 2005)

lol ^^ :wink: 

Hmm.. Ich halte es nicht für sinnvoll dir die Aufgabe hier vorzulösen, dabei lernst du nix. Also fange mal an zu coden und wenn du ein konkretes Problem hast, postest dus hier. Wenn du wirklich gar keine Ahnung hast, wie du anfangen musst, njaa, dann besuch die Vorlesungen öfter :wink: oder schreib wenigstens was du dir bereits überlegt hast, dann wird dir hier auf geholfen.


----------



## Illuvatar (27. Nov 2005)

Ich verstehe das mal so, dass das eine Membermethode (heißt das so?) sein soll, und das übergebene Objekt mit dem Objekt vergleicht, zu dem die Methode gehört (also this)


----------



## Hier! (27. Nov 2005)

```
class RechteckTest {
    
    public static void main (String [] args){
        
        Punkt a = new Punkt (1,2);
        Punkt b = new Punkt (3,4);
        
        Rechteck (Punkt a.getX(), Punkt a.getY(), Punkt b.getX(), Punkt b.getY());
    }
}
```

Da gibt er mir schon eine kompilierungsfehler.... aber eigentlich übergebe ich doch hier nur die koorinaten der 2 Punkte... was ist dran falsch? ich habe auch schon versucht statt  "Rechteck (Punkt a.getX(), Punkt a.getY(), Punkt b.getX(), Punkt b.getY());"  "Rechteck (int a.getX(), int a.getY(), int b.getX(), int b.getY());" zu schreiben... ging auch nicht... wir kann ich denn die werte übergeben?! die sollen ja vom Typ Punkt sein!....


----------



## Guest (27. Nov 2005)

Ich hatte das vorher anders gelöst. da meinte aber ein Kollege das würde so nicht richtig sein.


```
class RechteckTest {
    
    public static void main (String [] args){
        
        Punkt a = new Punkt (1,2);
        Punkt b = new Punkt (3,4);
        int x1 = a.getX();
        int y1 = a.getY();
        int x2 = b.getX();
        int y2 = b.getY();
        
        Rechteck (int x1, int y1, int x2, int y2);
    }
}
```

Er meinte werden die 2 Objekte vom Typ Punkt nicht an den Konstruktor übergeben.....


----------



## hier! (27. Nov 2005)

oh ich glaub ich hab den fehler.....


----------



## Campino (27. Nov 2005)

Seit ihr irre??

Also:

den Datentyp muss man nur angeben, wenn man die Methode dekliniert:


```
public void Rechteck(Punkt a, Punkt b){
    //Methodenkram
}
```

aufgerufen wird ds dann mit


```
Punkt a=new Punkt();
Punkt b=new Punkt();
Rechteck(a, b);
```

vielleicht solltet ihr mal ein Grundlagenbuch über Java lesen...


----------



## Hier (27. Nov 2005)

genau das hatte ich auch gedacht...



```
class RechteckTest {
    
    public static void main (String [] args){
        
        Punkt a = new Punkt (1,2);
        Punkt b = new Punkt (3,4);
        
        Rechteck r1 = new Rechteck (a, b);
        System.out.println(r1.berechneFlaeche());
    }
}
```



```
class Rechteck {

    
    int x1, y1; //Koordinaten des Punktes a
    int x2, y2; //Koordinaten des Punktes b
    int seiteA = Math.abs(x1-x2);
    int seiteB = Math.abs(y1-y2);
    
    public Rechteck(Punkt a, Punkt b){       // Konstruktor Rechteck
        int x1 = a.getX();
        int y1 = a.getY();
        int x2 = b.getX();
        int y2 = b.getY();
    }
    
    int berechneFlaeche(){
        int flaeche = (seiteA * seiteB);
        return flaeche;
    }
   
}
```


Komischerweise ist die ausgabe 0? wo liegt der fehler


----------



## Oni (27. Nov 2005)

du legst die variablen doppelt an. 

greif im konstruktor mit z.B. this.x1  darauf zu


----------



## Beni (27. Nov 2005)

Nicht nur das doppelt anlegen ist ein Problem, auch werden die Seiten berechnet, _bevor_ der Konstruktor aufgerufen wird. Die "Math.abs" müssen im Konstruktor stehen, _nachdem_ den x1, ... ihre Werte zugewiesen wurden.


----------



## Hier (27. Nov 2005)

Ich denke mal ich habe das relativ gut gelöst....

nur jetzt scheck ich das bei aufgaben teil b nicht?! wie kann man nur ein Rechteck übergeben und dann mit deinem anderen vergleichen?!

Zwischenstand:

```
class RechteckTest {
    
    public static void main (String [] args){
        
        Punkt a = new Punkt (6,2);
        Punkt b = new Punkt (3,9);
        
        Rechteck r1 = new Rechteck (a, b);
        r1.berechneFlaeche();
        r1.berechneUmfang();
        r1.kurzeSeite();
    }
}
```


```
class Rechteck {
    
    int x1, y1; //Koordinaten des Punktes a
    int x2, y2; //Koordinaten des Punktes b
    int seiteA, seiteB; //Seitenlaengen a und b
    
    public Rechteck(Punkt a, Punkt b){       // Konstruktor Rechteck
        this.x1 = a.getX();
        this.y1 = a.getY();
        this.x2 = b.getX();
        this.y2 = b.getY();
        this.seiteA = Math.abs(x1-x2); //Seitenlaenge a
        this.seiteB = Math.abs(y1-y2); //Seitenlaenge b
    }

    //Berechnung der Flaeche
    void berechneFlaeche(){
        int flaeche = (seiteA*seiteB);
        System.out.println ("Die Flaeche hat den Wert: " + flaeche);
    }
    
    //Berechnung des Umfangs
    void berechneUmfang(){
        int umfang = 2*(seiteA+seiteB);
        System.out.println ("Der Umfgang hat den Wert: " + umfang);
    }
    
    //Berechnung der kuerzeren Seite
    void kurzeSeite(){
        int kuerzer = (seiteA-seiteB);
        if (kuerzer == 0){
            System.out.println("Die Seiten sind gleich lang");
        }
        else{
            if (kuerzer > 0){
                System.out.println("Seite B ist die kuerzere Seite");
            }
            else{
                System.out.println("Seite A ist die kuerzere Seite");
            }
        }
    }
    
    
}
```


----------



## Hier! (27. Nov 2005)

Also die genaue aufgaben stellung lautete:

Erweitern Sie die Klasse aus a) um Methoden gleicherFlächeninhalt() und gleicherUmfang(), die, bei (einem!) übergebenen Rechteck genau dann true zurück geben, wenn der Flächeninhalt bzw. der Umfang der betrachteten Rechtecke gleich ist. Testen Sie das mit den Rechtecken a=5/b=5 und a=7/b=3 sowie a=3/b=8 und a=4/b=6.


----------



## Hier! (27. Nov 2005)

Weiss keiner wie das gehen soll?!

wenn ich nicht langsam erfahre wie das gemeint ist mit der Übergabe von einem Rechteck werd ich das bis morgen nie schaffen.

MfG
Ivo


----------



## Beni (27. Nov 2005)

Sowas in die Richtung:

```
public class Rechteck{
  public boolean gleicherInhalt( Rechteck other ){
     // da musst du halt die Methoden aufrufen
     return this.fläche == other.fläche;
  }
}
```


----------



## Hier! (27. Nov 2005)

Hmmm und wie bekomm ich other.flaeche!?!??!?


könntest du mir da ein kleines beispiel geben?! bzw einfach mal reinbauen in mein programm? ich versteh das irgendwie nicht.


----------



## Beni (27. Nov 2005)

```
other.berechneFläche()
```
...


----------



## Guest (27. Nov 2005)

ach gibt es other.xxxx als einfache anweisung, vordefiniert?!?! aber dann macht es mit der aufgabenstellung keinen sinn


----------



## Oni (27. Nov 2005)

nein other = ein anderes rechteck.


in etwa so:

```
class RechteckTest {
   
    public static void main (String [] args){
       
        Punkt a = new Punkt (6,2);
        Punkt b = new Punkt (3,9);
       
        Rechteck r1 = new Rechteck (a, b);       
        
         Rechteck r2 = new Rechteck (a, b);

         if(r1.berechneFlaeche() == r2.berechneFlaeche()){
            System.out.println("Sind gleich...");
         }
    }
```


----------



## Hier! (27. Nov 2005)

aber dann werden doch 2 rechtecke übergeben... in der aufgabe steht aber dass nur eins übergeben werden soll


----------



## Hier (27. Nov 2005)

Desweiteren sollen doch Methoden dafür angelegt werden.


----------



## Soulfly (27. Nov 2005)

Man man, so nu schau!


```
public class Rechteck
{

 ...

    public boolean gleicherInhaltWie( Rechteck other )
    {
        // da musst du halt die Methoden aufrufen
        return this.berechneFläche() == other.berechneFläche();
    } 

}
```



```
public class Programm
{

 ...

   public static void main(String[] args)
  {
       Rechteck r1 = new Rechteck(blaPara);
       Rechteck r2 = new Rechteck(blaPara);

      if(r1.gleicherInhaltWie(r2))
          System.out.println("Inhalte sind gleich");
   }
}
```

Erklärung, obwohl selbsterklärend, wenn man eine OOP-Vorlesung mitgemacht hat.
Die Rechecke besitzen beide die Funktion berechneFläche(). Klar! "other" ist ein Rechteck,
das mit den aktuellen Rechteck, dessen Funktion aufgerufen wird, verglichen wird.
die Punkt-Notation (other.berechneFläche) bedeutet, dass du eine Funktion von dem Objekt aufrufst.

Das solls gewesen sein!

MfG
Soulfly


----------



## Hier! (27. Nov 2005)

Ich bin anscheinend schwer von Kape!? wie kommt ihr an das other?!

ich bin glaub ich zu dämlich zum studieren


----------



## Bastian (27. Nov 2005)

Hier! hat gesagt.:
			
		

> Ich bin anscheinend schwer von Kape!? wie kommt ihr an das other?!
> 
> ich bin glaub ich zu dämlich zum studieren





```
public class Rechteck
{

...

    public boolean gleicherInhaltWie( Rechteck other )
    {
        // da musst du halt die Methoden aufrufen
        return this.berechneFläche() == other.berechneFläche();
    }

}
```

 public boolean gleicherInhaltWie( Rechteck other ) <- da, in den klammern stehts drin.
rufst du diese methode auf übergibst du die werte halt auch in den klammern...... (so, jetzt absolut ohne fachbegriffe erklärt...)


----------



## Campino (27. Nov 2005)

www.galileocomputing.de/openbook/javainsel5/javainsel03_000.htm#Rxx747java03000040000DE1F027100

Für alle, die in den Vorlesungen geschlafen haben )
da steht alles, was du für diese Aufgabe wissen musst...


----------



## Bastian (27. Nov 2005)

oder wer es etwas anders (und für manche evtl. verständlicher, da eingentlich keine vorraussetzungen, außer lesen zu können  verlangt sind) erklärt haben möchte, kann sich hier ein handout zu einem vortrag laden, den ich mal gehalten habe:
http://bsc.bs.funpic.de/vortraege/


----------



## Hier! (28. Nov 2005)

hi,

kann mir jetzt noch einer verraten wie ich überprüfen kann ob sich die beiden quadrate schneiden!?!


----------



## KSG9|sebastian (28. Nov 2005)

Oh..langsam reicht es, dir wurden schon ein paar Aufgaben komplett mit Code gelöst, jetzt ist es an der Zeit mal ein bissl selber nachzudenken.

So schwer wird das doch wohl net sein, sofern du in Mathe ab und an mal anwesend warst. 

Zudem ist es imho quatsch, zu überprüfen, ob sich 2 Quadrate schneiden. Bei Geraden würde das Sinn machen, oder eben im 3D-Raum mit Ebenen...


----------



## Hier (28. Nov 2005)

Oh mister "ich muss mich aufspielen und bin pseudo wichtig".

Sorry musste ich mal loswerden. Entschuldige bitte dass ich nicht so ein Genie bin wie du... und btw. ich habs auch so gelöst. Achja und man sollte es einfach überprüfen (siehe aufgabe)!!!


----------



## Hier (28. Nov 2005)

Naja, und "ein paar aufgaben" ist ein wenig übertrieben... es war ziemlich genau eine...


----------



## Campino (28. Nov 2005)

Hier: er hat aber ein bisschen recht..einige Deiner Fragen, der Fehler in denen Codes waren so Anfänger-like (<-sehr lieb ausgedrückt...) das ich mich frage ob du jemals in irgendeinem Buch über Java gelesen hast...


----------



## Hier (28. Nov 2005)

Ja hi,

sagen wir es mal so.. ich lerne java seid zwei/drei woche und bin in sowas nicht unbedingt begabt, gebe ich ja zu. Naja und das buch von BOL was ich mir bestellt habe war fehlgebunden und ich warte nun seid auf das erstatz exemplar.

daher meine "anfänger" fragen hier im forum.

Und ich bin nun mal anfänger und jeder anfang ist schwer!


----------



## L-ectron-X (28. Nov 2005)

Dann lies doch so lange bis dein Ersatzexemplar kommt ein anderes gutes Buch.
http://www.galileocomputing.de/openbook/javainsel5/


----------



## Hier (28. Nov 2005)

Super, danke für den Tipp ich schaus mir mal an!


----------

