Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
2 / 2 / 0
Регистрация: 08.05.2019
Сообщений: 181

Абстрактный класс

11.05.2020, 23:54. Показов 2376. Ответов 31
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В классе Tovar имеется поле Naim для хранения наименования товара и
поле Price – стоимость товара. Для работы с этими полями использовать
свойства. Класс Tovar наследует класс Abstr и интерфейс Inter.
В абстрактном классе Abstr объявить методы Vvod и Vivod без
параметров. В методе Vvod выполняется ввод данных одного объекта
типа Tovar. Метод Vivod выполняет вывод на экран данных одного
объекта типа Tovar.
Объявить интерфейс Inter. Элементами интерфейса являются два метода
Sort, которые принимают в качестве параметров массив объектов типа
класса Tovar(одного отдела). Один метод сортирует объекты по цене,
другой метод сортирует товары по наименованию.
Объявить класс Shop. Данный класс содержит массив массивов (не
выровненный массив) mas типа Tovar. Первый индекс массива задает
количество отделов в магазине, второй индекс задает количество
наименований товара(количество товара). Для работы с массивом ) mas
реализовать индексатор, который принимает и возвращает массив товаров

заданного отдела.
Класс Metodi содержит статические методы Vvod_1 и Vivod_1, которые
получают в качестве параметров массив товаров одного отдела и
обеспечивают ввод или вывод данных товара, используя методы Vvod и
Vivod класса Abstr.
В головном модуле объявить один объект типа класса Shop, в цикле while
реализовать вызов соответствующих методов для ввода, вывода данных в
объект, сортировки товара в отделе по цене или по наименованию,
завершение выполнения программы.

Помогите доделать

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
    public abstract class Abstr
    {
        public void Vvod()
        {
 
        }
        public void Vivod()
        {
 
        }
 
    }
    interface IInter
    {
        void Sort(Tovar[] tov);
        void Sort1(Tovar[] tov1);
    }
    class Tovar : Abstr, IInter
    {
        public string Naim { get; set; }
        public int Price { get; set; }
 
        public void Sort(Tovar[] tov)
        {
            throw new NotImplementedException();
        }
 
        public void Sort1(Tovar[] tov1)
        {
            throw new NotImplementedException();
        }
    }
 
    class Shop
    {
        public Shop((Tovar[] mas)
        {
 
        }
    }
 
    class Metodi
    {
        public static void Vvod_1()
        {
 
        }
        public static void Vivod_1()
        {
 
        }
    }
Добавлено через 2 часа 55 минут
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
69
    public abstract class Abstr
    {
        public void Vvod()
        {
            Tovar[] tovars = new Tovar[1];
            Console.WriteLine("Введите наименование товара");
            string naim = Convert.ToString(Console.ReadLine());
            Console.WriteLine("Введите цену за товар");
            int price = int.Parse(Console.ReadLine());
            tovars[0] = new Tovar(naim, price);
        }
        public void Vivod()
        {
            Tovar[] tovars = new Tovar[1];
            for (int i = 0; i < tovars.Length; i++)
            {
                Console.WriteLine($"Порядковый номер:{i},{tovars[i]}");
            }
        }
 
    }
    interface IInter
    {
        void Sort(Tovar[] tovars);
        void Sort1(Tovar[] tovars);
    }
    class Tovar : Abstr, IInter
    {
        public string Naim { get; set; }
        public int Price { get; set; }
        public Tovar(string naim,int price)
        {
            Naim = naim;
            Price = price;
        }
        public void Sort(Tovar[] tovars)
        {
            Array.Sort(tovars);
            foreach(var n in tovars)
            {
                Console.WriteLine(n);
            }
        }
 
        public void Sort1(Tovar[] tovars)
        {
            throw new NotImplementedException();
        }
 
    }
 
    class Shop
    {
        public Shop(Tovar[] mas)
        {
 
        }
    }
 
    class Metodi
    {
        public static void Vvod_1(Tovar[] tovars)
        {
 
        }
        public static void Vivod_1(Tovar[] tovars)
        {
 
        }
Добавлено через 2 минуты
Вот такое добавил
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
11.05.2020, 23:54
Ответы с готовыми решениями:

Класс: Формальным параметром метода должна быть ссылка на абстрактный класс...
&quot;Формальным параметром метода должна быть ссылка на абстрактный класс или наиболее общий интерфейс в вашей иерархии классов.&quot; ...

Абстрактный класс «Хранилище» и производный класс «Библиотека»
Помогите, пожалуйста, с задачкой: Требуется реализовать абстрактный класс “Хранилище”, содержащий список объектов хранения (объекты...

Создать абстрактный класс класс Human
Помогите, пожалуйста! Задача: Создать абстрактный класс класс Human c полями: Имя, Фамилия, Возраст,пол. Заранее благодарю!

31
2 / 2 / 0
Регистрация: 08.05.2019
Сообщений: 181
13.05.2020, 01:28  [ТС]
Студворк — интернет-сервис помощи студентам
Стек

Добавлено через 42 минуты
Как сделать вывод ?
У меня методы не отображаются на tovars

Добавлено через 36 минут
Я всё.

Добавлено через 8 минут
а хотя нет

Добавлено через 9 минут
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
        delegate void Masiv(Abstr[] abs);
        delegate void Mas(Tovar[] mas);
        static void Main(string[] args)
        {
 
            Tovar[][] tovars = new Tovar[2][];
            tovars[0] = new Tovar[]
            {
            new Tovar("Молоко", 30),
            };
            tovars[1] = new Tovar[]
            {
            new Tovar("Кефир", 35),
            };
            Shop shop = new Shop(tovars);
            //Присваиваем этим переменным адресы методотов
            Masiv masiv1 = Metodi.Vvod_1;
            Masiv masiv2 = Metodi.Vivod_1;
            Mas masiv3 = shop[0,0].Sort;
            Mas masiv4 = shop[0, 0].Sort1;
            //Создаём меню
            while (true)
            {
                Console.WriteLine("1:Ввод массива");
                Console.WriteLine("3:Вывод массива");
                Console.WriteLine("3:Сортировка по названию");
                Console.WriteLine("4:Сортировка по цене");
                Console.WriteLine("5:Выход");
                int selection = int.Parse(Console.ReadLine());
                switch (selection)
                {
                    // Вызываем методы
                    case 1:
                        masiv1(tovars[0]);
                        masiv1(tovars[1]);
                        Console.ReadLine();
                        Console.Clear();
                        break;
                    case 2:
                        masiv2(tovars[0]);
                        masiv2(tovars[1]);
                        Console.ReadLine();
                        Console.Clear();
                        break;
                    case 3:
                        masiv3(tovars[0]);
                        masiv3(tovars[1]);
                        Console.ReadKey();
                        Console.Clear();
                        break;
                    case 4:
                        masiv4(tovars[0]);
                        masiv4(tovars[1]);
                        Console.ReadKey();
                        Console.Clear();
                        break;
                    default:
                        Environment.Exit(0);
                        break;
                }
            }
        }
Правильно?
0
Wanna be serious
 Аватар для Bespridelschic
587 / 474 / 186
Регистрация: 31.07.2013
Сообщений: 1,693
13.05.2020, 10:43
Цитата Сообщение от Panda05646 Посмотреть сообщение
Правильно?
Если оно делает всё что нужно, то правильно
0
2 / 2 / 0
Регистрация: 08.05.2019
Сообщений: 181
13.05.2020, 11:48  [ТС]
У ме сортировка сортировка сортирует только ранее заданные массив а не который я ввожу
0
Wanna be serious
 Аватар для Bespridelschic
587 / 474 / 186
Регистрация: 31.07.2013
Сообщений: 1,693
13.05.2020, 11:50
Попробуйте передать по ссылке (ref) в качестве аргумента метода ссылку на массив, что бы изменения применились и в Main.
0
2 / 2 / 0
Регистрация: 08.05.2019
Сообщений: 181
13.05.2020, 12:04  [ТС]
Изните,но я вас не понял,продемонстрирует пожалуйста
0
Wanna be serious
 Аватар для Bespridelschic
587 / 474 / 186
Регистрация: 31.07.2013
Сообщений: 1,693
13.05.2020, 12:10
Для примера. Сигнатура аргументов делегата тоже должна содержать ref перед параметром.
C#
1
2
3
4
5
6
7
8
9
    public static void Vvod_1(ref Tovar[] tovars)
    {
        Console.Write("Наименование: ");
        string name = Console.ReadLine();
        Console.Write("Цена: ");
        int.TryParse(Console.ReadLine(), out var price);
        Tovar tovar = new Tovar(name, price);
        tovars = new Tovar[] { tovar };
    }
0
2 / 2 / 0
Регистрация: 08.05.2019
Сообщений: 181
13.05.2020, 12:34  [ТС]
А тогда по идее нам не нужен public override void Vvod,ибо та ничего не происходит,да?
0
Wanna be serious
 Аватар для Bespridelschic
587 / 474 / 186
Регистрация: 31.07.2013
Сообщений: 1,693
13.05.2020, 12:41
Это уже вопрос к архитектуре приложения. Можно сделать финт ушами. У Vvod объявить параметры, которые бы принимали массив Tovars, и делали бы те же самые действия, но уже с ссылками а не со свойствами класса Tovar. А в Vvod_1 сделать вызов метода Vvod и передать ему массив.

Второй путь: в качестве аргумента на Vvod_1 передавать объекта класса Shop, а внутри метода вызывать метод Vvod для массива товаров внутри Shop.
0
2 / 2 / 0
Регистрация: 08.05.2019
Сообщений: 181
13.05.2020, 12:56  [ТС]
А вывод вот такой
C#
1
2
3
4
5
6
7
public static void Vivod_1(ref Tovar[] tovars)
        {
            for (int i = 0; i < tovars.Length; i++)
            {
                Console.WriteLine($"Порядковый номер:{i},{tovars[i]}");
            }
        }
??
0
Wanna be serious
 Аватар для Bespridelschic
587 / 474 / 186
Регистрация: 31.07.2013
Сообщений: 1,693
13.05.2020, 12:56
Вывод можно без ref, потому что ссылка не изменяется в процессе работы.
0
2 / 2 / 0
Регистрация: 08.05.2019
Сообщений: 181
13.05.2020, 13:00  [ТС]
а вот тут так можно?

C#
1
2
3
4
5
6
7
8
9
10
11
12
Console.Write("Введите количество товаров в отделе ");
            int size = int.Parse(Console.ReadLine());
            for (int i = 0; i < size; i++)
            {
 
                Console.WriteLine("Введите наименование товара");
                string name = Console.ReadLine();
                Console.WriteLine("Введите цену за товар");
                int.TryParse(Console.ReadLine(), out var price);
                Tovar tovar = new Tovar(name, price);
                tovars = new Tovar[] { tovar };
            }
Добавлено через 27 секунд
Ибо если я ввожу по две записи,то в выводе у меня по одной
0
Wanna be serious
 Аватар для Bespridelschic
587 / 474 / 186
Регистрация: 31.07.2013
Сообщений: 1,693
13.05.2020, 13:23
C#
1
2
3
tovars = new Tovar[size];
...
tovars[i] = new Tovar(name, price);
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
13.05.2020, 13:23

Абстрактный класс и производный класс
public abstract class Izdanie { abstract public string Informantion(); // abstract public int Find(); ...

Описать класс "геометрические фигуры", используя абстрактный класс и наследование
Всех приветствую! Вобщем трабла такая: надо написать класс геометрические фигуры, соответственно создавая их, точнее 2 треугольник и...

Создать абстрактный класс «Товар», на его основе создать класс «Автомобиль»
Вечер добрый, а может и не добрый. В изучении C# столкнулся с такой проблемой - как исключения. Имею такую задачу. Создать абстрактный...

Использовать абстрактный класс, статический класс, использовать: наследование, агрегирование, композицию
Добрый день. Нужна ваша помощь. Учусь в университете, задали придумать тему программы. в программе нужно использовать следующее:...

Абстрактный класс
Помогите пжл! пока делаю только для прямоугольника. Помогите реализовать методы. Что я реализовал - неправильно (не работает) Вот...


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

Или воспользуйтесь поиском по форуму:
32
Ответ Создать тему
Новые блоги и статьи
Доктрина интенционального знания - Доктрина для портала "Срез".
Hrethgir 25.07.2026
Может найдётся кто захочет оценить доктрину. . . Написания правил участия для меня роскошь, требующая лимита времени, поэтому все сообщения не прошедшие модерацию будут видны только участникам портала,. . .
сукцессия 44. Решил подать на припринт в межународные сервисы препринтов. Но нужно одобрение от ученых
anaschu 25.07.2026
Английский вариант. Пока кто то не одобрит мою личность, мне не получиться это опубликовать на препринте. Но заявку на публикацию статьи я сегодня подам.
сукцессия 43. Вторая научная статья за месяц- прайминг и гатгил
anaschu 25.07.2026
две стороны одной монеты
Более приземисто - Эстафету хвоста в .cdl (деревья эстафеты в сад).
Hrethgir 24.07.2026
В будущем, после написания блока инверсии обхода дерева (эстафеты хвоста), я планирую вернуться к нашему прошлому разговору о том, обладают ли знания целеполаганием. Тогда я пришел к выводу, что. . .
Вот представьте что вам дали бессмертие.
kumehtar 24.07.2026
Вот представьте что вам дали бессмертие, ничего более не меняя. Вообще ничего, только бессмертие в нынешнем виде. Рады были бы? Что бы вы тут делали всё это время? Никакой пенсии. Никакого нового. . .
сукцессия 41
anaschu 24.07.2026
Численная верификация бифуркации в агентной модели лесной сукцессии: от одного параметра к ансамблю Автор: пользователь @Shumilov_AS | Раздел: Прикладная математика / Численные методы Кратко. . .
сукцессия 40. Ансамблевая кластерная параметризаци, часть 1.
anaschu 24.07.2026
Пр# Сопровождение научной статьи ИИ-ассистентом: подготовка публикации и калибровка агентно-ориентированной модели сукцессии микоризных систем **Полевые заметки о двухнедельной совместной работе**. . .
Теория всего 12. ВГК на планете в стратегической игре "терра"
anaschu 21.07.2026
### Главные семантические изменения и дешифровка новой физики 1. **`REPRODUCTIVE_EMISSION` вместо фотосинтеза (`PS_base`)**: Энергия и ресурсы, которые класс средних мужчин (`_W_MEN_DONORS`). . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru