Question

<> Subject + registerObserver(Observer observer): void + removeObserver(Observer observer): void + notifyObservers(): void Baby - observers:...

<>
Subject
+ registerObserver(Observer observer): void
+ removeObserver(Observer observer): void
+ notifyObservers(): void

Baby
- observers: ArrayList
- cry: Cry
+ Baby()
+ registerObserver(Observer observer): void
+ removeObserver(Observer observer): void
+ notifyObservers(): void
+ angryCry(): void
+ hungryCry(): void
+ wetCry(): void

<>
Observer
+ update(Cry cry): void

Mon

-baby: Subject

+Mom(Subject baby)

+update(Cry cry): void

Dad

-baby: Subject

+update(Cry cry): void

public class CribDriver {
  
   public void playBabySim() {
       Baby baby = new Baby();
       Dad dad = new Dad(baby);
       Mom mom = new Mom();
      
       baby.hungryCry();
       baby.wetCry();
       baby.hungryCry();
       baby.hungryCry();
       baby.wetCry();
   }
  
   public static void main(String[] args) {
       CribDriver cd = new CribDriver();
       cd.playBabySim();
   }

}

Output

A new baby is born

This baby is hungry
Dad feeds baby
Mom cuddles and feeds baby

This baby is wet
Dad calls mom
Mom changes baby

This baby is angry!
Dad puts in earplugs

This baby is hungry
Mom cuddles and feeds baby

This baby is wet
Mom changes baby

0 0
Add a comment Improve this question Transcribed image text
Answer #1

import java.io.*;

import java.util.*;

class Cry{

String cryType;

public Cry(String str){

this.cryType = str;

System.out.println("This baby is " + str);

}

public String getCryType(){

return this.cryType;

}

}


abstract class Subject{

abstract void registerObserver(Observer observer);

abstract void removeObserver(Observer observer);

abstract void notifyObservers(Cry cry);

}


class Baby extends Subject{

private ArrayList<Observer> observers;

private Cry cry;

Baby(){

System.out.println("A new baby is born");

observers = new ArrayList<Observer>();

}

public void registerObserver(Observer observer){

observers.add(observer);

}

public void removeObserver(Observer observer){

this.observers.remove(observer);

}

public void notifyObservers(Cry cry){

for(Observer o : observers){

o.update(cry);

}

}

public void hungryCry(){

cry = new Cry("hungry");

notifyObservers(cry);

}

public void wetCry(){

cry = new Cry("wet");

notifyObservers(cry);

}

public void angryCry(){

cry = new Cry("angry!");

notifyObservers(cry);

}

}


abstract class Observer{

Cry cry;

abstract void update(Cry cry);

}


class Mom extends Observer{

private Subject baby;

public Mom(Subject baby){

this.baby = baby;

}

public void update(Cry cry){

this.cry = cry;

if(cry.getCryType().equals("hungry")){

System.out.println("Mom cuddles and feeds baby");

}else if(cry.getCryType().equals("wet")){

System.out.println("Mom changes baby");

}

}

}


class Dad extends Observer{

private Subject baby;

Boolean isEarplugsOn;

public Dad(Subject baby){

this.baby = baby;

isEarplugsOn = false;

}

public void update(Cry cry){

this.cry = cry;

if(!isEarplugsOn){

if(cry.getCryType().equals("hungry")){

System.out.println("Dad feeds baby");

}else if(cry.getCryType().equals("wet")){

System.out.println("Dad calls mom");

}else if(cry.getCryType().equals("angry!")){

System.out.println("Dad puts in earplugs");

isEarplugsOn = true;

}

}

}

}


public class CribDriver {

public void playBabySim() {

Baby baby = new Baby();

Dad dad = new Dad(baby);

Mom mom = new Mom(baby);

baby.registerObserver(dad);

baby.registerObserver(mom);

baby.hungryCry();

baby.wetCry();

baby.angryCry();

baby.hungryCry();

baby.wetCry();

}

public static void main(String[] args) {

CribDriver cd = new CribDriver();

cd.playBabySim();

}

}

Add a comment
Know the answer?
Add Answer to:
<> Subject + registerObserver(Observer observer): void + removeObserver(Observer observer): void + notifyObservers(): void Baby - observers:...
Your Answer:

Post as a guest

Your Name:

What's your source?

Earn Coins

Coins can be redeemed for fabulous gifts.

Not the answer you're looking for? Ask your own homework help question. Our experts will answer your question WITHIN MINUTES for Free.
Similar Homework Help Questions
ADVERTISEMENT
Free Homework Help App
Download From Google Play
Scan Your Homework
to Get Instant Free Answers
Need Online Homework Help?
Ask a Question
Get Answers For Free
Most questions answered within 3 hours.
ADVERTISEMENT
ADVERTISEMENT