0 / 0 / 0
Регистрация: 02.03.2017
Сообщений: 4
1

Счётчик объектов в классе

02.03.2017, 13:24. Показов 9528. Ответов 7

Author24 — интернет-сервис помощи студентам
Есть класс Cat. В котором имеется конструктор и разные методы которые работают с объектом кошки (некоторые кормят некоторые играют и тд.) Нужно создать у класса Cat статическую переменную count, которая будет увеличиваться, если кошку создали, и убывать, если кошка взорвалась или умерла, и статический метод getCount(), который будет возвращать количество кошек. С увеличением счётчика, при создании кошки проблем нет, а вот с уменьшением есть проблема.
Например есть метод Eat в котором мы можем написать как много кошка съест, если после еды её вес будет больше чем максимальный то она взорвётся и счётчик должен уменьшится, а если нет то ничего не случится. Писать в каждом методе проверку это слишком долго и смахивает на дублирование кода. Думаю что это можно решить с помощью мутатора, но не знаю как. Будьте добры подскажите как быть с этим мутатором.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.03.2017, 13:24
Ответы с готовыми решениями:

Заполнение объектов в классе
Я только начинаю изучать Яву, так что просьба не троллить))) задание таково Создать три объекта...

Создание объектов в классе циклом
Приветствую форумчане, Имеется следующее задание необходимо создать Array статический и затем...

Счетчик в классе string
имеется такой код ... string s = "Hello world"; string s1; s1 = s; s = 'h'; ...

Счетчик в конструкторе классе
Подскажите реализацию, есть класс (бизнес-логика), нужно добавить еще одно поле которое будет...

7
183 / 110 / 44
Регистрация: 03.07.2016
Сообщений: 496
02.03.2017, 13:37 2
Ну на крайний можешь метод finalize использовать. Но может быть проблема в том что декрементация будет происходить когда зборщик мусора будет удалять обтекты
0
0 / 0 / 0
Регистрация: 02.03.2017
Сообщений: 4
02.03.2017, 13:57  [ТС] 3
Можно тогда, хоть какой то пример кода, ибо я ещё не работал с finalize.
0
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
02.03.2017, 14:11 4
Лучший ответ Сообщение было отмечено Deceiver13 как решение

Решение

создай признак жива кошка или нет
в методе setWeight проверяй если isAlive && weight > MAX_WEIGTH => isAlive=false, counter--;
1
183 / 110 / 44
Регистрация: 03.07.2016
Сообщений: 496
02.03.2017, 14:13 5
finalize это метод класса object, который вызывается непосредственно перед тем как зборщик мусора удаляет обьект с кучи.
Просто поэксперементируй с методом, переопредели его и попробуй в нём декрементировать счетчик
0
143 / 115 / 61
Регистрация: 13.01.2016
Сообщений: 305
02.03.2017, 14:16 6
Deceiver13, а зачем в дебри лезете? Принцип - любой метод должен делать только одно действие, создайте метод void destroyCat(), где будете убивать свою кошку и декрементировать счетчик, а дальше в каждом методе вызываете убийство кошки.
Finalize здесь совершенно неуместен.
0
729 / 424 / 66
Регистрация: 22.12.2013
Сообщений: 2,267
Записей в блоге: 19
06.03.2017, 01:24 7
Создайте статичное поле класса
Java
1
2
3
public class Cat{
 public static int count;
}
статичный метод, например countAdd который будет делать count++;

Ну и в конструкторе класса или в статической инициализации скажите Cat.countAdd();

Подобным образом создайте метод который уменьшает кошек на единицу count--;
0
528 / 263 / 70
Регистрация: 11.12.2016
Сообщений: 1,223
11.05.2017, 16:22 8
Здравствуйте, у меня вопрос касательно правильности (только стиля?) написания кода, который непосредственно касается данной темы, "уничтожения" объектов и finalize();

Суть вопроса : Есть класс с методом "Выстрел", а в этом методе я постоянно создаю новые объекты класса "снаряд"(WhizBang).
Постоянно создаю при вызове, не дожидаясь пока старый "умрет". То есть, выстрел происходит внезависимости от того долетел ли предыдущий снаряд. Таким способом
Java
1
2
 case RIGHT : 
         new WhizBang(i, j, Direct_1.RIGHT, my_pane);            break;
В классе WhizBang создал :
Java
1
2
3
4
@Override
    protected void finalize() {
        System.out.println("Its Finalize!!!");
    }
Пока тестировал ни разу не вызывался finalize() !

Вопрос : Возможно ли со временем перегруженность и торможение моей программы в связи с тем что я не управляю своими ресурсами?
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.05.2017, 16:22
Помогаю со студенческими работами здесь

Счетчик объектов
Подскажите пожалуйста.. как решается задача отслеживание числа объектов... У меня есть идея...

Счетчик объектов класса
Всем доброго времени суток. Изучая язык С++ по книге Лафоре столкнулся с задачей которую не могу...

Счётчик заданных объектов
Создать класс,который содержит счётчик созданных объектов класса.Напишите программу-тест,которая...

Счётчик количества удаленных объектов
Подскажите как можно сделать счётчик который бы считал количество удалённых объектов, например...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru