![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| NLspieler |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 619 Регистрация: 13.10.2008 Где: Берлин Репутация: 16 Всего: 19 |
Сколько не бился, так и не смог понять, зачем в php нужен ООП.
Ведь любые задачи можно выполнить без его использования. Чем объект лучше ассоциативного массива? Чем метод лучше обычной пользовательской функции? Слышал такой довод, что так якобы удобнее. Чем удобнее, если нужно писать несколько строк лишнего кода, который впринципе ничего не делает? Для примера приведу реализацию "объекта и метода" без использования классов:
|
|||
|
||||
| Ипатьев |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2232 Регистрация: 5.7.2009 Репутация: 28 Всего: 37 |
Я думаю, правильнее было бы ставить вопрос так: "Необходимо ли ООП программисту?"
|
|||
|
||||
| NLspieler |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 619 Регистрация: 13.10.2008 Где: Берлин Репутация: 16 Всего: 19 |
||||
|
||||
| Sentox |
|
|||
|
как то так ![]() ![]() Профиль Группа: Участник Сообщений: 392 Регистрация: 27.1.2009 Где: Зимбабве Репутация: 7 Всего: 7 |
Во первых: как мне защитить допустим Машку Машкову от junior programmer и дать открытые функции для управления обьектом и его свойствами?
Во вторых: если есть Запорожцев штук 100 марок к примеру каждому Запорожцу писать свойства и функции работы с этими обьектами 100 раз!Если Вы рефакторили какую то функцию , которая влияет на свойства всех Запорожцев, это надо исправлять во всех 100! марках Запорожцев! А если Запорожец динамически изменяется и от этого изменяются все Запорожцы ... Можно много ещё найти плюсов к ООП. |
|||
|
||||
| nerezus |
|
|||
![]() Вселенский отказник ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3330 Регистрация: 15.6.2005 Репутация: 12 Всего: 43 |
|
|||
|
||||
| youri |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 740 Регистрация: 17.4.2004 Репутация: 6 Всего: 16 |
ООП можно использовать в языках, где классы и/или объекты отсутствуют. Но зачем их эмулировать в языке, в котором они присутствуют?
Во втором варианте ты засоряешь глобальную область видимости (можешь случайно создать два объекта с одним и тем же именем) |
|||
|
||||
| NLspieler |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 619 Регистрация: 13.10.2008 Где: Берлин Репутация: 16 Всего: 19 |
Согласен, ошибся. Такой пример вообще не работает. |
||||||
|
|||||||
| Ипатьев |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2232 Регистрация: 5.7.2009 Репутация: 28 Всего: 37 |
||||
|
||||
| Sentox |
|
||||||||
|
как то так ![]() ![]() Профиль Группа: Участник Сообщений: 392 Регистрация: 27.1.2009 Где: Зимбабве Репутация: 7 Всего: 7 |
Нет как защитить именно эти свойства
Они доступны для любого программиста. Если закрыть их функцией то они же становятся доступными только в области видимости данной функции. Это сильно ограничивает использование такого метода организации особенно при рефакторинге. PS: В приведённом примере Вы не защитили свойства обьекта от бесконтрольных изменений. Это сообщение отредактировал(а) Sentox - 2.8.2009, 14:22 |
||||||||
|
|||||||||
| NLspieler |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 619 Регистрация: 13.10.2008 Где: Берлин Репутация: 16 Всего: 19 |
Кажется я начинаю понимать всю силу и важность ООП. ООП позволяет защититься от следующих недопустимых в реальном мире операций, тем самым улчушая процесс моделирования.
|
|||
|
||||
| gcc |
|
|||
![]() Агент алкомафии ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2691 Регистрация: 25.4.2008 Где: %&й Репутация: -1 Всего: 17 |
если я не ошибаюсь, то доспут к методу (класса) в пхп через сишный указатель (тоже самое и у Java)
вот такой код будет быстрее
чем функциональный на пхп (так как в пхп указателей нету, например: в perl есть (копировать можно)) Это сообщение отредактировал(а) gcc - 2.8.2009, 15:24 |
|||
|
||||
| NLspieler |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 619 Регистрация: 13.10.2008 Где: Берлин Репутация: 16 Всего: 19 |
Давайте вернемся к нашей Машке.
Ради такого случая, решил прочитать и понять, как создаются классы и методы. Написал класс.
Как защитить свойства Машки от несанкционированного доступа, что бы изменять их можно было только через методы класса? Это сообщение отредактировал(а) NLspieler - 2.8.2009, 15:01 |
|||
|
||||
| Sentox |
|
||||||
|
как то так ![]() ![]() Профиль Группа: Участник Сообщений: 392 Регистрация: 27.1.2009 Где: Зимбабве Репутация: 7 Всего: 7 |
Добавлено @ 15:05
Прочитать про PHP5 и кодить в нём. Существуют области видимости свойств public, protected и private. В нашем случае private и protected не дадут это сделать. PS: Вы используете PHP4 Добавлено @ 15:10
Это сообщение отредактировал(а) Sentox - 2.8.2009, 15:13 |
||||||
|
|||||||
| gcc |
|
|||
![]() Агент алкомафии ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2691 Регистрация: 25.4.2008 Где: %&й Репутация: -1 Всего: 17 |
вот тут вот кропаль есть, я там спрашивал
|
|||
|
||||
| Kallisto |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 163 Регистрация: 20.4.2007 Репутация: -3 Всего: -1 |
Глупая постановка вопроса.
Автор спрашивает зачем нужно в РНР если можно обойтись ас. массивами. Но при этом забывает, что в с++ тоже можно сделать ас.массив. ТС почитай что такое ООП, зачем оно, где его надо применять, а где нет, возможно вопросы отпадут, потому что есть разные ситуации - разные решения. |
|||
|
||||
![]()
|
| Правила форума "PHP" | |
|
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |