Если я правильно понимаю ваш вопрос, то скажу, что вы на правильном пути. (Но, пожалуйста, см. Ниже некоторые отзывы о вашем коде.)
атрибуты предназначены для вещей, в которых значение данных имеет значение для природы объекта
методы предназначены для вещей, в которых операция / алгоритм / логика имеет значение для природы объекта
Атрибуты имеют смысл только после того, как им присвоено определенное значение, как правило, во время создания объекта. (Но это значение, безусловно, может изменяться в течение времени жизни экземпляра объекта.) Методы полностью определены до создания объекта (т. Е. Они определены для класса) и не изменяются. (Хотя их точные результаты и эффекты, конечно, могут варьироваться в зависимости от различных входных данных.)
Итак, используя ваш класс в качестве примера, что-то вроде burnedcaloriesperhour
подходит в качестве атрибута, поскольку оно является частью того, что определяет определенный элемент фитнес-оборудования, и что-то вроде calorieconsumption()
подходит в качестве метода, потому что логика для расчета, которая неизменна и одинакова для всех единиц оборудования для фитнеса.
В этом много нюансов. Некоторые атрибуты быстро меняются; некоторые атрибуты не определены при создании объекта и принимают значение только после вызова того или иного метода; класс константы подобны атрибутам, но имеют одинаковое значение для всех объектов этого класса; и многое, многое другое. Но часть вашего изучения Java будет приобретать постоянно расширяющийся концептуальный контекст для понимания этих нюансов.
Я хочу отметить несколько вещей о вашем коде:
Я не думаю, что max.trainingduration;
будет работать так, как я думаю, вы этого хотите. Там написано «атрибут« trainingduration », который принадлежит объекту с именем« max ». Я думаю, вы хотите maxTrainingduration
или что-то в этом роде.
Код return (power = true);
будет (а) устанавливать power
равным true
, а (b) всегда возвращать true
. Я думаю, что вы имеете в виду return (power == true);
Код return (burnedcaloriesperhour = trainingduration * (burnedcaloriesperhour / 60));
изменяет значение burnedcaloriesperhour
каждый раз, когда он вызывается; я думаю, что вы хотите просто вернуть расчет trainingduration * (burnedcaloriesperhour / 60)
.
Мне неясно, является ли ваш комментарий к коду //Setter & Getter for all attributes above//
заменой для методов установки и получения, которые не показаны, или если он предназначен для определения методов ниже, как методов установки и получения. Если это заменитель методов не показан, это нормально. Если это комментарий о методах ниже, я хочу отметить, что они на самом деле не являются методами установки и получения.
Надеюсь, я ответил на ваш вопрос и дал вам некоторую уверенность для продвижения вперед. Лучший способ обрести уверенность и углубить понимание - это экспериментировать. Начать с малого; compile-run-fix, пока у вас что-то не работает сделать небольшие постепенные улучшения; добавить выходные строки, чтобы увидеть, что происходит и где это происходит; найдите время, чтобы опробовать сценарии «что если»; и повторять этот цикл снова и снова. Вы получите твердое представление о структуре классов, а также о роли атрибутов и методов.
Виль Эрфолг!