~~NOTOC~~ ====== Geoinformationsdaten ====== Die **Mondial-Datenbank** enthält geographische Informationen über Städte, Länder, Berge, Flüsse und vieles mehr. Dieses Projekt soll die Datenbank bedienerfreundlich aufbereiteen. Dazu entwickeln wir eine Anwendung, mit der man die Informationen zu geographischen Objekten anzeigen lassen kann und die es ermöglicht, zu verknüpften Objekten zu springen. Das BlueJ-Projekt [[https://codeberg.org/info-bw-wiki/bluej-db-mondial|bluej-db-mondial]] enthält eine Vorlage. Passe die Verbindungsinformationen in der Klasse ''Helper'' im Paket ''datenklassen'' an, so dass eine Verbindung zur SQLite-Datenbank ''mondial.db'' hergestellt werden kann, die sich bereits im Unterordner ''datenklassen'' befindet. Die Datenbank selbst und die Beziehungen zwischen den Tabellen werden durch das Diagramm in der Datei ''Mondial.html'' im Hauptverzeichnis des Projekts beschrieben. Jedes Objekt in der Datenbank wird durch ein entsprechendes Java-Objekt repräsentiert- im folgenden Beispiel der Typ Berg. Das Java-Objekt enthält alle Informationen zum Datenbank-Objekt und bietet Methoden zum Auslesen an. {{ :faecher:informatik:oberstufe:datenbanken:projekt:java_db:java_db_p_mondial:berg.png?300 |}} Alle Klassen erben von der abstrakten Klasse ''MondialObjekt''. Der Konstruktor jeder Unterklasse von ''MondialObjekt'' erhält als einzigen Parameter die ID des Objekts als int. Alle weiteren Informationen zum Objekt werden in der Methode ''ladeDaten(Connection db)'' geladen. Der gegebene Programmrumpf kümmert sich bereits darum, dass die Objekte aus der Datenbank geladen werden. Deine Aufgabe ist es, die Implementation der Methode ''ladeDaten(...)'' zu vervollständigen. Sorge dafür, dass alle Attribute des Java-Objekts mit den entsprechenden Werten aus der Datenbank belegt werden. Du kannst in der Klasse ''Berg'' nachschauen, wie das aussehen kann, diese ist bereits fertig implementiert. ===== Zusammenarbeit mit Git ===== Da es sich bei dieser Aufgabe um ein relativ aufwendiges Projekt handelt, bietet es sich an, dass mehrere Personen im Team zu arbeiten. Verwende dazu die Teasmarbeitsfunktion von BlueJ: * Lade die Projektvorlage herunter. Entferne, wenn du das Repo geklont hast den Unterordner ''.git'', wenn du das Projekt aus einem zipo-Archiv entpackt hast, musst du nichts weiter tun. * Öffne das Projekt in BlueJ, kompliliete alle Dateien, auch im Unterordner. * "Teile" das Projekt an ein Repository, auf das alle Teammitglider schreiben können. * Die anderen Teammitglieder können sich das Projekt dort als "Arbeitskopie" wieder abholen. * Stimmt euch ab, wer welche Objekttypen bearbeitet. Nimm dann nur an den Klassen Änderungen vor, die "die gehören". * Erstzelle in der Teamwork-Funktion von BlueJ Commits und teile sie auf das gemeinsame Repo, um die Ergebnisse zusammenzuführen. ===== Hinweise ===== Die einzelnen Objekttypen unterscheiden sich in ihrem Aufwand bzw. Schwierigkeitsgrad. Wählen Sie einen (oder mehrere) Objekttyp, der deiner Arbeitsgeschwindigkeit entspricht. | Hoher Aufwand | Mittlerer Aufwand | Geringer Aufwand | | Land, Fluss, Provinz, Stadt, See | Meer, Insel, Wueste, Organisation, Gebirge | Kontinent, Sprache, Religion, Volksgruppe, Inselgruppe | ===== Ergänzung ===== Nun soll noch eine Volltextsuche durchgeführt werden, mit der man z.B. alle Objekte finden kann, deren Namen die Zeichenkette "ing" enthält. Implementiere dazu die Methode ''sucheObjekte()'' in der Klasse ''Helper'' im Unterordner ''datenklassen''.