Implementierung von Observer und Singleton-Pattern

jono

Top Contributor
Hallo,
1590759375595.png

Es soll dieses UML implementiert werden mit den folgenden Klassen und Spezifikationen:

Java:
import java.util.Map;
/**
* Represents an exam with grades and a moduleId. {@link ExamResultListener}s
* (implemented as {@link Student}s) can subscribe to it, if they want a
* notification when the {@link Exam} is graded or unsubscribe if they don't
* want this anymore. Implement this according to the Observer Design Pattern.
*
* The listeners can register at most once. Multiple subsequent registrations
* are ignored.
*
* Listeners are notified in the order of registration.
*

*/
public class Exam {
    private boolean graded;
private String moduleId;
    private Map<Student, Double> grades;
    /**
* Subscribe method according to the Observer Design Pattern. If the same
* listener subscribes multiple times, only the first registration is recorded.
*
* @param l
* the {@link ExamResultListener} that subscribes to this Exam
*/
public void subscribe(ExamResultListener l) {
// TODO Implement this function.
// Think about how to handle double subscriptions.

;


    }
    /**
* Unsubscribe method according to the Observer Design Pattern.
*
* @param l
* the {@link ExamResultListener} that unsubscribes from this Exam
*/
public void unsubscribe(ExamResultListener l) {
// TODO Implement this function.
// Think about how to handle unsubscribed ExamResultListeners.
    }
    /**
* Gets the grade for the specified Student {@code s}.
*
* @param s
* student who wants the grade
* @return the grade of s in this Exam
*/
public double getGrade(Student s) {
// TODO Implemet this funktion.
// It will return the grade of the Student s in this Exam.
return 0;
}
}

Java:
public interface ExamResultListener {
    /**
* {@link Exam} notifies listeners when grades are available.
*
* @param e
* the {@link Exam} that was graded
*/
    public void gradeAvailable(Exam e);
}

Java:
/**
* Represents a ExamServer, wich can save {@link Exam}s and return {@link Exam}s
* by their moduleId. Implement this according to the Singleton Design Pattern!
*

*
*/
public class ExamServer {
    /**
*
* @param moduleId
* the moduleId of the {@link Exam} that should be returned.
* @return the {@link Exam} of the moduleID, or null if not found
*/
public Exam getExam(String moduleId) {
// TODO Implement this function. It will return the actual exam of this
// ExamServer.
return null;
    }
    /**
* Creates an Exam with the specified {@code moduleId} in this ExamServer.
*
* @param moduleId
* the moduleId of the {@link Exam}
* @return the new {@link Exam}
*/
public Exam createExam(String moduleId) {
// TODO Implement this funktion. It will create a new Exam.
return null;
}
}

Java:
public class GradingSystem {
    public static void main(String[] args) {
// TODO Implement this function.
// it shall create some Exams and some Students
// and then show that the notification about
// a graded exam works properly
    }
}

Java:
/**
* Represents a Student with bame and studentId. The Student can act as an
* {@link ExamResultListener} to get notified by one or more {@linkt Exam}s as
* soon as they're graded.
*

*
*/
public class Student implements ExamResultListener {
    private String studentId;
    private String name;
    @Override
public void gradeAvailable(Exam e) {
// TODO Implement this funktion.
    }
 public String getStudentId() {
return studentId;
 }
 public void setStudentId(String studentId) {
this.studentId = studentId;
 }
}

In der Klasse Exam -> Methode subscribe habe ich es so implementiert und möchte fragen ob das so richtig ist ?
Java:
public class Exam {
    private boolean graded;
private String moduleId;
private Map<Student, Double> grades;

/**
* Subscribe method according to the Observer Design Pattern. If the same
* listener subscribes multiple times, only the first registration is recorded.
*
* @param l
* the {@link ExamResultListener} that subscribes to this Exam
*/
public void subscribe(ExamResultListener l) {
// TODO Implement this function.
// Think about how to handle double subscriptions.

l.add(moduleId, l) ;


    }
Eine Methode add habe ich dann in der Klasse ExamResultListener erstellt.
 
K

kneitzel

Gast
Eine Methode add habe ich dann in der Klasse ExamResultListener erstellt.

Also dazu kann man direkt mit einem Blick sagen: ExamResultListener ist keine Klasse sondern ein Interface. Und es hat keine Methode add.

Und damit ist Deine Implementation auch definitiv falsch (Frage von dir drüber).
 

jono

Top Contributor
Ja, sorry weiß ich auch einfach nur falsch geschrieben :D. Wie mache ich das denn, wenn ich etwas hinzufügen will zu den ExamResultListeners? Über eine HashMap?
 

jono

Top Contributor
Das macht doch aber mehr Sinn damit anzufangen, wenn ich die Methoden dafür schreibe die ich in der main aufrufe?
 

jono

Top Contributor
Wegen verschiedenen anderen Kursen war es mir nicht möglich hieran weiterzuarbeiten.
Wie erstelle ich denn jetzt ein Examen und einen Studenten? Muss ich eine Collection erstellen, um dann in der main-Methode(GradingSystem) verschiedene Studenten mit deren Noten zu erstellen?
Und ein Objekt erzeugen wäre doch auch nötig, um die Studenten und Examen zu erstellen? Wäre dankbar für ein paar Hinweise, ist nicht ganz so leicht.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
G Implementierung des Observer/Observable Patterns - Gut so? Java Basics - Anfänger-Themen 3
ruutaiokwu JRE-/JDK-unabhängige PBKDF2WithHmacSHA512-Implementierung Java Basics - Anfänger-Themen 16
V Hilfe bei Implementierung einer boolean Methode Java Basics - Anfänger-Themen 6
K Fehler bei der Implementierung Java Basics - Anfänger-Themen 6
J Implementierung gcd();square() Java Basics - Anfänger-Themen 98
A Implementierung von String toString methode() Java Basics - Anfänger-Themen 4
G Projekt architektur (implementierung) Java Basics - Anfänger-Themen 3
M Implementierung einer getNextId Methode Java Basics - Anfänger-Themen 5
J Implementierung Listen-ADT Java Basics - Anfänger-Themen 131
J Implementierung eines Zustandsdiagramms Java Basics - Anfänger-Themen 19
I GenericQueue / Implementierung als Ringspeicher Java Basics - Anfänger-Themen 4
MiMa Log4j2 implementierung Java Basics - Anfänger-Themen 4
S Interface Interface und seine Implementierung Java Basics - Anfänger-Themen 5
G Array implementierung Java Basics - Anfänger-Themen 23
J ANTLR Installierung und Implementierung Java Basics - Anfänger-Themen 2
E Hilfe bei Implementierung von Methoden Java Basics - Anfänger-Themen 10
S SkipList Implementierung Java Basics - Anfänger-Themen 1
J Methoden Suche effiziente Implementierung für eine Methode Java Basics - Anfänger-Themen 3
J Interface Probleme bei der Implementierung Java Basics - Anfänger-Themen 1
E hashCode implementierung Java Basics - Anfänger-Themen 9
S Implementierung der Klasse Konto und Nutzung bereits vorhandener Klassen Java Basics - Anfänger-Themen 7
H Implementierung eines Interfaces erweitern Java Basics - Anfänger-Themen 13
O Generics - Implementierung Java Basics - Anfänger-Themen 7
A Hilfestellung zur Implementierung des Gaußsches Eliminationsverfahren Java Basics - Anfänger-Themen 4
B OOP Implementierung eines Heaps Java Basics - Anfänger-Themen 13
K Bucketsort Implementierung Java Basics - Anfänger-Themen 0
K Mergesort Fehler in der Implementierung Java Basics - Anfänger-Themen 2
K Quicksort Fehler in der Implementierung Java Basics - Anfänger-Themen 2
S Klassen Klassendiagramm Implementierung? Java Basics - Anfänger-Themen 5
J Bucketsort Implementierung Java Basics - Anfänger-Themen 0
C Stack - listenbasierte Implementierung Java Basics - Anfänger-Themen 4
N Was bedeutet "Implementierung vor dem Client verbergen" bei Design Patterns? Java Basics - Anfänger-Themen 2
T Collections LinkedList<LinkedList<T>> - Implementierung Java Basics - Anfänger-Themen 10
F Implementierung von Interfaces -> Problem mit main Java Basics - Anfänger-Themen 12
D Resourcebundle implementierung Java Basics - Anfänger-Themen 2
M Implementierung des Knuth-Morris-Pratt-Algorithmus Java Basics - Anfänger-Themen 0
Q Implementierung von Listenern Java Basics - Anfänger-Themen 4
B Klassen Hilfe bei Implementierung Java Basics - Anfänger-Themen 5
N Compiler-Fehler Comparable / compareTo implementierung Java Basics - Anfänger-Themen 2
S Fragen zur Implementierung eines Binärbaums Java Basics - Anfänger-Themen 3
I Erste Schritte Implementierung der API Java Basics - Anfänger-Themen 2
S Fragen zur Implementierung eines Adressbuches Java Basics - Anfänger-Themen 20
M falsche implementierung von currentTimeMillis() ? Java Basics - Anfänger-Themen 14
G Implementierung eines Kontos Java Basics - Anfänger-Themen 11
M Quicksort implementierung Java Basics - Anfänger-Themen 23
SexyPenny90 Implementierung einer doubly linked list Java Basics - Anfänger-Themen 5
N Binärbaum/Implementierung Java Basics - Anfänger-Themen 9
U Doppelte Interfcae Implementierung Java Basics - Anfänger-Themen 10
K Kleiner Fehler bei Methoden Implementierung Java Basics - Anfänger-Themen 6
M Collections Problem bei Überschreibung von hashcode() und equals() bei Hashset-Implementierung Java Basics - Anfänger-Themen 5
S OOP Implementierung Komposition, Aggregation, Assoziation und Generalisierung Java Basics - Anfänger-Themen 2
C Klassenhirarchien zur Implementierung von Fahrzegen Java Basics - Anfänger-Themen 26
BinaryLogic Datentypen Statistik Interface - untersch. Implementierung Java Basics - Anfänger-Themen 5
E Performante Implementierung eines "Hintergrundprogramms" Java Basics - Anfänger-Themen 10
S Saubere Implementierung Java Basics - Anfänger-Themen 2
K Dijkstra implementierung 2.0 Java Basics - Anfänger-Themen 19
K dijskral implementierung Java Basics - Anfänger-Themen 14
U Probleme mit Server-Client implementierung Java Basics - Anfänger-Themen 5
K Game of Life Implementierung Java Basics - Anfänger-Themen 30
B OOP Problem bei Implementierung von Interface Java Basics - Anfänger-Themen 6
J HashSet Implementierung Java Basics - Anfänger-Themen 16
R NullPointerException in Queue-Implementierung Java Basics - Anfänger-Themen 11
X Frage zur Implementierung von equals() Java Basics - Anfänger-Themen 2
B Effektive Implementierung für Darstellung großer Datenmengen in Jogl Java Basics - Anfänger-Themen 5
D Datentypen Implementierung eines Binärbaumes Java Basics - Anfänger-Themen 7
B Implementierung Java Basics - Anfänger-Themen 2
N Implementierung Tic tac toc Java Basics - Anfänger-Themen 25
O Stack Implementierung als verkettete Liste Java Basics - Anfänger-Themen 8
Y Implementierung einer Potenzturm Funktion Java Basics - Anfänger-Themen 4
S Implementierung gegen Interfaces / List, ArrayList, LinkedList Java Basics - Anfänger-Themen 11
J Quicksort Implementierung-- Exception ArrayOutOfBounds Java Basics - Anfänger-Themen 6
U Implementierung Constructor Java Basics - Anfänger-Themen 7
T Problem mit Implementierung von einer HashMap aufgabe Java Basics - Anfänger-Themen 2
I Zugriff auf Implementierung verhindern Java Basics - Anfänger-Themen 8
D Implementierung nach MVC Java Basics - Anfänger-Themen 6
B Theoretische Frage zum Programmbau (nun zur Implementierung) Java Basics - Anfänger-Themen 8
H Implementierung von Interfaces Java Basics - Anfänger-Themen 4
G Implementierung von Bäumen Java Basics - Anfänger-Themen 2
N Probleme mit paint() bei Implementierung in ein Panel Java Basics - Anfänger-Themen 4
B Wie funktioniert die implementierung von c code in Java? Java Basics - Anfänger-Themen 7
J Methoden Observer-Pattern mit Consumer und accept( ) Java Basics - Anfänger-Themen 6
fLooojava MVC Pattern und Observer Pattern Java Basics - Anfänger-Themen 6
Y Observer update Java Basics - Anfänger-Themen 3
N Observer funktioniert nicht Java Basics - Anfänger-Themen 13
G Observer löst zweimal aus Java Basics - Anfänger-Themen 8
A ein observer "post"problem Java Basics - Anfänger-Themen 3
A Observer Pattern Problem Java Basics - Anfänger-Themen 15
J Interface Frage zu Interfces am Beispiel Observer Pattern Java Basics - Anfänger-Themen 8
F Observer Java Basics - Anfänger-Themen 7
U observer thread safe Java Basics - Anfänger-Themen 4
Helgon Observer Pattern - hasChanged() immer false Java Basics - Anfänger-Themen 10
B Wozu Observer? Java Basics - Anfänger-Themen 9
Spin Observer Patteern java Java Basics - Anfänger-Themen 7
O Liste - Observer/Observeable - HashMap Hilfe Java Basics - Anfänger-Themen 19
C OOP Observer Pattern Java Basics - Anfänger-Themen 2
O Observer - Einfach erklärt? Java Basics - Anfänger-Themen 5
K Observer Pattern notifyObservers Java Basics - Anfänger-Themen 9
P Fragen zum Observer Muster und Datenbanken Java Basics - Anfänger-Themen 2
T Observer ansprechen Java Basics - Anfänger-Themen 2
R Observer funktioniert nicht. Sehe keine Fehler Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben