Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Использование ООП, объясните новичку, пожалуйста... 
:(
    Опции темы
_BloodmaN_
Дата 28.6.2007, 03:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 12.11.2006

Репутация: нет
Всего: нет



Только начинаю вникать в ООП... Пытаюсь его понять... Насколько правильным будет такой подход использования? или как стоило писать этот "модуль" с точки зрения ООП? Пытался разобрать на примере готовых скриптов, но так и не понял...
Код

class category
{
  function addCategory(...) {}
  function editCategory(...) {}
  function deleteCategory(...) {}
}
$_cat = new category;
switch( $_GET['action'] )
{
  case 'add': $_cat->addCategory(..); break;
  и т.п.
}

Или может кто посоветует скрипты простого сайта без всяких наворотов с использованием ооп?
Чувствую, вопрос очень глупый, но я действительно запутался, а гугл не спасает, ибо я не знаю как сформулирвоать вопрос...
Буду очень признателен.

Это сообщение отредактировал(а) _BloodmaN_ - 28.6.2007, 18:19
PM MAIL   Вверх
Serkys
Дата 28.6.2007, 08:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1061
Регистрация: 19.4.2004

Репутация: 4
Всего: 22



В приведённом тобой примере получается библиотека функций.
PM MAIL   Вверх
BuShaRt
Дата 28.6.2007, 14:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1391
Регистрация: 29.6.2006

Репутация: 4
Всего: 6



_BloodmaN_, 
Какая связь между ООП и 
Цитата(_BloodmaN_ @  28.6.2007,  03:42 Найти цитируемый пост)
скрипты простого сайта

?
PM MAIL   Вверх
_BloodmaN_
Дата 28.6.2007, 18:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 12.11.2006

Репутация: нет
Всего: нет



BuShaRt,
эмм.. ну я хотел на прямом примере разобрать использование ооп -_- Вот не могу понять, как строить сайт с ООП... Вот, использую только отдельные библиотеки функций...
PM MAIL   Вверх
WolfON
Дата 28.6.2007, 18:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 604
Регистрация: 19.7.2004

Репутация: 6
Всего: 8



PM MAIL ICQ   Вверх
_BloodmaN_
Дата 28.6.2007, 19:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 12.11.2006

Репутация: нет
Всего: нет



WolfON, 
Я по такую по php4 читал, но все равно как-то не доходчиво...
может язык сыграл свою роль... А в электронном варианте на русском не имеется такой книги?

Это сообщение отредактировал(а) _BloodmaN_ - 28.6.2007, 20:01
PM MAIL   Вверх
BuShaRt
Дата 28.6.2007, 20:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1391
Регистрация: 29.6.2006

Репутация: 4
Всего: 6



_BloodmaN_, 
Вообще, по мне так не логично, стоить весь сайт на ООП..
Я использую ООП, для отдельных, автономных модулей, таких как классы для работы с MySQL, фильтры ввода, конвертаторы и т.п., в 80% случаев беру готовые т.к. простые задачи нет смысла переносить на ООП, а сложные решать самостоятельно времени своего жаль.

Остальные манипуляции я вообще не вижу смысла переносить на ООП, допустим модули новостей, форумов и т.п. надо писать процедурно...

Не стоит суетиться, услышав слова "за ООП будушие" и пытать понять, чем он так хорошо. Я так и не понял, когда пытался понять. Понимание пришло, когда впервые использовал чужой класс, в процессе работы/обучения программировнию...

Так вот, если нет понимания - оставьте эту идею, вернетесь, когда будет необходимость на определенном примере рассматривать..

Но, с другой стороны, это лишь моя, конкретная ситуация, которая в вашем случае может и не подойти, но в любом случае стоить движок только на ООП не логично...
PM MAIL   Вверх
_BloodmaN_
Дата 28.6.2007, 20:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 12.11.2006

Репутация: нет
Всего: нет



BuShaRt, 
хм, спасибо за разъяснение... учту...
PM MAIL   Вверх
WIPS
Дата 28.6.2007, 23:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 199
Регистрация: 22.5.2006
Где: Украина, Киев

Репутация: 1
Всего: 8



1. Я бы посоветовал для начала почиталь столпов (Страуструпа, Буча), чтобы понять что такое ООП и для чего оно нужно. 
2. Потом почитать о шаблонах проектирования - поможет понять как можно эффективно решать многие "типовые" задачи с помощью объектного подхода, хотя если правильно въехать в п.1, то при изучении шаблонов проектирования вы увидите, что многие из них уже давно используете, но не знали, что оно так называется.

А ваш пример, я бы переписал так:
Код

class CCategory()
{
    function handleCategory($categoryType)
    {
        switch($this->disarmUserData($categoryType))
        {
            case 'add': 
                $this->addCategory(); 
                break;
                //...
        }                
    }
    
    private function addCategory(/*...*/) {}
    private function editCategory(/*...*/) {}
    private function deleteCategory(/*...*/) {}
    
    /**
     * Здесь обрабатываем данные, кот. ввел пользователь
     * Этот метод я добавил т.к. вы берете данные прямо из $_GET. А с данными введенными пользователем
     * надо всегда быть начеку :)
     */
    private function disarmUserData($userData) {/*...*/}
}//CCategory

$Category = new CCategory();
$Category->handleCategory($_GET['action']);


Это сообщение отредактировал(а) WIPS - 28.6.2007, 23:07
--------------------
Автопроизводители, машины, марки, модели!
PM MAIL WWW ICQ Skype   Вверх
Muchenik
Дата 28.6.2007, 23:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 174
Регистрация: 27.10.2005

Репутация: 5
Всего: 5



Цитата

Вообще, по мне так не логично, стоить весь сайт на ООП..


Что то я не могу понять, в чем заключается нелогичность строить весь сайт на ООП.

Код

    private function addCategory(/*...*/) {}
    private function editCategory(/*...*/) {}
    private function deleteCategory(/*...*/) {}


Мне кажется что эти функции должны быть публичными. 

Это сообщение отредактировал(а) Muchenik - 28.6.2007, 23:31
PM MAIL ICQ   Вверх
sTa1kEr
Дата 28.6.2007, 23:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


9/10 программиста
***


Профиль
Группа: Завсегдатай
Сообщений: 1553
Регистрация: 21.2.2007

Репутация: 56
Всего: 146



Цитата(Muchenik @  28.6.2007,  23:27 Найти цитируемый пост)
Что то я не могу понять, в чем заключается нелогичность строить весь сайт на ООП.

Согласен с вами. Я придерживаюсь стиля .NET (нужна функция? создайте статический метод!), т.е. когда ничего не существует вне объектов. И дело тут не в приверженности к ООП, а в четком разграничении доступа и отказ от всевозможных глобальных переменных. Поверьте мне, даже, казалось бы ничего не значащее, ключевое слово private может избавить от очень многих проблем.
Цитата(Muchenik @  28.6.2007,  23:27 Найти цитируемый пост)
Мне кажется что эти функции должны быть публичными.

Нет, доступ к ним (в примере WIPS) осуществляется через handleCategory(). А вот сделать их protected было бы очень правильно. Наследование не менее важно в ООП, чем видимость методов.

Это сообщение отредактировал(а) sTa1kEr - 28.6.2007, 23:47
PM MAIL   Вверх
WIPS
Дата 29.6.2007, 13:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 199
Регистрация: 22.5.2006
Где: Украина, Киев

Репутация: 1
Всего: 8



Цитата(sTa1kEr @  28.6.2007,  22:46 Найти цитируемый пост)
А вот сделать их protected было бы очень правильно.

Согласен, protected тут больше подходит. Просто в данном случае privat-ом в основном хотел показать, что эти функции не должны входить в интерфейс класса.
--------------------
Автопроизводители, машины, марки, модели!
PM MAIL WWW ICQ Skype   Вверх
Muchenik
Дата 29.6.2007, 15:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 174
Регистрация: 27.10.2005

Репутация: 5
Всего: 5



Цитата

Мне кажется что эти функции должны быть публичными.


Признаю свою ошибку, я чего то не обратил внимание на метод handleCategory($categoryType)

Это сообщение отредактировал(а) Muchenik - 29.6.2007, 15:43
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0614 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.