Dies ist die Softwareimplementierung der zweiten Phase für den Kurs 'Software Engineering'. Ziel ist es die Gundfunktionen einer Immobilienseite umzusetzen. Dazu gehört unteranderem das einfügen und löschen von Inseraten sowie das Filtern.
Das Programm kann ausgeführt werden indem das git-repository gecloned wird und die Java Dateien lokal kompiliert und ausgeführt werden. Es gibt zurzeit keine executable oder sonstige vorkompilierte Dateien.
Achtung: Die korrekte Ausführung wurde nur für Windows getestet. Auf Linux oder MacOS Sytemen kann es Probleme aufgrund anderer Konventionen für Pfadnamen beim Lesen von Dateien wie Bildern geben!
Nach dem Ausführen des Programms laufen einige Demo-Befehle ab, die die Grundfunktionen der Software zeigen. Danach hat man als Benutzer die Möglichkeit über die Konsole selbst mit der Software zu interagieren und zum Beispiel Suchanfragen und vieles mehr durchzuführen.
Hier werden Schreenshots von Beispielkonsolenausgaben eingefügt.
public class Helper
Diese Klasse stellt einige Hilfsfunktionen für andere Klassen bereit.
Modifier and Type | Name |
---|
Konstruktor | Beschreibung |
---|
Modifier and Type | Methode | Beschreibung |
---|---|---|
static String | genId() | Diese Funktion gibt einen 64-Zeichen langen pseudozufälligen String (nicht kryptographisch sicher), der von anderen Klassen für die Erzeugung einer eindeutigen ID genutzt wird, zurück. |
static String | padding(String string, Integer count) | Wiederholt den String string count-mal und gibt ihn zurück. Diese Funktion wird von anderen Funktionen zur Erzeugung von padding genutzt. |
static void | printFile(String path) | Gibt den Inhalt der in path übergebenen Datei in der Konsole aus. Wenn die Datei nicht existiert, wird eine entsprechende Nachricht auf der Konsole ausgegeben ohne eine Exception zu werfen oder das Programm zu beenden. |
static void | printImage(String path) | Konvertiert die in path angegebene Bilddatei in ASCII-Art und gibt sie anschließend auf der Konsole aus. Wenn die Datei nicht geöffnet werden kann wird eine entsprechende Nachricht in der Konsole ausgegeben ohne eine Exception zu werfen oder das Programm zu beenden. Achtung: Die Konsole muss dafür unicode bzw. UTF-8 unterstützen |
public class Bild
Diese Klasse stellt ein Bild dar und kann unteranderem der Klasse Inserat hinzugefügt werden. Sie nutzt Funktionen der Klasse Helper
Modifier and Type | Name |
---|
Konstruktor | Beschreibung |
---|---|
Bild(String beschreibung, String path) | Erzeugt eine neue Bild Instanz mit der in pfad angegebenen Datei und der Beschreibung aus beschreibung. Falls die Datei nicht existiert oder nicht vom Typ .png oder .jpg ist, wird eine FileNotFoundException ausgeworfen. |
Modifier and Type | Methode | Beschreibung |
---|---|---|
String | getId() | Gibt die 64-Zeichen lange ID des Bildes zurück |
String | getBeschreibung() | Gibt die Beschreibung des Bildes zurück |
String | getDateiformat() | Gibt da Dateiformat des Bildes zurück |
String | getPath() | Gibt den absoluten Pfad des Bildes zurück |
Integer | getDateigroesse() | Gibt die Dateigröße des Bildes in Byte zurück |
void | print() | Gibt alle wichtigen Informationen zu dem Bild in der Konsole aus |
void | anzeigen() | Konvertiert das Bild in ASCII-Art und gibt es auf der Konsole aus. Diese Funktion nutzt die Funktion printImage(String path) der Klasse Helper Achtung: Die Konsole muss dafür unicode bzw. UTF-8 unterstützen |
public class Eigenschaft
Diese Klasse stellt eine Eigenschaft dar, die einem Inserat hinzugefügt werden kann.
Modifier and Type | Name |
---|
Konstruktor | Beschreibung |
---|---|
Eigenschaft(String name, String value) | Erzeugt eine neue Eigenschaft Instanz mit dem Namen name und dem Stringwert value |
Eigenschaft(String name, Double value) | Erzeugt eine neue Eigenschaft Instanz mit dem Namen name und dem Doublewert value |
Modifier and Type | Methode | Beschreibung |
---|---|---|
String | getName() | Gibt den Namen der Eigenschaft zurück. |
String | getValue() | Gibt den Wert der Eigenschaft zurück. Doublewerte werden hier als String zurückgegeben |
String | getType() | Gibt den Typ der Eigenschaft zurück, also ob es sich bei dem gespeicherten Wert um eine "String" oder "Double" handelt |
public class Filter
Diese Klasse stellt einen Filter, der dafür genutzt werden kann alle Inserate eines InseratContainers nach bestimmten Kriterien zu durchsuchen.
Modifier and Type | Name |
---|
Konstruktor | Beschreibung |
---|---|
Filter(String name, String value) | Erzeugt eine neue Filter Instanz mit dem Namen name und dem Stringwert value |
Filter(String name, Double value, String method) | Erzeugt eine neue Filter Instanz mit dem Namen name und dem Doublewert value. Beim Typ kann mit "min" oder "max" angegeben werden ob es sich um eine obere oder untere Grenze handelt. |
Modifier and Type | Methode | Beschreibung |
---|---|---|
String | getName() | Gibt den Namen des Filters zurück. |
String | getValue() | Gibt den Wert des Filters zurück. Doublewerte werden hier als String zurückgegeben |
String | getMethod() | Gibt die Filtermethode des Filters zurück. Bei einem Textfilter wird als Methode ein leerer String zurückgegeben. |
String | getType() | Gibt den Typ des Filters zurück, also ob es sich bei dem gespeicherten Wert um eine "String" oder "Double" handelt |
public interface InseratComposite
Diese Klasse ist das Interface, welches von den Klassen Inserat und InseratContainer als Teil des Composite-Musters implementiert wird.
Modifier and Type | Methode |
---|---|
void | print() |
void | print(Integer level) |
Double | getPreis() |
public class Inserat implements InseratComposite
Diese Klasse repräsentiert ein Inserat und nutzt unteranderem Funktionen der Klasse Helper.
Modifier and Type | Name |
---|
Konstruktor | Beschreibung |
---|---|
Inserat(String beschreibung, Standort standort, Double preis, String immobielenart, String wohnart) | Erzeugt eine neue Inserat Instanz mit der Beschreibung beschreibung, dem in standort übergebenen Standort, dem Preis preis, der Immobilienart immobilienart, welche angibt, ob es sich um ein "Haus", "Wohnung" oder "Bungalow" hadelt, und der Wohnart wohnart, welche angibt, ob es sich um ein "wohnen" oder "kaufen" Objekt handelt. |
Modifier and Type | Methode | Beschreibung |
---|---|---|
static HashMap<String,String> | getErlaubteEigenschaften() | Diese Funktion gibt eine Hashmap aller erlaubten Eigenschaften zurück. Dabei ist der Key der Name der Eigenschaft und der Wert der jeweilige Typ, also "String" oder "Double". |
void | add(Rundgang rundgang) | Fügt dem Inserat den in rundgang übergebenen Rundgang hinzu. |
void | removeRundgang() | Entfernt den Rundgang des Inserat. |
void | add(Bild ... bilder) | Fügt dem Inserat alle in bilder übergebenen Bilder hinzu. |
void | remove(Bild... bilder) | Entfernt alle in bilder übergebenen Bilder dem Inserat. |
void | add(Eigenschaft... eigenschaften) | Fügt dem Inserat alle in eigenschaften übergebenen Eigenschaften hinzu. |
void | remove(String... names) | Entfernt alle in Eigenschaften mit mit den Namen names dem Inserat. |
String | getId() | Gibt die 64-Zeichen lange ID des Inserats zurück |
String | getBeschreibung() | Gibt die Beschreibung des Inserats zurück |
Standort | getStandort() | Gibt den Standort des Inserats zurück |
void | starteRundgang() | Startet den Rundgang des Inserats. |
Rundgang | getRundgang() | Gibt den Rundgang des Inserats zurück. |
void | printBilder() | Ruft für jedes Bild des Inserats die print() Funktion auf. |
void | zeigeBilder() | Ruft für jedes Bild des Inserats die anzeigen() Funktion auf. |
String | getEigenschaft(String name) | Gibt den Wert der Eigenschaft mit dem Namen name des Inserats zurück. Falls das Inserat diese Eigenschaft nicht besitzt wird null zurückgegeben. |
void | printEigenschaften() | Gibt alle Eigenschaften des Inserats in der Konsole aus. |
void | print() | Dies ist eine Funktion des implementierten Interfaces InseratComposite. Sie gibt für das Inserat die ID und die Beschreibung in der Konsole aus. |
void | print(Integer level) | Dies ist eine Funktion des implementierten Interfaces InseratComposite. Sie gibt für das Inserat die ID und die Beschreibung in der Konsole aus, jedoch mit einem padding entsprechned dem in level übergebenen Wert. |
Double | getPreis() | Dies ist eine Funktion des implementierten Interfaces InseratComposite. Sie gibt den Preis des Inserats zurück. |
public class Inserat implements InseratComposite
Diese Klasse stellt einen Container bereit, dem beliebig viele InseratComposites, also Inserate und InseratContainer, hinzugefügt werden können. Sie nutzt auch einige Funktionen der Klasse Helper.
Modifier and Type | Name |
---|
Konstruktor | Beschreibung |
---|---|
InseratContainer(String name) | Erzeugt eine neue InseratContainer Instanz mit dem Namen name. |
Modifier and Type | Methode | Beschreibung |
---|---|---|
void | add(InseratComposite... inserate) | Fügt dem InseratContainer alle in inserate übergebenen InseratComposite hinzu. |
void | add(ArrayList<InseratComposite> inserate) | Fügt dem InseratContainer alle in inserate übergebenen InseratComposite hinzu. |
void | remove(InseratComposite... inserate) | Entfernt dem InseratContainer das in inserat übergebene InseratComposite, wenn es exsistiert. |
InseratComposite | get(Integer number) | Gibt das InseratComposite mit dem Index number zurück oder null wenn number außerhalb des Indexbereiches liegt. |
void | print() | Dies ist eine Funktion des implementierten Interfaces InseratComposite. Sie gibt alle im InseratContainer enthaltenen InseratComposite auf der Konsole aus. |
void | print(Integer level) | Dies ist eine Funktion des implementierten Interfaces InseratComposite. Sie gibt alle im InseratContainer enthaltenen InseratComposite auf der Konsole aus, jedoch mit einem padding entsprechned dem in level übergebenen Wert. |
InseratContainer | suche(Filter... filter) | Durchsucht alle im InseratContainer enthaltenen InseratComposite nach den Inseraten, die alle in filter übergebenen Filter erfüllen. Bei fehlerhaften oder ungültigen Filtern wird eine entsprechende Nachricht in der Konsole ausgegeben und der Filtervorgang abgebrochen. |
Double | getPreis() | Dies ist eine Funktion des implementierten Interfaces InseratComposite. Sie gibt den Gesamtpreis aller im InseratContainer enthaltenen InseratComposite zurück. |
public class Modellmoebel
Diese Klasse stellt ein Möbelstück dar, welches einem Rundgang hinzugefügt werden kann. Sie nutzt einige Funktionen der Klasse Helper.
Modifier and Type | Name |
---|
Konstruktor | Beschreibung |
---|---|
Modellmoebel(String beschreibung, String groesse) | Erzeugt eine neue Modellmoebel Instanz mit der Beschreibung beschreibung und den Maßen groesse. |
Modifier and Type | Methode | Beschreibung |
---|---|---|
void | print() | Diese Funktion gibt die Id, die Beschreibung und die Maße des Modellmoebel in der Konsole aus. |
String | getId() | Gibt die 64-Zeichen lange ID des Modellmoebel zurück. |
String | getBeschreibung() | Gibt die Beschreibung des Modellmoebel zurück. |
String | getGroesse() | Gibt die Maße des Modellmoebel zurück. |
public class Rundgang
Diese Klasse stellt einen Rundgang dar, der unteranderem einem Inserat hinzugefügt werden kann. Sie nutzt Funktionen der Klasse Helper
Modifier and Type | Name |
---|
Konstruktor | Beschreibung |
---|---|
Rundgang(String audiokommentar) | Erzeugt eine neue Rundgang Instanz mit dem Audiokommentar audiokommentar. |
Modifier and Type | Methode | Beschreibung |
---|---|---|
String | getId() | Gibt die 64-Zeichen lange ID des Modellmoebel zurück. |
void | starteRundgang() | Startet den Rundgang. |
void | playAudiokommentar() | Spielt den Audiokommentar des Rundgang ab. |
void | addMoebel(Modellmoebel... moebel) | Fügt dem Rundgang alle in moebel enthaltenen Modellmoebel hinzu. |
void | printMoebel() | Gibt alle im Rundgang enthaltenen Modellmoebel in der Konsole aus. |
public class Standort
Diese Klasse repräsentiert einen Standort.
Modifier and Type | Name |
---|
Konstruktor | Beschreibung |
---|---|
Standort(String land, String bundesland, String stadt, String plz, String strasse) | Erzeugt eine neue Standort Instanz mit den übergebenen Parametern. |
Modifier and Type | Methode | Beschreibung |
---|---|---|
String | getLand() | Gibt das Land des Standorts zurück. |
String | getBundesland() | Gibt das Bundesland des Standorts zurück. |
String | getStadt() | Gibt die Stadt des Standorts zurück. |
String | getPLZ() | Gibt die PLZ des Standorts zurück. |
String | getStrasse() | Gibt die Straße des Standorts zurück. |
void | printKarte(Integer zoom) | Ruft von der here-API einen Kartenausschnitt von dem Standort unter Beachtung des in zoom angegeben Zoomfaktors ab, konvertiert ihn in ASCII-Art und gibt ihn anschließend auf der Konsole aus. Der Zoomfaktor darf zwischen 0 und 20 liegen, es wird jedoch ein Wert von 14 oder 15 empfohlen. Achtung: Die Konsole muss dafür unicode bzw. UTF-8 unterstützen |