voskan пишет:[PHP]
хочу понять я хоть как то пишу в стиле ооп или процедурный, просто хочу начать понимать ооп. вот и хочу вашего совета. просто есть люди создают классы и внутри процедурным программируют так как не понимают вот и я такой же. в таком стиле правильно продолжать улучшать класс ?
Тут нужно вот что понимать:
До появления объектно-орентированного программирования, использовлось два основных подхода при разработке.
1. Система моделировалась исходя из данных которые нужно было обрабатывать.
Т.е. чтобы решить задачу вначале нужно было описать все структуру данных с которыми предстоит работать и когда данные были описаны для них писались фуункци по их обработке. Например Windows API, в котором определено много структур данных и функции которые с ними работаают. В Windows API такие струкутуры данных как процесс, окно, различные сообщения - это суть системы.
2. Функциональный подход, решение задачи проектруется исходя из функций которые
необходимо выполнять. Когда функции определены, смотрим какие нам нужны для этого данные. Пример, библиотека mysql_.
Суть должна быть ясна, в так обзываемом "процедурном стиле" при проектирование и построении системы ведущая роль или у данных или у функций.
Естествено, когда система разрастается оба подхода используются.
Объектно-орентированное програмирование - это развитие и синтез этих подходов. Ведущая роль уже не у данных или у функций, а у объектов.
Часто при разработке с использованием объекто-орентированной парадигмы получаются объекты в которых оба подхода смешиваются, что приводит к проблемам, основаная из которых формулируется чаще всего как нет гибкости из-за сильной связанности. Т.е. функции настолько вплетены в данные, в котрые им вплетаться вовсе не надо было. И тогда существует процесс рефакторинга, где эти проблемы устраняются.
Что же такое теперь будет "писать в стиле ооп" ? Это проектировать и программировать с использованием объектов, разбираясь в том что же у нас за объекты, какие между ними связи, каким образом объекты создаются, какие у них роли и т.д.
Разрабатывая один единственный конкретный класс, опуская синтаксис, нет разницы с "процедурным стилем". Но если вести речь о системе в целом, то ооп дало терминологию, средства и инструментарий который в процедурном подходе был просто невозможен.
И позволило сделать открытия, которые сегодня зафиксированны в шаблонах и методиках
программирования.
Книга обязательна к прочтению:
Мэтт Зандстра - PHP. Объекты, шаблоны и методики программирования.
То что эти подходы, после того как они были найдены можно реализовать и процедурно по старинке без ооп, значит ровно то что да можно. Но без ооп их просто бы не появилось. (Отредактировано автором: 11 Июля, 2013 - 11:20:10)
|