Ну и зачем нам это ООП? » lamara-nsk.ru


lamara-nsk.ru
Это блог о сео, деньгах, заработке в сети, разработке своих проектов, программировании
и "жизни программиста", бизнесе, блогосфере, фрилансе и многом другом.


Контакты, Реклама в блоге




Ну и зачем нам это ООП?

Автор DimoninG, написано 17.07.2009
Рубрика C/C++  

Постовой: Новый авторский seo блог вебмастера, подпишись и ты!

«Ну и зачем нам это ООП?» – думал я, изучая веб-программирование. Мне действительно непонятно (было), зачем в PHP засунули ООП (то есть классы). Оно было очень удобной штукой, когда, например, описывает злобную вражину в какой-нибудь игре. Особенно, если врагов много – массив или список объектов чертовски удобно обрабатывать (по сравнению с кучей глобальных переменных, например).

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

Читая книгу по C++, я нашел там описание, которое помогло мне понять и расставить эти вопросы по полочкам. Попытаюсь объяснить это своими словами.

Давно-давно, когда я еще не родился, язык С был структурным языком, в нем не было классов. Со временем программы становились все больше, а уследить за ними и искать в них ошибки становилось все сложнее (то есть когда программы стали действительно большие – от 100.000 строк). Поэтому крутой чувак Страуструп (читаю и ужасаюсь каждый раз – «Страус+труп») решил язык Цэ немного подремонтировать – добавил в него классы.

Суть тут вот в чем. Во времена языка С на первый план выходил код, который обрабатывает какие-то данные. Под кодом я сейчас имею ввиду разные операторы, обрабатывающие переменные, а под данными сами переменные.

ООП же наоборот, отталкивается от того, что данные – важнее кода. Сам по себе объект (экземпляр класса) – это данные, а-ля переменная. Они ставятся во главу угла и сам код, получается, состоит из одних только данных.

То есть класс, если упрощенно, это переменная, которая может сама изменять свое значение по сложным алгоритмам. Круто, правда? Больше того. Класс можно составить так, что его переменные сможет обрабатывать только он (то есть из вне они будут не доступны), таким образом это почти что маленькая вселенная. Одна маленькая, но гордая «переменная» :) Интересная точка зрения, не находите?

Чем же это так помогло несчастным программистам 80ых? Дело в том, что когда программа состоит из таких вот «маленьких миров» (то есть множество классов, друг от друга не зависящих), уследить за тем, что происходит гораздо легче. Больше того, если что-то сломалось – сразу понятно, где искать ошибку (конечно, я сейчас не о том, что классы сами по себе тоже могут добавить ошибок при неправильном использовании).

Надеюсь, донес до Вас светлую мысль. И, кстати, в PHP классы – это жалкая пародия. Вот в C++ это да… Попробуй разберись во всех ньюансах.

UPD: Чтобы не быть голословным, попробую привести простой пример, даже не смотря на то, что я еще не проснулся.

MyClass *b = new MyClass;
MyClass a = b;

Будут ли какие-то неочевидные глюки программы при вполне правильном уничтожении класса «а», если в деструкторе освобождается какая-то занятая свойствами класса память?

Постовой: Новая партнерская программа от fabricasaitov.ru. Заработай уже сегодня!



Отзывов (10) на «Ну и зачем нам это ООП?»


ae471697

    пишет:

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

    Значит тебе просто не приходилось работать над чем-то кроме простых скриптов или сайтов. В архитектурно сложных системах без ООП работать невозможно. Может это и не лучший подход к программированию, но пока это лучшее что придумало человечество.


    пишет:

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


    пишет:

    крутой чувак Страуструп, видимо, слабо представлял возможности функций и начал сочинать какую-то херо ООП. И все это хорошо приправлялось пафосными речами о значении данных как объектах.
    Лбюое ООП можно заменить набором функций и ничего не потерять.


    пишет:

    Nizer, как ни странно, но я сейчас скажу ужасное: писали большие, действительно большие, программы?


    пишет:

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


    пишет:

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


    пишет:

    Три раза написал большой пост, три раза его потерял.

    В первый раз не было имени/почты, второй раз на автомате кликнул «добавить» и мыслью через полсекунды «бля, ща опять пропадёт», в третий раз я забыл поставить галку «Я не робот».

    Удачи, веб-девелопер.


    пишет:

    ООП есть понятие системное. Теоретически и в супер больших программах можно обойтись без него…
    Но это сродни использованию паровых двигателей в век
    нанотехнологий. Любая технология разрабатывается для упрощения решения какой-либо задач (иначе зачем её разрабатывать:) и по-моему нерационально оказываться от «благ цивилизации» =) Разумеется,»Hello, world» можно написать и без ООП,но кто знает,во что разовьётся ваш проект… ^^.


    пишет:

    Несмотря на то, что статья не новая, решил внести некоторые пояснения.
    Для новичков будет особенно полезно почитать умные книги по C++. Здесь я полностью соглашусь с автором статьи – не познакомившись с отцом не поймешь семейку.
    Так вот, С++ считается объектно-ориентированным языком, мало того – он самый объектно ориентированный из всех. Прошу прошения за каламбур. PHP, начиная с 5-ой версии, тоже можно назвать полноценным объектно-ориентированным, но я бы ограничелся названием объектно-основанным. Почему?
    Тут я подошел к главной мысли. В слушайтесь в слова все новые от мира программиистов – НАСЛЕДОВАНИЕ, ПОЛИМОРФИЗМ, ПЕРЕГРУЗКА МЕТОДОВ. Рекомендую сунуться в Вики и прочитать, что это значит (для тех, кто еще не знает).
    Именно на этих словах держится настоящее и будет держаться будущее програмирования.
    ООП не обязательно применимо только в крупных приложениях. В мелких тоже. Вся суть его применения сводится к УДОБОЧИТАЕМОСТИ КОДА, ОПЕРАТИВНОСТИ ВНЕСЕНИЯ ИЗМЕНЕНИЙ в код, ПЕРЕГРУЗКИ МЕТОДОВ уже существующих классов (позволяет расширять функциональность программы без внесения изменений в код) и многое другое.
    Все излагать времени не зватит.
    Респект автору за слово в пользу ООП.


    пишет:

    Я в школе думал что ООП это отстой(бесполезное увеличение кода), а когда в универе вдолбили в голову понял, что ООП это вещь!!!


Оставьте свой комментарий

Что здесь почитать?



1.   Разработки.
1.1 Плагин "Я не робот"
1.2 Плагин "Код Adsense прямо в пост"

2.   Заработай.
2.1 Блогун: 20$ в день
2.2 Уходим от налогов в Sape
2.3 Хватит думать, пора зарабатывать

3.   Акции и конкурсы.
3.1 Ссылка за "Рабочий стол"

Показать весь список.

-->








Блог на движке WordPress и тема для него создана DimoninG'ом в 2007 году.
Все материалы авторские, их копирование запрещено законом об авторском праве.