Skip to content

Instantly share code, notes, and snippets.

@olegrewko
Created June 21, 2020 22:02
Show Gist options
  • Select an option

  • Save olegrewko/71b799f83d5a8eac4dc77594ed070cbb to your computer and use it in GitHub Desktop.

Select an option

Save olegrewko/71b799f83d5a8eac4dc77594ed070cbb to your computer and use it in GitHub Desktop.
Кошки ООП [массив] 12
package IgorDolgov.cats;
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 Count {
// public static int count;
//
// public int setCount(int count) {
// this.count = count;
// return count;
// }
//
// public static int getNextCount() {
// count++;
// return count;
// }
//}
// Count count = new Count();
// System.out.println("Устанавливаем счетчик кошек в " + count.setCount(10));
public class Main {
public static void main(String[] args) {
// Массив для 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(11);
cats[11] = new Cat(12);
System.out.println("------------------------------------------------");
for (Cat e : cats) {
System.out.printf("name = %-10s, count = %2d, id = %4d%n", e.getName(), e.getCount(), e.getId());
}
System.out.println("------------------------------------------------");
Bowl bowl = new Bowl();//Общая на всех чаша
bowl.setVoda(2000);//Наливаем воды
Plate plate = new Plate();// Общая на всех тарелка
plate.setEda(3000);//Кладем еды
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("Чаша будет неизвестно кого поить 3 раза: 100, 400, 300 нестандартными порциями переданными в параметрах");
bowl.drink(100);
bowl.drink(400);
bowl.drink(300);
cats[0].drink(bowl, Bowl.portionVoda);
cats[1].drink(bowl, Bowl.portionVoda);
cats[2].drink(bowl, Bowl.portionVoda);
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.println("Кошка #" + 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.println("Кошка #" + 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);
}
}
//--------------------------------------------------------------------------------------------------------
class Cat {
public int id;
public static int nextId;
public int count;
private static int nextCount;
public String name = "";
public int consumedVoda;
public int consumedEda;
static
// static initialization block
{
var generator = new Random();
// set nextId to a random number between 0 and 9999
nextId = generator.nextInt(999);
}
// count initialization block
{
count = nextCount;
nextCount++;
}
// object initialization block
{
id = nextId;
nextId++;
}
// three overloaded constructors
public Cat(String n, int c) {
// this.id = id;
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
}
public int setCount(int c) {
this.count = c;
return count;
}
public String getName() {
return name;
}
public int getCount() {
return count;
}
public int getId() {
return id;
}
//------------------------------------------------------------------------------------------
public void setName(String name) {
this.name = name;
}
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;
}
}
//-----------------------------------------------------------------------------------
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("Воды осталось %20d%n" + Bowl.voda);
}
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