Sitzung: Jeden Freitag in der Vorlesungszeit ab 16 Uhr c. t. im MAR 0.005. In der vorlesungsfreien Zeit unregelmäßig (Jemensch da?). Macht mit!

Javakurs/Übungsaufgaben/Canvas: Unterschied zwischen den Versionen

(Kommentarbereich)
Zeile 1: Zeile 1:
In dieser Aufgabe sollt Ihr eine Representation einer dreidimensionalen Maloberfläche implementieren, die verschiedene geometrische Figuren wie Kugeln, Punkte, Geraden oder Würfel enthalten kann.
+
In dieser Aufgabe sollt Ihr eine Repräsentation einer dreidimensionalen Maloberfläche implementieren, die verschiedene geometrische Figuren wie Kugeln, Punkte, Geraden oder Würfel enthalten kann.
  
 
Beachtet bitte, dass diese Aufgabe ziemlich umfangreich ist und daher viele mögliche Fehlerquellen enthält. Fragt daher bei jedem auftauchenden Problem einen Tutor um Hilfe, da sich mögliche Fehler sonst bis zum Schluss durchziehen könnten.
 
Beachtet bitte, dass diese Aufgabe ziemlich umfangreich ist und daher viele mögliche Fehlerquellen enthält. Fragt daher bei jedem auftauchenden Problem einen Tutor um Hilfe, da sich mögliche Fehler sonst bis zum Schluss durchziehen könnten.
  
'''Hinweis''': Testet jede Eurer geschriebenen Methoden am besten sobald Ihr sie geschrieben habt, um mögliche Fehler frühzeitig zu finden.
+
'''Hinweis''': Testet jede Eurer geschriebenen Methoden am besten, sobald Ihr sie geschrieben habt, um mögliche Fehler frühzeitig zu finden.
  
 
== 3D-Punkt==
 
== 3D-Punkt==
  
  
Erstellt die Klasse Point3D, die die Representation eines Punktes im dreidimensionalen Punktes darstellt.
+
Erstellt die Klasse Point3D, die die Repräsentation eines Punktes im dreidimensionalen Punktes darstellt.
  
 
Die Klasse soll folgende Daten, Methoden und Funktionen haben:
 
Die Klasse soll folgende Daten, Methoden und Funktionen haben:
  
 
# private Variablen für x-, y- und z-Koordinaten
 
# private Variablen für x-, y- und z-Koordinaten
# einen Constructor, der Initialisierungswerte für x,y und z bekommt
+
# einen Konstruktor, der Initialisierungswerte für x, y und z bekommt
# eine toString(), die den Punkt so darstellt: "(3, 2, 1)"
+
# eine Methode toString(), die den Punkt so darstellt: "(3, 2, 1)"
 
#* Tipp: Spätestens jetzt sollte ein erster Test des bisher Geschriebenen erfolgen.
 
#* Tipp: Spätestens jetzt sollte ein erster Test des bisher Geschriebenen erfolgen.
 
# eine Methode changeCoordinates, die eine nachträgliche Anpassung der Koordinaten ermöglicht.
 
# eine Methode changeCoordinates, die eine nachträgliche Anpassung der Koordinaten ermöglicht.
# eine Funktion calcDistance, die den Abstand des Punktes zu einem zweiten berechnet
+
# eine Methode calcDistance, die den Abstand des Punktes zu einem zweiten berechnet
#* Tipp: Entscheidet, ob die Distanz exakt (float) und grob (int) berechnen wollte. In beiden Fällen könnt Ihr unter [http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Math.html java.lang.Math] Nützliches finden.
+
#* Tipp: Entscheidet, ob die Distanz exakt (float) und grob (int) berechnet werden soll. In beiden Fällen könnt Ihr unter [http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Math.html java.lang.Math] Nützliches finden.
  
  
Zeile 30: Zeile 30:
 
# private Variablen für Ursprung (Point3D) und Radius
 
# private Variablen für Ursprung (Point3D) und Radius
 
# Methoden zum Ändern und Initialisieren dieser Werte
 
# Methoden zum Ändern und Initialisieren dieser Werte
# eine toString mit passender Visualisierung
+
# eine Methode toString mit passender Visualisierung
 
#* Tipp: Heute schon getestet? ;-)
 
#* Tipp: Heute schon getestet? ;-)
 
# zwei Funktionen, die Volumen und Oberfläche der Kugel berechnen
 
# zwei Funktionen, die Volumen und Oberfläche der Kugel berechnen
Zeile 39: Zeile 39:
  
  
Orientiert Euch an Sphere und Point 3D und schreibt Klassen für weitere Figuren, wie z.B. Würfel, Zylinder oder Kegel.
+
Orientiert Euch an Sphere und Point3D und schreibt Klassen für weitere Figuren, wie z.B. Würfel, Zylinder oder Kegel.
  
  
Zeile 47: Zeile 47:
 
Schreibt eine Klasse Canvas, die  
 
Schreibt eine Klasse Canvas, die  
  
# durch ein parameterlosen Constructor erzeugt wird.
+
# durch ein parameterlosen Konstruktor erzeugt wird.
# ein Array für jede Sorte von geometrischer Figur besitzt
+
# ein Array für jede Sorte von geometrischer Figur besitzt.
 
#* Tipp: Macht Euch Gedanken wie Ihr ein über- oder unterlaufen des Arrays verhindern und abfangen könnt.
 
#* Tipp: Macht Euch Gedanken wie Ihr ein über- oder unterlaufen des Arrays verhindern und abfangen könnt.
# durch entsprechende Methoden Figuren jeder Sorte einzeln hinzufügen und löschen kann
+
# durch entsprechende Methoden Figuren jeder Sorte einzeln hinzufügen und löschen kann.
# eine Methode zu Berechnung des Gesamtvolumens und der Gesamtoberfläche hat
+
# eine Methode zu Berechnung des Gesamtvolumens und der Gesamtoberfläche hat.
# als toString eine Liste aller Figuren und andere relevante Infos ausgibt
+
# als toString() eine Liste aller Figuren und andere relevante Infos ausgibt.
  
  
Zeile 86: Zeile 86:
  
 
== Kommentare ==
 
== Kommentare ==
Wenn du Anmerkungen zur Aufgabe hast oder Lob und Kritik loswerden möchtest ist hier die richtige Stelle dafür. Klicke einfach ganz rechts auf "bearbeiten" und schreibe deinen Kommentar direkt ins Wiki. Keine Scheu, es geht nichts kaputt ;)
+
Wenn du Anmerkungen zur Aufgabe hast oder Lob und Kritik loswerden möchtest, ist hier die richtige Stelle dafür. Klicke einfach ganz rechts auf "bearbeiten" und schreibe deinen Kommentar direkt ins Wiki. Keine Scheu, es geht nichts kaputt ;)
  
 
<!--
 
<!--
Als kleine Starthilfe folgt ein Beispiel wie so ein Kommentar formatiert sein könnte. Mit "Vorschau zeigen" kannst du dir ansehen was deine Änderung bewirken würde, ohne wirklich etwas zu ändern.
+
Als kleine Starthilfe folgt ein Beispiel, wie so ein Kommentar formatiert sein könnte. Mit "Vorschau zeigen" kannst du dir ansehen, was deine Änderung bewirken würde, ohne wirklich etwas zu ändern.
 
Du musst übrigens außerhalb dieses auskommentieren Bereichs schreiben ;)
 
Du musst übrigens außerhalb dieses auskommentieren Bereichs schreiben ;)
  
 
==== Robert ====
 
==== Robert ====
Na mal schaun ob irgend jemand diese Funktion wirklich benutzt. Ich fände es jedenfalls toll.
+
Na mal schauen, ob irgendjemand diese Funktion wirklich benutzt. Ich fände es jedenfalls toll.
 
-->
 
-->

Version vom 11. April 2007, 12:28 Uhr

In dieser Aufgabe sollt Ihr eine Repräsentation einer dreidimensionalen Maloberfläche implementieren, die verschiedene geometrische Figuren wie Kugeln, Punkte, Geraden oder Würfel enthalten kann.

Beachtet bitte, dass diese Aufgabe ziemlich umfangreich ist und daher viele mögliche Fehlerquellen enthält. Fragt daher bei jedem auftauchenden Problem einen Tutor um Hilfe, da sich mögliche Fehler sonst bis zum Schluss durchziehen könnten.

Hinweis: Testet jede Eurer geschriebenen Methoden am besten, sobald Ihr sie geschrieben habt, um mögliche Fehler frühzeitig zu finden.

3D-Punkt

Erstellt die Klasse Point3D, die die Repräsentation eines Punktes im dreidimensionalen Punktes darstellt.

Die Klasse soll folgende Daten, Methoden und Funktionen haben:

  1. private Variablen für x-, y- und z-Koordinaten
  2. einen Konstruktor, der Initialisierungswerte für x, y und z bekommt
  3. eine Methode toString(), die den Punkt so darstellt: "(3, 2, 1)"
    • Tipp: Spätestens jetzt sollte ein erster Test des bisher Geschriebenen erfolgen.
  4. eine Methode changeCoordinates, die eine nachträgliche Anpassung der Koordinaten ermöglicht.
  5. eine Methode calcDistance, die den Abstand des Punktes zu einem zweiten berechnet
    • Tipp: Entscheidet, ob die Distanz exakt (float) und grob (int) berechnet werden soll. In beiden Fällen könnt Ihr unter java.lang.Math Nützliches finden.


Kugel

Erstellt die Klasse Sphere, die eine Kugel darstellen soll.

Sphere soll folgende Daten und Methoden kapseln:

  1. private Variablen für Ursprung (Point3D) und Radius
  2. Methoden zum Ändern und Initialisieren dieser Werte
  3. eine Methode toString mit passender Visualisierung
    • Tipp: Heute schon getestet? ;-)
  4. zwei Funktionen, die Volumen und Oberfläche der Kugel berechnen
  5. eine Funktion, die diese Kugel und eine andere hinsichtlich ihrer Größe vergleicht (compareSpheres)


Weitere Figuren

Orientiert Euch an Sphere und Point3D und schreibt Klassen für weitere Figuren, wie z.B. Würfel, Zylinder oder Kegel.


Canvas

Schreibt eine Klasse Canvas, die

  1. durch ein parameterlosen Konstruktor erzeugt wird.
  2. ein Array für jede Sorte von geometrischer Figur besitzt.
    • Tipp: Macht Euch Gedanken wie Ihr ein über- oder unterlaufen des Arrays verhindern und abfangen könnt.
  3. durch entsprechende Methoden Figuren jeder Sorte einzeln hinzufügen und löschen kann.
  4. eine Methode zu Berechnung des Gesamtvolumens und der Gesamtoberfläche hat.
  5. als toString() eine Liste aller Figuren und andere relevante Infos ausgibt.


Zusatz

Achtung nur für Cracks: Diese Zusatzaufgabe geht über den Inhalt und Sinn des Javakurses hinaus. Daher fangt sie nur an, wenn Ihr alles andere verstanden und keine weiteren Fragen mehr habt. Das meinen wir ernst.

Schreibt mithilfe der Terminalklasse eine Klasse, die eine Oberfläche zur Verfügung stellt, die interaktiv das Hinzufügen und Löschen von Figuren ermöglicht und alle Daten ausgeben kann.

  • Tipp: Nutze folgendes Konstukt für die mehrstufige Fallunterscheidung:
public class MyClass{...
   char decision;
   ...
   //decision gets some value
   ...
   switch(decision){
     case 'a': doSth();break;
     case 'b': doSthDiff();break;
     default doAnotherThing();break;
   }
   ...
}

Das funktioniert natürlich auch mit mehr Fällen und ints.




Kommentare

Wenn du Anmerkungen zur Aufgabe hast oder Lob und Kritik loswerden möchtest, ist hier die richtige Stelle dafür. Klicke einfach ganz rechts auf "bearbeiten" und schreibe deinen Kommentar direkt ins Wiki. Keine Scheu, es geht nichts kaputt ;)