-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathpart1.java
126 lines (101 loc) · 3.87 KB
/
part1.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
import java.util.List;
class NutritionPlan {
private int caloricIntake;
private int carbohydratesRatio;
private int proteinsRatio;
private int fatsRatio;
private List<String> mealPlans;
private String fitnessGoal;
private List<String> dietaryRestrictions;
public void setCaloricIntake(int caloricIntake) {
this.caloricIntake = caloricIntake;
}
public void setCarbohydratesRatio(int carbohydratesRatio) {
this.carbohydratesRatio = carbohydratesRatio;
}
public void setProteinsRatio(int proteinsRatio) {
this.proteinsRatio = proteinsRatio;
}
public void setFatsRatio(int fatsRatio) {
this.fatsRatio = fatsRatio;
}
public void setMealPlans(List<String> mealPlans) {
this.mealPlans = mealPlans;
}
public void setFitnessGoal(String fitnessGoal) {
this.fitnessGoal = fitnessGoal;
}
public void setDietaryRestrictions(List<String> dietaryRestrictions) {
this.dietaryRestrictions = dietaryRestrictions;
}
@Override
public String toString() {
return "Fitness Goal: " + fitnessGoal + "\n" +
"Caloric Intake: " + caloricIntake + " kcal\n" +
"Macronutrient Ratios: Carbs - " + carbohydratesRatio + "%, Proteins - " +
proteinsRatio + "%, Fats - " + fatsRatio + "%\n" +
"Meal Plans: " + String.join(", ", mealPlans) + "\n" +
"Dietary Restrictions: " + String.join(", ", dietaryRestrictions);
}
}
interface NutritionPlanBuilder {
void setCaloricIntake(int caloricIntake);
void setMacronutrientRatios(int carbohydratesRatio, int proteinsRatio, int fatsRatio);
void setMealPlans(List<String> mealPlans);
void setFitnessGoal(String fitnessGoal);
void setDietaryRestrictions(List<String> dietaryRestrictions);
NutritionPlan build();
}
class WeightLossNutritionPlanBuilder implements NutritionPlanBuilder {
private NutritionPlan nutritionPlan = new NutritionPlan();
@Override
public void setCaloricIntake(int caloricIntake) {
nutritionPlan.setCaloricIntake(caloricIntake);
}
@Override
public void setMacronutrientRatios(int carbohydratesRatio, int proteinsRatio, int fatsRatio) {
nutritionPlan.setCarbohydratesRatio(carbohydratesRatio);
nutritionPlan.setProteinsRatio(proteinsRatio);
nutritionPlan.setFatsRatio(fatsRatio);
}
@Override
public void setMealPlans(List<String> mealPlans) {
nutritionPlan.setMealPlans(mealPlans);
}
@Override
public void setFitnessGoal(String fitnessGoal) {
nutritionPlan.setFitnessGoal(fitnessGoal);
}
@Override
public void setDietaryRestrictions(List<String> dietaryRestrictions) {
nutritionPlan.setDietaryRestrictions(dietaryRestrictions);
}
@Override
public NutritionPlan build() {
return nutritionPlan;
}
}
class NutritionPlanDirector {
private NutritionPlanBuilder builder;
public void setBuilder(NutritionPlanBuilder builder) {
this.builder = builder;
}
public NutritionPlan constructNutritionPlan() {
// Construction logic goes here
builder.setCaloricIntake(2000);
builder.setMacronutrientRatios(40, 30, 30);
builder.setMealPlans(List.of("Breakfast: Oatmeal", "Lunch: Grilled Chicken Salad", "Dinner: Salmon with Quinoa"));
builder.setFitnessGoal("Weight Loss");
builder.setDietaryRestrictions(List.of("Gluten-free", "Lactose-free"));
return builder.build();
}
}
public class part1 {
public static void main(String[] args) {
NutritionPlanDirector director = new NutritionPlanDirector();
NutritionPlanBuilder builder = new WeightLossNutritionPlanBuilder();
director.setBuilder(builder);
NutritionPlan nutritionPlan = director.constructNutritionPlan();
System.out.println(nutritionPlan);
}
}