diff --git a/Erica/Benutzerprofil.java b/Erica/Benutzerprofil.java deleted file mode 100644 index b1d1ff74ac1ac003414dd564159383fe87f3d819..0000000000000000000000000000000000000000 --- a/Erica/Benutzerprofil.java +++ /dev/null @@ -1,45 +0,0 @@ -package Erica; - -/** - * Beschreiben Sie hier die Klasse Benutzerprofil. - * - * @author (Ihr Name) - * @version (eine Versionsnummer oder ein Datum) - */ -public class Benutzerprofil implements ComparableContent<Benutzerprofil> -{ - // Instanzvariablen - ersetzen Sie das folgende Beispiel mit Ihren Variablen - private String benutzername; - - /** - * Konstruktor für Objekte der Klasse Benutzerprofil - */ - public Benutzerprofil(String login, String pw) - { - // Instanzvariable initialisieren - login = benutzername; - } - - public boolean isGreater(Benutzerprofil pk) - { - return true; - } - - public boolean isLess(Benutzerprofil pk) - { - return true; - } - - public boolean isEqual(Benutzerprofil pk) - { - return true; - } - - public String gibBenutzername() - { - // tragen Sie hier den Code ein - return benutzername; - } - - -} diff --git a/Erica/Benutzerverwaltung.java b/Erica/Benutzerverwaltung.java deleted file mode 100644 index b301d1f261ae805d0b17bc4c33a9b8141eb227f8..0000000000000000000000000000000000000000 --- a/Erica/Benutzerverwaltung.java +++ /dev/null @@ -1,56 +0,0 @@ -package Erica; - -/** - * Beschreiben Sie hier die Klasse Benutzerverwaltung. - * - * @author (Ihr Name) - * @version (eine Versionsnummer oder ein Datum) - */ -public class Benutzerverwaltung -{ - // Instanzvariablen - ersetzen Sie das folgende Beispiel mit Ihren Variablen - private BinarySearchTree<Benutzerprofil> benutzerBaum; - - /** - * Konstruktor für Objekte der Klasse Benutzerverwaltung - */ - public Benutzerverwaltung() - { - // Instanzvariable initialisieren - benutzerBaum = new BinarySearchTree(); - - benutzerBaum.insert(new Benutzerprofil("yoki33", "passwort")); - benutzerBaum.insert(new Benutzerprofil("alfred65", "passwort")); - benutzerBaum.insert(new Benutzerprofil("chuck73", "passwort")); - benutzerBaum.insert(new Benutzerprofil("jan62", "passwort")); - benutzerBaum.insert(new Benutzerprofil("michelle73", "passwort")); - benutzerBaum.insert(new Benutzerprofil("susi81", "passwort")); - benutzerBaum.insert(new Benutzerprofil("udo86", "passwort")); - benutzerBaum.insert(new Benutzerprofil("ayce90", "passwort")); - benutzerBaum.insert(new Benutzerprofil("frank78", "passwort")); - benutzerBaum.insert(new Benutzerprofil("max62", "passwort")); - benutzerBaum.insert(new Benutzerprofil("tina90", "passwort")); - benutzerBaum.insert(new Benutzerprofil("elfriede41", "passwort")); - benutzerBaum.insert(new Benutzerprofil("pia96", "passwort")); - benutzerBaum.insert(new Benutzerprofil("gerd44", "passwort")); - } - - public void neuenNutzerAnlegen(String pBenutzername, String pPw) - { - benutzerBaum.insert(new Benutzerprofil(pBenutzername, pPw)); - } - - public void benutzerLoeschen(String pBenutzername, String pPw) - { - benutzerBaum.remove(new Benutzerprofil(pBenutzername, pPw)); - } - - public void profilVorhanden(String pBenutzername) - { - boolean vorhanden = false; - - benutzerBaum.search(); - - } - -} diff --git a/Erica/BinarySearchTree.java b/Erica/BinarySearchTree.java deleted file mode 100644 index 0e29a052cd20533f12122b39e2937997de917bbd..0000000000000000000000000000000000000000 --- a/Erica/BinarySearchTree.java +++ /dev/null @@ -1,261 +0,0 @@ -package Erica; -/** - * <p> - * Materialien zu den zentralen NRW-Abiturpruefungen im Fach Informatik ab 2018 - * </p> - * <p> - * Generische Klasse BinarySearchTree<ContentType> - * </p> - * <p> - * Mithilfe der generischen Klasse BinarySearchTree koennen beliebig viele - * Objekte in einem Binaerbaum (binaerer Suchbaum) entsprechend einer - * Ordnungsrelation verwaltet werden. <br /> - * Ein Objekt der Klasse stellt entweder einen leeren binaeren Suchbaum dar oder - * verwaltet ein Inhaltsobjekt sowie einen linken und einen rechten Teilbaum, - * die ebenfalls Objekte der Klasse BinarySearchTree sind.<br /> - * Die Klasse der Objekte, die in dem Suchbaum verwaltet werden sollen, muss - * das generische Interface ComparableContent implementieren. Dabei muss durch - * Ueberschreiben der drei Vergleichsmethoden isLess, isEqual, isGreater (s. - * Dokumentation des Interfaces) eine eindeutige Ordnungsrelation festgelegt - * sein. <br /> - * Alle Objekte im linken Teilbaum sind kleiner als das Inhaltsobjekt des - * binaeren Suchbaums. Alle Objekte im rechten Teilbaum sind groesser als das - * Inhaltsobjekt des binaeren Suchbaums. Diese Bedingung gilt (rekursiv) auch in - * beiden Teilbaeumen. <br /> - * Hinweis: In dieser Version wird die Klasse BinaryTree nicht benutzt. - * </p> - * - * @author Qualitaets- und UnterstuetzungsAgentur - Landesinstitut fuer Schule - * @version Generisch_03 2017-11-28 - */ -public class BinarySearchTree<ContentType extends ComparableContent<ContentType>> { - - /* --------- Anfang der privaten inneren Klasse -------------- */ - - /** - * Durch diese innere Klasse kann man dafuer sorgen, dass ein leerer Baum - * null ist, ein nicht-leerer Baum jedoch immer eine nicht-null-Wurzel sowie - * nicht-null-Teilbaeume hat. - */ - private class BSTNode<CT extends ComparableContent<CT>> { - - private CT content; - private BinarySearchTree<CT> left, right; - - public BSTNode(CT pContent) { - // Der Knoten hat einen linken und rechten Teilbaum, die - // beide von null verschieden sind. Also hat ein Blatt immer zwei - // leere Teilbaeume unter sich. - this.content = pContent; - left = new BinarySearchTree<CT>(); - right = new BinarySearchTree<CT>(); - } - - } - - /* ----------- Ende der privaten inneren Klasse -------------- */ - - private BSTNode<ContentType> node; - - /** - * Der Konstruktor erzeugt einen leeren Suchbaum. - */ - public BinarySearchTree() { - this.node = null; - } - - /** - * Diese Anfrage liefert den Wahrheitswert true, wenn der Suchbaum leer ist, - * sonst liefert sie den Wert false. - * - * @return true, wenn der binaere Suchbaum leer ist, sonst false - * - */ - public boolean isEmpty() { - return this.node == null; - } - - /** - * Falls der Parameter null ist, geschieht nichts.<br /> - * Falls ein bezueglich der verwendeten Vergleichsmethode isEqual mit - * pContent uebereinstimmendes Objekt im geordneten binaeren Suchbau - * enthalten ist, passiert nichts. <br /> - * Achtung: hier wird davon ausgegangen, dass isEqual genau dann true - * liefert, wenn isLess und isGreater false liefern. <br /> - * Andernfalls (isLess oder isGreater) wird das Objekt pContent entsprechend - * der vorgegebenen Ordnungsrelation in den BinarySearchTree eingeordnet. - * - * @param pContent - * einzufuegendes Objekt vom Typ ContentType - * - */ - public void insert(ContentType pContent) { - if (pContent != null) { - if (isEmpty()) { - this.node = new BSTNode<ContentType>(pContent); - } else if (pContent.isLess(this.node.content)) { - this.node.left.insert(pContent); - } else if(pContent.isGreater(this.node.content)) { - this.node.right.insert(pContent); - } - } - } - - /** - * Diese Anfrage liefert den linken Teilbaum des binaeren Suchbaumes. <br /> - * Wenn er leer ist, wird null zurueckgegeben. - * - * @return den linken Teilbaum (Objekt vom Typ BinarySearchTree<ContentType>) - * bzw. null, wenn der Suchbaum leer ist - * - */ - public BinarySearchTree<ContentType> getLeftTree() { - if (this.isEmpty()) { - return null; - } else { - return this.node.left; - } - } - - /** - * Diese Anfrage liefert das Inhaltsobjekt des Suchbaumes. Wenn der Suchbaum - * leer ist, wird null zurueckgegeben. - * - * @return das Inhaltsobjekt vom Typ ContentType bzw. null, wenn der aktuelle - * Suchbaum leer ist - * - */ - public ContentType getContent() { - if (this.isEmpty()) { - return null; - } else { - return this.node.content; - } - } - - /** - * Diese Anfrage liefert den rechten Teilbaum des binaeren Suchbaumes. <br /> - * Wenn er leer ist, wird null zurueckgegeben. - * - * @return den rechten Teilbaum (Objekt vom Typ BinarySearchTree<ContentType>) - * bzw. null, wenn der aktuelle Suchbaum leer ist - * - */ - public BinarySearchTree<ContentType> getRightTree() { - if (this.isEmpty()) { - return null; - } else { - return this.node.right; - } - } - - /** - * Falls ein bezueglich der verwendeten Vergleichsmethode mit - * pContent uebereinstimmendes Objekt im binaeren Suchbaum enthalten - * ist, wird dieses entfernt. Falls der Parameter null ist, aendert sich - * nichts. - * - * @param pContent - * zu entfernendes Objekt vom Typ ContentType - * - */ - public void remove(ContentType pContent) { - if (isEmpty() || pContent == null ) { - // Abbrechen, da kein Element zum entfernen vorhanden ist. - return; - } - - if (pContent.isLess(node.content)) { - // Element ist im linken Teilbaum zu loeschen. - node.left.remove(pContent); - } else if (pContent.isGreater(node.content)) { - // Element ist im rechten Teilbaum zu loeschen. - node.right.remove(pContent); - } else { - // Element ist gefunden. - if (node.left.isEmpty()) { - if (node.right.isEmpty()) { - // Es gibt keinen Nachfolger. - node = null; - } else { - // Es gibt nur rechts einen Nachfolger. - node = getNodeOfRightSuccessor(); - } - } else if (node.right.isEmpty()) { - // Es gibt nur links einen Nachfolger. - node = getNodeOfLeftSuccessor(); - } else { - // Es gibt links und rechts einen Nachfolger. - if (getNodeOfRightSuccessor().left.isEmpty()) { - // Der rechte Nachfolger hat keinen linken Nachfolger. - node.content = getNodeOfRightSuccessor().content; - node.right = getNodeOfRightSuccessor().right; - } else { - BinarySearchTree<ContentType> previous = node.right - .ancestorOfSmallRight(); - BinarySearchTree<ContentType> smallest = previous.node.left; - this.node.content = smallest.node.content; - previous.remove(smallest.node.content); - } - } - } - } - - /** - * Falls ein bezueglich der verwendeten Vergleichsmethode isEqual mit - * pContent uebereinstimmendes Objekt im binaeren Suchbaum enthalten ist, - * liefert die Anfrage dieses, ansonsten wird null zurueckgegeben. <br /> - * Falls der Parameter null ist, wird null zurueckgegeben. - * - * @param pContent - * zu suchendes Objekt vom Typ ContentType - * @return das gefundene Objekt vom Typ ContentType, bei erfolgloser Suche null - * - */ - public ContentType search(ContentType pContent) { - if (this.isEmpty() || pContent == null) { - // Abbrechen, da es kein Element zu suchen gibt. - return null; - } else { - ContentType content = this.getContent(); - if (pContent.isLess(content)) { - // Element wird im linken Teilbaum gesucht. - return this.getLeftTree().search(pContent); - } else if (pContent.isGreater(content)) { - // Element wird im rechten Teilbaum gesucht. - return this.getRightTree().search(pContent); - } else if (pContent.isEqual(content)) { - // Element wurde gefunden. - return content; - } else { - // Dieser Fall sollte nicht auftreten. - return null; - } - } - } - - /* ----------- Weitere private Methoden -------------- */ - - /** - * Die Methode liefert denjenigen Baum, dessen linker Nachfolger keinen linken - * Nachfolger mehr hat. Es ist also spaeter moeglich, in einem Baum im - * rechten Nachfolger den Vorgaenger des linkesten Nachfolgers zu finden. - * - */ - private BinarySearchTree<ContentType> ancestorOfSmallRight() { - if (getNodeOfLeftSuccessor().left.isEmpty()) { - return this; - } else { - return node.left.ancestorOfSmallRight(); - } - } - - private BSTNode<ContentType> getNodeOfLeftSuccessor() { - return node.left.node; - } - - private BSTNode<ContentType> getNodeOfRightSuccessor() { - return node.right.node; - } - -} diff --git a/Erica/ComparableContent.java b/Erica/ComparableContent.java deleted file mode 100644 index eb6f42ea1481dbe9d02dfb08e29a82632dedbde9..0000000000000000000000000000000000000000 --- a/Erica/ComparableContent.java +++ /dev/null @@ -1,61 +0,0 @@ -package Erica; - /** - * <p> - * Materialien zu den zentralen NRW-Abiturpruefungen im Fach Informatik ab 2018 - * </p> - * <p> - * Generisches Interface (Schnittstelle) ComparableContent<ContentType> - * </p> - * <p> - * <p>Das generische Interface ComparableContent<ContentType> legt die Methoden - * fest, ueber die Objekte verfuegen muessen, die in einen binaeren Suchbaum - * (BinarySearchTree) eingefuegt werden sollen. Die Ordnungsrelation wird in - * Klassen, die ComparableContent implementieren durch Ueberschreiben der drei - * implizit abstrakten Methoden isGreater, isEqual und isLess festgelegt. - * </p> - * </p> - * @author Qualitaets- und UnterstuetzungsAgentur - Landesinstitut fuer Schule - * @version Generisch_02 2014-03-01 - */ -public interface ComparableContent<ContentType> { - - /** - * Wenn festgestellt wird, dass das Objekt, von dem die Methode aufgerufen - * wird, bzgl. der gewuenschten Ordnungsrelation groesser als das Objekt - * pContent ist, wird true geliefert. Sonst wird false geliefert. - * - * @param pContent - * das mit dem aufrufenden Objekt zu vergleichende Objekt vom - * Typ ContentType - * @return true, wenn das aufrufende Objekt groesser ist als das Objekt - * pContent, sonst false - */ - public boolean isGreater(ContentType pContent); - - /** - * Wenn festgestellt wird, dass das Objekt, von dem die Methode aufgerufen - * wird, bzgl. der gewuenschten Ordnungsrelation gleich gross wie das Objekt - * pContent ist, wird true geliefert. Sonst wird false geliefert. - * - * @param pContent - * das mit dem aufrufenden Objekt zu vergleichende Objekt vom - * Typ ContentType - * @return true, wenn das aufrufende Objekt gleich gross ist wie das Objekt - * pContent, sonst false - */ - public boolean isEqual(ContentType pContent); - - /** - * Wenn festgestellt wird, dass das Objekt, von dem die Methode aufgerufen - * wird, bzgl. der gewuenschten Ordnungsrelation kleiner als das Objekt - * pContent ist, wird true geliefert. Sonst wird false geliefert. - * - * @param pContent - * das mit dem aufrufenden Objekt zu vergleichende Objekt vom - * Typ ContentType - * @return true, wenn das aufrufende Objekt kleiner ist als das Objekt - * pContent, sonst false - */ - public boolean isLess(ContentType pContent); - -} diff --git a/Erica/package.bluej b/Erica/package.bluej deleted file mode 100644 index a2fde5dd5e6e50a588a29423c63baf882d09d7a1..0000000000000000000000000000000000000000 --- a/Erica/package.bluej +++ /dev/null @@ -1,57 +0,0 @@ -#BlueJ package file -dependency1.from=BinarySearchTree -dependency1.to=ComparableContent -dependency1.type=UsesDependency -dependency2.from=Benutzerverwaltung -dependency2.to=BinarySearchTree -dependency2.type=UsesDependency -dependency3.from=Benutzerverwaltung -dependency3.to=Benutzerprofil -dependency3.type=UsesDependency -objectbench.height=93 -objectbench.width=760 -package.divider.horizontal=0.6 -package.divider.vertical=0.8 -package.editor.height=393 -package.editor.width=649 -package.editor.x=186 -package.editor.y=241 -package.frame.height=600 -package.frame.width=800 -package.numDependencies=3 -package.numTargets=4 -package.showExtends=true -package.showUses=true -readme.height=58 -readme.name=@README -readme.width=47 -readme.x=10 -readme.y=10 -target1.height=50 -target1.name=ComparableContent -target1.showInterface=false -target1.type=InterfaceTarget -target1.width=250 -target1.x=210 -target1.y=210 -target2.height=50 -target2.name=Benutzerprofil -target2.showInterface=false -target2.type=ClassTarget -target2.width=110 -target2.x=430 -target2.y=120 -target3.height=50 -target3.name=Benutzerverwaltung -target3.showInterface=false -target3.type=ClassTarget -target3.width=150 -target3.x=250 -target3.y=20 -target4.height=50 -target4.name=BinarySearchTree -target4.showInterface=false -target4.type=ClassTarget -target4.width=230 -target4.x=60 -target4.y=120 diff --git a/Lars/Benutzerprofil.java b/Lars/Benutzerprofil.java deleted file mode 100644 index c3f9ffc251988c23633b599c18569f39943c4043..0000000000000000000000000000000000000000 --- a/Lars/Benutzerprofil.java +++ /dev/null @@ -1,47 +0,0 @@ -package Lars; - - -/** - * Beschreiben Sie hier die Klasse Benutzerprofil. - * - * @author (Ihr Name) - * @version (eine Versionsnummer oder ein Datum) - */ -public class Benutzerprofil implements ComparableContent<Benutzerprofil> -{ - // Instanzvariablen - ersetzen Sie das folgende Beispiel mit Ihren Variablen - private String benutzername; - - /** - * Konstruktor für Objekte der Klasse Benutzerprofil - */ - public Benutzerprofil(String login, String pw) - { - // Instanzvariable initialisieren - - } - - public boolean isGreater(Benutzerprofil pk) - { - return true; - } - - public boolean isLess(Benutzerprofil pk) - { - return true; - } - - public boolean isEqual(Benutzerprofil pk) - { - return true; - } - - public String gibBenutzername() - { - // tragen Sie hier den Code ein - return benutzername; - } - - -} - diff --git a/Lars/Benutzerverwaltung.java b/Lars/Benutzerverwaltung.java deleted file mode 100644 index 9a81148126c5d94460f8ff69837c58b4f09ec794..0000000000000000000000000000000000000000 --- a/Lars/Benutzerverwaltung.java +++ /dev/null @@ -1,37 +0,0 @@ -package Lars; - -/** - * Beschreiben Sie hier die Klasse Benutzerverwaltung. - * - * @author (Ihr Name) - * @version (eine Versionsnummer oder ein Datum) - */ -public class Benutzerverwaltung -{ - // Instanzvariablen - ersetzen Sie das folgende Beispiel mit Ihren Variablen - private BinarySearchTree<Benutzerprofil> benutzerBaum; - - /** - * Konstruktor für Objekte der Klasse Benutzerverwaltung - */ - public Benutzerverwaltung() - { - // Instanzvariable initialisieren - benutzerBaum = new BinarySearchTree(); - } - - public void neuenNutzerAnlegen(String pBenutzername, String pPw) - { - - } - - public void benutzerLoeschen(String pBenutzername, String pPw) - { - - } - - public void profilVorhanden(String pBenutzername) - { - - } -} \ No newline at end of file diff --git a/Lars/BinarySearchTree.java b/Lars/BinarySearchTree.java deleted file mode 100644 index 14bd80ff3fcfb7409979c5084ef0fa7b5b60234c..0000000000000000000000000000000000000000 --- a/Lars/BinarySearchTree.java +++ /dev/null @@ -1,262 +0,0 @@ -package Lars; - -/** - * <p> - * Materialien zu den zentralen NRW-Abiturpruefungen im Fach Informatik ab 2018 - * </p> - * <p> - * Generische Klasse BinarySearchTree<ContentType> - * </p> - * <p> - * Mithilfe der generischen Klasse BinarySearchTree koennen beliebig viele - * Objekte in einem Binaerbaum (binaerer Suchbaum) entsprechend einer - * Ordnungsrelation verwaltet werden. <br /> - * Ein Objekt der Klasse stellt entweder einen leeren binaeren Suchbaum dar oder - * verwaltet ein Inhaltsobjekt sowie einen linken und einen rechten Teilbaum, - * die ebenfalls Objekte der Klasse BinarySearchTree sind.<br /> - * Die Klasse der Objekte, die in dem Suchbaum verwaltet werden sollen, muss - * das generische Interface ComparableContent implementieren. Dabei muss durch - * Ueberschreiben der drei Vergleichsmethoden isLess, isEqual, isGreater (s. - * Dokumentation des Interfaces) eine eindeutige Ordnungsrelation festgelegt - * sein. <br /> - * Alle Objekte im linken Teilbaum sind kleiner als das Inhaltsobjekt des - * binaeren Suchbaums. Alle Objekte im rechten Teilbaum sind groesser als das - * Inhaltsobjekt des binaeren Suchbaums. Diese Bedingung gilt (rekursiv) auch in - * beiden Teilbaeumen. <br /> - * Hinweis: In dieser Version wird die Klasse BinaryTree nicht benutzt. - * </p> - * - * @author Qualitaets- und UnterstuetzungsAgentur - Landesinstitut fuer Schule - * @version Generisch_03 2017-11-28 - */ -public class BinarySearchTree<ContentType extends ComparableContent<ContentType>> { - - /* --------- Anfang der privaten inneren Klasse -------------- */ - - /** - * Durch diese innere Klasse kann man dafuer sorgen, dass ein leerer Baum - * null ist, ein nicht-leerer Baum jedoch immer eine nicht-null-Wurzel sowie - * nicht-null-Teilbaeume hat. - */ - private class BSTNode<CT extends ComparableContent<CT>> { - - private CT content; - private BinarySearchTree<CT> left, right; - - public BSTNode(CT pContent) { - // Der Knoten hat einen linken und rechten Teilbaum, die - // beide von null verschieden sind. Also hat ein Blatt immer zwei - // leere Teilbaeume unter sich. - this.content = pContent; - left = new BinarySearchTree<CT>(); - right = new BinarySearchTree<CT>(); - } - - } - - /* ----------- Ende der privaten inneren Klasse -------------- */ - - private BSTNode<ContentType> node; - - /** - * Der Konstruktor erzeugt einen leeren Suchbaum. - */ - public BinarySearchTree() { - this.node = null; - } - - /** - * Diese Anfrage liefert den Wahrheitswert true, wenn der Suchbaum leer ist, - * sonst liefert sie den Wert false. - * - * @return true, wenn der binaere Suchbaum leer ist, sonst false - * - */ - public boolean isEmpty() { - return this.node == null; - } - - /** - * Falls der Parameter null ist, geschieht nichts.<br /> - * Falls ein bezueglich der verwendeten Vergleichsmethode isEqual mit - * pContent uebereinstimmendes Objekt im geordneten binaeren Suchbau - * enthalten ist, passiert nichts. <br /> - * Achtung: hier wird davon ausgegangen, dass isEqual genau dann true - * liefert, wenn isLess und isGreater false liefern. <br /> - * Andernfalls (isLess oder isGreater) wird das Objekt pContent entsprechend - * der vorgegebenen Ordnungsrelation in den BinarySearchTree eingeordnet. - * - * @param pContent - * einzufuegendes Objekt vom Typ ContentType - * - */ - public void insert(ContentType pContent) { - if (pContent != null) { - if (isEmpty()) { - this.node = new BSTNode<ContentType>(pContent); - } else if (pContent.isLess(this.node.content)) { - this.node.left.insert(pContent); - } else if(pContent.isGreater(this.node.content)) { - this.node.right.insert(pContent); - } - } - } - - /** - * Diese Anfrage liefert den linken Teilbaum des binaeren Suchbaumes. <br /> - * Wenn er leer ist, wird null zurueckgegeben. - * - * @return den linken Teilbaum (Objekt vom Typ BinarySearchTree<ContentType>) - * bzw. null, wenn der Suchbaum leer ist - * - */ - public BinarySearchTree<ContentType> getLeftTree() { - if (this.isEmpty()) { - return null; - } else { - return this.node.left; - } - } - - /** - * Diese Anfrage liefert das Inhaltsobjekt des Suchbaumes. Wenn der Suchbaum - * leer ist, wird null zurueckgegeben. - * - * @return das Inhaltsobjekt vom Typ ContentType bzw. null, wenn der aktuelle - * Suchbaum leer ist - * - */ - public ContentType getContent() { - if (this.isEmpty()) { - return null; - } else { - return this.node.content; - } - } - - /** - * Diese Anfrage liefert den rechten Teilbaum des binaeren Suchbaumes. <br /> - * Wenn er leer ist, wird null zurueckgegeben. - * - * @return den rechten Teilbaum (Objekt vom Typ BinarySearchTree<ContentType>) - * bzw. null, wenn der aktuelle Suchbaum leer ist - * - */ - public BinarySearchTree<ContentType> getRightTree() { - if (this.isEmpty()) { - return null; - } else { - return this.node.right; - } - } - - /** - * Falls ein bezueglich der verwendeten Vergleichsmethode mit - * pContent uebereinstimmendes Objekt im binaeren Suchbaum enthalten - * ist, wird dieses entfernt. Falls der Parameter null ist, aendert sich - * nichts. - * - * @param pContent - * zu entfernendes Objekt vom Typ ContentType - * - */ - public void remove(ContentType pContent) { - if (isEmpty() || pContent == null ) { - // Abbrechen, da kein Element zum entfernen vorhanden ist. - return; - } - - if (pContent.isLess(node.content)) { - // Element ist im linken Teilbaum zu loeschen. - node.left.remove(pContent); - } else if (pContent.isGreater(node.content)) { - // Element ist im rechten Teilbaum zu loeschen. - node.right.remove(pContent); - } else { - // Element ist gefunden. - if (node.left.isEmpty()) { - if (node.right.isEmpty()) { - // Es gibt keinen Nachfolger. - node = null; - } else { - // Es gibt nur rechts einen Nachfolger. - node = getNodeOfRightSuccessor(); - } - } else if (node.right.isEmpty()) { - // Es gibt nur links einen Nachfolger. - node = getNodeOfLeftSuccessor(); - } else { - // Es gibt links und rechts einen Nachfolger. - if (getNodeOfRightSuccessor().left.isEmpty()) { - // Der rechte Nachfolger hat keinen linken Nachfolger. - node.content = getNodeOfRightSuccessor().content; - node.right = getNodeOfRightSuccessor().right; - } else { - BinarySearchTree<ContentType> previous = node.right - .ancestorOfSmallRight(); - BinarySearchTree<ContentType> smallest = previous.node.left; - this.node.content = smallest.node.content; - previous.remove(smallest.node.content); - } - } - } - } - - /** - * Falls ein bezueglich der verwendeten Vergleichsmethode isEqual mit - * pContent uebereinstimmendes Objekt im binaeren Suchbaum enthalten ist, - * liefert die Anfrage dieses, ansonsten wird null zurueckgegeben. <br /> - * Falls der Parameter null ist, wird null zurueckgegeben. - * - * @param pContent - * zu suchendes Objekt vom Typ ContentType - * @return das gefundene Objekt vom Typ ContentType, bei erfolgloser Suche null - * - */ - public ContentType search(ContentType pContent) { - if (this.isEmpty() || pContent == null) { - // Abbrechen, da es kein Element zu suchen gibt. - return null; - } else { - ContentType content = this.getContent(); - if (pContent.isLess(content)) { - // Element wird im linken Teilbaum gesucht. - return this.getLeftTree().search(pContent); - } else if (pContent.isGreater(content)) { - // Element wird im rechten Teilbaum gesucht. - return this.getRightTree().search(pContent); - } else if (pContent.isEqual(content)) { - // Element wurde gefunden. - return content; - } else { - // Dieser Fall sollte nicht auftreten. - return null; - } - } - } - - /* ----------- Weitere private Methoden -------------- */ - - /** - * Die Methode liefert denjenigen Baum, dessen linker Nachfolger keinen linken - * Nachfolger mehr hat. Es ist also spaeter moeglich, in einem Baum im - * rechten Nachfolger den Vorgaenger des linkesten Nachfolgers zu finden. - * - */ - private BinarySearchTree<ContentType> ancestorOfSmallRight() { - if (getNodeOfLeftSuccessor().left.isEmpty()) { - return this; - } else { - return node.left.ancestorOfSmallRight(); - } - } - - private BSTNode<ContentType> getNodeOfLeftSuccessor() { - return node.left.node; - } - - private BSTNode<ContentType> getNodeOfRightSuccessor() { - return node.right.node; - } - -} diff --git a/Lars/ComparableContent.java b/Lars/ComparableContent.java deleted file mode 100644 index 22c4559a07d9c916047b790c9392d6a2118f4a3d..0000000000000000000000000000000000000000 --- a/Lars/ComparableContent.java +++ /dev/null @@ -1,62 +0,0 @@ -package Lars; - - /** - * <p> - * Materialien zu den zentralen NRW-Abiturpruefungen im Fach Informatik ab 2018 - * </p> - * <p> - * Generisches Interface (Schnittstelle) ComparableContent<ContentType> - * </p> - * <p> - * <p>Das generische Interface ComparableContent<ContentType> legt die Methoden - * fest, ueber die Objekte verfuegen muessen, die in einen binaeren Suchbaum - * (BinarySearchTree) eingefuegt werden sollen. Die Ordnungsrelation wird in - * Klassen, die ComparableContent implementieren durch Ueberschreiben der drei - * implizit abstrakten Methoden isGreater, isEqual und isLess festgelegt. - * </p> - * </p> - * @author Qualitaets- und UnterstuetzungsAgentur - Landesinstitut fuer Schule - * @version Generisch_02 2014-03-01 - */ -public interface ComparableContent<ContentType> { - - /** - * Wenn festgestellt wird, dass das Objekt, von dem die Methode aufgerufen - * wird, bzgl. der gewuenschten Ordnungsrelation groesser als das Objekt - * pContent ist, wird true geliefert. Sonst wird false geliefert. - * - * @param pContent - * das mit dem aufrufenden Objekt zu vergleichende Objekt vom - * Typ ContentType - * @return true, wenn das aufrufende Objekt groesser ist als das Objekt - * pContent, sonst false - */ - public boolean isGreater(ContentType pContent); - - /** - * Wenn festgestellt wird, dass das Objekt, von dem die Methode aufgerufen - * wird, bzgl. der gewuenschten Ordnungsrelation gleich gross wie das Objekt - * pContent ist, wird true geliefert. Sonst wird false geliefert. - * - * @param pContent - * das mit dem aufrufenden Objekt zu vergleichende Objekt vom - * Typ ContentType - * @return true, wenn das aufrufende Objekt gleich gross ist wie das Objekt - * pContent, sonst false - */ - public boolean isEqual(ContentType pContent); - - /** - * Wenn festgestellt wird, dass das Objekt, von dem die Methode aufgerufen - * wird, bzgl. der gewuenschten Ordnungsrelation kleiner als das Objekt - * pContent ist, wird true geliefert. Sonst wird false geliefert. - * - * @param pContent - * das mit dem aufrufenden Objekt zu vergleichende Objekt vom - * Typ ContentType - * @return true, wenn das aufrufende Objekt kleiner ist als das Objekt - * pContent, sonst false - */ - public boolean isLess(ContentType pContent); - -} diff --git a/Lars/package.bluej b/Lars/package.bluej deleted file mode 100644 index dd18323561a8bdfddbe47cc807beb650972d174a..0000000000000000000000000000000000000000 --- a/Lars/package.bluej +++ /dev/null @@ -1,48 +0,0 @@ -#BlueJ package file -objectbench.height=101 -objectbench.width=776 -package.divider.horizontal=0.6 -package.divider.vertical=0.8007380073800738 -package.editor.height=427 -package.editor.width=652 -package.editor.x=328 -package.editor.y=300 -package.frame.height=600 -package.frame.width=800 -package.numDependencies=0 -package.numTargets=4 -package.showExtends=true -package.showUses=true -readme.height=60 -readme.name=@README -readme.width=48 -readme.x=10 -readme.y=10 -target1.height=70 -target1.name=ComparableContent -target1.showInterface=false -target1.type=InterfaceTarget -target1.width=250 -target1.x=310 -target1.y=70 -target2.height=70 -target2.name=Benutzerprofil -target2.showInterface=false -target2.type=ClassTarget -target2.width=120 -target2.x=10 -target2.y=270 -target3.height=70 -target3.name=Benutzerverwaltung -target3.showInterface=false -target3.type=ClassTarget -target3.width=150 -target3.x=10 -target3.y=110 -target4.height=70 -target4.name=BinarySearchTree -target4.showInterface=false -target4.type=ClassTarget -target4.width=240 -target4.x=230 -target4.y=280 diff --git a/Taha/Benutzerprofil.java b/Taha/Benutzerprofil.java deleted file mode 100644 index 91023832f74b064c7c46d8f38f6ff031fe656042..0000000000000000000000000000000000000000 --- a/Taha/Benutzerprofil.java +++ /dev/null @@ -1,49 +0,0 @@ -package Taha; - - -/** - * Beschreiben Sie hier die Klasse Benutzerprofil. - * - * @author (Ihr Name) - * @version (eine Versionsnummer oder ein Datum) - */ -public class Benutzerprofil implements ComparableContent<Benutzerprofil> -{ - // Instanzvariablen - ersetzen Sie das folgende Beispiel mit Ihren Variablen - private String benutzername; - private String password; - - /** - * Konstruktor für Objekte der Klasse Benutzerprofil - */ - public Benutzerprofil(String login, String pw) - { - this.benutzername = login; - this.password = pw; - } - - public boolean isGreater(Benutzerprofil pk) - { - String username = pk.gibBenutzername(); - return username.compareTo(this.benutzername) > 0; - } - - public boolean isLess(Benutzerprofil pk) - { - String username = pk.gibBenutzername(); - return username.compareTo(this.benutzername) < 0; - } - - public boolean isEqual(Benutzerprofil pk) - { - String username = pk.gibBenutzername(); - return username.compareTo(this.benutzername) == 0; - } - - public String gibBenutzername() - { - return this.benutzername; - } - - -} diff --git a/Taha/Benutzerverwaltung.java b/Taha/Benutzerverwaltung.java deleted file mode 100644 index cb3cb3df4e3e58c2737db8965978d828dbeac9d9..0000000000000000000000000000000000000000 --- a/Taha/Benutzerverwaltung.java +++ /dev/null @@ -1,73 +0,0 @@ -package Taha; - -/** - * Beschreiben Sie hier die Klasse Benutzerverwaltung. - * - * @author (Ihr Name) - * @version (eine Versionsnummer oder ein Datum) - */ -public class Benutzerverwaltung -{ - // Instanzvariablen - ersetzen Sie das folgende Beispiel mit Ihren Variablen - private BinarySearchTree<Benutzerprofil> benutzerBaum; - - /** - * Konstruktor für Objekte der Klasse Benutzerverwaltung - */ - public Benutzerverwaltung() - { - benutzerBaum = new BinarySearchTree<Benutzerprofil>(); - - benutzerBaum.insert(new Benutzerprofil("gerd44", "ichbinrassist")); - benutzerBaum.insert(new Benutzerprofil("elfriede41", "ichbinrassist")); - benutzerBaum.insert(new Benutzerprofil("pia96", "ichbinrassist")); - benutzerBaum.insert(new Benutzerprofil("ayce90", "ichbinrassist")); - benutzerBaum.insert(new Benutzerprofil("frank78", "ichbinrassist")); - benutzerBaum.insert(new Benutzerprofil("max62", "ichbinrassist")); - benutzerBaum.insert(new Benutzerprofil("tina90", "ichbinrassist")); - benutzerBaum.insert(new Benutzerprofil("alfred65", "ichbinrassist")); - benutzerBaum.insert(new Benutzerprofil("chuck73", "ichbinrassist")); - benutzerBaum.insert(new Benutzerprofil("jan62", "ichbinrassist")); - benutzerBaum.insert(new Benutzerprofil("michelle73", "ichbinrassist")); - benutzerBaum.insert(new Benutzerprofil("susi81", "ichbinrassist")); - benutzerBaum.insert(new Benutzerprofil("udo86", "ichbinrassist")); - benutzerBaum.insert(new Benutzerprofil("yoki33", "ichbinrassist")); - } - - public void neuenNutzerAnlegen(String pBenutzername, String pPw) - { - Benutzerprofil user = new Benutzerprofil(pBenutzername, pPw); - benutzerBaum.insert(user); - } - - public void benutzerLoeschen(String pBenutzername, String pPw) - { - Benutzerprofil user = new Benutzerprofil(pBenutzername, pPw); - benutzerBaum.remove(user); - } - - public void profilVorhanden(String pBenutzername) - { - traversierenIntern(pBenutzername, this.benutzerBaum); - } - - private void traversierenIntern(String pBenutzername, BinarySearchTree<Benutzerprofil> pBaum) { - BinarySearchTree<Benutzerprofil> bLeft = pBaum.getLeftTree(); - BinarySearchTree<Benutzerprofil> bRight = pBaum.getRightTree(); - - String username = pBaum.getContent().gibBenutzername(); - - if(username.compareTo(pBenutzername) == 0) { - System.out.println("nutzer gefunden"); - return; - } - - if(bLeft.getContent() != null) { - traversierenIntern(pBenutzername, bLeft); - } - - if(bRight.getContent() != null) { - traversierenIntern(pBenutzername, bRight); - } - } -} diff --git a/Taha/BinarySearchTree.java b/Taha/BinarySearchTree.java deleted file mode 100644 index 2880e3491806aee55b7d3de0e360a2a55ebb22d4..0000000000000000000000000000000000000000 --- a/Taha/BinarySearchTree.java +++ /dev/null @@ -1,262 +0,0 @@ -package Taha; - -/** - * <p> - * Materialien zu den zentralen NRW-Abiturpruefungen im Fach Informatik ab 2018 - * </p> - * <p> - * Generische Klasse BinarySearchTree<ContentType> - * </p> - * <p> - * Mithilfe der generischen Klasse BinarySearchTree koennen beliebig viele - * Objekte in einem Binaerbaum (binaerer Suchbaum) entsprechend einer - * Ordnungsrelation verwaltet werden. <br /> - * Ein Objekt der Klasse stellt entweder einen leeren binaeren Suchbaum dar oder - * verwaltet ein Inhaltsobjekt sowie einen linken und einen rechten Teilbaum, - * die ebenfalls Objekte der Klasse BinarySearchTree sind.<br /> - * Die Klasse der Objekte, die in dem Suchbaum verwaltet werden sollen, muss - * das generische Interface ComparableContent implementieren. Dabei muss durch - * Ueberschreiben der drei Vergleichsmethoden isLess, isEqual, isGreater (s. - * Dokumentation des Interfaces) eine eindeutige Ordnungsrelation festgelegt - * sein. <br /> - * Alle Objekte im linken Teilbaum sind kleiner als das Inhaltsobjekt des - * binaeren Suchbaums. Alle Objekte im rechten Teilbaum sind groesser als das - * Inhaltsobjekt des binaeren Suchbaums. Diese Bedingung gilt (rekursiv) auch in - * beiden Teilbaeumen. <br /> - * Hinweis: In dieser Version wird die Klasse BinaryTree nicht benutzt. - * </p> - * - * @author Qualitaets- und UnterstuetzungsAgentur - Landesinstitut fuer Schule - * @version Generisch_03 2017-11-28 - */ -public class BinarySearchTree<ContentType extends ComparableContent<ContentType>> { - - /* --------- Anfang der privaten inneren Klasse -------------- */ - - /** - * Durch diese innere Klasse kann man dafuer sorgen, dass ein leerer Baum - * null ist, ein nicht-leerer Baum jedoch immer eine nicht-null-Wurzel sowie - * nicht-null-Teilbaeume hat. - */ - private class BSTNode<CT extends ComparableContent<CT>> { - - private CT content; - private BinarySearchTree<CT> left, right; - - public BSTNode(CT pContent) { - // Der Knoten hat einen linken und rechten Teilbaum, die - // beide von null verschieden sind. Also hat ein Blatt immer zwei - // leere Teilbaeume unter sich. - this.content = pContent; - left = new BinarySearchTree<CT>(); - right = new BinarySearchTree<CT>(); - } - - } - - /* ----------- Ende der privaten inneren Klasse -------------- */ - - private BSTNode<ContentType> node; - - /** - * Der Konstruktor erzeugt einen leeren Suchbaum. - */ - public BinarySearchTree() { - this.node = null; - } - - /** - * Diese Anfrage liefert den Wahrheitswert true, wenn der Suchbaum leer ist, - * sonst liefert sie den Wert false. - * - * @return true, wenn der binaere Suchbaum leer ist, sonst false - * - */ - public boolean isEmpty() { - return this.node == null; - } - - /** - * Falls der Parameter null ist, geschieht nichts.<br /> - * Falls ein bezueglich der verwendeten Vergleichsmethode isEqual mit - * pContent uebereinstimmendes Objekt im geordneten binaeren Suchbau - * enthalten ist, passiert nichts. <br /> - * Achtung: hier wird davon ausgegangen, dass isEqual genau dann true - * liefert, wenn isLess und isGreater false liefern. <br /> - * Andernfalls (isLess oder isGreater) wird das Objekt pContent entsprechend - * der vorgegebenen Ordnungsrelation in den BinarySearchTree eingeordnet. - * - * @param pContent - * einzufuegendes Objekt vom Typ ContentType - * - */ - public void insert(ContentType pContent) { - if (pContent != null) { - if (isEmpty()) { - this.node = new BSTNode<ContentType>(pContent); - } else if (pContent.isLess(this.node.content)) { - this.node.left.insert(pContent); - } else if(pContent.isGreater(this.node.content)) { - this.node.right.insert(pContent); - } - } - } - - /** - * Diese Anfrage liefert den linken Teilbaum des binaeren Suchbaumes. <br /> - * Wenn er leer ist, wird null zurueckgegeben. - * - * @return den linken Teilbaum (Objekt vom Typ BinarySearchTree<ContentType>) - * bzw. null, wenn der Suchbaum leer ist - * - */ - public BinarySearchTree<ContentType> getLeftTree() { - if (this.isEmpty()) { - return null; - } else { - return this.node.left; - } - } - - /** - * Diese Anfrage liefert das Inhaltsobjekt des Suchbaumes. Wenn der Suchbaum - * leer ist, wird null zurueckgegeben. - * - * @return das Inhaltsobjekt vom Typ ContentType bzw. null, wenn der aktuelle - * Suchbaum leer ist - * - */ - public ContentType getContent() { - if (this.isEmpty()) { - return null; - } else { - return this.node.content; - } - } - - /** - * Diese Anfrage liefert den rechten Teilbaum des binaeren Suchbaumes. <br /> - * Wenn er leer ist, wird null zurueckgegeben. - * - * @return den rechten Teilbaum (Objekt vom Typ BinarySearchTree<ContentType>) - * bzw. null, wenn der aktuelle Suchbaum leer ist - * - */ - public BinarySearchTree<ContentType> getRightTree() { - if (this.isEmpty()) { - return null; - } else { - return this.node.right; - } - } - - /** - * Falls ein bezueglich der verwendeten Vergleichsmethode mit - * pContent uebereinstimmendes Objekt im binaeren Suchbaum enthalten - * ist, wird dieses entfernt. Falls der Parameter null ist, aendert sich - * nichts. - * - * @param pContent - * zu entfernendes Objekt vom Typ ContentType - * - */ - public void remove(ContentType pContent) { - if (isEmpty() || pContent == null ) { - // Abbrechen, da kein Element zum entfernen vorhanden ist. - return; - } - - if (pContent.isLess(node.content)) { - // Element ist im linken Teilbaum zu loeschen. - node.left.remove(pContent); - } else if (pContent.isGreater(node.content)) { - // Element ist im rechten Teilbaum zu loeschen. - node.right.remove(pContent); - } else { - // Element ist gefunden. - if (node.left.isEmpty()) { - if (node.right.isEmpty()) { - // Es gibt keinen Nachfolger. - node = null; - } else { - // Es gibt nur rechts einen Nachfolger. - node = getNodeOfRightSuccessor(); - } - } else if (node.right.isEmpty()) { - // Es gibt nur links einen Nachfolger. - node = getNodeOfLeftSuccessor(); - } else { - // Es gibt links und rechts einen Nachfolger. - if (getNodeOfRightSuccessor().left.isEmpty()) { - // Der rechte Nachfolger hat keinen linken Nachfolger. - node.content = getNodeOfRightSuccessor().content; - node.right = getNodeOfRightSuccessor().right; - } else { - BinarySearchTree<ContentType> previous = node.right - .ancestorOfSmallRight(); - BinarySearchTree<ContentType> smallest = previous.node.left; - this.node.content = smallest.node.content; - previous.remove(smallest.node.content); - } - } - } - } - - /** - * Falls ein bezueglich der verwendeten Vergleichsmethode isEqual mit - * pContent uebereinstimmendes Objekt im binaeren Suchbaum enthalten ist, - * liefert die Anfrage dieses, ansonsten wird null zurueckgegeben. <br /> - * Falls der Parameter null ist, wird null zurueckgegeben. - * - * @param pContent - * zu suchendes Objekt vom Typ ContentType - * @return das gefundene Objekt vom Typ ContentType, bei erfolgloser Suche null - * - */ - public ContentType search(ContentType pContent) { - if (this.isEmpty() || pContent == null) { - // Abbrechen, da es kein Element zu suchen gibt. - return null; - } else { - ContentType content = this.getContent(); - if (pContent.isLess(content)) { - // Element wird im linken Teilbaum gesucht. - return this.getLeftTree().search(pContent); - } else if (pContent.isGreater(content)) { - // Element wird im rechten Teilbaum gesucht. - return this.getRightTree().search(pContent); - } else if (pContent.isEqual(content)) { - // Element wurde gefunden. - return content; - } else { - // Dieser Fall sollte nicht auftreten. - return null; - } - } - } - - /* ----------- Weitere private Methoden -------------- */ - - /** - * Die Methode liefert denjenigen Baum, dessen linker Nachfolger keinen linken - * Nachfolger mehr hat. Es ist also spaeter moeglich, in einem Baum im - * rechten Nachfolger den Vorgaenger des linkesten Nachfolgers zu finden. - * - */ - private BinarySearchTree<ContentType> ancestorOfSmallRight() { - if (getNodeOfLeftSuccessor().left.isEmpty()) { - return this; - } else { - return node.left.ancestorOfSmallRight(); - } - } - - private BSTNode<ContentType> getNodeOfLeftSuccessor() { - return node.left.node; - } - - private BSTNode<ContentType> getNodeOfRightSuccessor() { - return node.right.node; - } - -} diff --git a/Taha/ComparableContent.java b/Taha/ComparableContent.java deleted file mode 100644 index 6313a71e0dd71b6159dfb5ad48ad61235626ccdd..0000000000000000000000000000000000000000 --- a/Taha/ComparableContent.java +++ /dev/null @@ -1,62 +0,0 @@ -package Taha; - - /** - * <p> - * Materialien zu den zentralen NRW-Abiturpruefungen im Fach Informatik ab 2018 - * </p> - * <p> - * Generisches Interface (Schnittstelle) ComparableContent<ContentType> - * </p> - * <p> - * <p>Das generische Interface ComparableContent<ContentType> legt die Methoden - * fest, ueber die Objekte verfuegen muessen, die in einen binaeren Suchbaum - * (BinarySearchTree) eingefuegt werden sollen. Die Ordnungsrelation wird in - * Klassen, die ComparableContent implementieren durch Ueberschreiben der drei - * implizit abstrakten Methoden isGreater, isEqual und isLess festgelegt. - * </p> - * </p> - * @author Qualitaets- und UnterstuetzungsAgentur - Landesinstitut fuer Schule - * @version Generisch_02 2014-03-01 - */ -public interface ComparableContent<ContentType> { - - /** - * Wenn festgestellt wird, dass das Objekt, von dem die Methode aufgerufen - * wird, bzgl. der gewuenschten Ordnungsrelation groesser als das Objekt - * pContent ist, wird true geliefert. Sonst wird false geliefert. - * - * @param pContent - * das mit dem aufrufenden Objekt zu vergleichende Objekt vom - * Typ ContentType - * @return true, wenn das aufrufende Objekt groesser ist als das Objekt - * pContent, sonst false - */ - public boolean isGreater(ContentType pContent); - - /** - * Wenn festgestellt wird, dass das Objekt, von dem die Methode aufgerufen - * wird, bzgl. der gewuenschten Ordnungsrelation gleich gross wie das Objekt - * pContent ist, wird true geliefert. Sonst wird false geliefert. - * - * @param pContent - * das mit dem aufrufenden Objekt zu vergleichende Objekt vom - * Typ ContentType - * @return true, wenn das aufrufende Objekt gleich gross ist wie das Objekt - * pContent, sonst false - */ - public boolean isEqual(ContentType pContent); - - /** - * Wenn festgestellt wird, dass das Objekt, von dem die Methode aufgerufen - * wird, bzgl. der gewuenschten Ordnungsrelation kleiner als das Objekt - * pContent ist, wird true geliefert. Sonst wird false geliefert. - * - * @param pContent - * das mit dem aufrufenden Objekt zu vergleichende Objekt vom - * Typ ContentType - * @return true, wenn das aufrufende Objekt kleiner ist als das Objekt - * pContent, sonst false - */ - public boolean isLess(ContentType pContent); - -} diff --git a/Taha/package.bluej b/Taha/package.bluej deleted file mode 100644 index f08c2616eb478bd95e09c09f5c992729e0ae192b..0000000000000000000000000000000000000000 --- a/Taha/package.bluej +++ /dev/null @@ -1,57 +0,0 @@ -#BlueJ package file -dependency1.from=BinarySearchTree -dependency1.to=ComparableContent -dependency1.type=UsesDependency -dependency2.from=Benutzerverwaltung -dependency2.to=BinarySearchTree -dependency2.type=UsesDependency -dependency3.from=Benutzerverwaltung -dependency3.to=Benutzerprofil -dependency3.type=UsesDependency -objectbench.height=101 -objectbench.width=776 -package.divider.horizontal=0.6 -package.divider.vertical=0.8007380073800738 -package.editor.height=427 -package.editor.width=661 -package.editor.x=506 -package.editor.y=54 -package.frame.height=600 -package.frame.width=800 -package.numDependencies=3 -package.numTargets=4 -package.showExtends=true -package.showUses=true -readme.height=60 -readme.name=@README -readme.width=48 -readme.x=10 -readme.y=10 -target1.height=70 -target1.name=ComparableContent -target1.showInterface=false -target1.type=InterfaceTarget -target1.width=230 -target1.x=310 -target1.y=100 -target2.height=70 -target2.name=Benutzerprofil -target2.showInterface=false -target2.type=ClassTarget -target2.width=120 -target2.x=160 -target2.y=300 -target3.height=70 -target3.name=Benutzerverwaltung -target3.showInterface=false -target3.type=ClassTarget -target3.width=140 -target3.x=70 -target3.y=10 -target4.height=70 -target4.name=BinarySearchTree -target4.showInterface=false -target4.type=ClassTarget -target4.width=210 -target4.x=100 -target4.y=170 diff --git a/jodie/Benutzerprofil.java b/jodie/Benutzerprofil.java deleted file mode 100644 index c99e565ff228681cd408c7be42696a4045b0cbd9..0000000000000000000000000000000000000000 --- a/jodie/Benutzerprofil.java +++ /dev/null @@ -1,46 +0,0 @@ -package jodie; - - -/** - * Beschreiben Sie hier die Klasse Benutzerprofil. - * - * @author (Ihr Name) - * @version (eine Versionsnummer oder ein Datum) - */ -public class Benutzerprofil implements ComparableContent<Benutzerprofil> -{ - // Instanzvariablen - ersetzen Sie das folgende Beispiel mit Ihren Variablen - private String benutzername; - - /** - * Konstruktor für Objekte der Klasse Benutzerprofil - */ - public Benutzerprofil(String login, String pw) - { - // Instanzvariable initialisieren - - } - - public boolean isGreater(Benutzerprofil pk) - { - return true; - } - - public boolean isLess(Benutzerprofil pk) - { - return true; - } - - public boolean isEqual(Benutzerprofil pk) - { - return true; - } - - public String gibBenutzername() - { - // tragen Sie hier den Code ein - return benutzername; - } - - -} diff --git a/jodie/Benutzerprofil_Jodie.java b/jodie/Benutzerprofil_Jodie.java deleted file mode 100644 index 4a368b5e769d7373f177d5f7757245a6e0917639..0000000000000000000000000000000000000000 --- a/jodie/Benutzerprofil_Jodie.java +++ /dev/null @@ -1,51 +0,0 @@ -package jodie; - - -/** - * Beschreiben Sie hier die Klasse Benutzerprofil_Jodi. - * - * @author (Ihr Name) - * @version (eine Versionsnummer oder ein Datum) - */ -public class Benutzerprofil_Jodie implements ComparableContent<Benutzerprofil_Jodie> -{ - // Instanzvariablen - ersetzen Sie das folgende Beispiel mit Ihren Variablen - private String benutzername; - private String passwort; - - /** - * Konstruktor für Objekte der Klasse Benutzerprofil_Jodi - */ - public Benutzerprofil_Jodie(String login, String pw) - { - // Instanzvariable initialisieren - passwort = pw; - benutzername = login; - - } - - public boolean isGreater(Benutzerprofil_Jodie pk) - { - if benutzername.compareTo( - return true; - } - - public boolean isLess(Benutzerprofil_Jodie pk) - { - return true; - } - - public boolean isEqual(Benutzerprofil_Jodie pk) - { - return true; - } - - public String gibBenutzername() - { - // tragen Sie hier den Code ein - - return benutzername; - } - - -} diff --git a/jodie/Benutzerverwaltung.java b/jodie/Benutzerverwaltung.java deleted file mode 100644 index 17999a2f3576c0984e60cfa74335a93829489857..0000000000000000000000000000000000000000 --- a/jodie/Benutzerverwaltung.java +++ /dev/null @@ -1,37 +0,0 @@ -package jodie; - -/** - * Beschreiben Sie hier die Klasse Benutzerverwaltung. - * - * @author (Ihr Name) - * @version (eine Versionsnummer oder ein Datum) - */ -public class Benutzerverwaltung -{ - // Instanzvariablen - ersetzen Sie das folgende Beispiel mit Ihren Variablen - private BinarySearchTree<Benutzerprofil> benutzerBaum; - - /** - * Konstruktor für Objekte der Klasse Benutzerverwaltung - */ - public Benutzerverwaltung() - { - // Instanzvariable initialisieren - benutzerBaum = new BinarySearchTree(); - } - - public void neuenNutzerAnlegen(String pBenutzername, String pPw) - { - - } - - public void benutzerLoeschen(String pBenutzername, String pPw) - { - - } - - public void profilVorhanden(String pBenutzername) - { - - } -} diff --git a/jodie/Benutzerverwaltung_Jodie.java b/jodie/Benutzerverwaltung_Jodie.java deleted file mode 100644 index bebc3382fb0d20a269cbad57d5b93bbf2f501759..0000000000000000000000000000000000000000 --- a/jodie/Benutzerverwaltung_Jodie.java +++ /dev/null @@ -1,40 +0,0 @@ -package jodie; - -/** - * Beschreiben Sie hier die Klasse Benutzerverwaltung_Jodie. - * - * @author (Ihr Name) - * @version (eine Versionsnummer oder ein Datum) - */ -public class Benutzerverwaltung_Jodie -{ - // Instanzvariablen - ersetzen Sie das folgende Beispiel mit Ihren Variablen - private BinarySearchTree<Benutzerprofil> benutzerBaum; - - - /** - * Konstruktor für Objekte der Klasse Benutzerverwaltung_Jodie - */ - public Benutzerverwaltung_Jodie() - { - // Instanzvariable initialisieren - benutzerBaum = new BinarySearchTree(); - - } - - public void neuenNutzerAnlegen(String pBenutzername, String pPw) - { - - - } - - public void benutzerLoeschen(String pBenutzername, String pPw) - { - - } - - public void profilVorhanden(String pBenutzername) - { - - } -} diff --git a/jodie/BinarySearchTree.java b/jodie/BinarySearchTree.java deleted file mode 100644 index 87ced4f1d6f81e800d439bf10cd72245ea308720..0000000000000000000000000000000000000000 --- a/jodie/BinarySearchTree.java +++ /dev/null @@ -1,262 +0,0 @@ -package jodie; - -/** - * <p> - * Materialien zu den zentralen NRW-Abiturpruefungen im Fach Informatik ab 2018 - * </p> - * <p> - * Generische Klasse BinarySearchTree<ContentType> - * </p> - * <p> - * Mithilfe der generischen Klasse BinarySearchTree koennen beliebig viele - * Objekte in einem Binaerbaum (binaerer Suchbaum) entsprechend einer - * Ordnungsrelation verwaltet werden. <br /> - * Ein Objekt der Klasse stellt entweder einen leeren binaeren Suchbaum dar oder - * verwaltet ein Inhaltsobjekt sowie einen linken und einen rechten Teilbaum, - * die ebenfalls Objekte der Klasse BinarySearchTree sind.<br /> - * Die Klasse der Objekte, die in dem Suchbaum verwaltet werden sollen, muss - * das generische Interface ComparableContent implementieren. Dabei muss durch - * Ueberschreiben der drei Vergleichsmethoden isLess, isEqual, isGreater (s. - * Dokumentation des Interfaces) eine eindeutige Ordnungsrelation festgelegt - * sein. <br /> - * Alle Objekte im linken Teilbaum sind kleiner als das Inhaltsobjekt des - * binaeren Suchbaums. Alle Objekte im rechten Teilbaum sind groesser als das - * Inhaltsobjekt des binaeren Suchbaums. Diese Bedingung gilt (rekursiv) auch in - * beiden Teilbaeumen. <br /> - * Hinweis: In dieser Version wird die Klasse BinaryTree nicht benutzt. - * </p> - * - * @author Qualitaets- und UnterstuetzungsAgentur - Landesinstitut fuer Schule - * @version Generisch_03 2017-11-28 - */ -public class BinarySearchTree<ContentType extends ComparableContent<ContentType>> { - - /* --------- Anfang der privaten inneren Klasse -------------- */ - - /** - * Durch diese innere Klasse kann man dafuer sorgen, dass ein leerer Baum - * null ist, ein nicht-leerer Baum jedoch immer eine nicht-null-Wurzel sowie - * nicht-null-Teilbaeume hat. - */ - private class BSTNode<CT extends ComparableContent<CT>> { - - private CT content; - private BinarySearchTree<CT> left, right; - - public BSTNode(CT pContent) { - // Der Knoten hat einen linken und rechten Teilbaum, die - // beide von null verschieden sind. Also hat ein Blatt immer zwei - // leere Teilbaeume unter sich. - this.content = pContent; - left = new BinarySearchTree<CT>(); - right = new BinarySearchTree<CT>(); - } - - } - - /* ----------- Ende der privaten inneren Klasse -------------- */ - - private BSTNode<ContentType> node; - - /** - * Der Konstruktor erzeugt einen leeren Suchbaum. - */ - public BinarySearchTree() { - this.node = null; - } - - /** - * Diese Anfrage liefert den Wahrheitswert true, wenn der Suchbaum leer ist, - * sonst liefert sie den Wert false. - * - * @return true, wenn der binaere Suchbaum leer ist, sonst false - * - */ - public boolean isEmpty() { - return this.node == null; - } - - /** - * Falls der Parameter null ist, geschieht nichts.<br /> - * Falls ein bezueglich der verwendeten Vergleichsmethode isEqual mit - * pContent uebereinstimmendes Objekt im geordneten binaeren Suchbau - * enthalten ist, passiert nichts. <br /> - * Achtung: hier wird davon ausgegangen, dass isEqual genau dann true - * liefert, wenn isLess und isGreater false liefern. <br /> - * Andernfalls (isLess oder isGreater) wird das Objekt pContent entsprechend - * der vorgegebenen Ordnungsrelation in den BinarySearchTree eingeordnet. - * - * @param pContent - * einzufuegendes Objekt vom Typ ContentType - * - */ - public void insert(ContentType pContent) { - if (pContent != null) { - if (isEmpty()) { - this.node = new BSTNode<ContentType>(pContent); - } else if (pContent.isLess(this.node.content)) { - this.node.left.insert(pContent); - } else if(pContent.isGreater(this.node.content)) { - this.node.right.insert(pContent); - } - } - } - - /** - * Diese Anfrage liefert den linken Teilbaum des binaeren Suchbaumes. <br /> - * Wenn er leer ist, wird null zurueckgegeben. - * - * @return den linken Teilbaum (Objekt vom Typ BinarySearchTree<ContentType>) - * bzw. null, wenn der Suchbaum leer ist - * - */ - public BinarySearchTree<ContentType> getLeftTree() { - if (this.isEmpty()) { - return null; - } else { - return this.node.left; - } - } - - /** - * Diese Anfrage liefert das Inhaltsobjekt des Suchbaumes. Wenn der Suchbaum - * leer ist, wird null zurueckgegeben. - * - * @return das Inhaltsobjekt vom Typ ContentType bzw. null, wenn der aktuelle - * Suchbaum leer ist - * - */ - public ContentType getContent() { - if (this.isEmpty()) { - return null; - } else { - return this.node.content; - } - } - - /** - * Diese Anfrage liefert den rechten Teilbaum des binaeren Suchbaumes. <br /> - * Wenn er leer ist, wird null zurueckgegeben. - * - * @return den rechten Teilbaum (Objekt vom Typ BinarySearchTree<ContentType>) - * bzw. null, wenn der aktuelle Suchbaum leer ist - * - */ - public BinarySearchTree<ContentType> getRightTree() { - if (this.isEmpty()) { - return null; - } else { - return this.node.right; - } - } - - /** - * Falls ein bezueglich der verwendeten Vergleichsmethode mit - * pContent uebereinstimmendes Objekt im binaeren Suchbaum enthalten - * ist, wird dieses entfernt. Falls der Parameter null ist, aendert sich - * nichts. - * - * @param pContent - * zu entfernendes Objekt vom Typ ContentType - * - */ - public void remove(ContentType pContent) { - if (isEmpty() || pContent == null ) { - // Abbrechen, da kein Element zum entfernen vorhanden ist. - return; - } - - if (pContent.isLess(node.content)) { - // Element ist im linken Teilbaum zu loeschen. - node.left.remove(pContent); - } else if (pContent.isGreater(node.content)) { - // Element ist im rechten Teilbaum zu loeschen. - node.right.remove(pContent); - } else { - // Element ist gefunden. - if (node.left.isEmpty()) { - if (node.right.isEmpty()) { - // Es gibt keinen Nachfolger. - node = null; - } else { - // Es gibt nur rechts einen Nachfolger. - node = getNodeOfRightSuccessor(); - } - } else if (node.right.isEmpty()) { - // Es gibt nur links einen Nachfolger. - node = getNodeOfLeftSuccessor(); - } else { - // Es gibt links und rechts einen Nachfolger. - if (getNodeOfRightSuccessor().left.isEmpty()) { - // Der rechte Nachfolger hat keinen linken Nachfolger. - node.content = getNodeOfRightSuccessor().content; - node.right = getNodeOfRightSuccessor().right; - } else { - BinarySearchTree<ContentType> previous = node.right - .ancestorOfSmallRight(); - BinarySearchTree<ContentType> smallest = previous.node.left; - this.node.content = smallest.node.content; - previous.remove(smallest.node.content); - } - } - } - } - - /** - * Falls ein bezueglich der verwendeten Vergleichsmethode isEqual mit - * pContent uebereinstimmendes Objekt im binaeren Suchbaum enthalten ist, - * liefert die Anfrage dieses, ansonsten wird null zurueckgegeben. <br /> - * Falls der Parameter null ist, wird null zurueckgegeben. - * - * @param pContent - * zu suchendes Objekt vom Typ ContentType - * @return das gefundene Objekt vom Typ ContentType, bei erfolgloser Suche null - * - */ - public ContentType search(ContentType pContent) { - if (this.isEmpty() || pContent == null) { - // Abbrechen, da es kein Element zu suchen gibt. - return null; - } else { - ContentType content = this.getContent(); - if (pContent.isLess(content)) { - // Element wird im linken Teilbaum gesucht. - return this.getLeftTree().search(pContent); - } else if (pContent.isGreater(content)) { - // Element wird im rechten Teilbaum gesucht. - return this.getRightTree().search(pContent); - } else if (pContent.isEqual(content)) { - // Element wurde gefunden. - return content; - } else { - // Dieser Fall sollte nicht auftreten. - return null; - } - } - } - - /* ----------- Weitere private Methoden -------------- */ - - /** - * Die Methode liefert denjenigen Baum, dessen linker Nachfolger keinen linken - * Nachfolger mehr hat. Es ist also spaeter moeglich, in einem Baum im - * rechten Nachfolger den Vorgaenger des linkesten Nachfolgers zu finden. - * - */ - private BinarySearchTree<ContentType> ancestorOfSmallRight() { - if (getNodeOfLeftSuccessor().left.isEmpty()) { - return this; - } else { - return node.left.ancestorOfSmallRight(); - } - } - - private BSTNode<ContentType> getNodeOfLeftSuccessor() { - return node.left.node; - } - - private BSTNode<ContentType> getNodeOfRightSuccessor() { - return node.right.node; - } - -} diff --git a/jodie/ComparableContent.java b/jodie/ComparableContent.java deleted file mode 100644 index 419eabf38bf3b581dba0053c09ec3d0bd5177712..0000000000000000000000000000000000000000 --- a/jodie/ComparableContent.java +++ /dev/null @@ -1,62 +0,0 @@ -package jodie; - - /** - * <p> - * Materialien zu den zentralen NRW-Abiturpruefungen im Fach Informatik ab 2018 - * </p> - * <p> - * Generisches Interface (Schnittstelle) ComparableContent<ContentType> - * </p> - * <p> - * <p>Das generische Interface ComparableContent<ContentType> legt die Methoden - * fest, ueber die Objekte verfuegen muessen, die in einen binaeren Suchbaum - * (BinarySearchTree) eingefuegt werden sollen. Die Ordnungsrelation wird in - * Klassen, die ComparableContent implementieren durch Ueberschreiben der drei - * implizit abstrakten Methoden isGreater, isEqual und isLess festgelegt. - * </p> - * </p> - * @author Qualitaets- und UnterstuetzungsAgentur - Landesinstitut fuer Schule - * @version Generisch_02 2014-03-01 - */ -public interface ComparableContent<ContentType> { - - /** - * Wenn festgestellt wird, dass das Objekt, von dem die Methode aufgerufen - * wird, bzgl. der gewuenschten Ordnungsrelation groesser als das Objekt - * pContent ist, wird true geliefert. Sonst wird false geliefert. - * - * @param pContent - * das mit dem aufrufenden Objekt zu vergleichende Objekt vom - * Typ ContentType - * @return true, wenn das aufrufende Objekt groesser ist als das Objekt - * pContent, sonst false - */ - public boolean isGreater(ContentType pContent); - - /** - * Wenn festgestellt wird, dass das Objekt, von dem die Methode aufgerufen - * wird, bzgl. der gewuenschten Ordnungsrelation gleich gross wie das Objekt - * pContent ist, wird true geliefert. Sonst wird false geliefert. - * - * @param pContent - * das mit dem aufrufenden Objekt zu vergleichende Objekt vom - * Typ ContentType - * @return true, wenn das aufrufende Objekt gleich gross ist wie das Objekt - * pContent, sonst false - */ - public boolean isEqual(ContentType pContent); - - /** - * Wenn festgestellt wird, dass das Objekt, von dem die Methode aufgerufen - * wird, bzgl. der gewuenschten Ordnungsrelation kleiner als das Objekt - * pContent ist, wird true geliefert. Sonst wird false geliefert. - * - * @param pContent - * das mit dem aufrufenden Objekt zu vergleichende Objekt vom - * Typ ContentType - * @return true, wenn das aufrufende Objekt kleiner ist als das Objekt - * pContent, sonst false - */ - public boolean isLess(ContentType pContent); - -} diff --git a/jodie/Dokumentation, UML Diagramm und Aufgabe/.gitkeep b/jodie/Dokumentation, UML Diagramm und Aufgabe/.gitkeep deleted file mode 100644 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000 diff --git "a/jodie/Dokumentation, UML Diagramm und Aufgabe/Bin\303\244rer Suchbaum und UML Diagramm.md" "b/jodie/Dokumentation, UML Diagramm und Aufgabe/Bin\303\244rer Suchbaum und UML Diagramm.md" deleted file mode 100644 index 02146fe81160213a2263a83370af7ef5bd712342..0000000000000000000000000000000000000000 --- "a/jodie/Dokumentation, UML Diagramm und Aufgabe/Bin\303\244rer Suchbaum und UML Diagramm.md" +++ /dev/null @@ -1,49 +0,0 @@ -## Binärer Suchbaum für die Benutzerverwaltung -Der folgende binärer Suchbaum ist die Basis für die spätere Implementation. - -```mermaid -graph TB - A([gerd44])---B([elfriede41]) - A---C([pia96]) - B---D([ayce90]) - B---E([frank78]) - C---F([max62]) - C---G([tina90]) - D---H([alfred65]) - D---I([chuck73]) - F---J([jan62]) - F---K([michelle73]) - G---L([susi81]) - G---M([udo86]) - M---N([yoki33]) -``` - -## UML Diagramm -```mermaid -classDiagram -BinarySearchTree~Benutzerprofil~ <-- Benutzerverwaltung : -benutzerBaum -ComparableContent <-- Benutzerprofil~Benutzerprofil~ - -class ComparableContent { - <<interface>> - +isGreater(ContentType pContent) boolean - +isLess(ContentType pContent) boolean - +isEqual(ContentType pContent) boolean -} - -class Benutzerprofil { - -String benutzername - +Benutzerprofil(String login, String pw) - +getBenutzername() String - +isGreater(ContentType pContent) boolean - +isLess(ContentType pContent) boolean - +isEqual(ContentType pContent) boolean -} - -class Benutzerverwaltung { - +Benutzerverwaltung() - +neuenBenutzerAnlegen(String pBenutzername, String pPw) void - +nutzerLoeschen(String pBenutzername, String pPw) void - +profilVoranden(String pBenutzername) void -} -``` diff --git a/jodie/README.TXT b/jodie/README.TXT deleted file mode 100644 index 0ad193f8a68aa7c4e64414512266a9607a36219c..0000000000000000000000000000000000000000 --- a/jodie/README.TXT +++ /dev/null @@ -1,14 +0,0 @@ ------------------------------------------------------------------------- -Dies ist die README-Datei des Projekts. Hier sollten Sie Ihr Projekt -beschreiben. -Erzählen Sie dem Leser (jemand, der nichts über dieses Projekt weiss), -alles, was er/sie wissen muss. Üblicherweise sollte der Kommentar -zumindest die folgenden Angaben umfassen: ------------------------------------------------------------------------- - -PROJEKTBEZEICHNUNG: -PROJEKTZWECK: -VERSION oder DATUM: -WIE IST DAS PROJEKT ZU STARTEN: -AUTOR(EN): -BENUTZERHINWEISE: diff --git a/jodie/package.bluej b/jodie/package.bluej deleted file mode 100644 index 36d8b8c218fd64db7e431a21f0c3d6e9372e10a7..0000000000000000000000000000000000000000 --- a/jodie/package.bluej +++ /dev/null @@ -1,68 +0,0 @@ -#BlueJ package file -dependency1.from=Benutzerverwaltung_Jodie -dependency1.to=BinarySearchTree -dependency1.type=UsesDependency -dependency2.from=Benutzerverwaltung_Jodie -dependency2.to=Benutzerprofil -dependency2.type=UsesDependency -objectbench.height=101 -objectbench.width=1416 -package.divider.horizontal=0.6 -package.divider.vertical=0.856 -package.editor.height=635 -package.editor.width=1292 -package.editor.x=0 -package.editor.y=24 -package.frame.height=808 -package.frame.width=1440 -package.numDependencies=2 -package.numTargets=6 -package.showExtends=true -package.showUses=true -readme.height=60 -readme.name=@README -readme.width=48 -readme.x=10 -readme.y=10 -target1.height=70 -target1.name=Benutzerprofil_Jodie -target1.showInterface=false -target1.type=ClassTarget -target1.width=240 -target1.x=770 -target1.y=210 -target2.height=70 -target2.name=Benutzerverwaltung_Jodie -target2.showInterface=false -target2.type=ClassTarget -target2.width=190 -target2.x=410 -target2.y=400 -target3.height=70 -target3.name=ComparableContent -target3.showInterface=false -target3.type=InterfaceTarget -target3.width=250 -target3.x=170 -target3.y=210 -target4.height=70 -target4.name=Benutzerprofil -target4.showInterface=false -target4.type=ClassTarget -target4.width=120 -target4.x=230 -target4.y=460 -target5.height=70 -target5.name=Benutzerverwaltung -target5.showInterface=false -target5.type=ClassTarget -target5.width=150 -target5.x=490 -target5.y=40 -target6.height=70 -target6.name=BinarySearchTree -target6.showInterface=false -target6.type=ClassTarget -target6.width=240 -target6.x=650 -target6.y=460