Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.77/13: Рейтинг темы: голосов - 13, средняя оценка - 4.77
 Аватар для pesik
802 / 52 / 2
Регистрация: 01.12.2012
Сообщений: 227

Массив классов в классе

07.11.2015, 15:20. Показов 3265. Ответов 42
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть класс с 4-мя переменными
Java
1
2
3
4
5
public class  Employee {    
    private String position ="Инженер";
    private String name = "Убор";
    private String surname ="щик";
    private int salary = 30000;
Есть класс Departament и он явным образом хранит массив работников. Вроде это записывается вот так
Java
1
2
3
4
public class Departament {
 
    private String title = "Бухгалтерия";
    Employee all [];
Нужно создать конструктор который принимает имя подразделения (ну это ясно) и при этом количество работников будет равно нулю. Нужно ли создавать переменную которая будет отвечать за кол-во работников? Или можно все описать в свойствах конструктора? Если второй вариант то как?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
07.11.2015, 15:20
Ответы с готовыми решениями:

массив классов в классе.не понимаю почему ошибка
Здравствуйте!написал программу,но почему то возникает ошибка при вызове элемента класса в массиве классов.Может я неправильно работаю с...

Создать массив в базовом абстрактном классе, и его передать функциям производных классов
есть полностью абстрактный (виртуальный) класс. там все функции виртуальные и равны 0. Назовем его class A есть 3 производных ОТ НЕГО...

Известны оценки по физике каждого ученика двух классов.Определить средниюю оценку в каждом классе.Количество учащихся в каждом классе одинаковое!
Известны оценки по физике каждого ученика двух классов.Определить средниюю оценку в каждом классе.Количество учащихся в каждом классе...

42
 Аватар для pesik
802 / 52 / 2
Регистрация: 01.12.2012
Сообщений: 227
08.11.2015, 21:57  [ТС]
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Velesthau Посмотреть сообщение
Я не в курсе, что за переменная employee и как она связана с i.
employee - это класс самого работника. в нем есть salary - это жалование. и dep использует массив employee, который называется all.
Цитата Сообщение от Velesthau Посмотреть сообщение
Еще я бы dep.getAll().length сохранил в переменной до цикла для эффективности.
спасибо за совет
Цитата Сообщение от Velesthau Посмотреть сообщение
И с нуля бы начал.
почему?
0
529 / 432 / 159
Регистрация: 25.11.2014
Сообщений: 1,662
08.11.2015, 22:25
Цитата Сообщение от pesik Посмотреть сообщение
employee - это класс самого работника. в нем есть salary - это жалование
У каждого работника свое жалование, так что employee должен быть как минимум объектом, а не классом. Я в коде не вижу в коде цикла обращения к элементам какого-либо массива.
Цитата Сообщение от pesik Посмотреть сообщение
почему?
Потому что в массиве существует элемент по индексу ноль.
0
 Аватар для pesik
802 / 52 / 2
Регистрация: 01.12.2012
Сообщений: 227
08.11.2015, 22:37  [ТС]
Цитата Сообщение от Velesthau Посмотреть сообщение
Я в коде не вижу в коде цикла обращения к элементам какого-либо массива.
не понимаю как каждый шаг плюсовать жалование работника следующего по списку. Класс работника выглядит так:
Java
1
2
3
4
5
6
public class  Employee { 
    
    private String position ="Инженер";
    private String name = "Убор";
    private String surname ="щик";
    private int salary = 30000;
а вот класс подразделения

Java
1
2
3
4
public class Departament {
 
