public class ProjectCostVisitor implements ProjectVisitor{ private double totalCost; private double hourlyRate; public double getHourlyRate(){ return hourlyRate; } public double getTotalCost(){ return totalCost; } public void setHourlyRate(double rate){ hourlyRate = rate; } public void resetTotalCost(){ totalCost = 0.0; } public void visitDependentTask(DependentTask p){ double taskCost = p.getTimeRequired() * hourlyRate; taskCost *= p.getDependencyWeightingFactor(); totalCost += taskCost; } public void visitDeliverable(Deliverable p){ totalCost += p.getMaterialsCost() + p.getProductionCost(); } public void visitTask(Task p){ totalCost += p.getTimeRequired() * hourlyRate; } public void visitProject(Project p){ } }