Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > .NET для новичков > Помогите с наследованием |
Автор: kuller 31.3.2009, 09:06 | ||
Здравствуйте!!! Вот мой код:
Есть вот класс Rabotnik и его наследник класс Brigada, как мне сделать, чтобы в классе Brigada наследовался типо МАССИВ объектов класса Rabotnik, ну т.е. есть РАБОЧИЙ ОДИН к примеру, и одна БРИГАДА, в которой 10 рабочих!!!! Помоги пожалуйста это реализовать! Заранее спасибо!!! |
Автор: azesmcar 31.3.2009, 09:13 | ||
никак ![]() запихни массив работников в один класс и наследуй от него, или делай композицию (т.е. запихни массив рабочих в свой класс) |
Автор: kuller 31.3.2009, 09:26 | ||
azesmcar, т.е. ИЗНАЧАЛЬНО в классе Rabotnik создать массив, а потом в классе Brigada наследовать класс Rabotnik, тем самым получится что наследую сразу МАССИВ объектов класса Rabotnik???? |
Автор: azesmcar 31.3.2009, 09:28 | ||
в принципе получится..но это некрасиво. Зачем должна бригада наследовать от работника? Создай класс Работник Создай класс Бригада - содержащий массив работников вот и все |
Автор: kuller 31.3.2009, 09:34 | ||
azesmcar, если я сделаю так, то это уже будет ОТНОШЕНИЕ МЕЖДУ КЛАССАМИ- ВЛОЖЕННОСТИ, я так делал ПЕРВУЮ часть этой лабораторной работы, а вот ВТОРАЯ часть предполагает, чтобы мы сделали ТОЖЕ САМОЕ ЗАДАНИЕ , но ОТНОШЕНИЕ МЕЖДУ КЛАССАМИ- НАСЛЕДОВАНИЕ!!! Даже не знаю теперь как быть((( |
Автор: azesmcar 31.3.2009, 09:38 | ||
надуманные какие-то задания. ну да ладно, дали - надо решать сделай класс Работник сделай класс ГруппаРаботников, храни в нем массив работников наследуй от класса ГруппаРаботников класс Бригада, добавь соответствующую функциональность так пойдет? |
Автор: kuller 31.3.2009, 09:45 | ||||
думаю что пойдет, но вот в чем дело то еще:
когда я вызываю конструктор к примеру класса Brigada, то там вот так вот : base(a, b, c) нужно ТИПО передать параметры классу РОДИТЕЛЮ, ну так вот если класс родитель будет СОДЕРЖАТЬ массив полей, то как тогда будет выглядить вот эта часть : base(a, b, c)???? |
Автор: azesmcar 31.3.2009, 09:51 | ||||
есть другие способы, но не надо так делать. Примерно что-то вроде этого
|
Автор: kuller 31.3.2009, 09:56 | ||
Капец, вот тупое задание!!!! Блин ладно буду сейчас что то химичить(((( azesmcar, спасибо за идеи! |
Автор: kuller 31.3.2009, 10:22 | ||
А если я вот решил сделать вот так:
у меня тут будеь МАСССИВ из 2-х бригад, в каждой из которых по 2 рабочих!!! Как мне задать теперь конструктор класса public class Otdel_kadrov: Gruppa_Brigad??? |
Автор: azesmcar 31.3.2009, 10:28 |
kuller с классами как в жизни..при проектировании должа быть логика. Разве Отдел кадров это расширенный вариант Бригады? Зачем от него наследовать? Отдел кадров это класс, который занимается принятием на работу - Работников и Конструированием бригады (т.е. распределяет работников по бригадам..я вообще не вижу тут классов которые нужно наследовать). А насчет конструктора - сделай функцию которая будет добавлять, а параметры конструктора оставь пустыми |
Автор: kuller 31.3.2009, 10:32 |
azesmcar, Мне преподаватель сказа сделать вот так: Типо есть ПРЕДПРИЯТИЕ, в нем ЕСТЬ ОТДЕЛ КАДРОВ, хранящий количество БРИГАД, а БРИГАДЫ в свою очередь имеют НАЗВАНИЕ и ФИО_БРИГАДИРА, и также в КАЖДОЙ бригаде есть КАКОЕ-ЛИБО количество работников, которые в свою очередь имеют параметры ФИО, Должность, ну и там год рождения к примеру. Таким образом, мне нужно сделать 3 класса, образующие вот такое вот!!! |
Автор: azesmcar 31.3.2009, 10:38 | ||
не вижу здесь чего-то, что бы указывало на использование наследования..он сказал что надо обязательно наследованием? |
Автор: Partizan 31.3.2009, 10:41 |
kuller, с классом Работник всё должно быть ясно - он элементарен...класс бригада не должен наследовать класс представляющий работника...он должен содержать в себе коллекцию работников |
Автор: kuller 31.3.2009, 10:41 | ||||
Да он сказал написать 2 программки: 1 - отношение классов ВЛОЖЕННОСТИ 2 - отношение классов НАСЛЕДОВАНИЕ блин вот лажа, ничего не выходит(( Пытался вот так сделать, но он ругается (С#):
|
Автор: Grok 31.3.2009, 11:45 | ||
преподавание все тупее и тупее, разные отношения нужно использовать там где они лучше подходят... но как говорится, лаба есть лаба ) держи код
только добавишь using System.Collections; для работы с ArrayList |
Автор: kuller 31.3.2009, 12:36 | ||
Grok, ОГРОМНОЕ СПАСИБО, буду сейчас разбираться!!!! Добавлено через 13 минут и 51 секунду А кто может сказать, почему я не могу ОБРАТИТЬСЯ к МЕЛОДУ public void Print_Rabotniki(), в моем вот ВАРИАНТЕ:
|
Автор: azesmcar 31.3.2009, 12:58 | ||
а в чем собственно проблема? опиши поподробнее |
Автор: -Mikle- 31.3.2009, 13:03 | ||||||||||||
Ну вот мое представление: Ну начнем с города, у каждого города есть, название и несколько компаний
Каждая компания имеет название и содержит бухгалтерию, отдел кадров, бригады и работников (по хорошему, тут надо сделать список отделов и методы, которые возвращают различные типы отделов, но это пропутим, упростим)
Базовый класс отдел. То есть абсолютно любой отдел имеет название, ссылку на свою компанию, к которой он относится (и в жизни так тоже: отдел работает непосредственно со своей компанией и знает о ней все), у любого отдела есть свой начальник и другие работники.
Отдел кадров, бухгалтерия и бригада не имеют отличительных особенностей от отдела, разве что только задачи (методы) у них у всех разные.
Каждый человек (любой) имеет личные данные, ФИО, День рождения, Родственные связи и т.д.
В то же время работник это тоже человек, но с дополнительной информацией о себе: Компания в которой н работает, его рабочий КПД, Должность и т.д.
От класса Chelovek можно сделать наследника Uchenik ну и т.д. Еще можно вместо базовых класов, сделать интерфейсы. Они позволят еще больше абстрагироваться от конкретики (например задачи отдела кадров, в некоторых предприятиях выполняет бухгалтерия или администрация) Добавлено через 6 минут и 1 секунду Здесь есть и наследование и отношения... Вместо массивов нужно использоватьArrayList(как сказали выше) или generic тип List<[ClassName]>. я бы мог за несколько часов описать всю структуру и выдать готовый код тебе, но не уверен что это хороший вариант... думаю это не на пользу будет... |
Автор: kuller 31.3.2009, 20:58 |
-Mikle-, спасибо!!! Учтем и ВАШЕ мнение!!!! |