    private String title = "Бухгалтерия";
    private Employee[] all ;
После чего я создаю по экземпляру каждого в главном методе:
Java
1
2
Employee employee = new Employee();
        Departament dep = new Departament();
И делаю цикл
Java
1
2
3
4
5
int sum = 0;
        int x = employee.getSalary();
        for (int i=0; i<dep.getAll().length; i++){
            sum=sum+x;
        }
0
529 / 432 / 159
Регистрация: 25.11.2014
Сообщений: 1,662
08.11.2015, 22:53
Цитата Сообщение от pesik Посмотреть сообщение
int x = employee.getSalary();
Берешь зарплату какого-то непонятно какого объекта. Твои объекты должны находить в массиве, которые находится в объекте класса Department. Цикл ты по массиву делаешь, только ни к одному элементу массива не обращаешься. Думай!

Добавлено через 5 минут

Не по теме:

Раз возникают такие проблемы, то я бы порекомендовал тебе сначала сделать более простую задачу без всяких классов лишних. Создай просто массив из объектов Employee и посчитай сумму зарплат. Без Department, прям в main.

0
 Аватар для pesik
802 / 52 / 2
Регистрация: 01.12.2012
Сообщений: 227
08.11.2015, 23:04  [ТС]
Цитата Сообщение от Velesthau Посмотреть сообщение
Цикл ты по массиву делаешь, только ни к одному элементу массива не обращаешься.
так как мне обратиться именно к жалованию работников в подразделении dep?
0
529 / 432 / 159
Регистрация: 25.11.2014
Сообщений: 1,662
08.11.2015, 23:06
Цитата Сообщение от pesik Посмотреть сообщение
так как мне обратиться именно к жалованию работников в подразделении dep?
Обращаешься к элементу массива по индексу. Этот элемент - объект Employee. У него берешь жалование. И так у каждого элемента массива.
Но так как от тебя скрыт массив работников, тебе либо добавлять метод для класса департамента для получения зарплаты по индексу, либо добавлять в класс департамента метод для подсчета суммы, из него доступ будет.
0
 Аватар для pesik
802 / 52 / 2
Регистрация: 01.12.2012
Сообщений: 227
08.11.2015, 23:19  [ТС]
Цитата Сообщение от Velesthau Посмотреть сообщение
тебе либо добавлять метод для класса департамента для получения зарплаты по индексу, либо добавлять в класс департамента метод для подсчета суммы, из него доступ будет.
и что целесообразнее?
0
529 / 432 / 159
Регистрация: 25.11.2014
Сообщений: 1,662
08.11.2015, 23:26
Цитата Сообщение от pesik Посмотреть сообщение
и что целесообразнее?
Для кого как. Можно сделать итератор по сотрудникам, но это пока не нужно. Метод для взятия ЗП или сразу всей суммы - целесообразностью не отличаются, пиши, как тебе удобнее.
0
 Аватар для pesik
802 / 52 / 2
Регистрация: 01.12.2012
Сообщений: 227
08.11.2015, 23:29  [ТС]
Цитата Сообщение от Velesthau Посмотреть сообщение
добавлять в класс департамента метод для подсчета суммы, из него доступ будет.
просто нужно сделать рабочую модель. классы с информацией и класс с методами.
0
529 / 432 / 159
Регистрация: 25.11.2014
Сообщений: 1,662
08.11.2015, 23:31
Цитата Сообщение от pesik Посмотреть сообщение
просто нужно сделать рабочую модель. классы с информацией и класс с методами.
Что это сейчас должно изменить? В твоем классе с информацией все равно должны быть методы добавления сотрудника в массив в департаменте, например.
0
 Аватар для pesik
802 / 52 / 2
Регистрация: 01.12.2012
Сообщений: 227
09.11.2015, 16:41  [ТС]
Цитата Сообщение от Velesthau Посмотреть сообщение
должны быть методы добавления сотрудника в массив в департаменте, например.
а как организовать их связь? я, например, ваще думал что раз я обозначил массив сотрудников в департаменте, то жалование можно будет использовать создавая новый экземпляр департамента априори.
0
529 / 432 / 159
Регистрация: 25.11.2014
Сообщений: 1,662
09.11.2015, 16:49
Цитата Сообщение от pesik Посмотреть сообщение
а как организовать их связь?
Связь чего с чем? Напиши понятно.
Цитата Сообщение от pesik Посмотреть сообщение
то жалование можно будет использовать
А чье жалование-то, если у тебя массив? Жалование первого сотрудника, или десятого, или тридцатого? И что значит "использовать жалование"? Его можно использовать, никто не запрещает. Но если у тебя массив private, то доступ к нему возможен только для методов объекта Department (исключая внутренние классы).
0
 Аватар для pesik
802 / 52 / 2
Регистрация: 01.12.2012
Сообщений: 227
09.11.2015, 17:31  [ТС]
Цитата Сообщение от Velesthau Посмотреть сообщение
Связь чего с чем? Напиши понятно.
ну, например, если цикл проверяет первую позицию, то он берет именно жалование этой позиции, второго работника - жалование второго работника
0
529 / 432 / 159
Регистрация: 25.11.2014
Сообщений: 1,662
09.11.2015, 17:38
Цитата Сообщение от pesik Посмотреть сообщение
ну, например, если цикл проверяет первую позицию, то он берет именно жалование этой позиции, второго работника - жалование второго работника
Добавь в департамент метод, который позволяет брать по позиции жалование. Либо по позиции сразу работника.
0
 Аватар для pesik
802 / 52 / 2
Регистрация: 01.12.2012
Сообщений: 227
09.11.2015, 17:47  [ТС]
Цитата Сообщение от Velesthau Посмотреть сообщение
Добавь в департамент метод, который позволяет брать по позиции жалование. Либо по позиции сразу работника.
Тоже цикл? Лучше если сразу работника. Потом еще метод увольнения по имени и фамилии надо будет. Можно будет использовать тогда этот же метод?
0
529 / 432 / 159
Регистрация: 25.11.2014
Сообщений: 1,662
09.11.2015, 17:50
Цитата Сообщение от pesik Посмотреть сообщение
Тоже цикл?
Что тоже цикл? Я поражаюсь твоей особенности высказывать свои мысли. Фиг поймешь. Я написал - добавить метод в класс департамента. Что "тоже цикл"? Где здесь тоже и где здесь цикл? Я тебя не понимаю.
Цитата Сообщение от pesik Посмотреть сообщение
Потом еще метод увольнения по имени и фамилии надо будет.
Это метод департамента по логике должен быть, в котором он сам обойдет массив и сделает все, что надо.
Цитата Сообщение от pesik Посмотреть сообщение
Можно будет использовать тогда этот же метод?
Нет. У тебя же нет доступа к массиву извне объекта департамента.
0
 Аватар для pesik
802 / 52 / 2
Регистрация: 01.12.2012
Сообщений: 227
09.11.2015, 18:10  [ТС]
Цитата Сообщение от Velesthau Посмотреть сообщение
Что тоже цикл?
ну мне показалось, что это будет что-то типа того, что я уже писал, а именно:
Цитата Сообщение от pesik Посмотреть сообщение
И делаю цикл
Java
1
2
3
4
int sum = 0;
int x = employee.getSalary();
for (int i=0; i<dep.getAll().length; i++){
sum=sum+x;
0
529 / 432 / 159
Регистрация: 25.11.2014
Сообщений: 1,662
09.11.2015, 18:15
Цитата Сообщение от pesik Посмотреть сообщение
что это будет что-то типа того
Ох, блин... Что "это"? Метод класса типа того цикл? Я не понимаю то, что ты говоришь. Что "это" типа "того" чего? Добавь в департамент метод, который даст тебе работника, в своем цикле подсчета суммы возьмешь работника и сумму посчитаешь с его окладом.
Цитата Сообщение от pesik Посмотреть сообщение
И делаю цикл
Как то, что ты делаешь цикл, связано с добавлением метода в класс и "тоже цикл"?
0
 Аватар для pesik
802 / 52 / 2
Регистрация: 01.12.2012
Сообщений: 227
09.11.2015, 18:21  [ТС]
Цитата Сообщение от Velesthau Посмотреть сообщение
Ох, блин... Что "это"? Метод класса типа того цикл? Я не понимаю то, что ты говоришь. Что "это" типа "того" чего? Добавь в дператамент метод, который даст тебе работника, в своем цикле подсчета суммы возьмешь работника и сумму посчитаешь с его окладом. Где здесь тоже цикл и это типа того?
xD ладно всё. вам нужно успокоиться. лучше бы вам ваще не браться мне объяснять что-либо, ведь результат всегда один и тот же: у объясняющего бомбит. и когда я написал "и делаю цикл" - это была цитата на меня же в этой теме. ладно я сам подумаю, извините

Добавлено через 1 минуту
Цитата Сообщение от Velesthau Посмотреть сообщение
Как то, что ты делаешь цикл, связано с добавлением метода в класс и "тоже цикл"?
просто не могу понять как этот метод выглядит... опять какой то геттер или сеттер или цикл или че ваще? я ж до этого только скрипты писал для игрового движка.
0
529 / 432 / 159
Регистрация: 25.11.2014
Сообщений: 1,662
09.11.2015, 18:27
Цитата Сообщение от pesik Посмотреть сообщение
как этот метод выглядит...
Это метод, который возвращает по переданному в метод индексу элемент массива. Который является объектом Employee. Это одна строчка.
Цитата Сообщение от pesik Посмотреть сообщение
я ж до этого только скрипты писал для игрового движка.
Ты бы хоть код сначала написал без класса Department, чтобы понять как вообще сумму окладов посчитать. Лишние классы сейчас тебе просто мешают понять, что ты делаешь. Ты не понимаешь, что ты считаешь, какие объекты берешь и т. д..

Добавлено через 2 минуты
Цитата Сообщение от pesik Посмотреть сообщение
вам нужно успокоиться
Тебе нужно почитать книгу по Java. И разобрать в ней тему по работе с массивами. Потом написать свою программу с одним классом Employee и одним массивом.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
09.11.2015, 18:27

В классе инициализировать массив, в классе создать функцию вывода массива на экран
Прошу помоши с выводом данных, которые содержаться в массиве, на экраy: Задача: В классе инициализировать массив, в классе создать...

Vector собственных классов в собственном классе
Создал собственный класс myProject, для использования в MyForm. В классе myProject нужен vector&lt;кооперативов&gt;, но я не знаю как...

Получить список классов в классе в HTML страницы
На странице есть класс (iframe) содержащий классы(подклассы), у которых есть имена В конечном итоге мне нужно получить список имен...

Классы. Объединение в одном классе других классов
class A { private string a; private string b; } class B { A a; public void Rec()

Реализовать иерархию классов Х->Y. В классе Х присутствуют данные х1, х2
Реализовать иерархию классов Х-&gt;Y. В классе Х присутствуют данные х1, х2. В классе Y-данное y. Методами классов представить конструктор,...


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Особенности gif сгенерированных в Си
russiannick 21.10.2026
Рассмотрим генерацию gif файлов, которые в Си имеют свои особенности. Gif представляет собой графический формат популярный в интернете. Посмотрим на палитру. Gif файл сгенерированный в си отличается. . .
FPS контроллер с анимированными Y-Bot и 3D-звуком miniaudio (Box3D, Recast, BehaviorTree.CPP, ozz-animation, ImGui, OpenGL и SDL3)
8Observer8 18.10.2026
Содержание блога | English Version Полное мультиплатформенное руководство по стартовому проекту с FPS-контроллером игрока, анимированными роботами Y-Bot с 4-слойным блендингом, 3D-физикой Box3D,. . .
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
Копировать Windows на новый диск на UEFI
damix 17.10.2026
https:/ / uriesk. wordpress. com/ 2016/ 11/ 01/ move-window-10-to-ssd-on-a-uefi-dualboot-system-with-basic-linux-tools/ TL DR Вставляем диск, а старый подключаем через переходник, грузимся с лайва. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru