Модераторы: Partizan, gambit

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите с наследованием 
V
    Опции темы
Grok
Дата 31.3.2009, 11:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 123
Регистрация: 17.12.2007

Репутация: нет
Всего: нет



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

но как говорится, лаба есть лаба )

держи код 
Код

namespace Laba
{
    class Program
    {
        static void Main(string[] args)
        {
            Brigada First = new Brigada("Vasya Pupkin", "1980", "02");
            First.AddRabotnik(new Rabotnik("velera1", "porno star", 6));
            First.AddRabotnik(new Rabotnik("velera2", "pool cleaner", 5));
            First.AddRabotnik(new Rabotnik("velera3", "pool cleaner", 3));
            Brigada Second = new Brigada("Pupok Vasin", "1900", "03");
            Second.AddRabotnik(new Rabotnik("vasya1", "operator", 6));
            Second.AddRabotnik(new Rabotnik("vasya1", "producer", 5));
            Otdel_kadrov ok = new Otdel_kadrov();
            ok.AddBrigada(First);
            ok.AddBrigada(Second);
            Console.WriteLine(ok.CountBrigad());
        }
    }

    public class Rabotnik
    { 
        public string fio;
        public string specialnost;
        public int razryad;

        public Rabotnik(string f, string s, int r)
        {
            fio = f;
            specialnost = s;
            razryad = r;
        }
    }

    public class Gruppa_Rabotnokov
    {
        ArrayList RabotnikList;
        public Gruppa_Rabotnokov()
        {
            RabotnikList = new ArrayList();    
        }
        public void AddRabotnik(Rabotnik r)
        {
            RabotnikList.Add(r);
        }
    }

    public class Brigada : Gruppa_Rabotnokov
    {
        public string fio_brigadira;
        public string god_rojdeniya;
        public string telefon;
        
        public Brigada(string f, string g, string t)
        {
            fio_brigadira = f;
            god_rojdeniya = g;
            telefon = t;
        }
    }
    public class Gruppa_Brigad
    {
        
        protected ArrayList BrigadaList;
        
        public Gruppa_Brigad()
        {
            BrigadaList = new ArrayList();
        }

        public void AddBrigada(Brigada b)
        {
            BrigadaList.Add(b);
        }
    }

    public class Otdel_kadrov : Gruppa_Brigad
    {
        public int CountBrigad()
        {
            return BrigadaList.Count;
        }
    }
}



только добавишь using System.Collections; для работы с ArrayList

Это сообщение отредактировал(а) Grok - 31.3.2009, 11:46
PM MAIL ICQ   Вверх
kuller
Дата 31.3.2009, 12:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 310
Регистрация: 15.11.2007

Репутация: нет
Всего: нет



Grok, ОГРОМНОЕ СПАСИБО, буду сейчас разбираться!!!!

Добавлено через 13 минут и 51 секунду
А кто может сказать, почему я не могу ОБРАТИТЬСЯ к МЕЛОДУ    public void Print_Rabotniki(), в моем вот ВАРИАНТЕ:

Код

    public class Rabotnik
    {
        public string fio;
        public string specialnost;
        public int razryad;
        public Rabotnik(string x1, string x2, int x3)
        {
            fio = x1;
            specialnost = x2;
            razryad = x3;
        }
    }
    public class Gruppa_Rabotnokov
    {
        Rabotnik[] A = new Rabotnik[2];
        public Gruppa_Rabotnokov(string x1, string x2, int x3)
        {
            A[0] = new Rabotnik(x1, x2, x3);
            A[1] = new Rabotnik(x1, x2, x3);
        }
        public void Vivod_Rabotnikov()
        {
            for (int i = 0; i < A.Length; i++)
            {
                Console.WriteLine("ФИО {0} работника: {1}",i+1,A[i].fio);
                Console.WriteLine("Специальность {0} работника: {1}", i + 1, A[i].specialnost);
                Console.WriteLine("Разряд {0} рабочего: {1}\n", i + 1, A[i].razryad);
            }
            Console.WriteLine("-------------------------------------");
        }
    }

    public class Brigada : Gruppa_Rabotnokov
    {
        public string fio_brigadira;
        public string god_rojdeniya;
        public string telefon;
        public Brigada(string a1, string a2, string a3, string x1,string x2,int x3)
            : base(x1,x2,x3)
        {
            fio_brigadira = a1;
            god_rojdeniya=a2;
            telefon=a3;
        }
        public void Print_Rabotniki()
        {
            Vivod_Rabotnikov();
        }
    }
    public class Gruppa_Brigad
    {
        Brigada[] B = new Brigada[2];
        public Gruppa_Brigad(string a1, string a2, string a3, string b1, string b2, string b3, string e1, string e2, int e3, string f1, string f2, int f3)
        {
            B[0] = new Brigada(a1, a2, a3,e1,e2,e3);
            B[1] = new Brigada(b1, b2, b3,f1,f2,f3);
        }
        public void Print_Brigada()
        {
            for (int i=0;i<B.Length;i++)
            {
                Console.WriteLine("Бригадир {0} бригады: {1}", i + 1, B[i].fio_brigadira);
                Console.WriteLine("Год рождения бригалира {0} бригады: {1}", i + 1, B[i].god_rojdeniya);
                Console.WriteLine("Телефон бригадира {0} бригады: {1}\n", i + 1, B[i].telefon);
            }
        }
    }

    public class Otdel_kadrov:Gruppa_Brigad
    {
        public int kol_brig;
        public Otdel_kadrov(string a1, string a2, string a3, string b1, string b2, string b3, string e1, string e2, int e3, string f1, string f2, int f3, int d)
            : base(a1, a2, a3, b1, b2, b3, e1, e2, e3, f1, f2, f3)
        {
            kol_brig = d;
        }
        public void Vivod()
        {
            Print_Brigada();
        }
    }

PM MAIL   Вверх
azesmcar
Дата 31.3.2009, 12:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 2
Всего: 211



Цитата

А кто может сказать, почему я не могу ОБРАТИТЬСЯ к МЕЛОДУ    public void Print_Rabotniki(), в моем вот ВАРИАНТЕ:


а в чем собственно проблема? опиши поподробнее
PM   Вверх
-Mikle-
Дата 31.3.2009, 13:03 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Невидимка Vingrad'а
***


Профиль
Группа: Экс. модератор
Сообщений: 1672
Регистрация: 22.6.2003
Где: Казахстан, Астана

Репутация: 4
Всего: 59



Ну вот мое представление:

Ну начнем с города, у каждого города есть, название и несколько компаний
Код

public class City
{
    string Name;
    Compnay[] VseCompanii;
}

Каждая компания имеет название и содержит бухгалтерию, отдел кадров, бригады и работников (по хорошему, тут надо сделать список отделов и методы, которые возвращают различные типы отделов, но это пропутим, упростим)
Код

public class Company
{
    string Name;
    OtdelKadrov otdelkadrov;
    Buhgalteriya buhgalteriya;
    Brigada[] vseBrigady;
    Rabotnik[] VseRabotniki;
}

Базовый класс отдел. То есть абсолютно любой отдел имеет название, ссылку на свою компанию, к которой он относится (и в жизни так тоже: отдел работает непосредственно со своей компанией и знает о ней все), у любого отдела есть свой начальник и другие работники.
Код

public class Otdel
{
    Company owner;
    string Name;
    Rabotnik Nachalnik;
    Rabotnik[] rabotniki;
    void PomenyatNachalnika(Rabotnik novyiNachalnik) { }
}

Отдел кадров, бухгалтерия и бригада не имеют отличительных особенностей от отдела, разве что только задачи (методы) у них у всех разные.
Код

public class OtdelKadrov : Otdel
{
    Rabotnik OformitZayavlenie(Chelovek chel) { }
    void PrinyatNaRabotu(Rabotnik rab, Otdel otdel) { }
}

public class Buhgalteriya : Otdel
{
    void VydatZarplatu(Rabotnik rab) { }
}

public class Brigada : Otdel
{
    // не буду конкретезировать класс задание
    void NaznachitZadanie(object zadanie) { }
}

Каждый человек (любой) имеет личные данные, ФИО, День рождения, Родственные связи и т.д.
Код

public class Chelovek
{
    string FIO;
    DateTime BirthDate;
    Chelovek[] Semya;
}

В то же время работник это тоже человек, но с дополнительной информацией о себе: Компания в которой н работает, его рабочий КПД, Должность и т.д.
Код

public class Rabotnik : Chelovek
{
    Company owner;
    string Doljnost;
    float KPD;
}

От класса Chelovek можно сделать наследника Uchenik ну и т.д.

Еще можно вместо базовых класов, сделать интерфейсы. Они позволят еще больше абстрагироваться от конкретики (например задачи отдела кадров, в некоторых предприятиях выполняет бухгалтерия или администрация)

Добавлено через 6 минут и 1 секунду
Здесь есть и наследование и отношения... Вместо массивов нужно использоватьArrayList(как сказали выше) или generic тип List<[ClassName]>.

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


--------------------
Если тебе плюют в спину, значит ты впереди...
PM   Вверх
kuller
Дата 31.3.2009, 20:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 310
Регистрация: 15.11.2007

Репутация: нет
Всего: нет



-Mikle-, спасибо!!!
Учтем и ВАШЕ мнение!!!!
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Partizan
PashaPash

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, Partizan, PashaPash.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | .NET для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0776 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.