Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Структурное программирование или Объектно-ориентированное?
 
 автор: FireTiger   (17.05.2008 в 18:50)   письмо автору
 
 

Вот задался такой мыслью, чем же все-таки ООП лучше структурного программирования? Ведь повторного использования кода можно добиться и с помощью функций... Да и скорость выполнения скрипта существенно замедляется. Вот скажите, почему же Вы делаете упор именно на ООП, все Ваши книги повернули в его сторону. Я вот привык к структурному программированию, и совсем не ощущаю потребности в чем-то, мене всего хватает. Откровенно говоря, не могу понять всей сути ООП, читал вашу книгу про ООП, все равно не понимаю к чему это все? Ради удобства? Вы говорите, что ООП нужно использовать только в действительно необходимых случаях, а я вот даже не нахожу этих случаев.

PS: Оч хотел купить вашу новую книгу Практика создания веб сайтов, только в Киеве нигде не нашел. (

   
 
 автор: DEM   (17.05.2008 в 19:27)   письмо автору
 
   для: FireTiger   (17.05.2008 в 18:50)
 

ТОже так думал, совсем недавно... Но потом понял:
Предположим у нас есть переменная хранящая в себе все данные о пользователе. Если использовать функции для работы с этими данными, то в каждой функции надо будте прописывать эту функцию (то есть писать function user_edit_name($user_array) {...} ), а в ООП этого не надо, только в какой нить функции указать и всё... Я конечно приёл не самый удачный пример, просто сейас пока в голове ничгео более умного нету :)

   
 
 автор: xlr   (17.05.2008 в 20:59)   письмо автору
 
   для: FireTiger   (17.05.2008 в 18:50)
 

ООП имеет смысл использовать при разработке больших проектов.На форуме уже были подобный темы,воспользуйтесь поиском

   
 
 автор: cheops   (17.05.2008 в 21:30)   письмо автору
 
   для: FireTiger   (17.05.2008 в 18:50)
 

>Вы говорите, что ООП нужно использовать только в действительно необходимых случаях, а я
>вот даже не нахожу этих случаев.
Таких случаев в ООП действительно не очень много - все окружающие интерфейсы процедурные. Мы попытались продемонстрировать одну из таких задач на примере конструктора HTML-формы с автоматической обработкой вводимой информации, и наследованием элементов управления, когда однажды разработанный код не дублируется далее.

PS По сути ООП эффективен только в таких иерархических задачах - процедурным программированием тут тоже можно добиться изрядного повторного использования кода, однако, это сложнее, по сравнению с ООП.
PPS А так ваши ощущения верны, зачастую ООП не всегда оправдано применяется. ООП и процедурное программирование не противостоят, а дополняют друг друга (по крайней мере в PHP) - не следует отказываться от полностью от того или иного инструмента. Объектно-ориентированный подход эффективно работает в больших проектах и системах, PHP, как правило, применяется в более скромных проектах, поэтому не всегда очевидно как зачем в языке нужен объектно-ориентированный подход.

   
 
 автор: FireTiger   (21.05.2008 в 16:32)   письмо автору
 
   для: cheops   (17.05.2008 в 21:30)
 

Спасибо, будем знать. Но в каком смысле больших проектов? Т.е. тех, которые имеют большое количество кода? А чем тогда структурное программирование хуже?

   
 
 автор: cheops   (22.05.2008 в 10:23)   письмо автору
 
   для: FireTiger   (21.05.2008 в 16:32)
 

>А чем тогда структурное программирование хуже?
Ничем - здесь не применимо понятие хуже или лучше - это два способа организации кода, один немного эффективнее в больших задачах с разветвлённой иерархической структурой данных, другой в небольших задачах. Однако и тот и другой подход можно использовать для решения любых задач. Просто в ООП для мелких задач кода (а, следовательно, и ошибок) будет больше, а в случае больших задач - эта участь постигнет процедурный подход.

   
 
 автор: asked86   (22.05.2008 в 14:22)   письмо автору
 
   для: FireTiger   (21.05.2008 в 16:32)
 

Да я с вами соглашусь зачем ООП ведь структурное ничем не уступает да и по скорости выполнения структурное немного быстрее ведь в ООП класс это объект который создается динамически т.е все лежит в памяти (оперативной). Но просто нет таких таких уж через чур больших проектов в web ПРОГРАММИРОВАНИИ ЧТОБЫ ОЩУТИТЬ ЧТО ТАКОЕ ООП.
Вот на мой взгляд вы сравниваете трактор К 700 с трактором Белорус
и примерно говорите следующее гружу блин пол телеги (2 тонны) груза на К 700 и везу блин и тоже самое на тракторе Белорус какая разница !!!
Я вам скажу разница в том что у них немного разное предназначение!
Если вы знаете что такое механизм наследования думаю вы не зададите больше такой вопрос!! Вот возьмите завтра и напишите ОС не Windows а какой нибудь RassiaWindows и я посмотрю на ваше структурное программирование !!
Просто когда мы в книжках видим пример ООП и тот же маленький пример или отрезок кода структурного программирования мы говорим что структурное лучше просто чтобы описать преимущества ООП книги не хватит вы ведь представляете какие примеры будут и наврят ли кто вообще их разбирать захочет !!
Всегда прежде чем анализировать задавайтесь себе вопросом а коакое у кого предназначение чтобы не задавать вопросов что лучше !

   
 
 автор: Axxil   (22.05.2008 в 14:27)   письмо автору
 
   для: asked86   (22.05.2008 в 14:22)
 

> Вот возьмите завтра и напишите ОС не Windows а какой нибудь RassiaWindows и я >посмотрю на ваше структурное программирование !!

А вот товарищь Торвальдс взял и написал :) И без ООП совсем.

Соглашусь с тем, что глупо для утилиты командной строки городить огород из классов.
Но так же глупо начинать писать, например, EPR-систему без знаний ООП.

Не инструмент должен управлять разработчиком, а наоборот.

   
 
 автор: cheops   (22.05.2008 в 19:29)   письмо автору
 
   для: Axxil   (22.05.2008 в 14:27)
 

Да собственно ядро Windows тоже без ООП писалось, вернее без ООП-поддержки (без классов, наследования и т.п.), процедурный код просто оформлялся в парадигме ООП. Это кстати классический пример создания объектно-ориентированных приложений на языках без поддержки ООП. С другой стороны можно привести массу примеров ООП-приложений, где ООП только мешает разработчикам и запутывает, где без него они бы справились быстрее и элегантнее. Вводить объектно-ориентированные элементы в приложения можно только после того, как дан ответ на вопрос: зачем это делается, какая выгода будет получена и как её измерить? Ответы: это круто, там же можно использовать наследование, с ООП можно быстрее разработать приложение, все уже давно на ООП перешли, следует рассматривать как "Использование объектно-ориентированного подхода не целесообразно".

   
 
 автор: FireTiger   (24.05.2008 в 17:15)   письмо автору
 
   для: cheops   (22.05.2008 в 19:29)
 

Спасибо всем за столь познавательные ответы!
Для себя я понял, что ООП я буду использовать только в тех случаях, где без него сложно обойтись, в той задаче, которая действиельно будет требовать вмешательства ООП, но пока я с такой задачей не встретился, но как говорится "Все впереди"!
Спасибо.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования