The following code implements the Subject class and Observer class from the UML.
ID: 3727176 • Letter: T
Question
The following code implements the Subject class and Observer class from the UML., along with a Main that uses the Observer pattern. Subject Class Code import java.util. ArrayList: import java.util.List; public class Subject t private List« Observer» observers = new ArrayList(); private String message; public String getMessage) ( return message; public void setMessage(String message) ( this.message message; notifyAlIObservers); public void updateMessage(String message) ( this.message += message; notify AllObservers): public void attach(Observer observer) f observers.add(observer); ) public void notifyAllObservers0)f for (Observer observer : observers) observer.messageChanged(message);Explanation / Answer
NOTE:- Check does not allowed to submit zip file. So i am giving java classes code directeely.
a) Observer.java
public abstract class Observer {
protected Subject subject;
public abstract void messageChanged(String message);
}
---------------------------------------------------------------------------------------------------------------------
b) LowerCaseObserver.java
public class LowerCaseObserver extends Observer {
public LowerCaseObserver(Subject subject) {
this.subject = subject;
this.subject.attach(this);
}
@Override
public void messageChanged(String message) {
if (message != null) {
if (message.toLowerCase() == message) {
System.out.print("LowerCase Message : " + message);
}
}
}
}
------------------------------------------------------------------------------------------------------------------------------------------------
3) UpperCaseObserver.java
public class UpperCaseObserver extends Observer{
public UpperCaseObserver(Subject subject) {
this.subject = subject;
this.subject.attach(this);
}
@Override
public void messageChanged(String message) {
if (message != null) {
if (message.toUpperCase() == message) {
System.out.print("UpperCase Message : " + message);
}
}
}
}
----------------------------------------------------------------------------------------------------------------------------------
d) ConcreteObserver.java
public class ConcreteObservcer extends Observer{
public ConcreteObservcer(Subject subject) {
this.subject = subject;
this.subject.attach(this);
}
@Override
public void messageChanged(String message) {
boolean isConcrete = true;
if (message != null) {
if (message.toLowerCase() == message) {
isConcrete = false;
} else if (message.toUpperCase() == message){
isConcrete = false;
}
}
if(isConcrete) {
System.out.print("Concrent Message (not in lowercase/ not in uppercase) : " + message);
}
}
}
-------------------------------------------------------------------------
e) Subject.java
import java.util.ArrayList;
import java.util.List;
public class Subject {
private List<Observer> observers = new ArrayList<Observer>();
private String message;
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
notifyAllObservers();
}
public void updateMessage(String message) {
this.message += message;
notifyAllObservers();
}
public void attach(Observer observer) {
observers.add(observer);
}
public void notifyAllObservers() {
for(Observer observer : observers) {
observer.messageChanged(message);
}
}
}
-------------------------------------------------------------------------------------------------------------
f) Main.java
public class Main {
public static void main(String str[]) {
Subject subject = new Subject();
Observer lowerCaseObserver = new LowerCaseObserver(subject);
Observer upperCaseObserver = new UpperCaseObserver(subject);
Observer concreteObserver = new ConcreteObservcer(subject);
subject.setMessage("Hello hello");
}
}
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.