Brauche Hilfe mit Aufgaben mit dem JavaEditor

bahusha

Mitglied
Hallo,
könntet Ihr mir bitte bei den Aufgaben Helfen mit dem JavaEditor,da ich am Montag eine Klausur darüber schreibe und nicht viel weiß 🙁 Es wäre echt nett,wenn ihr mit bei einpaar Aufgaben helfen könntet,denn ich verstehe garnix. Hier ist eine Probeklausur:

Java:
 class GrafikAnwendung extends Anwendung {
  double x1,y1,x2,y2; boolean MausUnten; int Figur;

  GrafikAnwendung() { super(); Figur=1; }

  void starteFigur() {
    MausUnten=true; x1=m.hPosition(); y1=m.vPosition();
    s.bewegeBis(x1,y1);
    if (Figur==2) s.runter();
  }

  void maleKreis() {
    s.radiere(); s.bewegeBis(x1,y1); s.zeichneKreis(x2-x1);
    x2=m.hPosition(); y2=m.vPosition();
    s.normal(); s.zeichneKreis(x2-x1);
  }

  void maleLinie() {
    s.radiere(); s.bewegeBis(x1,y1);
    x2=m.hPosition(); y2=m.vPosition();
    s.normal(); s.bewegeBis(x2,y2);
  }

  void zeichneFigur() {
    if (Figur==1) maleKreis();
    if (Figur==2) maleLinie();
  }

  void beendeFigur() {
    MausUnten=false; s.hoch();
  }

  void fuehreAus() {
    while (!m.doppelKlick()) {
      if (m.istGedrueckt() && !MausUnten) starteFigur();
      if (m.istGedrueckt() && MausUnten)  zeichneFigur();
      if (!m.istGedrueckt() && MausUnten) beendeFigur();
      if (t.wurdeGedrueckt()) {
        if (t.zeichen()=='r') s.setzeFarbe(Farbe.ROT);
        if (t.zeichen()=='s') s.setzeFarbe(Farbe.SCHWARZ);
        if (t.zeichen()=='k') Figur=1;
        if (t.zeichen()=='l') Figur=2;
        t.weiter();
      }
    }
  }
}
1. Analysiere die Klasse GrafikAnwendung. Was leistet sie? Vergleiche sie mit der Klasse GummibandAnwendung aus dem Unterricht. Erläutere die einzelnen Aufträge.
2. Zeichne eine Grafik, die man mit der GrafikAnwendung erstellen kann und die alle Möglichkeiten darstellen soll.
3. Welche Objekte und Aufträge muss die Klasse Anwendung enthalten, damit die Klasse GrafikAnwendung wie oben definiert werden kann?
4. Was versteht man unter einer abstrakten Klasse?
5. Ergänze die Klasse GrafikAnwendung so, dass man auch Rechtecke zeichnen kann.
6. In der Klasse GrafikAnwendung soll fuehreAus nicht mehr definiert werden. Die Klasse Anwendung soll statt dessen folgenden Auftrag fuehreAus erhalten:
void fuehreAus() {
while (!m.doppelKlick()) {
bearbeiteMausEingaben();
bearbeiteTastaturEingaben();
}
}
Wie müssen die Klassen Anwendung und GrafikAnwendung abgeändert werden, dass der Auftrag fuehreAus so aussehen kann. Die Funktionsweise der GrafikAnwendung soll unverändert bleiben. Notiere die neuen und veränderten Aufträge. Überlege dabei, welche Aufträge abstrakt sein können und welche nicht.
 
Zuletzt bearbeitet:
Ohne eigenen Lösungsvorschlag oder konkretere Fragen zu den einzelnen Fragen aus der Angabe wird man dir wohl nicht helfen.

denn ich verstehe garnix
Das ist natürlich schlecht, wenn du am Montag deine Klausur schreibst... Schau in meine Signatur. Die ersten 7 Videos sind kostenlos, wenn du gar nix verstehst dann bringt dir das vllt schon mal etwas für die Klausur. Wie gesagt, wir helfen dir gerne, aber wir machen keine Hausaufgaben bei denen null Eigeninitiative gezeigt wird. Also versuche es zumindest mal, und teile uns mit welche Probleme du in der Lösung der Aufgaben im Genauen hattest.
 
Zuletzt bearbeitet:
@bahusha
1) verwende code tags
2) der code ist ja fürchterlich, welchem Kreis der Hölle hast du das entrissen? Da verstößt man ja gegen so ziemlich jede Konvention, die es so gibt :autsch:
3) Was erwartest du als Antwort zu sehen? Dass wir das können? Ja, können wir, ich kann dir sogar einen dicken Stapel von Scheinen zeigen, auf den mit Uni-Stempel bestätigt ist, dass ich das kann. Das bringt dich aber nicht weiter, denn ich kann dir nichts in dein Gehirn uploaden. Da musst du dich schon selber durchbeißen (bzw. geht's eigentlich nur darum, dass du lernst, dich selbst durch Stoff durchzubeißen: der Schulstoff an sich ist völlig nutzlos, es geht nur darum, dass man lernt zu lernen)
4) Fang beispielsweise damit an, dass du dich ein bisschen ins Thema einliest: Java Insel finde ich dazu recht empfehlenswert. Lese es selektiv durch, lass dich nicht von der Dicke des Buches abschrecken: hab's damals als fünfzehnjähriger auch überlebt. Du brauchst nur ein paar Kapitel davon.

@hdi
was'n das^^ Schleichwerbung? 😉

PS: omfg, dieser JavaEditor geistert nach so vielen Jahren immer noch herum? :autsch: Können die Leute sich denn nicht einfach damit abfinden, dass kein Mensch diesen Mist braucht? Oder kann das Bildungsministerium dem deutschen Lande nicht einen gefallen tun, und diese Leute irgendwie wegbomben? ;(
 
Zuletzt bearbeitet:
was'n das^^ Schleichwerbung?
Nein, ganz normlae Werbung 😀 Du empfiehlst die Insel, ich empfehle halt was anderes. Zufälligerweise ist das von mir, aber das ist erstmal unabhängig von der Empfehlung. Wenn das zu weit geht lasse ich mich gerne in meine Schranken weise, bisher hat noch niemand etwas gesagt. Ich bring das ja nich in jedem Post, nur wenn es darum geht dass jemand ganz unabhängig vom Topic mal etwas Java-Lektüre braucht, was hier offensichtlich der Fall ist. Ich will ja nur helfen
 
@0x7F800000 Ich kann nichts für den Code,der wurde mir so vorgegeben 😀

Ich habe hier die Aufgaben gelöst,bitte um eine Korrektur,bzw. um ergänzung.

1.)
Beschreibung des Programms:
  • Programm greift auf die Klasse "Anwendung" zu
  • Variablen werden diffeniert
  • Die Maus befindet sich auf dem Bildschirm
  • Bringt die Maus auf ihre Position
  • Der Stift radiert,bringt ihn auf die Richtige Position und malt einen Kreis.
  • Der Stift radiert, und bringt ihn auf die Position und malt eine linie
  • Im "void zeichneFigur" wird abgefragt,ob Figur 1 und Figur 2 aktiv sind und zeichnet einen Kreis und eine Linie
  • Die Maus wird "angehoben" s.hoch();
  • Im void fuehreAus passiert der Auftrag,solange die Maus gedrückt ist,wird die Figur "gestartet" und es wird eine neue Figur gezeichnet. Den Figuren werden Farben gesezt.
  • (und eig. sollte das Programm Stift...freigeben)

2.) Da wird halt ein Kreis gezeichnet und in der Mitte geht eine Linie. (glaub ich)
3.)
Java:
import sum.kern.*;
abstract class Anwendung{
  Bildschirm schirm;
  Maus maus;
  Tastatur taste;
Anwendung (){
    schirm=new Bildschirm();
    maus=new Maus();
    taste=new Tastatur();
  }
abstract void fuehreAus();
void gibFrei(){
     schirm.gibFrei();
     maus.gibFrei();
     taste.gibFrei();
   }
 }

4.)
– Ist zumeist Vaterklasse einer Klassenhierarchie
– Gibt die Signatur für abstrakte Methoden vor
• Alle von ihr abgeleiteten Klassen müssen diese Methoden implementieren
• Nicht abstrakte Methoden können schon implementiert sein
– Von einer abstrakten Klasse können keine Instanzen erzeugt
werden
– In Java: abstract class AbstrakteKlasse{...}

5.) Hier hab ich mal das ganze Programm hingeschrieben. ICh weiß nicht,ob es richtig ist 🙂

Java:
 import sum.kern.*;
abstract class Anwendung{
  Buntstift stift;
  Bildschirm schirm;
  Maus maus;
  Tastatur taste;
Anwendung (){
    stift=new Buntstift();
    schirm=new Bildschirm();
    maus=new Maus();
    taste=new Tastatur();
  }
abstract void fuehreAus();
void gibFrei(){
     stift.gibFrei();
     schirm.gibFrei();
     maus.gibFrei();
     taste.gibFrei();
   }
 }
class GrafikAnwendung extends Anwendung{
  int x1,x2,y1,y2; boolean MausUnten; int Figur;
 // Buntstift stift;
  GrafikAnwendung(){
    super(); Figur=1; }
    //stift=new Buntstift();
    //stift.runter();
  void starteFigur(){
    MausUnten=true; x1=maus.hPosition(); y1=maus.vPosition();
    stift.bewegeBis(x1,y1);
    if (Figur==2)stift.runter();
  }
  void zeichneKreis(){
    stift.radiere();
    stift.bewegeBis(x1,y1);
    stift.zeichneKreis(x2-x1);
    x2=maus.hPosition();
    y2=maus.vPosition();
    stift.normal();
    stift.zeichneKreis(x2-x1);
  }
    void zeichneRechteck(){
    stift.radiere();
    stift.bewegeBis(x1,y1);
    stift.zeichneRechteck(x2-x1,y2-y1);
    x2=maus.hPosition();
    y2=maus.vPosition();
    stift.normal();
    stift.zeichneRechteck(x2-x1,y2-y1);
  }
  void zeichneLinie(){
    stift.radiere();
    stift.bewegeBis(x1,y1);
    x2=maus.hPosition();
    y2=maus.vPosition();
    stift.normal();
    stift.bewegeBis(x2,y2);
  }
  void zeichneFigur(){
    if(Figur==1) zeichneKreis();
    if(Figur==2) zeichneLinie();
    if(Figur==3) zeichneRechteck();
  }
  void beendeFigur(){
    MausUnten=false; stift.hoch();
  }
  void fuehreAus(){
    do{
      if (maus.istGedrueckt()&& !MausUnten)starteFigur();
      if(maus.istGedrueckt()&&MausUnten)zeichneFigur();
      if(!maus.istGedrueckt()&&MausUnten)zeichneFigur();
      if(taste.wurdeGedrueckt()){
        if(taste.zeichen()=='r') stift.setzeFarbe(Farbe.ROT);
        if(taste.zeichen()=='s') stift.setzeFarbe(Farbe.SCHWARZ);
        if(taste.zeichen()=='k') Figur=1;
        if(taste.zeichen()=='l') Figur=2;
        if(taste.zeichen()=='e') Figur=3;
        taste.weiter();
      }
    }while (!maus.doppelKlick());
  }
  void gibFrei(){
    super.gibFrei();
    //stift.gibFrei();
  }
}
public class Grafik{
  public static void main(String[]w) {
    GrafikAnwendung grafikzeichnen;
    grafikzeichnen=new GrafikAnwendung();
    grafikzeichnen.fuehreAus();
    grafikzeichnen.gibFrei();
  }
}

6. Da hab ich überhaupt ka 🙁
 
Es ist schwer zu sagen, was da passiert, wenn man "Anwendung" nicht kennt. Ich sehe da nur ein paar Methodenaufrufe und Zuweisungen, aber z.b.
Java:
void starteFigur() {
    MausUnten=true; x1=m.hPosition(); y1=m.vPosition();
    s.bewegeBis(x1,y1);
    if (Figur==2) s.runter();
  }
sagt mir nicht wirklich viel, denn ich habe keine Ahnung was "MausUnten" bedeuten soll (semantisch), woher "m" kommt und wie dann das ergebnis dargestellt wird. Im besten Falle kann ich da nur raten, was dir allerdings nichts bringt.

Was allerdings deine Erklärung zu 4) angeht, die Beschreibung sollte so passen.
 
Hi,

wenn du möchtest, dass man dir die Aufgaben löst, dann schreibe mir bitte eine pm. Aber das ist hier ja wohl nicht nötig.

1) Wird wohl so nicht falsch sein, aber ich glaube der Lehrer möchte wissen, was man mit der Klasse machen kann. Also welche Funktionen werden hier zu verfügung gestellt. (Aufträge) nennt ihr das und davon hast du afaik nix gemacht.

2) Könnte ich mir vorstelen. Um sicher zu gehen brauchst du das Programm nur auszuführen.

3) Hast du mit einer Klasse Anwendung beantwortet. Ist das klug? Davon steht nix in der Anwendung. Ich würde eher die Attriubute der Klasse aufzählen die verwendet aber nicht deklariert werden.

4) Prinzipiell richtig. Man würde hier eien Definition erwarten.

5) KA.... Aber führe das Program aus, dann siehst du ob du ein Rechteck bekommst.

6) Würde ich jetzt auch so machen.
 
Öhm zu 6 würde ich sagen, dass die Aufgabe ist, die Methode nicht mehr von der erbenden Klasse überschreiben zu lassen, sondern die Methode in der Parent-Klasse (Anwendung) so zu implementieren, wie es ind er Aufgabe steht. Ob das Sinn macht, muss man schauen, habe mir die Methode nicht angeschaut, nur die Aufgabe gelesen 😉
 

Zurück
Oben