Created
July 4, 2020 13:44
-
-
Save olegrewko/62f551642b4253e144dc664088d7c799 to your computer and use it in GitHub Desktop.
CatsOOP-20
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package IgorDolgov.cats; | |
import java.util.Calendar; | |
import java.util.Random; | |
//class Cat { | |
// int consumed; // храним кол-во съеденной пищи | |
// void eatFrom(Plate plate) { | |
// // int portion = получите из тарелки порцию еды (так чтобы и в тарелке еда тоже уменьшилась) | |
// // увеличьте consumed на размер этой порции | |
// System.out.println("Кошка съела из тарелки " + portion); | |
// System.out.println("Кошка всего съела " + consumed); | |
// } | |
//} | |
// | |
// | |
//class Plate { | |
// int amount = 100; // сколько еды в тарелке осталось | |
// int portion = 10; // размер порции | |
// void feed(Cat cat) { | |
// // уменьшите размер amount на размер порции (сделайте проверку, чтобы было нельзя съесть больше, чем в тарелке осталось) | |
// // увеличьте у кошки кол-во потребленной ей еды на размер этой порции | |
// System.out.println("Тарелка покормила кошку на " + portion); | |
// System.out.println("В тарелке осталось " + amount); | |
// System.out.println("Кошка всего съела " + cat.consumed); | |
// } | |
// int getPortion() { | |
// // уменьшите размер оставшейся в тарелке еды на размер порции | |
// // (сделайте проверку, чтобы было нельзя съесть больше, чем в тарелке осталось) | |
// // (если еды мало – то всю ее и съесть) | |
// System.out.println("В тарелке осталось " + amount); | |
// // верните потребленный размер порции с помощью return | |
// } | |
//} | |
// | |
// | |
//public static void main(String[] args) { | |
// Plate plate = new Plate(); // Общая на всех тарелка | |
// Cat cat = new Cat(); // Кошка | |
// cat.eatFrom(plate); // кошка кушает из тарелки, которую передали ей в параметрах | |
// plate.feed(cat); // тарелка "кормит" кошку, которую ей передали в параметры | |
// } | |
//-------------------------------------------------------------------------------------------- | |
class CountChildsCats { | |
public static int countChildsCats; | |
public static void setCountChildsCats() { | |
countChildsCats++; | |
} | |
public static int getNextCountChildsCats() { | |
return countChildsCats; | |
} | |
} | |
public class MainCat { | |
public static void main(String[] args) { | |
CountChildsCats countChildsCats = new CountChildsCats(); | |
// Массив для 12 кошек | |
final int SIZE = 12; | |
Cat[] cats = new Cat[SIZE]; | |
cats[0] = new Cat("Земфира", 1); | |
cats[1] = new Cat("Стелла", 2); | |
cats[2] = new Cat("Лора", 3); | |
cats[3] = new Cat("Маша", 4); | |
cats[4] = new Cat("Миша", 5); | |
cats[5] = new Cat("Галя", 6); | |
cats[6] = new Cat("Kate", 7); | |
cats[7] = new Cat("Petr", 8); | |
cats[8] = new Cat("Boris", 9); | |
cats[9] = new Cat("Barsic", 10); | |
cats[10] = new Cat(); | |
cats[11] = new Cat(12); | |
System.out.println("------------------------------------------------"); | |
System.out.println(" Кошки "); | |
System.out.println("------------------------------------------------"); | |
for (Cat e : cats) { | |
System.out.printf("name = %-10s, count = %2d, id = %4d%n", e.getName(), e.getCount(), e.getId()); | |
} | |
Cat.showCount(); | |
System.out.println("------------------------------------------------"); | |
System.out.println(" Котята "); | |
System.out.println("------------------------------------------------"); | |
cats[0].born("Лолита"); | |
cats[0].child.setNameChild("Лолита"); | |
cats[0].child.born("Лоллабриджида"); | |
cats[0].child.child.setNameChild("Лоллабриджида"); | |
cats[1].born("Аэлита"); | |
cats[1].child.setNameChild("Аэлита"); | |
cats[1].child.born("АннаМария"); | |
cats[1].child.child.setNameChild("АннаМария"); | |
cats[2].born("Лилит"); | |
cats[2].child.setNameChild("Лилит"); | |
System.out.printf("%-10s родила %-17s, count = %2d, id = %4d%n", cats[0].name, cats[0].child.nameChild, cats[0].child.count, cats[0].child.id); | |
System.out.printf("%-10s родила %-17s, count = %2d, id = %4d%n", cats[0].child.nameChild, cats[0].child.child.nameChild, cats[0].child.child.count, cats[0].child.child.id); | |
System.out.printf("%-10s родила %-17s, count = %2d, id = %4d%n", cats[1].name, cats[1].child.nameChild, cats[1].child.count, cats[1].child.id); | |
System.out.printf("%-10s родила %-17s, count = %2d, id = %4d%n", cats[1].child.nameChild, cats[1].child.child.nameChild, cats[1].child.child.count, cats[1].child.child.id); | |
System.out.printf("%-10s родила %-17s, count = %2d, id = %4d%n", cats[2].name, cats[2].child.nameChild, cats[2].child.count, cats[2].child.id); | |
Cat.showCount(); | |
System.out.println("------------------------------------------------"); | |
System.out.println(" Наливаем воды Кладем еды "); | |
System.out.println("------------------------------------------------"); | |
Bowl bowl = new Bowl();//Общая на всех чаша | |
bowl.setVoda(2000);//Наливаем воды | |
Plate plate = new Plate();// Общая на всех тарелка | |
plate.setEda(3000);//Кладем еды | |
System.out.println("------------------------------------------------"); | |
System.out.println(" Устанавливаем стандартные порции "); | |
System.out.println("------------------------------------------------"); | |
Plate.portionEda = Plate.setPortionEda(100); | |
Bowl.portionVoda = Bowl.setPortionVoda(200); | |
System.out.printf("Установленный размер стандартной порции еды %4d%n", Plate.portionEda); | |
System.out.printf("Установленный размер стандартной порции воды %4d%n", Bowl.portionVoda); | |
System.out.println("------------------------------------------------"); | |
bowl.drink(100); | |
bowl.drink(100); | |
bowl.drink(400); | |
// System.out.printf("Пришла пить .............................. %15s%n", cats[1].child.nameChild); | |
bowl.drink(cats[1].child, 100); | |
// System.out.printf("Пришла пить ............................... %15s%n", cats[1].child.child.nameChild); | |
bowl.drink(cats[1].child.child, 100); | |
cats[0].drink(bowl, Bowl.portionVoda); | |
cats[1].drink(bowl, Bowl.portionVoda); | |
cats[2].drink(bowl, Bowl.portionVoda); | |
cats[3].drink(bowl, Bowl.portionVoda); | |
bowl.drink(200); | |
bowl.drink(200); | |
cats[0].eatFrom(plate, Plate.portionEda); // кошка кушает из тарелки, которую передали ей в параметрах | |
cats[1].eatFrom(plate, Plate.portionEda); // кошка2 кушает из тарелки, которую передали ей в параметрах | |
plate.feed(200); | |
plate.feed(600); | |
plate.feed(); | |
plate.feed(1000); | |
plate.feed(cats[9]); | |
cats[9].eat(plate, Plate.portionEda); | |
cats[8].eat(plate, Plate.portionEda); | |
cats[7].eat(plate, Plate.portionEda); | |
cats[6].eat(plate, Plate.portionEda); | |
cats[5].eat(plate, Plate.portionEda); | |
cats[9].eat(plate, Plate.portionEda); // кошка кушает из тарелки, которую передали ей в параметрах | |
plate.feed(cats[2], Plate.portionEda); // тарелка "кормит" кошку, которую ей передали в параметры | |
System.out.println("-------------------------------------------------------"); | |
System.out.println("Проверяем номера и идентификаторы кошек"); | |
System.out.println("-------------------------------------------------------"); | |
int sumCatsEda = 0; | |
for (int k = 0; k < 12; k++) { | |
sumCatsEda += cats[k].consumedEda; | |
System.out.printf("id = %4d %-10s , count = %2d, всего употребила еды %4d%n", cats[k].id, cats[k].name, cats[k].count, cats[k].consumedEda); | |
} | |
System.out.println("-------------------------------------------------------"); | |
System.out.println("Общее кол-во еды потреблённой всеми кошками " + sumCatsEda); | |
System.out.println("Общее количество сьеденной неизвестно кем еды (Не кошками/Гости?) " + plate.consumedEdaNemo); | |
int sumEda = sumCatsEda + plate.consumedEdaNemo; | |
int sumEdaSet = sumEda + plate.eda; | |
System.out.println("Общее количество осталось еды " + plate.eda); | |
System.out.println("Еды всего съедено + остатки в чашке = " + sumEdaSet + " а было еды " + plate.amountEdaBegin); | |
System.out.println("-------------------------------------------------------"); | |
int sumCatsVoda = 0; | |
for (int k = 0; k < 12; k++) { | |
sumCatsVoda += cats[k].consumedVoda; | |
System.out.printf("id = %4d %-10s , count = %2d, всего употребила воды %4d%n", cats[k].id, cats[k].name, cats[k].count, cats[k].consumedVoda); | |
} | |
System.out.println("-------------------------------------------------------"); | |
System.out.println("Общее кол-во потреблённой всеми нашими кошками воды " + sumCatsVoda); | |
System.out.println("Общее количество выпитой неизвестно кем воды (Не кошками/Алкоголики?) " + bowl.consumedVodaNemo); | |
System.out.println("Общее количество осталось воды " + bowl.voda); | |
int sumVoda = sumCatsVoda + bowl.consumedVodaNemo; | |
int sumVodaSet = sumVoda + bowl.voda; | |
System.out.println("Количество выпитой воды + сколько осталось в чашке = " + sumVodaSet + " а было воды " + bowl.amountVodaBegin); | |
System.out.println("-------------------------------------------------------"); | |
Cat.showCount(); | |
int countCh = countChildsCats.getNextCountChildsCats(); | |
System.out.println("Количество всех котят " + countCh); | |
System.out.println("-------------------------------------------------------"); | |
Calendar c = Calendar.getInstance(); | |
System.out.printf("Today is %tA, %tB %te, %tY, %tl:%tM %tp%n", c, c, c, c, c, c, c); | |
} | |
} | |
//--------------------------------------------------------------------- | |
class Cat { | |
private static int nextCount; | |
public static int nextId; | |
static void showCount() { | |
System.out.println("Кошек всего создано: " + nextCount); | |
} | |
static | |
// static initialization block | |
{ | |
var generator = new Random(); | |
// set nextId to a random number between 0 and 999 | |
nextId = generator.nextInt(999); | |
} | |
// count initialization block | |
{ | |
count = nextCount; | |
nextCount++; | |
} | |
// object initialization block | |
{ | |
id = nextId; | |
nextId++; | |
} | |
//---------------------------------------------------------------------- | |
public int id; | |
public int count; | |
public String name = ""; | |
public int consumedVoda; | |
public int consumedEda; | |
Cat child; | |
String nameChild; | |
// 4 overloaded constructors | |
public Cat(String nameChild) { | |
count++; | |
} | |
public Cat(String n, int c) { | |
count++; | |
name = n; | |
count = c; | |
} | |
public Cat(int c) { | |
// calls the Employee(String, int) constructor | |
this("Cat #" + nextId, c); | |
} | |
// the default constructor | |
public Cat() { | |
// name initialized to ""--see above | |
// count not explicitly set--initialized to 0 | |
// id initialized in initialization block | |
count++; | |
} | |
public void setNameChild(String nameChild) { | |
this.nameChild = nameChild; | |
} | |
public String getNameChild() { | |
return nameChild; | |
} | |
public int getCount() { | |
return count; | |
} | |
public int getId() { | |
return id; | |
} | |
public void setName(String name) { | |
this.name = name; | |
} | |
void born(String nameChild) { | |
child = new Cat(nameChild); | |
CountChildsCats.setCountChildsCats(); | |
} | |
public int eat(Plate plate, int portionEda) { | |
Plate.eda = Plate.eda - portionEda; | |
consumedEda = consumedEda + portionEda; | |
if (Plate.eda < 0) { | |
Plate.eda = 0; | |
System.out.println("Еда закончилась"); | |
} else { | |
System.out.println(name + " #" + count + " сьел сейчас " + portionEda + " а общее кол-во сьеденной им еды " + consumedEda); | |
System.out.println(Plate.eda + " остаток еды в тарелке"); | |
} | |
return Plate.eda; | |
} | |
public int drink(Bowl bowl, int portionVoda) { | |
Bowl.voda = Bowl.voda - portionVoda; | |
consumedVoda = consumedVoda + portionVoda; | |
if (Bowl.voda < 0) { | |
Bowl.voda = 0; | |
System.out.println("Вода закончилась"); | |
} else { | |
System.out.println(name + " #" + count + " выпил сейчас " + portionVoda + " а общее кол-во выпитой им воды " + consumedVoda); | |
System.out.println(Bowl.voda + " остаток воды в чашке"); | |
} | |
return Bowl.voda; | |
} | |
public int eatFrom(Plate plate, int portion) { | |
Plate.eda = Plate.eda - portion; | |
consumedEda = consumedEda + portion; | |
if (Plate.eda < 0) { | |
Plate.eda = 0; | |
System.out.println("Еда закончилась"); | |
} else { | |
System.out.println(name + " #" + count + " сьел " + portion + " а общее кол-во сьеденной им еды " + consumedEda); | |
System.out.println(Plate.eda + " остаток еды в тарелке"); | |
} | |
return Plate.eda; | |
} | |
public String getName() { | |
return name; | |
} | |
} | |
//----------------------------------------------------------------------------------- | |
class Bowl { | |
public static int voda; | |
public static int consumedVoda; | |
public static int portionVoda; | |
public int consumedVodaNemo; | |
public static int amountVodaBegin; | |
public static void setVoda(int i) { | |
int amountVoda = i; | |
amountVodaBegin = amountVoda; | |
Bowl.voda = i; | |
System.out.printf("Воды в чаше сначала %20d%n", amountVoda); | |
} | |
public static int drink(Cat cat, int portionVoda) { | |
consumedVoda = consumedVoda + portionVoda; | |
Bowl.voda = Bowl.voda - portionVoda; | |
if (Bowl.voda < 0) { | |
Bowl.voda = 0; | |
System.out.println("Вода закончилась"); | |
} else { | |
System.out.println("............................................................................"); | |
System.out.printf("Воды осталось %8d, Чаша напоила %12s, Было выпито %5d%n ", Bowl.voda, cat.getNameChild(), portionVoda); | |
System.out.println("............................................................................."); | |
} | |
return Bowl.voda; | |
} | |
public static int setPortionVoda(int amountVoda) { | |
int portionVoda = amountVoda; | |
return portionVoda; | |
} | |
public static int getPortionVoda() { | |
Bowl.voda = Bowl.voda - Bowl.portionVoda; | |
if (Bowl.voda < 0) { | |
Bowl.voda = 0; | |
System.out.println("Вода закончилась"); | |
} else { | |
System.out.println("Воды осталось " + Bowl.voda); | |
} | |
return portionVoda; | |
} | |
public int drink(int portionVoda) { | |
consumedVodaNemo = consumedVodaNemo + portionVoda; | |
Bowl.voda = Bowl.voda - portionVoda; | |
if (Bowl.voda < 0) { | |
Bowl.voda = 0; | |
System.out.println("Вода закончилась"); | |
} else { | |
System.out.println("Неизвестно кто выпил " + portionVoda + " Воды осталось " + Bowl.voda); | |
} | |
return Bowl.voda; | |
} | |
} | |
//----------------------------------------------------------------------- | |
class Plate { | |
public static int eda; | |
public static int portionEda; | |
public int consumedEdaNemo; | |
public static int amountEdaBegin; | |
public static int feed(Cat cat, int portionEda) { | |
cat.consumedEda = cat.consumedEda + portionEda; | |
Plate.eda = Plate.eda - portionEda; | |
if (Plate.eda < 0) { | |
Plate.eda = 0; | |
System.out.println("Еда закончилась"); | |
} else { | |
System.out.println("Еды осталось " + Plate.eda + " Тарелка покормила " + cat.name); | |
} | |
return Plate.eda; | |
} | |
public int feed(int portion) { | |
consumedEdaNemo = consumedEdaNemo + portion; | |
Plate.eda = Plate.eda - portion; | |
if (Plate.eda < 0) { | |
Plate.eda = 0; | |
System.out.println("Еда закончилась"); | |
} else { | |
System.out.println("Кто-то поел " + portion + " и еды осталось " + Plate.eda); | |
} | |
return Plate.eda; | |
} | |
public int feed(Cat cat) { | |
cat.consumedEda = cat.consumedEda + portionEda; | |
Plate.eda = Plate.eda - portionEda; | |
if (Plate.eda < 0) { | |
Plate.eda = 0; | |
System.out.println("Еда закончилась"); | |
} else { | |
System.out.println(cat.name + " сьел стандартную порцию 100 и Еды осталось " + Plate.eda); | |
} | |
return Plate.eda; | |
} | |
public static int setPortionEda(int amountEda) { | |
int portionEda = amountEda; | |
return portionEda; | |
} | |
public static int getPortionEda() { | |
Plate.eda = Plate.eda - Plate.portionEda; | |
if (Plate.eda < 0) { | |
Plate.eda = 0; | |
System.out.println("Еда закончилась"); | |
} else { | |
System.out.println("Еды осталось " + Plate.eda); | |
} | |
return portionEda; | |
} | |
public void setEda(int i) { | |
Plate.eda = i; | |
int amountVoda = i; | |
amountEdaBegin = amountVoda; | |
System.out.printf("Еды в тарелке сначала %20d%n", i); | |
} | |
public int feed() { | |
consumedEdaNemo = consumedEdaNemo + portionEda; | |
Plate.eda = Plate.eda - portionEda; | |
if (Plate.eda < 0) { | |
Plate.eda = 0; | |
System.out.println("Еда закончилась"); | |
} else { | |
System.out.println("Неизвестный сьел стандартную порцию 100 и еды осталось " + Plate.eda); | |
} | |
return Plate.eda; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment