Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

java Implement the Visitor Pattern outlined in the uml below. Use appropriate Sy

ID: 3582071 • Letter: J

Question

java

Implement the Visitor Pattern outlined in the uml below. Use appropriate System.out.println to indicate the function called.

Implement the Visitor Pattern outlined in the uml below. Use appropriate System.out.println to indicate the function called.

«interface» Visitor +VisitDepositeAccount DepositeAccount) +Visit CurrentAccount (CurrentAccount) VisitPersonalAccount PersonalAccount) Withdraw Visitor Deposite Visitor VisitDepositeAccount (DepositeAccount) +VisitDepositeAccount (DepositeAccount) VisitCurrentAccount(CurrentAccount) +VisitCurrentAccount (CurrentAccount) +VisitPersonalAccount (PersonalAccount0 +VisitPersonalAccount PersonalAccount) PrintReportVisitor +VisitDepositeAccount(DepositeAccount) +VisitCurrentAccount(CurrentAccount) +VisitPersonalAccount(PersonalAccount) interface Program Account +accept( visitor) Deposite Account CurrentAccount PersonalAccount +accept( visitor accept( visitor accept (visitor) visitor VisitDepositeAccount (this) visitor VisitPersonalAcoount(this)

Explanation / Answer

package visitor; /** * * @file:Visitor.java * @author * @date:Created on Dec 16, 2016 * */ public interface Visitor { public void VisitDepositeAccount(DespositeAccount despositeAccount); public void VisitCurrentAccount(CurrentAccount currentAccount); public void VisitPersonalAccount(PersonalAccount personalAccount); } package visitor; /** * * @file:WithdrawVisitor.java * @author * @date:Created on Dec 16, 2016 * */ public class WithdrawVisitor implements Visitor{ @Override public void VisitDepositeAccount(DespositeAccount despositeAccount) { System.out.println("visitor.WithdrawVisitor.VisitDepositeAccount()"); } @Override public void VisitCurrentAccount(CurrentAccount currentAccount) { System.out.println("visitor.WithdrawVisitor.VisitCurrentAccount()"); } @Override public void VisitPersonalAccount(PersonalAccount personalAccount) { System.out.println("visitor.WithdrawVisitor.VisitPersonalAccount()"); } } package visitor; /** * * @file:PrintReportVisitor.java * @author : * @date:Created on Dec 16, 2016 * */ public class PrintReportVisitor implements Visitor{ @Override public void VisitDepositeAccount(DespositeAccount despositeAccount) { System.out.println("visitor.PrintReportVisitor.VisitDepositeAccount()"); } @Override public void VisitCurrentAccount(CurrentAccount currentAccount) { System.out.println("visitor.PrintReportVisitor.VisitCurrentAccount()"); } @Override public void VisitPersonalAccount(PersonalAccount personalAccount) { System.out.println("visitor.PrintReportVisitor.VisitPersonalAccount()"); } } package visitor; /** * * @file:DepositeVisitor.java * @author * @date:Created on Dec 16, 2016 * */ public class DepositeVisitor implements Visitor{ @Override public void VisitDepositeAccount(DespositeAccount despositeAccount) { System.out.println("visitor.DepositeVisitor.VisitDepositeAccount()"); } @Override public void VisitCurrentAccount(CurrentAccount currentAccount) { System.out.println("visitor.DepositeVisitor.VisitCurrentAccount()"); } @Override public void VisitPersonalAccount(PersonalAccount personalAccount) { System.out.println("visitor.DepositeVisitor.VisitPersonalAccount()"); } } package visitor; /** * * @file:Account.java * @author * @date:Created on Dec 16, 2016 * */ public interface Account { public void accept(Visitor visitor); } package visitor; /** * * @file:CurrentAccount.java * @author * @date:Created on Dec 16, 2016 * */ class CurrentAccount implements Account{ @Override public void accept(Visitor visitor) { System.out.println("visitor.CurrentAccount.accept()"); visitor.VisitCurrentAccount(this); } } package visitor; /** * * @file:PersonalAccount.java * @author * @date:Created on Dec 16, 2016 * */ class PersonalAccount implements Account{ @Override public void accept(Visitor visitor) { System.out.println("visitor.PersonalAccount.accept()"); visitor.VisitPersonalAccount(this); } } package visitor; /** * * @file:DespositeAccount.java * @author * @date:Created on Dec 16, 2016 * */ class DespositeAccount implements Account{ @Override public void accept(Visitor visitor) { System.out.println("visitor.DespositeAccount.accept()"); visitor.VisitDepositeAccount(this); } } package visitor; /** * * @file:Program.java * @author * @date:Created on Dec 16, 2016 * */ public class Program { Account ac; }