Skip to content

Instantly share code, notes, and snippets.

@olegrewko
Created July 4, 2020 13:44
Show Gist options
  • Save olegrewko/62f551642b4253e144dc664088d7c799 to your computer and use it in GitHub Desktop.
Save olegrewko/62f551642b4253e144dc664088d7c799 to your computer and use it in GitHub Desktop.
CatsOOP-20
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