# Programmieren 2 (Sommersemester 2023)

## Freiwillige Übungen

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.

Hinweise zur nötigen Softwareausstattung finden Sie [hier](help/softwareausstattung.md).

| #  | Ausgabe    | Thema                                                                                       | Musterlösung  |
|----|---------------------------------------------------------------------------------------------|----------------|----------------|
| 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/) |
| 7. | n/a | [Quine](Assignment_007/readme.md)                                                           |  [✅](Assignment_007/solution/) |
| 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/) |
