Skip to content

bogdanmironov/2019-2020-OOP-Java-Homework-1

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 

Repository files navigation

Катерици, събиращи храна за през зимата

Условие

Да се напише програма за катерици, които събират храна, скриват я в бърлогата си и спят зимен сън.

Храна

Да се реализират класове за различните видове храни, на които може да попадне катерицата. Всяка инстанция на храна има определени количетсво и качество като по-високи стойности са по-желателни. Всяка храна трябва да има следните методи:

  • double getFoodScore() - връща стойност количетсво * качество, показваща колко време катерицата може да оцелее с тази храна (виж тестовете).
  • void passWinter() - симулира преседяването на храната през зимата. Според вида храна това може да намали количеството или да влоши качеството (виж тестовете).

Да се реализират класове за ядки, торта и макбургери, като през зимата:

  • при ядките не се влошава никоя характеристика
  • при макбургера само през първата зимата количеството намалява с 20% и качеството с 50%, а през всяка следваща зима няма промяна
  • при тортата количеството намалява с 30%, а качеството намалява по формулата ново качество = старо качество * (0.1 + 1.99/(2^(възраст на тортата/0.85))) По желание могат да се добавят класове и за други храни.

Катерица

Всяка катерица трябва да има име, вид и възраст. Когато се изписва информация за дадена катерица трябват да присъства и <вид> Име(възраст) за лесно разпознаване. Всяка катерица си има бърлога, в която складира намерената храна. Трябва да има следните методи:

  • void addFood(Food food) - за добавяне на намерената храна към складираната в бърлогата. Класът Food го заменете с името на базовия клас/интерфейса, от който наследяват всички храни (виж тестовете)
  • void passWinter() - симулира преседяването на храната през зимата като се извиква съответния метод на всяка храна (виж тестовете).
  • double getTotalFoodScore() - връща сумата от стойностите на всички храни. Ако е реализиран клас за бърлога то този метод се намира в него вместо в класа за катерица (виж тестовете). Освен това всяка година катерицата може да отива да събира храна определен брой пъти. За улеснение можете да го зададете като константа 4.

Бърлога

За по-високи оценки да се реализира клас за бърлога според описаното горе. За по-ниски оценки е достатъчно класът за катерица да съдържа колекция с храни.

Вход

В пълния вид на програмата потребителят въвежда всички катерици и след това почва да въвежда храни. Когато всяка катерица е събрала колкото може храна преминава зимата и започва нов цикъл на събиране.

Катерици

Катериците се въвеждат на отделни редове във формата име,възраст,вид докато не се въведе stop. За всеки така въведен ред се създава нова инстанция на катерица.

Храни

След катериците по същия начин се въвеждат храни във формата вид количество качество. Храните се подават на катериците в реда им на въвеждане, като на дадена катерица се подават колкото може да събира храни преди да се премине на следващата. Програмата се прекратява при въвеждане на stop и се извежда крайното състояние(име, вид, възраст, обща храна) на всички катерици.

Зима

Когато няма повече катерици, които да могат да събират храна, всички отиват да зимуват. Извиква се passWInter и се извежда новото състояние след зимата за всички катерици.

Тестове

В проекта има написани и закоментирани юнит тестове. Вашата задача е да ги преправите така, че да работят с вашия код и да покриват същата функционалност.

Изисквания за оценка:

За 3:

  • наследяване на храните чрез интерфейс и/или абстрактен клас
  • демонстрация чрез създаване на катерица и добавяне на няколко храни, които се въвеждат от конзолата

За 4:

  • наследяване на храните чрез интерфейс и/или абстрактен клас
  • всяка храна има правилно работещ метод passWinter
  • междинен клас Burrow с колекция от храни
  • катерицата и бърлогата имат правилно работещи методи passWinter
  • демонстрация чрез създаване на катерица, добавяне на няколко храни от конзолата и извикване на passWinter на катерицата

За 5:

  • наследяване на храните чрез интерфейс и/или абстрактен клас
  • правилна енкапсулация
  • всяка храна има правилно работещ метод passWinter
  • междинен клас Burrow с колекция от храни
  • катерицата има ограничен брой събирания на храна, след които хвърля грешка
  • катерицата и бърлогата имат правилно работещи методи passWinter
  • демонстрация чрез създаване на катерица, добавяне на няколко храни от конзолата и извикване на passWinter на катерицата

За 6:

  • наследяване на храните чрез интерфейс и/или абстрактен клас
  • правилна енкапсулация
  • всяка храна има правилно работещ метод passWinter
  • междинен клас Burrow с колекция от храни
  • катерицата има ограничен брой събирания на храна, след които хвърля грешка
  • катерицата и бърлогата имат правилно работещи методи passWinter
  • имплементиран е пълният процес на въвеждане на катерици и храни
  • написани са юнит тестове, които покриват целия код

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages