2023-12-31 11:13:34 +01:00
# Programmieren 2 (Sommersemester 2023)
2023-03-20 15:32:23 +01:00
2023-03-20 15:36:07 +01:00
## Freiwillige Übungen
2023-03-20 15:32:23 +01:00
2023-12-31 11:13:34 +01:00
Hier finden Sie die **freiwilligen Übungen** zur Vorlesung Programmieren 2 (PR2). Die Übungen sind unten, zusammen mit dem Ausgabedatum, aufgelistet. Das **Abgabedatum** dient nur der Orientierung für Ihre persönliche Planung, da keine Abgabe erforderlich ist.
2023-03-20 15:32:23 +01:00
Hinweise zur nötigen Softwareausstattung finden Sie [hier ](help/softwareausstattung.md ).
2023-11-14 11:06:17 +01:00
| # | Ausgabe | Thema | Musterlösung |
|----|---------------------------------------------------------------------------------------------|----------------|----------------|
2024-01-08 15:32:04 +01:00
| 1. | n/a | [String in Großbuchstaben umwandeln ](Assignment_001/readme.md ) | [✅ ](Assignment_001/solution/ ) |
| 2. | n/a | [Labeled Break ](Assignment_002/readme.md ) | [✅ ](Assignment_002/solution/ ) |
| 3. | n/a | [Passwortbewertung ](Assignment_003/readme.md ) | [✅ ](Assignment_003/solution/ ) |
| 4. | n/a | [printf mit Formatstring ](Assignment_004/readme.md ) | [✅ ](Assignment_004/solution/ ) |
| 5. | n/a | [Maximum in einem Array suchen ](Assignment_005/readme.md ) | [✅ ](Assignment_005/solution/ ) |
| 6. | n/a | [Taschenrechner ](Assignment_006/readme.md ) | [✅ ](Assignment_006/solution/ ) |
2023-12-31 11:13:34 +01:00
| 7. | n/a | [Quine ](Assignment_007/readme.md ) | [✅ ](Assignment_007/solution/ ) |
2024-01-08 15:32:04 +01:00
| 8. | n/a | [Java-Coding-Standard anwenden ](Assignment_008/readme.md ) | [✅ ](Assignment_008/solution/ ) |
| 9. | n/a | [JavaDoc schreiben ](Assignment_009/readme.md ) | [✅ ](Assignment_009/solution/ ) |
| 10. | n/a | [Klasse mit JUnit testen ](Assignment_010/readme.md ) | [✅ ](Assignment_010/solution/ ) |
| 11. | n/a | [Information-Hiding einer Klasse verbessern ](Assignment_011/readme.md ) | [✅ ](Assignment_011/solution/ ) |
| 12. | n/a | [Vorhandene Bibliotheken als JAR einbinden ](Assignment_012/readme.md ) | [✅ ](Assignment_012/solution/ ) |
| 13. | n/a | [Final anwenden ](Assignment_013/readme.md ) | [✅ ](Assignment_013/solution/ ) |
| 14. | n/a | [Figur und Rechteck ](Assignment_014/readme.md ) | [✅ ](Assignment_014/solution/ ) |
| 15. | n/a | [Figur erweitern ](Assignment_015/readme.md ) | [✅ ](Assignment_015/solution/ ) |
| 16. | n/a | [Figur noch einmal erweitern ](Assignment_016/readme.md ) | [✅ ](Assignment_016/solution/ ) |
| 17. | n/a | [Konstruktoren schreiben ](Assignment_017/readme.md ) | [✅ ](Assignment_017/solution/ ) |
| 18. | n/a | [Polymorphie einsetzen ](Assignment_018/readme.md ) | [✅ ](Assignment_018/solution/ ) |
| 19. | n/a | [Singleton ](Assignment_019/readme.md ) | [✅ ](Assignment_019/solution/ ) |
| 20. | n/a | [Statische Methoden und Attribute ](Assignment_020/readme.md ) | [✅ ](Assignment_020/solution/ ) |
| 21. | n/a | [Methode überladen ](Assignment_021/readme.md ) | [✅ ](Assignment_021/solution/ ) |
| 22. | n/a | [Methoden überschreiben ](Assignment_022/readme.md ) | [✅ ](Assignment_022/solution/ ) |
| 23. | n/a | [Varag-Methode schreiben ](Assignment_023/readme.md ) | [✅ ](Assignment_023/solution/ ) |
| 24. | n/a | [Vererbung von Figuren ](Assignment_024/readme.md ) | [✅ ](Assignment_024/solution/ ) |
| 25. | n/a | [Abstrakte Klassen ](Assignment_025/readme.md ) | [✅ ](Assignment_025/solution/ ) |
| 26. | n/a | [Abstrakte Klasse ](Assignment_026/readme.md ) | [✅ ](Assignment_026/solution/ ) |
| 27. | n/a | [Comparable implementieren ](Assignment_027/readme.md ) | [✅ ](Assignment_027/solution/ ) |
| 28. | n/a | [Interface Stack entwerfen ](Assignment_028/readme.md ) | [✅ ](Assignment_028/solution/ ) |
| 29. | n/a | [Interface: Uebersetzer ](Assignment_029/readme.md ) | [✅ ](Assignment_029/solution/ ) |
| 30. | n/a | [Interfaces anwenden und entwerfen ](Assignment_030/readme.md ) | [✅ ](Assignment_030/solution/ ) |
| 31. | n/a | [Deep-Copy mit `clone()` ](Assignment_031/readme.md ) | [✅ ](Assignment_031/solution/ ) |
| 32. | n/a | [Clone ](Assignment_032/readme.md ) | [✅ ](Assignment_032/solution/ ) |
| 33. | n/a | [`equals()` und `hashCode()` implementieren und nutzen ](Assignment_033/readme.md ) | [✅ ](Assignment_033/solution/ ) |
| 34. | n/a | [equals und hashCode ](Assignment_034/readme.md ) | [✅ ](Assignment_034/solution/ ) |
| 35. | n/a | [`toString()`-Methode implementieren ](Assignment_035/readme.md ) | [✅ ](Assignment_035/solution/ ) |
| 36. | n/a | [Optimierung bei Integer ](Assignment_036/readme.md ) | [✅ ](Assignment_036/solution/ ) |
| 37. | n/a | [Methoden der Wrapper-Klassen ](Assignment_037/readme.md ) | [✅ ](Assignment_037/solution/ ) |
| 38. | n/a | [Eigene Enumeration schreiben und verwenden ](Assignment_038/readme.md ) | [✅ ](Assignment_038/solution/ ) |
| 39. | n/a | [Enumeration schreiben ](Assignment_039/readme.md ) | [✅ ](Assignment_039/solution/ ) |
| 40. | n/a | [Singleton-Eigenschaft von Enumerationen ](Assignment_040/readme.md ) | [✅ ](Assignment_040/solution/ ) |
| 41. | n/a | [Eine vorhandene Enumeration nutzen ](Assignment_041/readme.md ) | [✅ ](Assignment_041/solution/ ) |
| 42. | n/a | [Stein, Papier, Schere, Echse, Spock ](Assignment_042/readme.md ) | [✅ ](Assignment_042/solution/ ) |
| 43. | n/a | [Ausnahmen testen ](Assignment_043/readme.md ) | [✅ ](Assignment_043/solution/ ) |
| 44. | n/a | [Eigene Ausnahmen schreiben und an entsprechender Stelle werfen ](Assignment_044/readme.md ) | [✅ ](Assignment_044/solution/ ) |
| 45. | n/a | [Eigene Exception schreiben ](Assignment_045/readme.md ) | [✅ ](Assignment_045/solution/ ) |
| 46. | n/a | [Handle-or-Declare-Regel anwenden ](Assignment_046/readme.md ) | [✅ ](Assignment_046/solution/ ) |
| 47. | n/a | [Ausnahmen mit `try` und `catch` behandeln. ](Assignment_047/readme.md ) | [✅ ](Assignment_047/solution/ ) |
| 48. | n/a | [`BufferedReader` zum zeilenweisen Lesen einsetzen ](Assignment_048/readme.md ) | [✅ ](Assignment_048/solution/ ) |
| 49. | n/a | [DataOutputStream ](Assignment_049/readme.md ) | [✅ ](Assignment_049/solution/ ) |
| 50. | n/a | [DataOutputStream durch Serialisierung ersetzen ](Assignment_050/readme.md ) | [✅ ](Assignment_050/solution/ ) |
| 51. | n/a | [Daten mit `DataOutputStream` und `DataInputStream` verarbeiten ](Assignment_051/readme.md ) | [✅ ](Assignment_051/solution/ ) |
| 52. | n/a | [Daten mit einem `InputStream` lesen ](Assignment_052/readme.md ) | [✅ ](Assignment_052/solution/ ) |
| 53. | n/a | [Daten mit einem `OutputStream` schreiben ](Assignment_053/readme.md ) | [✅ ](Assignment_053/solution/ ) |
| 54. | n/a | [Filesystem-Abstraktion mit `File` ](Assignment_054/readme.md ) | [✅ ](Assignment_054/solution/ ) |
| 55. | n/a | [Fileattribute lesen ](Assignment_055/readme.md ) | [✅ ](Assignment_055/solution/ ) |
| 56. | n/a | [`FilterReader` ](Assignment_056/readme.md ) | [✅ ](Assignment_056/solution/ ) |
| 57. | n/a | [Konsolen Input/Output ](Assignment_057/readme.md ) | [✅ ](Assignment_057/solution/ ) |
| 58. | n/a | [Zeilen einer Textdatei zählen ](Assignment_058/readme.md ) | [✅ ](Assignment_058/solution/ ) |
| 59. | n/a | [`RandomAccessFile` ](Assignment_059/readme.md ) | [✅ ](Assignment_059/solution/ ) |
| 60. | n/a | [`Reader` verwenden ](Assignment_060/readme.md ) | [✅ ](Assignment_060/solution/ ) |
| 61. | n/a | [Rot13-Verschlüsselung ](Assignment_061/readme.md ) | [✅ ](Assignment_061/solution/ ) |
| 62. | n/a | [Datei zerhacken ](Assignment_062/readme.md ) | [✅ ](Assignment_062/solution/ ) |
| 63. | n/a | [Serialisierung ](Assignment_063/readme.md ) | [✅ ](Assignment_063/solution/ ) |
| 64. | n/a | [Einen generischen Typ schreiben ](Assignment_064/readme.md ) | [✅ ](Assignment_064/solution/ ) |
| 65. | n/a | [Generische Klasse Pair schreiben ](Assignment_065/readme.md ) | [✅ ](Assignment_065/solution/ ) |
| 66. | n/a | [Generische Klasse Pair erweitern: NumberPair ](Assignment_066/readme.md ) | [✅ ](Assignment_066/solution/ ) |
| 67. | n/a | [Generische Klasse Pair erweitern: SamePair ](Assignment_067/readme.md ) | [✅ ](Assignment_067/solution/ ) |
| 68. | n/a | [PairList ](Assignment_068/readme.md ) | [✅ ](Assignment_068/solution/ ) |
| 69. | n/a | [Wildcard benutzen ](Assignment_069/readme.md ) | [✅ ](Assignment_069/solution/ ) |
| 70. | n/a | [Generische Queue ](Assignment_070/readme.md ) | [✅ ](Assignment_070/solution/ ) |
| 71. | n/a | [`super` und `extends` einsetzen ](Assignment_071/readme.md ) | [✅ ](Assignment_071/solution/ ) |
| 72. | n/a | [Generischen Typ verwenden ](Assignment_072/readme.md ) | [✅ ](Assignment_072/solution/ ) |
| 73. | n/a | [Generische Typen zusammen mit Wildcards einsetzen ](Assignment_073/readme.md ) | [✅ ](Assignment_073/solution/ ) |
| 74. | n/a | [Anonyme Klasse schreiben ](Assignment_074/readme.md ) | [✅ ](Assignment_074/solution/ ) |
| 75. | n/a | [Eigene compare-Methode schreiben ](Assignment_075/readme.md ) | [✅ ](Assignment_075/solution/ ) |
| 76. | n/a | [Innere Klasse Beobachter ](Assignment_076/readme.md ) | [✅ ](Assignment_076/solution/ ) |
| 77. | n/a | [Callback mit anonymer Klasse realisieren ](Assignment_077/readme.md ) | [✅ ](Assignment_077/solution/ ) |
| 78. | n/a | [Comparator als Lambda ](Assignment_078/readme.md ) | [✅ ](Assignment_078/solution/ ) |
| 79. | n/a | [Callback mit Lambda realisieren ](Assignment_079/readme.md ) | [✅ ](Assignment_079/solution/ ) |
| 80. | n/a | [Lokale Klasse schreiben ](Assignment_080/readme.md ) | [✅ ](Assignment_080/solution/ ) |
| 81. | n/a | [MatrixSuche ](Assignment_081/readme.md ) | [✅ ](Assignment_081/solution/ ) |
| 82. | n/a | [StringTransmogrifier ](Assignment_082/readme.md ) | [✅ ](Assignment_082/solution/ ) |
| 83. | n/a | [StringTransmogrifier erweitern ](Assignment_083/readme.md ) | [✅ ](Assignment_083/solution/ ) |
| 84. | n/a | [Nonstatic Member Class ](Assignment_084/readme.md ) | [✅ ](Assignment_084/solution/ ) |
| 85. | n/a | [Static Member Class ](Assignment_085/readme.md ) | [✅ ](Assignment_085/solution/ ) |
| 86. | n/a | [Iterator schreiben ](Assignment_086/readme.md ) | [✅ ](Assignment_086/solution/ ) |
| 87. | n/a | [Mithilfe eines Iterators über Daten iterieren ](Assignment_087/readme.md ) | [✅ ](Assignment_087/solution/ ) |
| 88. | n/a | [Iterator programmieren ](Assignment_088/readme.md ) | [✅ ](Assignment_088/solution/ ) |
| 89. | n/a | [`List<T>` und dessen Implementierungen ](Assignment_089/readme.md ) | [✅ ](Assignment_089/solution/ ) |
| 90. | n/a | [`Map<T>` verwenden ](Assignment_090/readme.md ) | [✅ ](Assignment_090/solution/ ) |
| 91. | n/a | [ReverserGeneric ](Assignment_091/readme.md ) | [✅ ](Assignment_091/solution/ ) |
| 92. | n/a | [Strings umgekehrt sortieren: Reverser ](Assignment_092/readme.md ) | [✅ ](Assignment_092/solution/ ) |
| 93. | n/a | [`Set<T>` und dessen Implementierungen ](Assignment_093/readme.md ) | [✅ ](Assignment_093/solution/ ) |
| 94. | n/a | [CommandLineSorter ](Assignment_094/readme.md ) | [✅ ](Assignment_094/solution/ ) |
| 95. | n/a | [CommandLineSorter -- Version 2 ](Assignment_095/readme.md ) | [✅ ](Assignment_095/solution/ ) |
| 96. | n/a | [`Comparator<T>` verwenden und Objekte sortieren ](Assignment_096/readme.md ) | [✅ ](Assignment_096/solution/ ) |
| 97. | n/a | [Wörterbuchprogramm ](Assignment_097/readme.md ) | [✅ ](Assignment_097/solution/ ) |