Update of exercises
parent
acddfd7d07
commit
62b2c05450
|
@ -1,22 +1,22 @@
|
|||
# Vorhandene Bibliotheken als JAR einbinden
|
||||
# Information-Hiding einer Klasse verbessern
|
||||
|
||||
|
||||
|
||||
## Lernziel
|
||||
|
||||
Eine vorhandene Bibliothek in einem Projekt verwenden und hierzu ein JAR einbinden.
|
||||
Bei einer vorhandenen Klasse Information Hiding verbessern und Seiteneffekte reduzieren.
|
||||
|
||||
## 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)
|
||||
|
|
|
@ -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).
|
||||
|
||||
| # | Ausgabe | Thema |
|
||||
|----|------------------------------------------------------------------------|----------------|
|
||||
| 1. | 14.03.2023 | [String in Großbuchstaben umwandeln](Assignment_001/readme.md) |
|
||||
| 2. | 14.03.2023 | [Labeled Break](Assignment_002/readme.md) |
|
||||
| 3. | 14.03.2023 | [Passwortbewertung](Assignment_003/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) |
|
||||
| 6. | 14.03.2023 | [Taschenrechner](Assignment_006/readme.md) |
|
||||
| 7. | 14.03.2023 | [Quine](Assignment_007/readme.md) |
|
||||
| 8. | 01.01.2023 | [Java-Coding-Standard anwenden](Assignment_008/readme.md) |
|
||||
| 9. | 01.01.2023 | [JavaDoc schreiben](Assignment_009/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) |
|
||||
| # | Ausgabe | Thema |
|
||||
|----|-------------------------------------------------------------------------|----------------|
|
||||
| 1. | 14.03.2023 | [String in Großbuchstaben umwandeln](Assignment_001/readme.md) |
|
||||
| 2. | 14.03.2023 | [Labeled Break](Assignment_002/readme.md) |
|
||||
| 3. | 14.03.2023 | [Passwortbewertung](Assignment_003/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) |
|
||||
| 6. | 14.03.2023 | [Taschenrechner](Assignment_006/readme.md) |
|
||||
| 7. | 14.03.2023 | [Quine](Assignment_007/readme.md) |
|
||||
| 8. | 01.01.2023 | [Java-Coding-Standard anwenden](Assignment_008/readme.md) |
|
||||
| 9. | 01.01.2023 | [JavaDoc schreiben](Assignment_009/readme.md) |
|
||||
| 10. | 01.01.2023 | [Klasse mit JUnit testen](Assignment_010/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