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

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

24.12.2021, 21:38. Показов 526. Ответов 8

Студворк — интернет-сервис помощи студентам
Сдавала зачет по основам программирования, попался вопрос про абстрактные классы.
Объяснила все по классике - используем абстрактные классы, когда хотим вынести какой-то общий функционал в отдельный класс, при этом создавать объекты с таким функционалом бессмысленно, так как они наследуются дочерними классами. Упомянула так же, что нельзя создавать объекты абстрактного класса + абстрактные члены должны быть переопределены в дочерних классах.
Попыталась объяснить, что в таких случаях абстрактный класс просто выглядит выгоднее с точки зрения архитектуры, чем просто родительский класс с пустыми телами методов, которые потом могут быть переопределены.
Меня начали спрашивать в чем ИДЕЙНОЕ отличие обычного класса от абстрактного. Из подсказок еще было что-то про то, что абстрактный класс "командует".
Вроде бы все рассказала про абстрактный класс, провела несколько часов в гугле, но так и не поняла, что от меня хотели услышать.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
24.12.2021, 21:38
Ответы с готовыми решениями:

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

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

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

8
Злой няш
 Аватар для I2um1
2136 / 1505 / 565
Регистрация: 05.04.2010
Сообщений: 2,881
24.12.2021, 22:12
tkatsjova, может про полиморфизм хотели? Но тогда это применимо и к интерфейсам. А общий функционал можно вынести в статический класс.
0
0 / 0 / 0
Регистрация: 05.12.2020
Сообщений: 3
24.12.2021, 22:20  [ТС]
Насколько я поняла, то ответ должен был быть более теоретический, нежели практический.
От статического класса нельзя наследоваться, в данном случае он неуместен.
0
Злой няш
 Аватар для I2um1
2136 / 1505 / 565
Регистрация: 05.04.2010
Сообщений: 2,881
24.12.2021, 22:41
tkatsjova, абстрактный класс ничем не командует. У того, кто спрашивал, тараканы в голове. Здесь только напрямую задать вопрос, что хотели услышать, а не сидеть и сочинять теоретические небылицы.

Цитата Сообщение от tkatsjova Посмотреть сообщение
в таких случаях абстрактный класс просто выглядит выгоднее с точки зрения архитектуры
Абстрактный класс почти никогда не выглядит выгоднее. Очень мало задач, где про него целесообразно вообще вспоминать.

Цитата Сообщение от tkatsjova Посмотреть сообщение
От статического класса нельзя наследоваться
Зато статический класс может расширить существующий класс. Например List<T> и методы Linq.
0
0 / 0 / 0
Регистрация: 05.12.2020
Сообщений: 3
24.12.2021, 22:45  [ТС]
Ок. Понял-принял, спасибо
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16139 / 11263 / 2888
Регистрация: 21.04.2018
Сообщений: 33,109
Записей в блоге: 2
25.12.2021, 00:08
Цитата Сообщение от tkatsjova Посмотреть сообщение
Вроде бы все рассказала про абстрактный класс, провела несколько часов в гугле, но так и не поняла, что от меня хотели услышать.
У некоторых преподов есть такая забава: Написал методичку, книженцию или надиктовал на лекции собственные фантазии и потом требовать от студентов почти дословного их цитирования.
Очень похоже, что вы попали в подобную ситуацию.

У абстрактного класса от обычного только два отличия:
1) Нельзя создавать его экземпляры. Поэтому без производных классов его невозможно использовать.
2) В нём могут быть абстрактные члены без реализации. В отличии от виртуальных, в обычном производном классе все абстрактные члены обязательно должны быть реализованы.

С ваших слов - вы это ответили.
0
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
25.12.2021, 00:09
Цитата Сообщение от tkatsjova Посмотреть сообщение
Меня начали спрашивать в чем ИДЕЙНОЕ отличие обычного класса от абстрактного
Раз речь об идеях, то может хотели, чтобы вы рассказали о роли абстрактных классов при использовании ООП для моделирования прикладной области?
Ну например, есть общее понятие "фрукт", однако не существует фрукта, который так бы и назывался: Фрукт.
Любой фрукт — это всегда что-то конкретное: яблоко, банан, ананас и т.д.
Если моделируется какой-нибудь магазин, то класс Фрукт имеет смысл делать абстрактным для более четкого разделения "общей идеи" от "конкретной сущности", даже если у класса нет абстрактных членов.
1
33 / 19 / 15
Регистрация: 09.03.2021
Сообщений: 84
25.12.2021, 04:45
Цитата Сообщение от tkatsjova Посмотреть сообщение
Из подсказок еще было что-то про то, что абстрактный класс "командует".
Может он про навязывание полиморфного интерфейса классам наследникам хотел услышать по книжке.
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18297 / 14221 / 5368
Регистрация: 17.03.2014
Сообщений: 28,897
Записей в блоге: 1
25.12.2021, 09:50
Цитата Сообщение от tkatsjova Посмотреть сообщение
Из подсказок еще было что-то про то, что абстрактный класс "командует".
Возможно речь о ситуации когда базовый класс реализует основной функционал, а дочерние его дополняют через protected override методы. Таким образом "настоящая" работа будет всегда идти через public методы родителя. Но данный сценарий трудно отнести к "идейному отличию". Вероятно прав Элд Хасп считая это забавой преподавателя.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
25.12.2021, 09:50
Помогаю со студенческими работами здесь

Создать абстрактный класс Triad (тройка) и производные классы Date (дата) и Time (время). Создать класс Memories
Создать абстрактный класс Triad (тройка) с виртуальными методами увеличения на 1. На его основе реализовать классы Date (дата) и Time...

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru