Projekt:2021/MyMail: Unterschied zwischen den Versionen

2.344 Bytes hinzugefügt ,  01:02, 17. Jan. 2022
keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
Zeile 9: Zeile 9:
Implementiere einen [[wikipedia:POP3|POP3]] Mail-Client.
Implementiere einen [[wikipedia:POP3|POP3]] Mail-Client.
{{Aufgabe:End}}
{{Aufgabe:End}}
MyMail ist nach dem MVC-Prinzip modelliert, einem Entwurfsprinzip für Software.
{{Info:Start}}
[[Datei:ModelViewControllerDiagram2.svg|right|240px]]
==== Das MVC-Prinzip ====
MVC steht für Model-View-Controller und beschreibt ein Prinzip, nach dem die Klassen eines Programms mit graphischer Oberfläche strukturiert werden. Es gibt eine (oder mehrere) Klassen, die die Darstellung übernehmen (View). Andere Klassen verwalten die Daten (Model) und weitere Klassen übernehmen die Steuerung des Programms (Controller).
{{Info:End}}
Der View und das Model sind bereits fertig und stehen euch im Projekt zur Verfügung. Eure Aufgabe ist es, den Hauptcontroller des Programms zu entwickeln - die Klasse <code>MyMail</code>.


=== Links ===
=== Links ===
Zeile 18: Zeile 28:


== Dokumentationen ==
== Dokumentationen ==
=== Die Klasse MyMail ===
Die Controller-Klasse MyMail ist in verschiedene Hilfsmethoden unterteilt, die einzeln implementiert werden müssen. Beginne mit den Methoden <code>boolean connectToServer()</code> und <code>boolean login()</code>, die eine neue Verbindung zum Server herstellt bzw. die Authentifizierung am POP3-Server durchführt.
Hinweise zur Umsetzung und genauere Beschreibungen findest du im Quelltext der Klasse.
Die Methoden geben jeweils zurück. ob sie erfolgreich waren, oder nicht. Sollte ein Fehler auftreten, speichern sie eine sinnvolle Fehlermeldung in der Objektvariablen <code>lastError</code>. Diese Fehlermeldung kann dem Nutzer angezeigt werden, um ihn über den Fehler zu informieren.
Für die Implementierung der Methode <code>int getMessageCount()</code> muss die Antwort auf den <code>STAT</code> Befehl geparsed werden, um an die Anzahl der Mails (als <code>int</code>) zu kommen. Dazu muss die empfangene Textzeile "zerschnitten" werden. Dabei helfen diese String-Methoden:
{| class="wikitable"
| {{Java API|java.lang.String|indexOf-java.lang.String-|indexOf(String search)}}
| Sucht den Index des ersten Vorkommens des String <code>search</code> im String.
| <code>"+OK 5 4089".indexOf(" ") // 3</code>
|-
| {{Java API|java.lang.String|substring-int-int-|substring(int from, int to)}}
| Schneidet den Text zwischen den beiden Indizes aus.
| <code>"+OK 5 4089".substring(4,5) // "5"</code>
|-
| {{Java API|java.lang.Integer|parseInt-java.lang.String-|parseInt(String str)}}
| Wandelt den Text <code>str</code> in einen Integer um.
| <code>Integer.parseInt("5") // 5</code>
|}


=== Die Klasse Connection ===
=== Die Klasse Connection ===
8.581

Bearbeitungen