{"id":24021093,"url":"https://github.com/zipcodecore/farmerfroilan","last_synced_at":"2025-06-10T14:05:32.320Z","repository":{"id":48399878,"uuid":"123017205","full_name":"ZipCodeCore/FarmerFroilan","owner":"ZipCodeCore","description":null,"archived":false,"fork":false,"pushed_at":"2023-10-17T14:50:30.000Z","size":30,"stargazers_count":0,"open_issues_count":18,"forks_count":18,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-15T21:39:32.962Z","etag":null,"topics":["corejava","corejava-chapter5","corejava-chapter6"],"latest_commit_sha":null,"homepage":null,"language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ZipCodeCore.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2018-02-26T19:08:06.000Z","updated_at":"2023-10-17T14:47:41.000Z","dependencies_parsed_at":"2022-09-10T07:52:36.019Z","dependency_job_id":"f3238e55-1eba-49f4-8b0b-9a2d45bf0583","html_url":"https://github.com/ZipCodeCore/FarmerFroilan","commit_stats":null,"previous_names":["zipcodecore/farmerfroilan"],"tags_count":0,"template":true,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ZipCodeCore%2FFarmerFroilan","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ZipCodeCore%2FFarmerFroilan/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ZipCodeCore%2FFarmerFroilan/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ZipCodeCore%2FFarmerFroilan/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ZipCodeCore","download_url":"https://codeload.github.com/ZipCodeCore/FarmerFroilan/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ZipCodeCore%2FFarmerFroilan/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":259088541,"owners_count":22803653,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["corejava","corejava-chapter5","corejava-chapter6"],"created_at":"2025-01-08T12:38:39.247Z","updated_at":"2025-06-10T14:05:32.296Z","avatar_url":"https://github.com/ZipCodeCore.png","language":"Java","readme":"# Ol' McFroilan Had a Farm\r\nAs a team, fork this repository to an Organization and submit the URL of your fork via the Student Portal. Each teammate will submit the **SAME URL.** \r\n\r\n* **Objective:** To implement a system representative of a Farm environment\r\n* **Purpose:** To demonstrate [multi-inheritence design issues](https://www.geeksforgeeks.org/java-and-multiple-inheritance/)\r\n* **Prerequesites:** A `UML` approved by an instructor.\r\n\r\n\r\n# Setting the Plot...\r\n\r\n* Consider a system in which\r\n\t* `Eater` can `eat` an `Edible` object.\r\n\t* `NoiseMaker` can `makeNoise`\r\n\t* `Animal` is a `NoiseMaker` and `Eater`\r\n\t\t* `Horse` is an `Animal` and `Rideable`\r\n\t\t* `Chicken` is an `Animal` and a `Produce` which `yield` an `EdibleEgg` if `hasBeenFertilized` flag is `false`.\r\n\r\n\t* `Rider` can `mount` and `dismount` a `Rideable` object.\r\n\t* `Botanist` can `plant` a `Crop` in a `CropRow`.\r\n\t* `CropRow` can store many `Crop`.\r\n\t* `Field` can store many `CropRow`\r\n\t* `Vehicle` are `NoiseMaker` and `Rideable`\r\n\t\t* `FarmVehicle` can `operate` on a `Farm`\r\n\t\t\t* `Tractor` is a `FarmVehicle` which can `harvest` a `Crop`.\r\n\r\n\t\t* `Aircraft` are `Vehicle` which can  `fly`\r\n\t\t\t* `CropDuster` is a `FarmVehicle` and `Aircraft` which can `fertilize` a `CropRow`\r\n\r\n\r\n\t* `Produce` can `yield` an `Edible` object depending on their `hasBeenFertilized` [flag](https://en.wikipedia.org/wiki/Boolean_flag).\r\n\t\t* `Crop` is a `Produce` which can `yield` an `Edible` object depending on its `hasBeenHarvested` and `hasBeenFertilized` flag.\r\n\t\t\t* `CornStalk` is a `Crop` which can `yield` a `EarCorn`\r\n\t\t\t* `TomatoPlant` is a `Crop` which can `yield` a `Tomato`\r\n\r\n\t* `Person` can `makeNoise` and can `eat` an `Edible` object.\r\n\t* `Farmer` is an `Eater`, a `Rider`, a `Botanist`, and a `Person`.\r\n\t* `Stable` stores many `Horse`.\r\n\t* `FarmHouse` stores many `Person`\r\n\t* `ChickenCoop` stores many `Chicken`\r\n\t* `Farm` stores many `Stable`, many `ChickenCoop`, and a single `FarmHouse`\r\n\r\n# Establishing The Plot\r\n\r\n* `Froilan`, a `Farmer` has a `Farm` consisting of\r\n\t* 1 `Field` of 5 `CropRow`.\r\n\t\t* Row 1 has `Corn`\r\n\t\t* Row 2 has `Tomato`\r\n\t\t* Row 3 and beyond grows arbitrary vegetation.\r\n\r\n\t* 15 `Chicken` across 4 `ChickenCoop`\r\n\t* 10 `Horse` across 3 `Stable`.\r\n\t* 2 `FarmVehicle`\r\n\t* 1 `Aircraft`\r\n\t* His sister, `Froilanda`, is a `Pilot` who uses a `CropDuster`.\r\n\r\n\r\n\r\n# The Plot \u003cstrike\u003eThickens\u003c/strike\u003e Chickens...\r\n* Create test cases which simulate a typical work-week for `Froilan` and `Froilanda`.\r\n\t* The accumulation of your test cases should ensure at least 80% test coverage.\r\n\r\n* The first few weekdays have already been considered for you.\r\n* Create a separate Test class for each day in the following scenario.\r\n\t* As a farmer, Froilan must stick to a rigorous agricultural routine.\r\n\t\t* Every morning, `Froilan` and `Froilanda` begin their morning by\r\n\t\t\t* Riding each `Horse` in each `Stable`.\r\n\t\t\t* Feeding each `Horse` 3 ear of `Corn`.\r\n\t\t\t* For breakfast,\r\n\t\t\t\t* `Froilan` eats 1 `EarCorn`, 2 `Tomoato`, and 5 `Egg`.\r\n\t\t\t\t* `Froilanda` eats 2 `EarCorn`, 1 `Tomoato`, and 2 `Egg`.\r\n\r\n\t\t* `Sunday`, `Froilan` plants 3 different type of `Crop` in his first, second, and third `CropRow`.\r\n\t\t* On `Monday`, his sister, `Froilanda` uses the `CropDuster` to `fly` over the `Field` and `fertilize` each of the `CropRow`\r\n\t\t* On `Tuesday`, `Froilan` uses his `Tractor` to `harvest` each `Crop` in each `CropRow`.\r\n\r\n# Planning \u0026 Execution of Design: \r\n  * ask yourselves: \"How do we apply **Generics** to implement our design CLEANLY?\"\r\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzipcodecore%2Ffarmerfroilan","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzipcodecore%2Ffarmerfroilan","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzipcodecore%2Ffarmerfroilan/lists"}