Created
July 17, 2020 12:09
-
-
Save olegrewko/c66163d9f85a0e51349a8a7715ce7c27 to your computer and use it in GitHub Desktop.
Cats_OOP_22
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 mycats; | |
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(8000);//Наливаем воды | |
Plate plate = new Plate();// Общая на всех тарелка | |
plate.setEda(4000);//Кладем еды | |
System.out.println("------------------------------------------------"); | |
System.out.println(" Устанавливаем стандартные порции "); | |
System.out.println("------------------------------------------------"); | |
Bowl.portionVoda = Bowl.setPortionVoda(200); | |
Plate.portionEda = Plate.setPortionEda(100); | |
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); | |
bowl.drink(1400); | |
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); | |
cats[4].drink(bowl, Bowl.portionVoda); | |
cats[5].drink(bowl, Bowl.portionVoda); | |
cats[6].drink(bowl, Bowl.portionVoda); | |
cats[7].drink(bowl, Bowl.portionVoda); | |
cats[8].drink(bowl, Bowl.portionVoda); | |
cats[9].drink(bowl, Bowl.portionVoda); | |
cats[10].drink(bowl, Bowl.portionVoda); | |
cats[11].drink(bowl, Bowl.portionVoda); | |
bowl.drink(1200); | |
bowl.drink(200); | |
bowl.drink(400); | |
bowl.drink(600); | |
bowl.drink(800); | |
cats[0].eatFrom(plate, Plate.portionEda); // кошка кушает из тарелки, которую передали ей в параметрах | |
cats[1].eatFrom(plate, Plate.portionEda); // кошка2 кушает из тарелки, которую передали ей в параметрах | |
plate.feed(200); | |
plate.feed(600); | |
plate.feed(); | |
plate.feed(600); | |
plate.feed(400); | |
plate.feed(cats[2]); | |
plate.feed(cats[3]); | |
plate.feed(cats[4]); | |
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); // тарелка "кормит" кошку, которую ей передали в параметры | |
plate.feed(cats[3], Plate.portionEda); // тарелка "кормит" кошку, которую ей передали в параметры | |
plate.feed(cats[4], Plate.portionEda); // тарелка "кормит" кошку, которую ей передали в параметры | |
plate.feed(cats[5], Plate.portionEda); // тарелка "кормит" кошку, которую ей передали в параметры | |
plate.feed(cats[6], Plate.portionEda); // тарелка "кормит" кошку, которую ей передали в параметры | |
plate.feed(cats[7], Plate.portionEda); // тарелка "кормит" кошку, которую ей передали в параметры | |
plate.feed(cats[8], Plate.portionEda); // тарелка "кормит" кошку, которую ей передали в параметры | |
plate.feed(cats[9], Plate.portionEda); // тарелка "кормит" кошку, которую ей передали в параметры | |
plate.feed(cats[10], Plate.portionEda); // тарелка "кормит" кошку, которую ей передали в параметры | |
plate.feed(cats[11], 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("2 котенка выпили 200 воды"); | |
System.out.println("-------------------------------------------------------"); | |
Cat.showCount(); | |
int countCh = countChildsCats.getNextCountChildsCats(); | |
System.out.println("Количество всех котят " + countCh); | |
System.out.println("-------------------------------------------------------"); | |
} | |
} | |
//--------------------------------------------------------------------- | |
class Cat { | |
public int id; | |
public int count; | |
public String name = ""; | |
public int consumedVoda; | |
public int consumedEda; | |
Cat child; | |
String nameChild; | |
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++; | |
} | |
//---------------------------------------------------------------------- | |
// 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 Cat(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; | |
} | |
void born(String nameChild) { | |
child = new Cat(nameChild); | |
CountChildsCats.setCountChildsCats(); | |
} | |
public int eat(Plate plate, int portionEda) { | |
if (plate.eda <= 0) { | |
System.out.println("Еда закончилась"); | |
}else if (plate.eda < portionEda) { | |
consumedEda = consumedEda + plate.eda; | |
plate.eda = 0; | |
System.out.println(name + " #" + count + " сьел сейчас " + plate.eda + " а общее кол-во сьеденной им еды " + consumedEda); | |
System.out.println("Еда закончилась"); | |
} else if (plate.eda == portionEda) { | |
consumedEda = consumedEda + portionEda; | |
plate.eda = 0; | |
System.out.println(name + " #" + count + " сьел сейчас " + portionEda + " а общее кол-во сьеденной им еды " + consumedEda); | |
System.out.println("Еда закончилась"); | |
} else { | |
consumedEda = consumedEda + portionEda; | |
plate.eda = plate.eda - portionEda; | |
System.out.println(name + " #" + count + " сьел сейчас " + portionEda + " а общее кол-во сьеденной им еды " + consumedEda); | |
System.out.println(plate.eda + " остаток еды в тарелке"); | |
} | |
return plate. eda; | |
} | |
public int drink(Bowl bowl, int portionVoda) { | |
if (Bowl.voda <= 0) { | |
System.out.println("Вода закончилась"); | |
} else if (Bowl.voda < portionVoda) { | |
consumedVoda = consumedVoda + Bowl.voda; | |
Bowl.voda = 0; | |
System.out.println("Вода закончилась"); | |
} else if (Bowl.voda == portionVoda) { | |
Bowl.voda = Bowl.voda - portionVoda; | |
consumedVoda = consumedVoda + portionVoda; | |
Bowl.voda = 0; | |
System.out.println(name + " #" + count + " выпил сейчас " + portionVoda + " а общее кол-во выпитой им воды " + consumedVoda); | |
System.out.println("Вода закончилась"); | |
} else { | |
Bowl.voda = Bowl.voda - portionVoda; | |
consumedVoda = consumedVoda + portionVoda; | |
System.out.println(name + " #" + count + " выпил сейчас " + portionVoda + " а общее кол-во выпитой им воды " + consumedVoda); | |
System.out.println(Bowl.voda + " остаток воды в чашке"); | |
} | |
return Bowl.voda; | |
} | |
public int eatFrom(Plate plate, int portion) { | |
if (Plate.eda <= 0) { | |
System.out.println("Еда закончилась"); | |
} else if (Plate.eda < portion) { | |
consumedEda = consumedEda + Plate.eda; | |
Plate.eda = 0; | |
System.out.println(name + " #" + count + " сьел " + Plate.eda + " а общее кол-во сьеденной им еды " + consumedEda); | |
System.out.println("Еда закончилась"); | |
} else if (Plate.eda == portion) { | |
Plate.eda = Plate.eda - portion; | |
consumedEda = consumedEda + portion; | |
System.out.println(name + " #" + count + " сьел " + portion + " а общее кол-во сьеденной им еды " + consumedEda); | |
} else { | |
Plate.eda = Plate.eda - portion; | |
consumedEda = consumedEda + portion; | |
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) { | |
if (Bowl.voda <= 0) { | |
System.out.println("Вода закончилась"); | |
} else if (Bowl.voda < portionVoda) { | |
consumedVoda = consumedVoda + Bowl.voda; | |
Bowl.voda = 0; | |
System.out.println("............................................................................"); | |
System.out.printf("Воды осталось %8d, Чаша напоила %12s, Было выпито %5d%n ", Bowl.voda, cat.getNameChild(), Bowl.voda); | |
System.out.println("............................................................................."); | |
System.out.println("Вода закончилась"); | |
} else if (Bowl.voda == portionVoda){ | |
consumedVoda = consumedVoda + portionVoda; | |
Bowl.voda = Bowl.voda - portionVoda; | |
System.out.println("............................................................................"); | |
System.out.printf("Воды осталось %8d, Чаша напоила %12s, Было выпито %5d%n ", Bowl.voda, cat.getNameChild(), portionVoda ); | |
System.out.println("............................................................................."); | |
System.out.println("Вода закончилась"); | |
} else { | |
consumedVoda = consumedVoda + portionVoda; | |
Bowl.voda = Bowl.voda - portionVoda; | |
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 int drink(int portionVoda) { | |
if (Bowl.voda <= 0) { | |
System.out.println("Вода закончилась"); | |
} else if (Bowl.voda < portionVoda) { | |
System.out.println("Неизвестно кто пришел пить " + portionVoda + " а воды осталось " + Bowl.voda); | |
System.out.println("Он выпил " + Bowl.voda); | |
consumedVodaNemo = consumedVodaNemo + Bowl.voda; | |
Bowl.voda = 0; | |
System.out.println("Вода закончилась"); | |
} else if (Bowl.voda == portionVoda){ | |
consumedVodaNemo = consumedVodaNemo + portionVoda ; | |
Bowl.voda = 0; | |
System.out.println("Неизвестно кто выпил " + portionVoda + " Воды осталось " + Bowl.voda); | |
System.out.println("Вода закончилась"); | |
} else { | |
consumedVodaNemo = consumedVodaNemo + portionVoda; | |
Bowl.voda = Bowl.voda - portionVoda; | |
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 int feed(Cat cat, int portionEda) { | |
if (eda <= 0) { | |
System.out.println("Еда закончилась"); | |
} else if (eda < portionEda) { | |
cat.consumedEda = cat.consumedEda + eda; | |
eda = 0; | |
System.out.println("Еда закончилась"); | |
} else if(eda == portionEda) { | |
cat.consumedEda = cat.consumedEda + portionEda; | |
eda = eda - portionEda; | |
System.out.println("Еды осталось " + eda + " Тарелка покормила " + cat.name); | |
System.out.println("Еда закончилась"); | |
} else { | |
cat.consumedEda = cat.consumedEda + portionEda; | |
eda = eda - portionEda; | |
System.out.println("Еды осталось " + eda + " Тарелка покормила " + cat.name); | |
} | |
return eda; | |
} | |
public int feed(int portion) { | |
if (eda <= 0) { | |
System.out.println("Еда закончилась"); | |
} else if (eda < portion) { | |
System.out.println("Кто-то пришел поесть " + portion + " а еды осталось " + eda); | |
consumedEdaNemo = consumedEdaNemo + eda; | |
System.out.println("Он сьел " + eda); | |
eda = 0; | |
System.out.println("Еда закончилась"); | |
} else if(eda == portion) { | |
consumedEdaNemo = consumedEdaNemo + portion; | |
eda = eda - portion; | |
System.out.println("Кто-то поел " + portion + " и еды осталось " + eda); | |
System.out.println("Еда закончилась"); | |
} else { | |
consumedEdaNemo = consumedEdaNemo + portion; | |
eda = eda - portion; | |
System.out.println("Кто-то поел " + portion + " и еды осталось " + eda); | |
} | |
return eda; | |
} | |
public int feed(Cat cat) { | |
if (eda <= 0) { | |
System.out.println("Еда закончилась"); | |
} else if (eda < portionEda) { | |
cat.consumedEda = cat.consumedEda + eda; | |
eda = 0; | |
System.out.println(cat.name + " сьел " + eda + " и еды осталось " + eda); | |
System.out.println("Еда закончилась"); | |
} else if(eda == portionEda){ | |
cat.consumedEda = cat.consumedEda + portionEda; | |
eda = eda - portionEda; | |
System.out.println(cat.name + " сьел стандартную порцию 100 и Еды осталось " + eda); | |
System.out.println("Еда закончилась"); | |
}else { | |
cat.consumedEda = cat.consumedEda + portionEda; | |
eda = eda - portionEda; | |
System.out.println(cat.name + " сьел стандартную порцию 100 и Еды осталось " + eda); | |
} | |
return eda; | |
} | |
public static int setPortionEda(int amountEda) { | |
int portionEda = amountEda; | |
return portionEda; | |
} | |
public void setEda(int i) { | |
eda = i; | |
int amountVoda = i; | |
amountEdaBegin = amountVoda; | |
System.out.printf("Еды в тарелке сначала %20d%n", i); | |
} | |
public int feed() { | |
if (eda <= 0) { | |
System.out.println("Еда закончилась"); | |
} else if (eda < portionEda) { | |
consumedEdaNemo = consumedEdaNemo + eda; | |
eda = 0; | |
System.out.println("Неизвестный сьел" + eda + " еды осталось " + eda); | |
System.out.println("Еда закончилась"); | |
} else if(eda == portionEda) { | |
consumedEdaNemo = consumedEdaNemo + portionEda; | |
eda = eda - portionEda; | |
System.out.println("Неизвестный сьел стандартную порцию 100 и еды осталось " + eda); | |
System.out.println("Еда закончилась"); | |
} else { | |
consumedEdaNemo = consumedEdaNemo + portionEda; | |
eda = eda - portionEda; | |
System.out.println("Неизвестный сьел стандартную порцию 100 и еды осталось " + eda); | |
} | |
return eda; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment