Javakurs/Übungsaufgaben/Canvas: Unterschied zwischen den Versionen
(→Human) |
|||
(19 dazwischenliegende Versionen von 10 Benutzern werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
− | + | In dieser Aufgabe sollt Ihr eine Repräsentation einer Maloberfläche implementieren, die verschiedene geometrische Figuren wie Kugeln, Punkte, Geraden oder Würfel enthalten kann. Dabei werden Klassen für diese Figuren angelegt und eine Datenstruktur die diese Figuren aufnehmen kann. | |
− | + | Wende dich bei auftauchenden Problemen bitte frühzeitig an einen Tutor, Fragen kostet nix. | |
− | + | '''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 einen Punkt im dreidimensionalen Raum darstellt. | |
− | # private Variablen für x-, y- und z-Koordinaten | + | Die Klasse soll folgende Attribute und Methoden haben: |
− | # einen | + | |
− | # eine toString(), die den Punkt so darstellt: "(3, 2, 1)" | + | # private Variablen für '''x-''', '''y-''' und '''z-Koordinaten''' |
− | #* Tipp: | + | # einen '''Konstruktor''', der Initialisierungswerte für x, y und z bekommt |
− | # eine Methode changeCoordinates, die eine | + | # eine Methode '''toString()''', die den Punkt so darstellt: "(3, 2, 1)" |
− | # eine | + | #* Tipp: mit toString kannst du erst sinnvoll arbeiten, wenn der Konstruktor implementiert wurde |
− | #* Tipp: | + | # eine Methode '''changeCoordinates''', die eine Anpassung der Koordinaten ermöglicht. |
+ | # eine Methode '''calcDistance''', die den Abstand des Punktes zu einem zweiten berechnet | ||
+ | #* Tipp: Für die Distanzberechnung solltet ihr [http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Math.html java.lang.Math] benutzen. | ||
+ | |||
+ | |||
+ | == Kugel == | ||
+ | |||
+ | |||
+ | Erstellt die Klasse '''Sphere''', die eine Kugel darstellen soll. | ||
+ | |||
+ | Sphere soll folgende Daten und Methoden kapseln: | ||
+ | |||
+ | # '''private Variablen''' für Ursprung (Point3D) und Radius | ||
+ | # '''Methoden zum Ändern''' und Initialisieren dieser Werte | ||
+ | # eine Methode '''toString()''' mit passender Darstellung als String | ||
+ | #* Tipp: Heute schon getestet? ;-) | ||
+ | # zwei Funktionen, die Volumen und Oberfläche der Kugel berechnen | ||
+ | # 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 | ||
+ | |||
+ | # durch ein '''parameterlosen Konstruktor''' erzeugt wird. | ||
+ | # ein '''Array für jede Sorte''' der geometrischen Figuren besitzt. | ||
+ | #* 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. | ||
+ | # eine Methode zu '''Berechnung des Gesamtvolumens''' und der Gesamtoberfläche hat. | ||
+ | # 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. | ||
+ | |||
+ | 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 <tt>int</tt>s. | ||
+ | |||
+ | == 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 ;) | ||
+ | |||
+ | <!-- | ||
+ | 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 ;) | ||
+ | |||
+ | ==== Robert ==== | ||
+ | Na mal schauen, ob irgendjemand diese Funktion wirklich benutzt. Ich fände es jedenfalls toll. | ||
+ | --> | ||
+ | |||
+ | [[Kategorie:Java]] | ||
+ | [[Kategorie:Java_Aufgaben]] | ||
+ | |||
+ | |||
+ | ====Human==== | ||
+ | der Tip:" Heute schon getestet" sagt für mich so gut wie nichts aus, vielleicht liegts auch am Sauerstoffmangel... | ||
+ | |||
+ | ====Dog==== | ||
+ | Wuff wuff wuff wuff wuff wuff, wuff wuff. |
Aktuelle Version vom 9. März 2012, 12:10 Uhr
In dieser Aufgabe sollt Ihr eine Repräsentation einer Maloberfläche implementieren, die verschiedene geometrische Figuren wie Kugeln, Punkte, Geraden oder Würfel enthalten kann. Dabei werden Klassen für diese Figuren angelegt und eine Datenstruktur die diese Figuren aufnehmen kann.
Wende dich bei auftauchenden Problemen bitte frühzeitig an einen Tutor, Fragen kostet nix.
Hinweis: Testet jede Eurer geschriebenen Methoden am besten, sobald Ihr sie geschrieben habt, um mögliche Fehler frühzeitig zu finden.
Inhaltsverzeichnis
3D-Punkt
Erstellt die Klasse Point3D, die einen Punkt im dreidimensionalen Raum darstellt.
Die Klasse soll folgende Attribute und Methoden haben:
- private Variablen für x-, y- und z-Koordinaten
- einen Konstruktor, der Initialisierungswerte für x, y und z bekommt
- eine Methode toString(), die den Punkt so darstellt: "(3, 2, 1)"
- Tipp: mit toString kannst du erst sinnvoll arbeiten, wenn der Konstruktor implementiert wurde
- eine Methode changeCoordinates, die eine Anpassung der Koordinaten ermöglicht.
- eine Methode calcDistance, die den Abstand des Punktes zu einem zweiten berechnet
- Tipp: Für die Distanzberechnung solltet ihr java.lang.Math benutzen.
Kugel
Erstellt die Klasse Sphere, die eine Kugel darstellen soll.
Sphere soll folgende Daten und Methoden kapseln:
- private Variablen für Ursprung (Point3D) und Radius
- Methoden zum Ändern und Initialisieren dieser Werte
- eine Methode toString() mit passender Darstellung als String
- Tipp: Heute schon getestet? ;-)
- zwei Funktionen, die Volumen und Oberfläche der Kugel berechnen
- 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
- durch ein parameterlosen Konstruktor erzeugt wird.
- ein Array für jede Sorte der geometrischen Figuren besitzt.
- 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.
- eine Methode zu Berechnung des Gesamtvolumens und der Gesamtoberfläche hat.
- 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.
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 ;)
Human
der Tip:" Heute schon getestet" sagt für mich so gut wie nichts aus, vielleicht liegts auch am Sauerstoffmangel...
Dog
Wuff wuff wuff wuff wuff wuff, wuff wuff.