![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Форумчанин
Регистрация: 21.09.2012
Сообщений: 374
|
![]()
"1. SPR (Single responsibility principle) - Принцип единственной обязанности
В объектно-ориентированном программировании принцип единственной обязанности (англ. Single responsibility principle) обозначает, что каждый объект должен иметь одну обязанность и эта обязанность должна быть полностью инкапсулирована в класс. " То есть внутри ООП нельзя писать функции и процедуры вне классов? или как? Но иногда ведь так проще? Кто пользуется смешанным стилем? Удобно ли это? нет ли проблем с чтением кода у тех, кто берется за программу после вас?
Занимаюсь:1.зверьком- покемончиком для компьютерного затончика. 2 IT-грибами,что бы скушать потом их с вами.3. цифровым обезьянками, как куны ударяют за тянками
Последний раз редактировалось anaschu; 03.08.2019 в 15:30. |
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,821
|
![]()
Где SRP запрещает писать функции вне классов?
|
![]() |
![]() |
![]() |
#3 |
Форумчанин
Регистрация: 21.09.2012
Сообщений: 374
|
![]()
значит, смешанного стиля нету.
Но вот тогда встает вопрос. Скажем, есть программа - матрешка. Нижний слой- это обьект животное. Второй слой- обьект "территория, на которой живет животное". Третий- территория материка. Четвертиый- собетсвенно, интерфейс. ну и вот вопрос. если программа сотоит из матрешки в 4 класса. то верхний класс может быть и не оформлен как класс. и вроде как должно и так работать. вопрос в том, а правильно ли так делать? У нас же не может быть несколько экземпляров материка или несколько классов "формы 1" в нашей простейшей программе. Потому класс вроде как не нужен И с какой стороны правильно. Например, в моем случае программа может быть интегрирована с более большой программой, в которой есть еще 6 классов- матрешек. И вот как мне поступать? Верхние два слоя прописывать классом или "процедурно"?
Занимаюсь:1.зверьком- покемончиком для компьютерного затончика. 2 IT-грибами,что бы скушать потом их с вами.3. цифровым обезьянками, как куны ударяют за тянками
|
![]() |
![]() |
![]() |
#4 | ||
Старожил
Регистрация: 15.02.2010
Сообщений: 15,821
|
![]() Цитата:
Цитата:
Как вам удобнее. Я встречал и объект, который внутри держит меш для поверхности и некоторые методы, и процедурно навалянные функции. |
||
![]() |
![]() |
![]() |
#5 |
Форумчанин
Регистрация: 21.09.2012
Сообщений: 374
|
![]()
Занимаюсь:1.зверьком- покемончиком для компьютерного затончика. 2 IT-грибами,что бы скушать потом их с вами.3. цифровым обезьянками, как куны ударяют за тянками
|
![]() |
![]() |
![]() |
#6 | ||
Лис
Старожил
Регистрация: 18.09.2015
Сообщений: 2,409
|
![]()
anaschu
SPR подразумевает что свойства и методы public используют только простые типы и записи, а не классы. Интерфейсы можно использовать. Но только если используется принцип вызова в виде дерева. Т.е. ситуация когда нарушается правило инкапсуляции недопустимо. Правило инкапсуляции 1. Когда класс А вызывает метод из B и одновременно класс B вызывает метод из A недопустимо Тоже самое для свойств. В приватных полях можно держать классы. Цитата:
Но SPR это не нарушает. А почему нет то? На самом деле это даже удобнее. Цитата:
В других языках это сложнее там создаётся глобальный именной объект мьютекс и из него читается. Тут ОС гарантирует что такой мьютекс будет создан в единичном экземпляре. Либо городят костыль в виде файла. Как вам больше нравится. ООП более гибкий зато функции позволяют избежать ошибок с проектированием архитектуры да и интерфейс получается более простой более компактный.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал . Последний раз редактировалось Pavia; 03.08.2019 в 16:39. |
||
![]() |
![]() |
![]() |
#7 |
Лис
Старожил
Регистрация: 18.09.2015
Сообщений: 2,409
|
![]()
Вернее классы в параметрах методов можно использовать. Но только как временные объекты. Их нельзя сохранять во внутренних полях своего класса. А если это нужно сделать, то порождается копия(инстацируется). Либо поля из класса переданного в качестве параметра копируются в приватный.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал . |
![]() |
![]() |
![]() |
#8 | |
ПШП
Участник клуба
Регистрация: 15.07.2013
Сообщений: 1,926
|
![]() Цитата:
Правила существуют для тех, кто не умеет думать. И это правильно. Те кто думать умеет, создают новые правила. P.S. Почти по Гегелю ![]() </OFFTOP> Тут надо ещё добавить что есть очень большая разница между написанием/разработкой классов и написанием пользовательской программы на основе этих классов. Последний раз редактировалось northener; 04.08.2019 в 02:18. |
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
СЧЁТЕСЛИ(только Кириллица ) и СЧЁТЕСЛИ(смешанный текст) | 0mega | Microsoft Office Excel | 14 | 20.01.2017 22:19 |
Стиль CSS для IE | lostbananan | HTML и CSS | 3 | 04.11.2012 21:45 |
Стиль | Poma][a | Паскаль, Turbo Pascal, PascalABC.NET | 27 | 22.10.2012 21:42 |
Графика в TurboPascal: Процедуры, рисующие на экране смешанный лес (лес состоит из елей) по курсору | GreenDay | Помощь студентам | 2 | 04.05.2011 13:31 |