Update of exercises
parent
acddfd7d07
commit
62b2c05450
|
@ -1,22 +1,22 @@
|
||||||
# Vorhandene Bibliotheken als JAR einbinden
|
# Information-Hiding einer Klasse verbessern
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
## Lernziel
|
## Lernziel
|
||||||
|
|
||||||
Eine vorhandene Bibliothek in einem Projekt verwenden und hierzu ein JAR einbinden.
|
Bei einer vorhandenen Klasse Information Hiding verbessern und Seiteneffekte reduzieren.
|
||||||
|
|
||||||
## Aufgabe
|
## Aufgabe
|
||||||
|
|
||||||
Im Paket [pr2.strukturierung.jars_einbinden](../sources/src/main/java/pr2/strukturierung/jars_einbinden/) finden Sie eine Klasse `PieChart`, deren Rumpf auskommentiert ist.
|
Im Paket [pr2.strukturierung.information_hiding](../sources/src/main/java/pr2/strukturierung/information_hiding/) finden Sie eine Klasse namens `Rechner`, die eine sehr einfachen Taschenrechner repräsentiert. Außerdem finden Sie einen passenden JUnit-Test `RechnerTest`, der die Funktionsweise des Taschenrechners demonstriert.
|
||||||
|
|
||||||
In dieser Aufgabe werden Sie die Bibliothek [JFreeChart](http://www.jfree.org/jfreechart/) für die Darstellung von Grafiken verwenden. Hierzu müssen die JARs der Bibliothek in das Projekt eingebunden werden.
|
Führen Sie den JUnit-Test aus und vergewissern Sie sich, dass der Taschenrechner korrekt funktioniert.
|
||||||
|
|
||||||
Die beiden JAR-Dateien `jcommon-1.0.23.jar` und `jfreechart-1.0.19.jar` liegen bereits im `lib`-Ordner des Projektes, sind aber noch nicht in das Projekt eingebunden.
|
Schauen Sie sich die Klasse `Rechner` genau an und überlegen Sie, welche Probleme hier vorliegen. Denken Sie an die in der Vorlesung diskutierten Prinzipien des _Information Hiding_ und der _Minimierung von Seiteneffekten_.
|
||||||
|
|
||||||
Binden Sie die Bibliotheken über den entsprechenden Dialog in Eclipse ein: `Properties` -> `Java Build Path` -> `Libraries` -> `Add JARs`...
|
Schreiben Sie die Klasse und die Tests so um, dass die genannten Prinzipien besser erfüllt werden.
|
||||||
|
|
||||||
Kommentieren Sie die auskommentierten Passagen in der Klasse `PieChart` wieder ein und starten Sie das Programm. Experimentieren Sie ein wenig mit Werten, die dargestellt werden.
|
Führen Sie die Tests erneut aus und stellen Sie sicher, dass die Berechnungen noch korrekt erfolgen.
|
||||||
|
|
||||||
|
|
||||||
## Abgabe (optional)
|
## Abgabe (optional)
|
||||||
|
|
|
@ -0,0 +1,30 @@
|
||||||
|
# Vorhandene Bibliotheken als JAR einbinden
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## Lernziel
|
||||||
|
|
||||||
|
Eine vorhandene Bibliothek in einem Projekt verwenden und hierzu ein JAR einbinden.
|
||||||
|
|
||||||
|
## Aufgabe
|
||||||
|
|
||||||
|
Im Paket [pr2.strukturierung.jars_einbinden](../sources/src/main/java/pr2/strukturierung/jars_einbinden/) finden Sie eine Klasse `PieChart`, deren Rumpf auskommentiert ist.
|
||||||
|
|
||||||
|
In dieser Aufgabe werden Sie die Bibliothek [JFreeChart](http://www.jfree.org/jfreechart/) für die Darstellung von Grafiken verwenden. Hierzu müssen die JARs der Bibliothek in das Projekt eingebunden werden.
|
||||||
|
|
||||||
|
Die beiden JAR-Dateien `jcommon-1.0.23.jar` und `jfreechart-1.0.19.jar` liegen bereits im `lib`-Ordner des Projektes, sind aber noch nicht in das Projekt eingebunden.
|
||||||
|
|
||||||
|
Binden Sie die Bibliotheken über den entsprechenden Dialog in Eclipse ein: `Properties` -> `Java Build Path` -> `Libraries` -> `Add JARs`...
|
||||||
|
|
||||||
|
Kommentieren Sie die auskommentierten Passagen in der Klasse `PieChart` wieder ein und starten Sie das Programm. Experimentieren Sie ein wenig mit Werten, die dargestellt werden.
|
||||||
|
|
||||||
|
|
||||||
|
## Abgabe (optional)
|
||||||
|
|
||||||
|
__Sie müssen keine Lösung für diese Aufgabe einreichen.__
|
||||||
|
|
||||||
|
Sie können Ihre Lösung aber auf die Konformität mit den Programmierstandards testen. Hierzu gehen Sie wie folgt vor:
|
||||||
|
|
||||||
|
1. Öffnen Sie eine Kommandozeile (Terminal).
|
||||||
|
2. Gehen Sie in Ihr Working Directory.
|
||||||
|
3. Rufen Sie mit `bin/submit.sh` das Skript auf, das die Lösungen testet und kompiliert. Wenn Maven eine Fehlermeldung zeigt, beheben Sie diese zuerst, bevor Sie mit dem nächsten Schritt fortfahren.
|
27
readme.md
27
readme.md
|
@ -6,16 +6,17 @@ Hier finden Sie die freiwilligen Übungen zur Vorlesung Programmieren 2 (PR2). D
|
||||||
|
|
||||||
Hinweise zur nötigen Softwareausstattung finden Sie [hier](help/softwareausstattung.md).
|
Hinweise zur nötigen Softwareausstattung finden Sie [hier](help/softwareausstattung.md).
|
||||||
|
|
||||||
| # | Ausgabe | Thema |
|
| # | Ausgabe | Thema |
|
||||||
|----|------------------------------------------------------------------------|----------------|
|
|----|-------------------------------------------------------------------------|----------------|
|
||||||
| 1. | 14.03.2023 | [String in Großbuchstaben umwandeln](Assignment_001/readme.md) |
|
| 1. | 14.03.2023 | [String in Großbuchstaben umwandeln](Assignment_001/readme.md) |
|
||||||
| 2. | 14.03.2023 | [Labeled Break](Assignment_002/readme.md) |
|
| 2. | 14.03.2023 | [Labeled Break](Assignment_002/readme.md) |
|
||||||
| 3. | 14.03.2023 | [Passwortbewertung](Assignment_003/readme.md) |
|
| 3. | 14.03.2023 | [Passwortbewertung](Assignment_003/readme.md) |
|
||||||
| 4. | 14.03.2023 | [printf mit Formatstring](Assignment_004/readme.md) |
|
| 4. | 14.03.2023 | [printf mit Formatstring](Assignment_004/readme.md) |
|
||||||
| 5. | 14.03.2023 | [Maximum in einem Array suchen](Assignment_005/readme.md) |
|
| 5. | 14.03.2023 | [Maximum in einem Array suchen](Assignment_005/readme.md) |
|
||||||
| 6. | 14.03.2023 | [Taschenrechner](Assignment_006/readme.md) |
|
| 6. | 14.03.2023 | [Taschenrechner](Assignment_006/readme.md) |
|
||||||
| 7. | 14.03.2023 | [Quine](Assignment_007/readme.md) |
|
| 7. | 14.03.2023 | [Quine](Assignment_007/readme.md) |
|
||||||
| 8. | 01.01.2023 | [Java-Coding-Standard anwenden](Assignment_008/readme.md) |
|
| 8. | 01.01.2023 | [Java-Coding-Standard anwenden](Assignment_008/readme.md) |
|
||||||
| 9. | 01.01.2023 | [JavaDoc schreiben](Assignment_009/readme.md) |
|
| 9. | 01.01.2023 | [JavaDoc schreiben](Assignment_009/readme.md) |
|
||||||
| 10. | 01.01.2023 | [Klasse mit JUnit testen](Assignment_010/readme.md) |
|
| 10. | 01.01.2023 | [Klasse mit JUnit testen](Assignment_010/readme.md) |
|
||||||
| 11. | 01.01.2023 | [Vorhandene Bibliotheken als JAR einbinden](Assignment_011/readme.md) |
|
| 11. | 01.01.2023 | [Information-Hiding einer Klasse verbessern](Assignment_011/readme.md) |
|
||||||
|
| 12. | 01.01.2023 | [Vorhandene Bibliotheken als JAR einbinden](Assignment_012/readme.md) |
|
||||||
|
|
|
@ -0,0 +1,51 @@
|
||||||
|
package pr2.strukturierung.information_hiding;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Ein einfacher Taschenrechner.
|
||||||
|
*/
|
||||||
|
public class Rechner {
|
||||||
|
/** Ergebnis des Taschenrechners. */
|
||||||
|
public double wert;
|
||||||
|
|
||||||
|
/** Speicher des Taschenrechners. */
|
||||||
|
public double speicher;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Addiert zwei Werte und gibt das Ergebnis zurück.
|
||||||
|
*
|
||||||
|
* @param a erster Operand.
|
||||||
|
* @param b zweiter Operand.
|
||||||
|
* @return das Ergebnis.
|
||||||
|
*/
|
||||||
|
public void addiere(double a, double b) {
|
||||||
|
wert = a + b;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Subtrahiert zwei Werte und gibt das Ergebnis zurück.
|
||||||
|
*
|
||||||
|
* @param a erster Operand.
|
||||||
|
* @param b zweiter Operand.
|
||||||
|
* @return das Ergebnis.
|
||||||
|
*/
|
||||||
|
public void subtrahiere(double a, double b) {
|
||||||
|
wert = a - b;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Multipliziert zwei Werte und gibt das Ergebnis zurück.
|
||||||
|
*
|
||||||
|
* @param a erster Operand.
|
||||||
|
* @param b zweiter Operand.
|
||||||
|
* @return das Ergebnis.
|
||||||
|
*/
|
||||||
|
public void multipliziere(double a, double b) {
|
||||||
|
wert = a * b;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* Speichert den aktuellen Wert in der Variable {@speicher}.
|
||||||
|
*/
|
||||||
|
public void speichern() {
|
||||||
|
speicher = wert;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,38 @@
|
||||||
|
package pr2.strukturierung.information_hiding.test;
|
||||||
|
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
import pr2.strukturierung.information_hiding.Rechner;
|
||||||
|
|
||||||
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Unit-Test für den Rechner.
|
||||||
|
*/
|
||||||
|
public class RechnerTest {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Testet alle Grundoperationen des Rechners.
|
||||||
|
*/
|
||||||
|
@Test
|
||||||
|
void testRechner() {
|
||||||
|
Rechner r = new Rechner();
|
||||||
|
|
||||||
|
// 2 + 2 = 4
|
||||||
|
r.addiere(2.0, 2.0);
|
||||||
|
assertEquals(4.0, r.wert, 0.0001);
|
||||||
|
|
||||||
|
// 3 - 1 = 2
|
||||||
|
r.subtrahiere(3, 1);
|
||||||
|
assertEquals(2.0, r.wert, 0.0001);
|
||||||
|
|
||||||
|
// 3 * 3 = 9
|
||||||
|
r.multipliziere(3, 3);
|
||||||
|
assertEquals(9.0, r.wert, 0.0001);
|
||||||
|
|
||||||
|
// 2 + 2 * 2 = 6
|
||||||
|
r.multipliziere(2, 2);
|
||||||
|
r.speichern();
|
||||||
|
r.addiere(2, r.speicher);
|
||||||
|
assertEquals(6.0, r.wert, 0.0001);
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue