Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.53/19: Рейтинг темы: голосов - 19, средняя оценка - 4.53
 Аватар для Lynatik001
48 / 40 / 15
Регистрация: 28.09.2012
Сообщений: 818

Правильно ли я пишу? Работа с интерфейсом и двумя классами с аналогичными методами

29.11.2014, 14:51. Показов 4207. Ответов 68
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Народ подскажите ли правильно я поступаю. У меня в задании по курсовой есть клиенты и обьекты у них есть добавление,удаление,поиск,редактирование и тдп. Я решил сделать интерфейс так как эти методы почти аналогичные
C#
1
2
3
4
5
6
        void add(object obj);
        void delete(object obj);
        void edit(int index, int indexparam, object info);
        object view(object obj);
        object viewall();
        object sort(int indexparam,object obj);
Вот как все в интерфейсе смотрится

а вот как в классе обьект
C#
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
        public void add(object realty)
        {
            realtys.Add((Realty)realty);
        }
 
        public void delete(object index)
        {
            realtys.RemoveAt((int)index-1);
        }
        public void edit(int index, int indexparam, object info)
        {
          int indexrealty = index -1;
          switch (indexparam)
          {
              case 1:
                  realtys[indexrealty].Name = (string)info;
                  break;
              case 2:
                  realtys[indexrealty].Vartist = (int)info;
                  break;
              case 3:
                  realtys[indexrealty].Mrozt = (string)info;
                  break;
 
          }
а вот в классе клиент
C#
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
        public void add(object client)
        {
            clients.Add((Client)client);
        }
        public void delete(object npassport)
        {
           clients.Remove(clients.Find(x => x.Npassport == (int)npassport));
        }
        public void edit(int npassport, int indexparam , object info)
        {
          int indexclient =  clients.FindIndex(x => x.Npassport == (int)npassport);
          switch (indexparam)
          {
              case 1:
                  clients[indexclient].Name = (string)info;
                  break;
              case 2:
                  clients[indexclient].Surname = (string)info;
                  break;
              case 3:
                  clients[indexclient].Npassport = (int)info;
                  break;
              case 4:
                  clients[indexclient].Adres = (string)info;
                  break;
              case 5:
                  clients[indexclient].Telefon = (int)info;
                  break;
              case 6:
                  clients[indexclient].Nombank = (int)info;
                  break;
              case 7:
                  clients[indexclient].Tipneruh = (string)info;
                  break;
              case 8:
                  clients[indexclient].Vcena = (int)info;
                  break;
          }
        }
Вопрос ли не крыво я делаю. Может не стоит все через интерфейс завязывать) Думаю будет страдать понимаемость что в том методе должно хранится)
Елементарные операции хранить в интерфейсе было написано в задании) Я как начал так и все вышло обобщить и кинуть в интерфейс))
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
29.11.2014, 14:51
Ответы с готовыми решениями:

Работа с классами и методами
Доброго времени суток. У меня вот в чем вопрос. Есть 2 класса, Program и MyArray Часть кода класса Programm class Program {...

Работа с классами и их методами.
Есть класс numerals, состоящий из двух дробных чисел. Среди методов - сложение, вычитание, деление и умножение этих двух чисел. Вот...

Работа с методами и классами
Доброго времени суток, почему-то не работает код: (чтобы было понятнее, то вот задание) Создать класс для работы сo строками...

68
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
29.11.2014, 16:06
Студворк — интернет-сервис помощи студентам
Lynatik001, я вот смотрю и не понимаю... Если вам надо извлекать из коллекции объекты по разным свойствам, так реализуйте несколько перегрузок одного метода. Ну или перегруженный индексатор, в конце концов...
0
 Аватар для Lynatik001
48 / 40 / 15
Регистрация: 28.09.2012
Сообщений: 818
29.11.2014, 16:08  [ТС]
Цитата Сообщение от Anderok Посмотреть сообщение
Lynatik001, а, нет ... погоди... ё-моё.. У тебя есть массив object? жесть[2].. Блин, ладно, тогда помолчу.
не нету у меня такого массива ХД

Добавлено через 1 минуту
Цитата Сообщение от insite2012 Посмотреть сообщение
Если вам надо извлекать из коллекции объекты по разным свойствам, так реализуйте несколько перегрузок одного метода. Ну или перегруженный индексатор, в конце концов...
Да ето понятно, зачем если можно написать 1 метод))
Допустим тот же метод edit мне бы пришлось перегружать 8 раз - ну может меньше, ну столько разных полей надо отредактировать, и у них не один же тип)). А так я лишь 1 раз его описал)
0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
29.11.2014, 16:11
Цитата Сообщение от Lynatik001 Посмотреть сообщение
Да ето понятно, зачем если можно написать 1 метод))
Можно. А можно еще подумать о безопасности типов, постоянной необходимости в приведении типов и проблемах с упаковкой-распаковкой (при использовании ValueType-типов).
1
 Аватар для Lynatik001
48 / 40 / 15
Регистрация: 28.09.2012
Сообщений: 818
29.11.2014, 16:13  [ТС]
Цитата Сообщение от insite2012 Посмотреть сообщение
Можно. А можно еще подумать о безопасности типов, постоянной необходимости в приведении типов и проблемах с упаковкой-распаковкой (при использовании ValueType-типов).
Хотите сказать мне 8 перегрузок сделать заместь 1 метода?
темболие есть параметры и одного того же типа только с другого поля) перегрузки или общего типа надо в общий метод кидать или типа того. Выйдет неоч
0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
29.11.2014, 16:18
Цитата Сообщение от Lynatik001 Посмотреть сообщение
Хотите сказать мне 8 перегрузок сделать заместь 1 метода?
Я хочу сказать, что для начала неплохо бы точно поставить задачу. Итак, что мы имеем:
Необходим класс-коллекция, в которой необходимо что-то хранить (добавлять, удалять). Все верно?
Следующий вопрос, который сразу же возникает: объекты какого типа необходимо будет хранить в коллекции? Встроенные, пользовательские, типы значения, ссылочные типы?
0
 Аватар для Lynatik001
48 / 40 / 15
Регистрация: 28.09.2012
Сообщений: 818
29.11.2014, 16:28  [ТС]
Цитата Сообщение от insite2012 Посмотреть сообщение
Следующий вопрос, который сразу же возникает: объекты какого типа необходимо будет хранить в коллекции? Встроенные, пользовательские, типы значения, ссылочные типы?
я же откопировал весь код двух классов. У нас есть интерфейс, и 2 класса, 1вый класс манипулятор Списком клиентов. 2рой манипулятор списком обьектов. Я описал интерфейс, в нем я решил как бы обобщить все методы которые будут в обох классах. Они одинаковые ведь, Добавление,удаление клиента\обьекта с списка
Некоторые методы отличаются своимы параметрами. Например в сортировке надо отсортировать в классе клиенты по имени\фамилии\и номеру банк щета. А в обьекте по другим уже параметрам, он же Здание а не клиент...

говорю про список обьектов типа обьект\ клиент а не об определенных
0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
29.11.2014, 16:37
Цитата Сообщение от Lynatik001 Посмотреть сообщение
манипулятор Списком клиентов.
Что за клиенты? Ваш класс? Где его код?
Цитата Сообщение от Lynatik001 Посмотреть сообщение
манипулятор списком обьектов
Что за объекты? Какого типа?
0
 Аватар для Lynatik001
48 / 40 / 15
Регистрация: 28.09.2012
Сообщений: 818
29.11.2014, 16:47  [ТС]
Цитата Сообщение от insite2012 Посмотреть сообщение
Что за клиенты? Ваш класс? Где его код?
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
 class Client
    {
        public string Name{get;set;}
        public string Surname { get; set; }
        public int Npassport { get; set; }
        public string Adres { get; set; }
        public int Telefon { get; set; }
        public int Nombank { get; set; }
        public string Tipneruh { get; set; }
        public int Vcena { get; set; }
        public List<Realty> Neruh { get; set; }
        public Client(string name, string surname, int npassport, string adres, int telefon, int nombank, string tipneruh, int vcena, ref List<Realty> neruh)
        {
            Name = name;
            Surname = surname;
            Npassport = npassport;
            Adres = adres;
            Telefon = telefon;
            Nombank = nombank;
            Tipneruh = tipneruh;
            Vcena = vcena;
            Neruh = neruh;
        }
    }
обьекты это типа здания. в них тоже просто параметры хранятся.
а манипуляторы их списками в самом начале темы описовал, а потом еще полный код их описал после того как вы спросили а где полный код....

Добавлено через 3 минуты
точнее не обьекты а Realty называются
0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
29.11.2014, 16:49
Цитата Сообщение от Lynatik001 Посмотреть сообщение
обьекты это типа здания
Хорошо. То есть, это тоже ваш класс. Теперь внимательно посмотрите на код клиента и код объекта. Есть у них что-то общее?
Следующий вопрос. По каким параметрам необходимо работать с клиентами? Аналогичный вопрос, по объектам?
1
 Аватар для Lynatik001
48 / 40 / 15
Регистрация: 28.09.2012
Сообщений: 818
29.11.2014, 16:55  [ТС]
Ввобщем скажу коротко и ясно. У меня есть 2 класса ClientManipulation : Manipulation и RealtyManipulation : Manipulation
Они хрантят в себе список обьектов клиент\Недвижимость
у них одинаковые методы добавления в список клиентов\Недвижимости. Удаления по паспорту клиента\и по индексу в недвижемости. Сортировка уже тоже идет по другим параметрам списка клиентов\недвижемости
Извеняюсь запутал называя недвижимость обьектамы. Забыл и пришло на ум что дома ето же обьекты)

Добавлено через 54 секунды
Цитата Сообщение от insite2012 Посмотреть сообщение
Хорошо. То есть, это тоже ваш класс. Теперь внимательно посмотрите на код клиента и код объекта. Есть у них что-то общее?
Следующий вопрос. По каким параметрам необходимо работать с клиентами? Аналогичный вопрос, по объектам?
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
    class Realty
    {
        public string Name { get; set; }
        public double Vartist { get; set; }
        public string Mrozt { get; set; }
        Firstvlas Popvlas{get; set;}
 
        Realty(string name, double vartist, string mrozt,ref Firstvlas popvlas)
        {
            Name = name;
            Vartist = vartist;
            Mrozt = mrozt;
            Popvlas = popvlas;
        }
    }
Добавлено через 1 минуту
Тоесть список домов как бы хранит в себе realty
У них почти нечего общего нету в параметрах, только то что они хранятся в списках)
0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
29.11.2014, 16:57
Цитата Сообщение от Lynatik001 Посмотреть сообщение
у них одинаковые методы добавления в список клиентов\Недвижимости. Удаления по паспорту клиента\и по индексу в недвижемости. Сортировка уже тоже идет по другим параметрам списка клиентов\недвижемости
Всего-то? Пара перегруженных методов удаления, и никаких проблем. Для сортировки несколько классов-сортировщиков с реализацией IComparer<T>, и если надо, в каждом классе статик свойство, возвращающее экземпляр класса-сортировщика.
1
 Аватар для Lynatik001
48 / 40 / 15
Регистрация: 28.09.2012
Сообщений: 818
29.11.2014, 17:15  [ТС]
Цитата Сообщение от insite2012 Посмотреть сообщение
Для сортировки несколько классов-сортировщиков с реализацией IComparer<T>, и если надо, в каждом классе статик свойство, возвращающее экземпляр класса-сортировщика.
чуть не понял) Для сортировки создать еще пару классов??(

Цитата Сообщение от insite2012 Посмотреть сообщение
Всего-то? Пара перегруженных методов удаления, и никаких проблем.
Дак у меня то же)

Добавлено через 9 минут
Цитата Сообщение от insite2012 Посмотреть сообщение
Всего-то? Пара перегруженных методов удаления, и никаких проблем. Для сортировки несколько классов-сортировщиков с реализацией IComparer<T>, и если надо, в каждом классе статик свойство, возвращающее экземпляр класса-сортировщика.
Вообщем норм реализованно так как у меня написанно в коде, то что я вот описал, в самом начале? или это грех и вообще нельзя так писать?
0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
29.11.2014, 17:23
Цитата Сообщение от Lynatik001 Посмотреть сообщение
чуть не понял) Для сортировки создать еще пару классов??(
А вы как хотели? Все так просто, думаете?
Вот примерный набросок, разбирайтесь))))
C#
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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace ConsoleApplication3 {
    class Program {
        static void Main(string[] args) {
        }
    }
    //Класс Недвижимость
    class Reality {
        public string RealityName { get; set; }
        public int RealityID { get; set; }
 
        public static RealityComparerByID ByIDComparer {
            get { return new RealityComparerByID(); }
        }
        public static RealityComparerByName ByNameComparer {
            get { return new RealityComparerByName(); }
        }
 
        public Reality(string name, int id) {
            RealityName = name;
            RealityID = id;
        }
    }
    //Сортировщик по ID недвижимости
    class RealityComparerByName : IComparer<Reality> {
        public int Compare(Reality x, Reality y) {
            return x.RealityID.CompareTo(y.RealityID);
        }
    }
    //Сортировщик по имени недвижимости
    class RealityComparerByID : IComparer<Reality> {
        public int Compare(Reality x, Reality y) {
            return string.Compare(x.RealityName, y.RealityName);
        }
    }
    //Класс Клиент
    class Client {
        public string ClientName { get; set; }
        public int PassportNumber { get; set; }
 
        public static ClientComparerByName ByNameComparer {
            get { return new ClientComparerByName(); }
        }
        public static ClientCompareByPassNum ByPassNumber {
            get { return new ClientCompareByPassNum(); }
        }
        public Client(string name, int number) {
            ClientName = name;
            PassportNumber = number;
        }
    }
    //Сортировщик по имени клиента
    class ClientComparerByName : IComparer<Client> {
        public int Compare(Client x, Client y) {
            return string.Compare(x.ClientName, y.ClientName);
        }
    }
    //Сортировщик по номеру паспорта клиента
    class ClientCompareByPassNum : IComparer<Client> {
        public int Compare(Client x, Client y) {
            return x.PassportNumber.CompareTo(y.PassportNumber);
        }
    }
}
Цитата Сообщение от Lynatik001 Посмотреть сообщение
или это грех и вообще нельзя так писать?
Причем тягчайший))))
0
 Аватар для Lynatik001
48 / 40 / 15
Регистрация: 28.09.2012
Сообщений: 818
29.11.2014, 17:25  [ТС]
Цитата Сообщение от insite2012 Посмотреть сообщение
Причем тягчайший))))
Поему!! Это же просто и понятно))) зачем килограмы кода писать(
0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
29.11.2014, 17:28
Цитата Сообщение от Lynatik001 Посмотреть сообщение
Это же просто и понятно
Вопрос только кому просто и понятно. Мне вот намного понятнее четкая реализация, без кучи кода, который непонятно что делает. Вам что-то непонятно в моем участке кода? На мой взгляд, там все ясно и логично.
0
 Аватар для Lynatik001
48 / 40 / 15
Регистрация: 28.09.2012
Сообщений: 818
29.11.2014, 17:33  [ТС]
Цитата Сообщение от insite2012 Посмотреть сообщение
Вот примерный набросок, разбирайтесь))))
У меня не сортовать задание, а отсортовать. Например я ввел имя, вывелись только те клиенты, которые с тем же именем.
Есть вопрос который меня вот уже замучал
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
        public object sort(int indexparam,object obj)
        {
            List<Client> sortclients = new List<Client>();
            switch(indexparam)
            {
                case 1:
                    sortclients = clients.FindAll(x => x.Name == (string)obj);
                    break;
                case 2:
                    sortclients = clients.FindAll(x => x.Surname == (string)obj);
                    break;
                case 3:
                     Regex regex = new Regex(@"^" + (int)obj + "");
 
                     sortclients = clients.FindAll((x) =>                         x.Nombank.ToString() != ""
                    
                    );
                    break;
 
            }
я находжу по критерию всех клиентов, в последнем
C#
1
2
3
                     Regex regex = new Regex(@"^" + (int)obj + "");
 
                     sortclients = clients.FindAll((x) =>                         x.Nombank.ToString() != ""
нам надо найти клиентов по первым числам банковского числа. Я использовал регуляр выражение, но как его поместить в метод findall невыходит
0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
29.11.2014, 17:35
Цитата Сообщение от Lynatik001 Посмотреть сообщение
У меня не сортовать задание, а отсортовать.
Что это за методы такие???)))
0
 Аватар для Lynatik001
48 / 40 / 15
Регистрация: 28.09.2012
Сообщений: 818
29.11.2014, 17:37  [ТС]
Цитата Сообщение от insite2012 Посмотреть сообщение
без кучи кода
ну у меня ведь меньше вышло кода)) а у вас больше, наплодили лишь для сортировки еще пару классов)). Да соглашусь у меня с использованием object понимаемость кода страдает
0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
29.11.2014, 17:39
Цитата Сообщение от Lynatik001 Посмотреть сообщение
наплодили лишь для сортировки еще пару классов
Так вы сами сказали, надо сортировать)))
Цитата Сообщение от Lynatik001 Посмотреть сообщение
с использованием object понимаемость кода страдает
Скорее, ее вообще нет. Абсолютно))))
0
 Аватар для Lynatik001
48 / 40 / 15
Регистрация: 28.09.2012
Сообщений: 818
29.11.2014, 17:39  [ТС]
Цитата Сообщение от insite2012 Посмотреть сообщение
Что это за методы такие???)))
ну проще говоря найти и вивести только тех клиентов которых зовут вася например

Добавлено через 26 секунд
Цитата Сообщение от insite2012 Посмотреть сообщение
Скорее, ее вообще нет. Абсолютно))))
я в печале)))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
29.11.2014, 17:39

Работа с классами и методами
Привет, кто подскажет правильно ли передаю координаты вектора для получения его длины? (файлы GetLenght.cpp и Action.cpp). Что-то в Action...

Работа с классами и методами
Добрый день. Прошу не оставаться равнодушными !)) Помогите пожалуйста написать методы. Само задание и то что сделал прилагаю. Благодарю за...


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Установка нескольких штампов электронной подписи в строго определенных местах файла docx
ВладимирСамохин 19.07.2026
(В!) Работа с Электронной подписью - это неотъемлемая часть современного документооборота. Но что делать, если нужно поставить несколько штампов электронной подписи в строго определенных местах. . .
сукцессия 35. Научная статья о проделанной работе
anaschu 19.07.2026
Написал в формате латекс и пдф
Вангую, что это не пройдёт модерацию, и на неделе я запущу свой сервер.
Hrethgir 19.07.2026
Эта публикация сейчас в песочнице и ждёт приглашения. https:/ / habr. com/ ru/ sandbox/ 295048/ начало и оглавление - Как «пернатого» заставить осваивать новые горизонты опыта через масштабирование. . .
сукцессия 33. открытые вопросы от клауде
anaschu 19.07.2026
"Что накопилось за эту часть А — тринадцать правок, из которых шесть пришли из ваших вопросов и каждая оказалась реальной ошибкой, а не калибровкой: односторонний симбиоз, отсутствующий листопад,. . .
32 сукцессия
anaschu 19.07.2026
сукцессия 28‑мерное ядро стабилизировано Коллеги, фиксирую разбор инженерных правок и их изоморфную проекцию на экономику, меметику и половой отбор. Модель теперь не «подкручивает» сходимость —. . .
сукцессия 31: модель микоризы - это модель ещё нескольких явлений, социальных и экономических
anaschu 18.07.2026
Теория «Всего»: апдейт v1. 1. 2 — 28‑мерное ядро стабилизировано Коллеги, фиксирую разбор инженерных правок и их изоморфную проекцию на экономику, меметику и половой отбор. Модель теперь не. . .
сукцессия 30. Массив проверяющих друг друга моделей
anaschu 18.07.2026
Архитектура сети взаимопроверяющих моделей микоризной сукцессии (v2. 0) Развитие тензорного ОДУ-ядра и создание кросс-платформенного калибровочного полигона Уважаемые коллеги! В продолжение. . .
Грибы - это женщины, деревья - это мужчины. Анти инь янь для союза мужчины и женщины.
anaschu 18.07.2026
ГЛАВНЫЙ НАУЧНО-ФИЛОСОФСКИЙ ВЫВОД: Сексуально-Репродуктивный Капитализм против Государства Моногамии Коллеги, мы вышли на финишную прямую 20-мерного ОДУ-моделирования вековой сукцессии (ветка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru