|
10 / 10 / 5
Регистрация: 21.07.2013
Сообщений: 102
|
|
Логика применения ООП05.03.2014, 02:03. Показов 3570. Ответов 10
Метки нет (Все метки)
В процессе изучения ООП возник такой вопрос, просьба к опытным форумчанам подсказать, как же правильно.
Какова логика применения ООП и как его правильно применять? Если у вас большой сложный проект, например, онлайн игра - понятно, различные классы предметов и персонажей нереально описать без ООП. Если вы работаете в команде - тоже понятно, проще работать над классами, чем искать в коде что написал кто-то другой. Но в проектах стандартных не очень понятно как правильно применять ООП. Различные книги и статьи про "паттерны проектирования" не очень понятны на начальном уровне, если честно. Поэтому поискал практические уроки по ООП и просто готовые не сложные движки, нашел вот такие примеры: ----- 1. Например, гостевая книга - есть класс GBook, в котором абсолютно все методы (публикация, удаление, вывод), свойств нет, в index.php создается объект new GBook и в зависимости от $_REQUEST['action'] вызывается определенный метод. Т.е. никаких различий с процедурных подходом, только доступ к методам "со стрелочкой". 2. Или блог с админкой - тоже один класс Article, свойства - title, author, text итд, методы вывода объявлены статическими, при каком-то действии - создается объект, и в зависимости от $_REQUEST['action'] вызывается определенный метод. Здесь единственный плюс - что в конструкторе данные сразу присваиваются свойствам. Обычно пишут, что "это простые примеры, а вот если в вашем проекте есть пользователи с разграничением прав итд". Но даже если добавить регистрацию пользователей - можно добавить класс Users и опять же все то же самое что и с Article. Расширять Users (в обычном проекте с админами, модераторами, пользователями) не имеет смысла, разграничение прав проще делается дополнительным свойством. 3. Если я правильно понял суть MVC, то если ту же админку делать на MVC, то никакие классы Article и Users не нужны, просто классы Model, Control, View. При этом в Model описываются все методы, работающие с базой итд и эти методы управляют как пользователями так и статьями и комментариями. В Control - управление в зависимости от действий пользователя и View - подключает шаблоны. Но это не сильно отличается от процедурного подхода - в отдельном файле пишутся все функции (по сути та же Model), в другом - switch ( $_REQUEST['action'] ) по которому вызываются функции (тот же Controler) и подключаются шаблоны (View). Т.е. преимущество MVC здесь - есть, а какие преимущества у ООП ? ----- Просьба указать на ошибки в понимании логики применения ООП. И если можно какие-то примеры типа "такой-то проект с таким-то функционалом, с нем нужно делать такие-то классы с такими-то методами". Ну и если кто-то знает статьи на эту тему, несложные исходники с практическим ООП (не пустые наборы классов делающих непонятно что)
0
|
|
| 05.03.2014, 02:03 | |
|
Ответы с готовыми решениями:
10
Просветите на тему ООП (особенности применения модификаторов доступа) Изучаю Python, сейчас учу основы ООП, где можно найти задачи по ООП Сферы применения с++ |
|
55 / 53 / 18
Регистрация: 05.08.2013
Сообщений: 327
|
||
| 05.03.2014, 07:43 | ||
1
|
||
|
177 / 125 / 28
Регистрация: 30.10.2013
Сообщений: 686
|
|||
| 05.03.2014, 16:10 | |||
|
Начнем-с...
ООП - это другое мышление. В ООП ты мыслишь объектами, их свойствами, и методами. В функциональном, ты мыслишь математическими функциями. Самое главное преимушество ООП заключается в том, что используя его можно написать больше работающего, легко поддерживаемого кода без повторов(копипастинга), нежели в функциональном программировании Для того, чтобы прочувствовать суть ООП, понять на сколько эта парадигма ближе к человеку, надо начать что-то писать используя эту парадигму. Когда и где применять ООП? Везде где считаете нужным, там и применяйте, хоть в Hello World, хоть создайте свой класс Calculator с одним методом sum. С приходом опыта вы сами будете понимать где нужен ООП, а где можно и просто статический метод класс применить, а где вообще лучше не писать код P.S. Насчет статей и прочей лабуды - тут помочь не могу (я просто не помню ни ссылок, ничего... ), в интернете лежит много чего, да и найдутся те, кто посоветовать может
1
|
|||
|
65 / 64 / 33
Регистрация: 25.02.2014
Сообщений: 229
|
|
| 06.03.2014, 08:15 | |
|
1
|
|
|
10 / 10 / 5
Регистрация: 21.07.2013
Сообщений: 102
|
|||
| 06.03.2014, 15:10 [ТС] | |||
|
Например: В примере с блогом, где есть один класс Article и методы вывода (getAll, getArticle) объявлены статическими, а для остальных создается объект. Почему? Можно ли все методы объявить статическими и объект вообще не создавать? (если не использовать конструктор, получается синглтон? или нет?) В принципе, в той же википедии все четко описано, зачем и как делается синглтон. Но если писать на нем блог, например, тогда от процедурного подхода это вообще ничем не отличается. Из конкретных "полезных"(как мне показалось) реализаций нашел только класс, в котором делается подключение к базе. Но пишут, что это один из самых распространенных шаблонов. Так что же на нем делают? Или, например, в каких типах сайтов надо пирменять MVC а в каких не надо. Тот же блог можно сделать и на MVC. Но нужно ли? Или, например, есть интернет-магазин с регистрацией. Какие в нем должны быть классы? Товары и пользователи? Или заказы? И как группировать методы по классам? Можно же все методы запихать в один класс, по идее и так будет работать. И опять же, где нужны статические методы, а где объекты создавать. Вот такого плана вопросы интересуют. Понятно, что это на практике изучается, и, нагородив кучу бесполезного кода потом можно понять, что он неправильный.
0
|
|||
|
177 / 125 / 28
Регистрация: 30.10.2013
Сообщений: 686
|
|||||||||
| 06.03.2014, 15:35 | |||||||||
|
Охххх...
___________ Итог: Вы так и не поняли что такое ООП, и не поймете, просто задавая вопросы, тут надо заняться применяя ООП (прям как в сексе кстати, можно прочитать 1000 отличных книг, то так и не понять в чем смысл). ___________ P.S. Прочитайте ещё раз что такое ООП, что такое классы, что за объекты и почему нет смысла создавать один статический класс со всеми методами.
1
|
|||||||||
|
365 / 372 / 89
Регистрация: 01.12.2013
Сообщений: 1,629
|
||
| 06.03.2014, 15:52 | ||
|
1
|
||
|
10 / 10 / 5
Регистрация: 21.07.2013
Сообщений: 102
|
|||
| 06.03.2014, 16:21 [ТС] | |||
|
Тогда наверное надо переформулировать вопрос: Подскажите несложные исходники (или статьи, или что-то еще), в которых реализуется ООП. Полегче фреймворков, но посложнее, например, простого блога.
0
|
|||
|
177 / 125 / 28
Регистрация: 30.10.2013
Сообщений: 686
|
|
| 06.03.2014, 21:05 | |
|
создайте свой блог, форум, портал, просто создайте. И вы начнете понимать. И во время разработки - задавайте вопросы
0
|
|
|
184 / 168 / 53
Регистрация: 27.01.2013
Сообщений: 788
|
||
| 11.03.2014, 19:47 | ||
|
Логика ООП состоит в том, что программа состоит из относительно независимых элементов (объектов), способных самостоятельно поддерживать свою работоспособность. Работа программы заключается в обмене сообщениями между объектами. Плюсы - параллелизм: возможность реализации программы на нескольких процессорах (отдельные объекты поддерживаются различными процессорами, серверами, сетевыми узлами и т.п.). Есть и другие плюсы, но я для себя главным выделяю приведенный выше. Согласно изложенному, применят ООП нужно тогда, когда программа принципиально распределенная или предусматривает распределенность в будущем. Если говорить о возможности применения - дело вкуса или поставленных задач. Я довольно давно работаю с ООП, но относительно недавно пытаюсь это делать на РНР. Ощущения не из приятнейших. Думаю, если хочется изучить именно ООП, стоит использовать другой язык. Если есть более детальные вопросы - силь ву пле
2
|
||
| 11.03.2014, 19:47 | |
|
Помогаю со студенческими работами здесь
11
Область применения С/С++ применения wrap Область применения
Фреймворки их применения Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2.
Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
|
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
|
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
|
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2.
Данный документ берёт данные из другого нетипового документа. . .
|
|
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
|
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача: реализовать программный контроль на предмет проведения документа. . .
|
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача:
1. Реализовать контроль заполнения реквизита. . .
|
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение:
DISM / Online / Add-Capability / CapabilityName:WMIC~~~~
Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
|