|
0 / 0 / 1
Регистрация: 22.10.2014
Сообщений: 25
|
||||||||||||||||
Оценить код с точки зрения принципов ООП и корректность в целом07.04.2015, 15:48. Показов 1686. Ответов 18
Метки нет (Все метки)
Извиняюсь заранее, если не в ту тему не с той просьбой. Прошу посмотреть код, оценить его с точки зрения принципов ооп да и правильность в целом. Имею желание перестать говнокодить, вот первая попытка.
Описание: имеем абстрактный класс Animal, с 3 защищенными полями и 2 виртуальными методами. От этого класса наследуются 3 класса потомка, в которых описан конструктор и переопределен метод ShowInfo(). В главном методе Main() создаем экземпляры классов с параметрами и вызываем методы базового и производных классов. Animal.cs
0
|
||||||||||||||||
| 07.04.2015, 15:48 | |
|
Ответы с готовыми решениями:
18
На сколько приведенный код неправильный с точки зрения ООП? Программа с точки зрения ООП Прошу оценить два сайта с точки зрения пользователя |
|
553 / 361 / 206
Регистрация: 27.11.2014
Сообщений: 1,049
|
|
| 07.04.2015, 15:56 | |
|
Firik67, немного по другому написанный код не вызвал бы резкой критики, однако, если не в красоте дело, то какую еще цель преследуете?
0
|
|
|
|
|
| 07.04.2015, 16:06 | |
|
Firik67,
1) Оформление кода - отсутствует. 2) _tip = "кот"; - как уже сказали избыточно. Если класс уже Cat, зачем прописывать _tip да еще и строкой? 3) Русские слова латинскими буквами... 4) Конструктор Cat должен вызывать базовый конструктор в который должен передавать string name, int ves. 5) _name = Name; - вообще ошибка, Name - нет такой переменной. 6) Console.WriteLine внутри методов класса - жуть. И да, говнокодить можно и обвешавшись абстрактными классами.
2
|
|
|
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
|
||||||
| 07.04.2015, 16:19 | ||||||
|
К сказанному выше: избавляемся от генов китайца:
0
|
||||||
|
0 / 0 / 1
Регистрация: 22.10.2014
Сообщений: 25
|
||||
| 07.04.2015, 17:12 [ТС] | ||||
![]() 2. В данном случае прописано для вывода в консоль, что именно за животное. В коде понятно, а при исполнении программы нигде не видно, что Вася это кот. Если есть вариант сделать иначе, буду рад увидеть. 3. Исправлю, как только доберусь до переводчика. 4. Годно, переделаю. 5. Мой косяк, должно быть name и ves. 6. Почему жуть и как лучше делать? Вообще пишу код, используя только компилятор csc и виндовый блокнот Добавлено через 5 минут По поводу ShowInfo. Мой косяк, забыл исправить. Добавлено через 8 минут А вообще, принципы ооп здесь реализованы? Добавлено через 6 минут
0
|
||||
|
|
||||
| 07.04.2015, 17:25 | ||||
|
Да и еще, название метода Sound() - неправильное, метод должен содержать глагол. А еще, создавать отдельный класс для каждого животного - плохая идея. А еще, передавать вес животного в конструктор - плохая идея, вес может меняться. А еще, ООП - это способ решения практических задач. Написав сферические классы в вакууме вы не научитесь решать задачи с ООП.
1
|
||||
|
Master of Orion
|
||
| 07.04.2015, 17:42 | ||
Так обычно говорят люди, которые среду не смогли осилить, и пытаются корчить из себя экспертов ![]() Известный анекдот: "Как получить случайную строку? Попросить виндузятника выйти из vim" ![]() Среда - это инструмент. Что вы сказали бы про монтажника, который обжимает кабель зубами, и ими же зачищает провод? Что он хардкорный профессионал? Да, умение работать без инструментов нужно, но вот хвалиться этим, это как хвалиться, что пришлось месяц жить на хлебе с водой, потому что ЗП задержали - кто-то реально этим понтуется, но объективно это человеческое несчастье
1
|
||
|
553 / 361 / 206
Регистрация: 27.11.2014
Сообщений: 1,049
|
|
| 07.04.2015, 17:46 | |
|
Firik67, Сколько людей - столько будет и мнений. Всем не угодить.
Нужно выбрать для себя принципы, к примеру: 1) Не писать похожий код много раз 2) Делить задачу на маленькие абстрактные кирпичики (здесь обычно делают мильярд каких-то методов непонятных) 3) Собирать вместе (в одном классе) поля/свойства/методы так, чтоб другие классы "не имели своего мнения о том, как что должно делаться в чужом огороде". Чтобы не было причин менять что-то в одном классе, потому что появился другой, которому надо "по другому, чтоб было". В ООП есть принципы, которые можно понимать по разному (так и делают). В языке есть особенности, которые позволяют принципы ООП реализовать. Остается совсем плевое дело - приноровиться к тому и другому. Это приходит с опытом. Другие мега программеры просто будут вас тыркать своими знаниями о языке и своими догадками о том, какую задачу вы решаете и как сделали бы они сами. Еще раз - на словах бормочим одно, на деле - думаем над алгоритмом и особенностями языка. Надо сделать быстрее и короче или гибче с прицелом на перемены, решайте каждый раз самостоятельно. Если проект большой, то сразу делите задачу на маленькие, самодостаточные и дружите их вместе. Не упускайте особенности языка, которые экономят место листинге с кодом.
0
|
|
|
0 / 0 / 1
Регистрация: 22.10.2014
Сообщений: 25
|
|
| 07.04.2015, 18:03 [ТС] | |
|
По поводу блокнота да, хардкор, но он вынужденый. Другого на работе нет, а то что есть выдрано из microsoft.net)
0
|
|
|
553 / 361 / 206
Регистрация: 27.11.2014
Сообщений: 1,049
|
|
| 07.04.2015, 18:08 | |
|
Firik67, m$ VS community 2013?
0
|
|
|
0 / 0 / 1
Регистрация: 22.10.2014
Сообщений: 25
|
|
| 07.04.2015, 18:42 [ТС] | |
|
0
|
|
|
0 / 0 / 1
Регистрация: 22.10.2014
Сообщений: 25
|
||
| 07.04.2015, 19:00 [ТС] | ||
|
0
|
||
|
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
|
|||||
| 07.04.2015, 19:14 | |||||
0
|
|||||
|
Warrior
500 / 427 / 177
Регистрация: 23.11.2014
Сообщений: 932
|
|
| 07.04.2015, 19:16 | |
|
Лучше уж тогда онлайн IDE через браузер
0
|
|
|
0 / 0 / 1
Регистрация: 22.10.2014
Сообщений: 25
|
|||
| 07.04.2015, 19:27 [ТС] | |||
![]() Добавлено через 1 минуту Ну а если таки по теме - основные принципы ооп я реализовал?
0
|
|||
|
Master of Orion
|
||
| 07.04.2015, 19:33 | ||
На него хотя бы автодополнение и IntelliSense повесить можно, уже хлеб.
0
|
||
|
Warrior
500 / 427 / 177
Регистрация: 23.11.2014
Сообщений: 932
|
|
| 07.04.2015, 19:57 | |
|
VsVim наше все
0
|
|
| 07.04.2015, 19:57 | |
|
Помогаю со студенческими работами здесь
19
C# правильность кода с точки зрения ООП Простой калькулятор с точки зрения ООП Прошу оценить, покритиковать сайт с точки зрения юзабилити и СЕО Что здесь не правильно с точки зрения ООП Просьба оценить форум с точки зрения дизайна (хотя его как такового нет) Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
делаю науч статью по влиянию грибов на сукцессию
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
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд.
Даже если у вас. . .
|
|
Модульная разработка через 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
На первой гифке отладочные линии отключены, а на второй включены:. . .
|