|
@@ -1,33 +1,65 @@
|
1
|
|
-# Froilan The Farmer
|
|
1
|
+# Ol' McFroilan Had a Farm
|
2
|
2
|
* **Objective:** To implement a system indicative of a Farm environment
|
3
|
3
|
* **Purpose:** To demonstrate [multi-inheritence design issues](https://www.geeksforgeeks.org/java-and-multiple-inheritance/)
|
4
|
4
|
|
|
5
|
+# Setting the Plot...
|
5
|
6
|
|
6
|
|
-* Consider a system in which
|
|
7
|
+* Consider a system in which
|
|
8
|
+ * `Eater` can `eat` an `Edible `object.
|
7
|
9
|
* `NoiseMaker` can `makeNoise`
|
8
|
|
- * `Animal` is a `NoiseMaker`
|
9
|
|
- * `Horse` is a `Animal`
|
10
|
|
- * `Dog` is a `Animal`
|
|
10
|
+ * `Animal` is a `NoiseMaker` and `Eater`
|
|
11
|
+ * `Horse` is an `Animal` and `Rideable`
|
|
12
|
+ * `Chicken` is an `Animal` and a `Produce` which `yield` an `Egg`.
|
11
|
13
|
|
12
|
14
|
* `Rider` can `mount` and `dismount` a `Rideable` object.
|
13
|
|
-
|
|
15
|
+ * `Botanist` can `plant` a `Crop` in a `CropRow`.
|
|
16
|
+ * `CropRow` can store a single row of `crop`.
|
|
17
|
+ * `Field` can store many `CropRow`
|
14
|
18
|
* `Vehicle` are `NoiseMaker` and `Rideable`
|
15
|
|
- * `FarmVehicle` can `harvest` a `Produce`
|
16
|
|
- * `Tractor` are `FarmVehicle`
|
17
|
|
- * `CropDuster` are `FarmVehicle`
|
|
19
|
+ * `FarmVehicle` can `operate` on a `Farm`
|
|
20
|
+ * `Tractor` is a `FarmVehicle` which can `harvest` a `Crop`.
|
|
21
|
+
|
|
22
|
+ * `Aircraft` are `Vehicle` which can `fly`
|
|
23
|
+ * `CropDuster` is a `FarmVehicle` and `Aircraft` which can `fertilize` a `CropRow`
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+ * `Produce` can `yield` an `Edible` object depending on their `hasBeenFertilized` [flag](https://en.wikipedia.org/wiki/Boolean_flag).
|
|
27
|
+ * `Crop` is a `Produce` which can `yield` an `Edible` object depending on its `hasBeenHarvested` and `hasBeenFertilized` flag.
|
|
28
|
+ * `CornStalk` is a `Crop` which can `yield` a `EarCorn`
|
|
29
|
+ * `TomatoPlant` is a `Crop` which can `yield` a `Tomato`
|
|
30
|
+
|
|
31
|
+ * `Person` can `makeNoise` and can `eat` an `Edible` object.
|
|
32
|
+ * `Farmer` is an `Eater`, a `Rider`, a `Botanist`, and a `Person`.
|
|
33
|
+ * `Stable` stores many `Horse`.
|
|
34
|
+ * `FarmHouse` stores many `Person`
|
|
35
|
+ * `ChickenCoop` stores many `Chicken`
|
|
36
|
+ * `Farm` stores many `Stable`, many `DogHouse`, and a single `FarmHouse`
|
|
37
|
+
|
18
|
38
|
|
19
|
|
- * `Aircraft` can `fly`
|
20
|
|
- * `Plane` are `Aircraft` which can `cruise`
|
21
|
|
- * `Jet` are `Aircraft` which can `zoom`
|
22
|
|
- * `Helicopter` are `Aircraft` which can `hover`
|
|
39
|
+* `Froilan`, a `Farmer` has a `Farm` consisting of
|
|
40
|
+ * 1 `Field` of 5 `CropRow`.
|
|
41
|
+ * Row 1 has `Corn`
|
|
42
|
+ * Row 2 has `Tomato`
|
|
43
|
+ * Row 3 and beyond grows arbitrary vegetation.
|
23
|
44
|
|
24
|
|
- * `Produce` can `yield` an `Edible` object.
|
25
|
|
- * `CornStalk` can `yield` a `EarCorn`
|
26
|
|
- * `TomatoPlant` can `yield` a `Tomato`
|
|
45
|
+ * 15 `Chicken` across 4 `ChickenCoop`
|
|
46
|
+ * 10 `Horse` across 3 `Stable`.
|
|
47
|
+ * 5 `Dog` across 2 `DogHouse`
|
|
48
|
+ * 2 `FarmVehicle`
|
|
49
|
+ * 1 `Aircraft`
|
|
50
|
+ * His sister, `Froilanda`, is a `Pilot` who uses a `CropDuster`.
|
27
|
51
|
|
28
|
|
- * `Person` can `eat` an `Edible` object and `makeNoise`.
|
29
|
|
- * `Farmer` are `Rider` and `Person`
|
30
|
52
|
|
|
53
|
+# The Plot Thickens...
|
|
54
|
+* Create a separate Test class for each day in the following scenario...
|
|
55
|
+* As a farmer, Froilan must stick to a rigorous agricultural routine.
|
|
56
|
+ * Every morning, `Froilan` and `Froilanda` begin their morning by
|
|
57
|
+ * Riding each `Horse` in each `Stable`.
|
|
58
|
+ * Feeding each `Horse` 3 ear of `Corn`.
|
|
59
|
+ * For breakfast,
|
|
60
|
+ * `Froilan` eats 1 `EarCorn`, 2 `Tomoato`, and 5 `Egg`.
|
|
61
|
+ * `Froilanda` eats 2 `EarCorn`, 1 `Tomoato`, and 2 `Egg`.
|
31
|
62
|
|
32
|
|
-* Consider
|
33
|
|
- * `Froilan` is a `Farmer` who has 5 `Horse`
|
|
63
|
+ * `Sunday`, `Froilan` plants 3 different type of `Crop` in his first, second, and third `CropRow`.
|
|
64
|
+ * On `Monday`, his sister, `Froilanda` uses the `CropDuster` to `fly` over the `Field` and `fertilize` each of the `CropRow`
|
|
65
|
+ * On `Tuesday`, `Froilan` uses his `Tractor` to `fertilize` each `Crop` in each `CropRow`.
|