Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
0 / 4 / 0
Регистрация: 04.10.2017
Сообщений: 15

Наследование

04.03.2019, 12:20. Показов 1394. Ответов 1

Студворк — интернет-сервис помощи студентам
Здравствуйте.
Помогите пожалуйста разобраться.
Мне нужно создать класс "библиотека" и еще несколько сопутствующих классов, которые наследуются между собой. Проблема в том, что я не достаточно хорошо понимаю суть наследования, поэтому у меня возник вопрос, а правильно ли я унаследовала классы? В частности, будет ли правильным то, что класс Library наследуется от Publication? Подскажите пожалуйста, что еще нужно доработать.

вот, что у меня получилось:
Кликните здесь для просмотра всего текста
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
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
abstract class Publication
    {
        public int ID { get; set; }
        public string Name { get; set; }
        public string Author { get; set; }
 
        public Publication(int id, string name, string author)
        {
            ID = id;
            Name = name;
            Author = author;
        }
        abstract public void Display();
    }
    class Library : Publication
    {
        List<Publication> publications = new List<Publication>();
 
        public Library(int id, string name, string author) 
            : base(id, name, author)
        {
        }
 
        public override void Display()
        {
            foreach (Publication publication in publications)
            {
                Console.WriteLine(publication);
            }
        }
    }
    
    class Book : Publication
    {
        bool is_Book = true;
        public Book (int id, string name, string author, bool isBook)
            : base(id, name, author)
        {
            is_Book = isBook;
        }
 
        public override void Display()
        {
            Console.WriteLine("It's a book");
        }
    }
    class Magazine : Publication
    {
        bool is_Magazine = true;
        public Magazine(int id, string name, string author, bool isMagazine)
            : base(id, name, author)
        {
            is_Magazine = isMagazine;
        }
 
        public override void Display()
        {
            Console.WriteLine("It's a magazine");
        }
    }
    class Newspaper : Publication
    {
        bool is_Newspaper = true;
        public Newspaper(int id, string name, string author, bool isNewspaper)
            : base(id, name, author)
        {
            is_Newspaper = isNewspaper;
        }
 
        public override void Display()
        {
            Console.WriteLine("It's a newspaper");
        }
    }
    class Fiction : Book
    {
        string genre;
        public Fiction(int id, string name, string author, bool isBook, string genre)
            : base(id, name, author, isBook)
        {
            genre = "fiction";
        }
    }
    class NonFiction : Book
    {
        string genre;
        public NonFiction(int id, string name, string author, bool isBook, string genre)
            : base(id, name, author, isBook)
        {
            genre = "non-fiction";
        }
    }
    class MagForTeens : Magazine
    {
        string magType;
        public MagForTeens(int id, string name, string author, bool isMagazine, string magType)
            : base(id, name, author, isMagazine)
        {
            magType = "for teenagers";
        }
    }
    class MagForGrannies : Magazine
    {
        string magType;
        public MagForGrannies(int id, string name, string author, bool isMagazine, string magType)
            : base(id, name, author, isMagazine)
        {
            magType = "for grannies";
        }
    }
    class LocalNewspaper : Newspaper
    {
        string newspaperType = "local news";
        public LocalNewspaper(int id, string name, string author, bool isNewspaper, string newspaperType)
            : base(id, name, author, isNewspaper)
        {
            newspaperType = "local news";
        }
    }
    class WorldwideNewspaper : Newspaper
    {
        string newspaperType = "worldwide news";
        public WorldwideNewspaper(int id, string name, string author, bool isNewspaper, string newspaperType)
            : base(id, name, author, isNewspaper)
        {
            newspaperType = "worldwide news";
        }
    }
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
04.03.2019, 12:20
Ответы с готовыми решениями:

Наследование интерфейса и наследование реализации
Начал читать книгу GoF и сразу же в предисловии попал в тупик. Чем отличается наследование интерфейса от наследования реализации? Что такое...

Наследование С# , наследование полей
В классе есть приватное ПОЛЕ . Мне нужно использовать его в классе потомке . Можно это не сделать не делая поле публичным .

Наследование
class A { private int x; prvate int y; public A():this(1){} public A(int x):this(1,1){} public...

1
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16140 / 11264 / 2888
Регистрация: 21.04.2018
Сообщений: 33,109
Записей в блоге: 2
04.03.2019, 13:05
Лучший ответ Сообщение было отмечено leesavageux как решение

Решение

Цитата Сообщение от leesavageux Посмотреть сообщение
В частности, будет ли правильным то, что класс Library наследуется от Publication?
У Вас же Библиотека содержит не одну Публикацию? Тогда почему она наследуется от одной Публикации?

Вы в Библиотеке сделали поле List<Publication> publications
Лучше саму Библиотеку наследовать от этого типа class Library : List<Publication>
И добавьте в этот класс поля, свойства и методы необходимые для работы с библиотекой в целом.
В частности.
У Вас же где-то данные должны сохраняться?
Самое место добавить в этот класс статический метод создания Библиотеки из файла с данными и обычный метод сохранения Библиотеки в файле.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
04.03.2019, 13:05
Помогаю со студенческими работами здесь

Наследование в С#
Здравствуйте, подскажите, пожалуйста, правильные ответы: 1) Класс не может наследовать реализацию 2) Класс может наследовать сколько...

Наследование
namespace ConsoleApplication { class Program { static void Main(string args) { B b = new...

Наследование
Ребят может кто сталкивался с таким задание лабораторной: Создать абстрактный класс Worker с полями, задающими фамилию работника,...

Наследование
Создал класс namespace TableComparator { public class ITableComparator { public virtual void...

Наследование
Всем привет. Ребят, помогите, пожалуйста, разобраться. Вопрос задам на элементарном примере. есть базовый класс peoples, который...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru