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

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

29.11.2014, 14:51. Показов 4408. Ответов 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, 17:40
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Lynatik001 Посмотреть сообщение
вивести только тех клиентов которых зовут вася например
Это не сортировка, а выборка по определенному признаку) Через LINQ, естественно.
0
 Аватар для Lynatik001
48 / 40 / 15
Регистрация: 28.09.2012
Сообщений: 818
29.11.2014, 17:43  [ТС]
Это походу как object говорит а у нас есть печеньки)(зло)

Добавлено через 2 минуты
Цитата Сообщение от insite2012 Посмотреть сообщение
Это не сортировка, а выборка по определенному признаку) Через LINQ, естественно.
Вообщем не суть, как мне выборку реализовать в списке List по совпадению первых цифр банковского щета
Вот регулярное выражение написал, но как его впихнуть в поиск)
C#
1
2
3
                     Regex regex = new Regex(@"^" + (int)obj + "");
 
                     sortclients = clients.FindAll((x) =>                         x.Nombank.ToString() != ""
0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
29.11.2014, 17:53
Лучший ответ Сообщение было отмечено Lynatik001 как решение

Решение

Цитата Сообщение от Lynatik001 Посмотреть сообщение
как мне выборку реализовать в списке List по совпадению первых цифр банковского щета
Очень просто)))))
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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace ConsoleApplication4 {
    class Program {
        static void Main(string[] args) {
            List<Client> clients = new List<Client> {
                new Client{BankAccount=1236584},
                new Client{BankAccount=4836888},
                new Client{BankAccount=1233207},
                new Client{BankAccount=0945164},
                new Client{BankAccount=1230237}
            };
            List<Client> sortedClients = clients.Where(c => c.BankAccount.ToString().StartsWith("123")).ToList();
            foreach (Client c in sortedClients) {
                Console.WriteLine(c);
            }
            Console.ReadLine();
        }
    }
    class Client {
        public int BankAccount { get; set; }
        public override string ToString() {
            return string.Format("BankAccount = {0}", BankAccount);
        }
    }
}
1
29.11.2014, 18:00

Не по теме:

сортовать иль несортовать вот в чем вопрос...
а правильнее - сортировать... гыгыг...

0
 Аватар для Lynatik001
48 / 40 / 15
Регистрация: 28.09.2012
Сообщений: 818
29.11.2014, 18:10  [ТС]
Цитата Сообщение от insite2012 Посмотреть сообщение
Очень просто)))))
Спасибо за критику кода и пример))
я постараюсь минимизиорвать использование object
но вот в
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
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;
          }
        }
думаю пусть так и останется, пускай страдает читаемость, но я зато лишних 8 методов не описал)
0
116 / 116 / 70
Регистрация: 10.11.2013
Сообщений: 445
29.11.2014, 18:20
insite2012, ну насчёт "естественности" можно было бы и поспорить... Линки изобрели для домохозяек)) И расширили ими типы, так-то они очень медленные, ведь преобразуются CLR в блоки try{} finaly{}....
0
 Аватар для Lynatik001
48 / 40 / 15
Регистрация: 28.09.2012
Сообщений: 818
29.11.2014, 19:47  [ТС]
Цитата Сообщение от insite2012 Посмотреть сообщение
Это не сортировка, а выборка по определенному признаку) Через LINQ, естественно.
вот не могу понять задание.
Наверно все таки надо отсортировать
C#
1
2
                    clients.Sort(delegate(client cl1, client cl2)
                    { return cl1.name.CompareTo(cl2.name); });
вот так я отсортирую например по имени и фамилии. а как например по тому же банковскому щету отсортировать(первых его цифрах)?
Миниатюры
Правильно ли я пишу? Работа с интерфейсом и двумя классами с аналогичными методами  
0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
29.11.2014, 19:54
Цитата Сообщение от Lynatik001 Посмотреть сообщение
как например по тому же банковскому щету отсортировать
Точно так же, как я показывал. Создать свой класс-сортировщик, в котором реализовать IComparer<T>. И с его помощью сортировать.
0
 Аватар для Lynatik001
48 / 40 / 15
Регистрация: 28.09.2012
Сообщений: 818
29.11.2014, 20:32  [ТС]
Цитата Сообщение от insite2012 Посмотреть сообщение
Точно так же, как я показывал. Создать свой класс-сортировщик, в котором реализовать IComparer<T>. И с его помощью сортировать.
а обойтись без создания кучи классов нет?

Добавлено через 3 минуты
Цитата Сообщение от insite2012 Посмотреть сообщение
Точно так же, как я показывал. Создать свой класс-сортировщик, в котором реализовать IComparer<T>. И с его помощью сортировать.
не мне надо по первых цифрах банк щета
0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
29.11.2014, 21:16
Цитата Сообщение от Lynatik001 Посмотреть сообщение
а обойтись без создания кучи классов нет?
Тогда вам придется обойтись без моих советов)))
Я могу только так, как учат гуру языка))))

Добавлено через 1 минуту
Цитата Сообщение от Lynatik001 Посмотреть сообщение
не мне надо по первых цифрах банк щета
Значит необходимо реализовать именно такую логику сортировки.
0
 Аватар для Lynatik001
48 / 40 / 15
Регистрация: 28.09.2012
Сообщений: 818
29.11.2014, 21:22  [ТС]
Цитата Сообщение от insite2012 Посмотреть сообщение
Я могу только так, как учат гуру языка))))
Гуру учат для каждой сортировки создавать отдельный класс? Ахах((

Добавлено через 35 секунд
Это уже даже не смешно

Добавлено через 3 минуты
Цитата Сообщение от insite2012 Посмотреть сообщение
Значит необходимо реализовать именно такую логику сортировки.
Да ты что, как логично))) Я спрашивал про пример кода.
C#
1
.StartsWith("123")).ToList();
типа так же?
0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
29.11.2014, 21:24
Цитата Сообщение от Lynatik001 Посмотреть сообщение
Гуру учат для каждой сортировки создавать отдельный класс?
Вы по каким книгам учите язык? Советую почитать Троелсена, после прочтения его книги большинство (если не все) ваших вопросов исчезнут.
1
 Аватар для Lynatik001
48 / 40 / 15
Регистрация: 28.09.2012
Сообщений: 818
29.11.2014, 21:25  [ТС]
Цитата Сообщение от insite2012 Посмотреть сообщение
Вы по каким книгам учите язык? Советую почитать Троелсена, после прочтения его книги большинство (если не все) ваших вопросов исчезнут.
Обезательно почитаю как то
0
484 / 439 / 123
Регистрация: 05.01.2010
Сообщений: 1,848
29.11.2014, 21:49
я тут почитал малость.. само возникновение ситуации, где требуется или много перегрузок метода, или творится нехорошее в методе, не есть гуд. я бы взял и переписал половину(четверть, весь) код чтобы не было такой, извините меня, фигни.бояться большого количества методов, кстати не стоит, как и большого количества классов. вон у некоторых стандартных методов методов в .NET по 18 перегрузок, и ничего
1
 Аватар для Lynatik001
48 / 40 / 15
Регистрация: 28.09.2012
Сообщений: 818
29.11.2014, 21:58  [ТС]
Цитата Сообщение от insite2012 Посмотреть сообщение
Точно так же, как я показывал. Создать свой класс-сортировщик, в котором реализовать IComparer<T>. И с его помощью сортировать.
а если все 3 сортировки в 1ом классе не? - в том что лежат методы манипуляции и сам метод сортировки)
0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
29.11.2014, 22:06
Цитата Сообщение от Lynatik001 Посмотреть сообщение
по возникновению нужности какого то встроенного метода обращаюсь к гуглу. А так я уже давно книги не читаю
Это зря. Гугл полезен, спору нет, но нужна база. А именно ее дают книги. Вы не поверите, но я сам этот язык (шарп) изучаю меньше года (точнее, с 1 января этого года). И именно по книгам.

Добавлено через 2 минуты
Цитата Сообщение от Lynatik001 Посмотреть сообщение
а если все 3 сортировки в 1ом классе не?
Вы немного не так понимаете. Метод Sort() (в одной из своих перегрузок) принимает на вход коллекцию объектов для сортировки как первый параметр и объект, реализующий IComparer<T> как второй параметр. Именно этот объект и указывает методу, как (по каким критериям) следует сортировать объекты коллекции.
1
 Аватар для Lynatik001
48 / 40 / 15
Регистрация: 28.09.2012
Сообщений: 818
29.11.2014, 22:36  [ТС]
Цитата Сообщение от insite2012 Посмотреть сообщение
Вы немного не так понимаете. Метод Sort() (в одной из своих перегрузок) принимает на вход коллекцию объектов для сортировки как первый параметр и объект, реализующий IComparer<T> как второй параметр. Именно этот объект и указывает методу, как (по каким критериям) следует сортировать объекты коллекции.
Понятно. Спасибо

Добавлено через 19 минут
Цитата Сообщение от insite2012 Посмотреть сообщение
Вы немного не так понимаете. Метод Sort() (в одной из своих перегрузок) принимает на вход коллекцию объектов для сортировки как первый параметр и объект, реализующий IComparer<T> как второй параметр. Именно этот объект и указывает методу, как (по каким критериям) следует сортировать объекты коллекции.
Кстати нашел такой вот пример. С использованием делегатов
C#
1
2
                    sortclients.Sort(delegate(Client cl1, Client cl2)
                    { return cl1.Name.CompareTo(cl2.Name); });
Чем он хуже:?) -работает сортует по имени например
0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
29.11.2014, 22:40
Цитата Сообщение от Lynatik001 Посмотреть сообщение
Кстати нашел такой вот пример. С использованием делегатов
Ваша проблема в том, что вы тупо применяете то что нашли, не понимая смысла. Именно поэтому вам бы следовало почитать литературу. Чтение умных книг поможет вам понять, что и во что разворачивается, и что и чем можно заменить....
0
 Аватар для Lynatik001
48 / 40 / 15
Регистрация: 28.09.2012
Сообщений: 818
29.11.2014, 22:55  [ТС]
Цитата Сообщение от insite2012 Посмотреть сообщение
Ваша проблема в том, что вы тупо применяете то что нашли, не понимая смысла. Именно поэтому вам бы следовало почитать литературу. Чтение умных книг поможет вам понять, что и во что разворачивается, и что и чем можно заменить....
У вас такая же реализация
C#
1
2
3
4
5
6
7
8
9
10
11
    //Сортировщик по 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);
        }
В чем же их различия тогда). Да я не знаю, просветите незнающего
В обох случаях используется метод Compare который Сравнивает данный экземпляр с заданным объектом или строкой String и возвращает целое число, которое показывает, расположен ли данный экземпляр перед, после или на той же позиции в порядке сортировки
0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
29.11.2014, 23:01
Цитата Сообщение от Lynatik001 Посмотреть сообщение
В чем же их различия тогда). Да я не знаю, просветите незнающего
К сожалению, я вряд ли смогу рассказать лучше, чем классики))) Читайте литературу, это единственное, что могу посоветовать)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
29.11.2014, 23:01

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

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


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

Или воспользуйтесь поиском по форуму:
60
Ответ Создать тему
Новые блоги и статьи
Программное добавление префикса в нумерацию документов
Maks 27.10.2026
Реализация из решения ниже выполнена в самописной конфигурации на БСП (помощь начинающему коллеге). Задача: Программно добавить префикс в нумерацию документов. Решение: В модуле объекта. . .
После закрытия оутлука продолжает висеть процесс в диспетчере задач
Maks 27.10.2026
С недавнего времени в продакшене возникла проблема: при закрытии оутлука в диспетчере задач продолжал висеть процесс outlook. exe. Проблема возникла после установки MS Office 2021 LTSC на машинах, под. . .
Baragoz - DPS/HPS бот для WoW 3.3.5a, многоязычный
AmbA 26.10.2026
Хотите ещё ботов? У меня есть один! А я пока отдохну от него. https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=12062&stc=1&d=1793007952 Инструкция внутри. https:/ / youtu. be/ VpfFZSUDGnQ. . .
Особенности 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й колонке просто выдумал. . Это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru