Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 10.01.2018
Сообщений: 105

Конструкторы и списки

03.05.2018, 18:37. Показов 1107. Ответов 28
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте! Прошу по возможности помочь со следующим кодом:

Аппка состоит пока из 4 классов: App (main), Equipment, MuscleGroup и Training.

Поначалу все шло хорошо с упражнением, пока я не дошел до списков и вконец в итоге запутался.

1. Класс Equipment содержит
а) название тренажера
б) тип тренажера (кардио или свободный вес)
в) тренируемая группа мышц ->MuscleGroup
г) Максимальное рекомендуемое время тренировки
д) Сжигаемые калории в час (в среднем)


Класс должен содержать следующие методы:
- Конструктор для всех данных (его я вроде реализовал нормально)

- public int burnedCcalPerHour (int minutes){
} выдает сожженные за время тренировки калории

- public int burnedCcalPerHour (int minutes, int hours){
} выдает сожженные за время тренировки калории в минутах и часах

boolean supports (String muscle) {
} true если данный тренажер тренирует определенную мыщцу

boolean supports (MuscleGroup muscleGroup){

} true если данный тренажер тренирует определенную группу мышц


boolean electricityUse (){

} true если этот тренажер требует подключения к электричеству, я так понимаю, что если кардио, то true


В этом классе вместе с muscleGroup я запутался как реализовать и разделить группу и конкретную мышцу и как вывести и в часах и минутах

2. Класс Training (сама тренировка)
Должен содержать следующие свойства:
а) длительность тренировки
б) дату и время начала тренировки (пока как string)
в) Какой тренажер использовался ->Equipment

В классе должны использоваться следующие методы:
- конструктор для указания использованного тренажера
- конструктор для тренажера, даты и времени начала тренировки
-

boolean goalAchieved (int goalCcal) {
} true если во время тренировки достигнута цель, указанная в goalCcal, при этом должны браться во внимание длительность тренировки и средний расход ккал в час у тренажера

int requiredTrainingTime (int goalCcal) {
} - выдает количество минут для достижения goalCcal

void train() {

} увеличивает длительность тренировки на 1 мин

void train (int minutes) {

} увеличивает длительность тренировки на 5 мин

3. Класс MuscleGroup
Содержит в себе данные о группах мышц, например, ноги -> квадрицепс, бицепс бедра, ягодицы и икры и т.п.
В классе должны содержаться следующие данные:
Название групп мыщц , список со всеми мускулами этих групп. Каждый мускул может быть реализован как строка "Трицепс" и т.п. Список этих строк сохраняется в массиве.

boolean contains (String musle){

} true если эта группа мышц содержит заданный мускул.




4. В App должны создаваться 2 тренажера и вызываться все методы классов Equipment, MuscleGroup и Training.
Так же должен создаваться объект класса Training (тренировка) и для этого объекта должен вызываться while, пока метод train(5) (по 5 минут) не достигнет цели в 800 ккал и должно показываться, сколько калорий сожжено фактически.

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
import java.util.Arrays;
 
public class App {
 
 
 
    public static void main(String[] args) {
            System.out.println("Fitness App");
 
 
            String[] muscleGroupChest = new String[0];
            String[] muscleGroupLegs = new String[0];
            String[] muscleGroupArms = new String[0];
            String[] muscleGroupBack = new String[0];
            String[] muscleGroupShoulders = new String[0];
            String[] muscleGroupAbs = new String[0];
 
            Equipment ellipse = new Equipment("Leg press", "Weight training", 60, 5,  muscleGroupBack);
                Equipment legpress = new Equipment("Ellipse", "Cardio", 500, 45, muscleGroupLegs);
 
                muscleGroupChest = new String[] {MuscleGroup.LOWERCHEST, MuscleGroup.MIDDLECHEST, MuscleGroup.UPPERCHEST};
                muscleGroupLegs = new String[]{MuscleGroup.QUADS, MuscleGroup.HAMSTRINGS, MuscleGroup.CALVES, MuscleGroup.HIPS};
                muscleGroupArms = new String[] {MuscleGroup.BICEPS, MuscleGroup.TRICEPS, MuscleGroup.FOREARMS};
                muscleGroupBack = new String[] {MuscleGroup.LOWERBACK, MuscleGroup.MIDDLEBACK, MuscleGroup.TRAPS};
                muscleGroupShoulders = new String[] {MuscleGroup.DELTS};
                muscleGroupAbs = new String[]{MuscleGroup.LOWERABS, MuscleGroup.UPPERABS};
 
                Training t1 = new Training(50, "13.04.2018", ellipse);
 
                Training t2 = new Training(5,"18.04.2018", legpress);
 
 
 
 
            System.out.println("First equipment : " + ellipse.getEquipname() +
                    " Equipment type: " + ellipse.getEquiptype() +
                    " Max training duration: " + ellipse.getMaxTrainingsDuration() +
                    " Ccal per hour: " + ellipse.getCcalprohour());
            System.out.println(" Trained muscle group: " + Arrays.toString( muscleGroupLegs) + " , "
                    + Arrays.toString(muscleGroupBack) + " , " + Arrays.toString( muscleGroupChest));
 
            System.out.println("Second equipment : " + legpress.getEquipname() +
                    " Equipment type:: "   + legpress.getEquiptype() +
                    " Max training duration:  " + legpress.getMaxTrainingsDuration() +
                    " Ccal per hour: " + legpress.getCcalprohour());
            System.out.println(" Trained muscle group: " + Arrays.toString( muscleGroupLegs));
 
        }
    }
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
public class Equipment {
        private String equipname;
        private String equiptype;
        private int maxTrainingsDuration;
        private int ccalprohour;
 
        private String [] MuscleGroup;
 
 
        public Equipment(String equipname, String equiptype, int maxTrainingsDuration, int ccalprohour, String[] MuscleGroup) {
            this.equipname = equipname;
            this.equiptype = equiptype;
            this.ccalprohour = ccalprohour;
            this.maxTrainingsDuration = maxTrainingsDuration;
            this.ccalprohour = ccalprohour;
            this.MuscleGroup = MuscleGroup;
        }
 
        public void setEquipname(String equipname) {
            this.equipname = equipname;
        }
 
        public void setEquiptype(String equiptype) {
            this.equiptype = equiptype;
        }
 
        public void setCcalprohour(int ccalprohour) {
            this.ccalprohour = ccalprohour;
        }
 
        public void setMaxTrainingsDuration(int setMaxTrainingsDuration) {
            this.maxTrainingsDuration = setMaxTrainingsDuration;
        }
 
        public void setMuskelgruppe(String[] muskelgruppe, String[] muskelgruppeLegs) {
            this.MuscleGroup = MuscleGroup;
        }
 
        public String getEquipname() {
            return equipname;
        }
 
        public String getEquiptype() {
            return equiptype;
        }
 
        public int getMaxTrainingsDuration() {
            return maxTrainingsDuration;
        }
 
        public int getCcalprohour() {
            return ccalprohour;
        }
 
        public String[] getMuscleGroup() {
            return MuscleGroup;
        }
 
        public int burnedCcalPerHour (int minutes){
 
        }
 
        public int burnedCcalPerHour (int minutes, int hours){
        }
 
         boolean supports (String muscle) {
      }
 
        boolean supports (MuscleGroup muscleGroup){
 
       }
 
       boolean electricityUse (){
 
       }
    }
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
public class Training {
    private int trainingduration;
    private  String date;
    private  Equipment equipment;
 
    public Training(Equipment equipment, int trainingduration, String date) {
            this.equipment = equipment;
            this.trainingduration = trainingduration;
            this.date = date;
        }
 
    public Training(int trainingduration,String date, Equipment equipment){
            setDate(date);
            setTrainingduration(trainingduration);
            setEquipment(equipment);
        }
 
        boolean goalAchieved (int goalCcal) {
        }
 
        int requiredTrainingTime (int goalCcal) {
         }
 
         void train() {
 
         }
 
         void train (int minutes) {
 
         }
 
     public String getDate() {
            return date;
        }
 
     public int getTrainingduration(){return  trainingduration;}
 
     public Equipment getEquipment() {
            return equipment;
        }
 
     public void setDate(String date) {
            this.date = date;
        }
 
     public void setEquipment(Equipment equipment) {
            this.equipment = equipment;
        }
 
     public void setTrainingduration(int trainingduration) {
            this.trainingduration = trainingduration;
        }
 
        public void traininglog () {
            System.out.println( "This workout lasts " + this.trainingduration + " minutes. Date and  start time : " + this.date + " Equipment used: " + this.equipment);
        }
 
    }
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
public class MuscleGroup {
 
    String musle;
 
    public final static String LOWERCHEST = "Lower chest";
    public final static String MIDDLECHEST = "Middle chest";
    public final static String UPPERCHEST = "Upper chest";
    public final static String QUADS = "Quadriceps";
    public final static String HAMSTRINGS = "Harmstrings";
    public final static String HIPS = "Hips";
    public final static String CALVES = "Calves";
    public final static String BICEPS = "Biceps";
    public final static String TRICEPS = "Triceps";
    public final static String FOREARMS = "Forearms";
    public final static String LOWERBACK = "Lower back";
    public final static String MIDDLEBACK = "Middle back";
    public final static String TRAPS = "Traps";
    public final static String DELTS = "Delts";
    public final static String LOWERABS = "Lower abs";
    public final static String UPPERABS = "Upper abs";
 
    boolean contains (String musle){
 
      }
 
}
В чем именно я запутался: во-первых, коряво реализован список. Я не совсем догоняю, как переделать, чтобы по muscle можно было определять в списке, реализовано все как просто группы мышц и еще и в App.
2. Запутался с калориями и вообще методами, как это связать правильно
3. Пока еще у меня есть свободные get set, на будущее, но чую что-то и лишнее.

Буду за советы и поправки кода весьма благодарен. Поначалу все было понятно, пока не дошел до списков.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
03.05.2018, 18:37
Ответы с готовыми решениями:

Списки, конструкторы, деструкторы
Извините, что я тут расфлудился темами... Это последняя в этом месяце, честно. Суть проблемы в том, что я вот работал с QList из Qt и...

Webpack собирает проект, а приложение говорит что мои конструкторы не конструкторы
Помогите пожалуйста, в едином файле (не билде) всё работает хорошо, как только начинаю отделять классы и создавать билд, сразу ошибка в...

Определите класс матриц. Напишите перегруженные конструкторы для создания одномерной и двумерной матриц. В конструкторы передаются размерности матриц
Доброго времени суток всем) Извините если не в том разделе) Не могу понять как решить данную задачу "(Определите класс матриц....

28
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
03.05.2018, 19:04
Цитата Сообщение от RednexRampage Посмотреть сообщение
можно было определять в списке, реализовано все как просто группы мышц и еще и в App.
щито?
0
0 / 0 / 0
Регистрация: 10.01.2018
Сообщений: 105
03.05.2018, 19:16  [ТС]
Блин, фигню ляпнул, ну в целом понятно по коду и описанию нужных функций?)
0
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
03.05.2018, 19:29
нет
0
 Аватар для Aviz__
2753 / 2060 / 509
Регистрация: 17.02.2014
Сообщений: 9,487
03.05.2018, 19:33
RednexRampage, думаю, если ты напишешь, словами, всю задачу и ктонить захочет ее реализовать, то ты только выиграешь.
0
0 / 0 / 0
Регистрация: 10.01.2018
Сообщений: 105
03.05.2018, 19:33  [ТС]
Окей) В общем, я не совсем понимаю, как прикрутить методы вычисления по калориям и вот тем указанным методам и у меня строковые массивы для данных по группам мышц, я не совсем понял, как он должен искать конкретно отдельно muscle, как это лучше реализовать.
0
 Аватар для Aviz__
2753 / 2060 / 509
Регистрация: 17.02.2014
Сообщений: 9,487
03.05.2018, 19:35
RednexRampage, нихрена не понятно! задача, какая?
0
0 / 0 / 0
Регистрация: 10.01.2018
Сообщений: 105
03.05.2018, 19:35  [ТС]
Я понял)Только мне нужна не реализация, а понять самому как все сделать это лишь в виде упражнения, а не конкретного приложения.
0
 Аватар для Aviz__
2753 / 2060 / 509
Регистрация: 17.02.2014
Сообщений: 9,487
03.05.2018, 19:40
ну, это уж, как люди захотят. тут гарантий нет
0
0 / 0 / 0
Регистрация: 10.01.2018
Сообщений: 105
03.05.2018, 19:46  [ТС]
Смысл в том, что постепенно пишется типа App для фитнеса с пока с теми классами, что я указал. И те классы должны содержать перечисленные выше методы.
Грубо говоря в Equip`e содержится "описание" тренажера и должно высчитываться, сколько калорий потрачено за минуты из рассчета по среднему расходу калорий у определенного тренажера, и содержится проверка, тренирует ли данный тренажер конкретную мышцу или группу мышц, а так же нужно ли ему для работы электричество.

В Training - сама тренировка, с датой, временем, и проверкой, достигнута ли цель по калориям и сколько времени нужно для достижения этой цели (методы я тоже эти указал)
А так же нужен метод, который добавляет +1 или +5 мин к длительности тренировки train()

В MuscleGroup содержится информация о группах мышц грудь, ноги и т.п. притом метод contains должен проверять, содержит ли конкретная группа определенный мускул, например, содержится ли "Трицепс" в какой-либо из групп.

В App "создаются" два тренажера с описанием (я и создал leg press и Ellipse), должны вызываться все методы из Training, MuscleGroup и Equipment и создается новая тренировка, которая вызывается while с методом train(5) пока не будет достигнута цель в 800 ккал.
0
 Аватар для Aviz__
2753 / 2060 / 509
Регистрация: 17.02.2014
Сообщений: 9,487
03.05.2018, 19:53
RednexRampage, на вскидку, ты рано взялся за кодинг. нужно продумать объектную модель, имхо.
1
0 / 0 / 0
Регистрация: 10.01.2018
Сообщений: 105
03.05.2018, 19:57  [ТС]
Согласен и уже этим занимаюсь, единственное что, вот как правда этот список мышц реализовать по форме и чтобы еще искался отдельный мускул в строковых массивах? Вот тут я совсем запутался. Пробовал разные реализации, не могу понять как это сделать.
0
 Аватар для Aviz__
2753 / 2060 / 509
Регистрация: 17.02.2014
Сообщений: 9,487
03.05.2018, 20:00
например, мне, пока, не совсем понятно, как будут объекты "тренажер" и "мышцы" связаны, какой тип связи.
0
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
03.05.2018, 20:04
enum сделай например
0
0 / 0 / 0
Регистрация: 10.01.2018
Сообщений: 105
03.05.2018, 20:04  [ТС]
Вот тут в описании:
Класс Equipment содержит
а) название тренажера
б) тип тренажера (кардио или свободный вес)
в) тренируемая группа мышц ->MuscleGroup
г) Максимальное рекомендуемое время тренировки
д) Сжигаемые калории в час (в среднем)

И в коде this.MuscleGroup = MuscleGroup;

Если я это таки правильно сделал, в конструкторе. Смысл в привязке групп списка тренируемых групп мышц к тренажеру.
0
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
03.05.2018, 20:04
с мышцами
1
 Аватар для Aviz__
2753 / 2060 / 509
Регистрация: 17.02.2014
Сообщений: 9,487
03.05.2018, 20:20
Цитата Сообщение от RednexRampage Посмотреть сообщение
Класс Equipment содержит
не, тут, как мне думается все сложнее...
1
0 / 0 / 0
Регистрация: 10.01.2018
Сообщений: 105
03.05.2018, 20:46  [ТС]
Хм, есть примерные идеи, или примеры, например? Я вот конкретно со списком и путаюсь, чую, что где-то что-то упускаю. С одной стороны понятно, как должно работать, но не могу понять как привязать.
0
 Аватар для Aviz__
2753 / 2060 / 509
Регистрация: 17.02.2014
Сообщений: 9,487
04.05.2018, 11:34
в качестве примера, как все не просто, глянь Задача "Заказы в кафе"

Добавлено через 2 часа 31 минуту
вот, Бро, еще пришла мысль https://www.cyberforum.ru/oop/ в эту ветку форума помести вопрос о правильном ООП проектировании твоей задачи. А по чертежу, если его подскажут, уже писать будет просто)).
1
0 / 0 / 0
Регистрация: 10.01.2018
Сообщений: 105
04.05.2018, 12:11  [ТС]
Громадное спасибо)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
04.05.2018, 12:11
Помогаю со студенческими работами здесь

Списки, списки, списки. не все так просто
Написать функцию, которая принимает 2 списка, содержащие одинаковое число строк, затем изменяет списки сопоставляя строки, занимающие...

Конструкторы базовых классов ("Производный класс не наследует конструкторы базовых классов")
Как следует понимать выражение "Производный класс не наследует конструкторы базовых классов", если в конструкторе производного класса...

Список женихов и невест. Обьеденить списки в списки пар.
Имеется список женихов и невест. каждая запись списка содержит пол, имя, возраст, рост, вес, а также требуванию к партнеру: наименьший и...

Как преобразовать вложенные списки из строки в обычные списки?
Доброе утро, форумчане. Подскажите пожалуйста, мне нужно написать скрипт, который разбирает строку на список вложенный друг в друга....

Дан вектор, элементы которого списки из целых чисел.Заменить на NILL списки с суммой равной 0
Дан вектор, элементы которого списки из целых чисел.Заменить на NILL списки с суммой равной 0.


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru