|
Модераторы: Aliance, skyboy, MoLeX, ksnk |
|
Gold Dragon |
|
|||
Призрачный Профиль Группа: Экс. модератор Сообщений: 6753 Регистрация: 1.3.2004 Где: Россия, Тамбов Репутация: нет Всего: 71 |
ладно, примерно понял.. Только не видят проблем те, кто это умеет делать
Тогда вопрос в развитие темы.. Я разбирался в разных готовых скриптах и вижу что все спользуют классы. Я почему-то обхожусь одими функциями. Есть ли вообще смысл в классах (немного не так спросил ) , т.е. как сильно это облегчает или ускоряет работу? Это сообщение отредактировал(а) Gold Dragon - 28.12.2006, 07:24 -------------------- Нельзя жить в прошлом, оно уже прошло. Нельзя жить в будущем, оно ещё не наступило. Нужно жить в настоящем, помня прошлое и думая о будущем! |
|||
|
||||
-=Ustas=- |
|
|||
Ustix IT Group Профиль Группа: Участник Клуба Сообщений: 2222 Регистрация: 21.1.2005 Где: Краснодар Репутация: нет Всего: 69 |
Функции это рутина, которая в конечном счете превращается в кашу, в которой потом разработчик начинает месить грязь. Классы, это иерархическая структурированная модель твоего приложения. Обратись к литературе по ООА и ООП, не важно какой язык, лишь бы теория была. ЗЫ. Могу посоветовать почтитать на досуге Гради Буч-а "Объектно-ориентированный анализ и проектирование". Занимательная весч Добавлено @ 10:35 Тем более что в пятом PHP полностью переработана объектная модель -------------------- В искаженном мире все догмы одинаково произвольны, включая догму о произвольности догм. ----- |
|||
|
||||
Mal Hack |
|
|||
Мудрый... Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 1 Всего: 261 |
Gold Dragon, разницы в подходе - никакой. Реализация просто несколько более запутанная и менее структурированная получается.
|
|||
|
||||
-=Ustas=- |
|
|||
Ustix IT Group Профиль Группа: Участник Клуба Сообщений: 2222 Регистрация: 21.1.2005 Где: Краснодар Репутация: нет Всего: 69 |
Т.е.?! Можешь пояснить? -------------------- В искаженном мире все догмы одинаково произвольны, включая догму о произвольности догм. ----- |
|||
|
||||
Mal Hack |
|
|||
Мудрый... Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 1 Всего: 261 |
-=Ustas=-, когда ты пишешь на ООП, ты в нужном месте делаешь $obj = new MyModulClass(), где MyModulClass - класс подключаемого модуля. Получается универсализм. Дальше работает уже сам модуль, через конструктор.
Тоже самое с функцями. Ты вызовешь какую-ть MainMyModulFunction, которая примет управление на себя и дальше будет вызывать те функции модуля, которые ей надо. Т.е. ядро только вызывает главную функцию модуля. Все. Ядру плевать что будет делать сам модуль. |
|||
|
||||
-=Ustas=- |
|
|||
Ustix IT Group Профиль Группа: Участник Клуба Сообщений: 2222 Регистрация: 21.1.2005 Где: Краснодар Репутация: нет Всего: 69 |
Ну это уже детали реализации Когда я говорил постом выше, я имел виду более обощено архитектуру модели и т.д. в этих самых подходах. Просто с твоим выражением "разницы в подходе - никакой" я категорично не согласен, т.к. тогда бы не было таких понятий как ООП и ПОП. ПОП - это последовательность выполнения действий, ООП - это поведение и взаимодействие. Зацитирую одного теоретика (непомню кто, либо Буч либо Страуструп)
Ладно, Mal Hack, я прекращаю, ибо пахнет "ПОП vs ООП" -------------------- В искаженном мире все догмы одинаково произвольны, включая догму о произвольности догм. ----- |
|||
|
||||
Mal Hack |
|
|||
Мудрый... Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 1 Всего: 261 |
-=Ustas=-, это все так, ты прав, но моей ключевой мыслью было то, что:
Уж как это будет представлено - другой вопрос, ООП так ООП, СП, так СП. Давай будем реалистами. Применительно к PHP, объекты все равно несут лишь информационную модель скрипта, событиыйности-то нету |
|||
|
||||
-=Ustas=- |
|
|||
Ustix IT Group Профиль Группа: Участник Клуба Сообщений: 2222 Регистрация: 21.1.2005 Где: Краснодар Репутация: нет Всего: 69 |
Ну объектной модели PHP еще ползти Хотя в 5-ой значительные измения. Ну это уже парадигма, сложенная на протяжении нескольких тысячилетий ) Если же ядро будет контролировать еще и модули, то это не будет являться модульной архитектурой Высказался немного утрировано, но думаю понятно -------------------- В искаженном мире все догмы одинаково произвольны, включая догму о произвольности догм. ----- |
|||
|
||||
Mal Hack |
|
|||
Мудрый... Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 1 Всего: 261 |
||||
|
||||
Vaulter |
|
|||
Эксперт Профиль Группа: Участник Клуба Сообщений: 1724 Регистрация: 30.12.2002 Где: бункер Репутация: нет Всего: 22 |
а если взять конкретно OOП и PHP?
ведь по сути обьекта удобно это когда он существует "лопатя" запросы и т.д. а в PHP важно в тоже время скорость обработки запроса кстати давно задумывался над PHPшными демонами |
|||
|
||||
Mal Hack |
|
|||
Мудрый... Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 1 Всего: 261 |
||||
|
||||
Gold Dragon |
|
|||
Призрачный Профиль Группа: Экс. модератор Сообщений: 6753 Регистрация: 1.3.2004 Где: Россия, Тамбов Репутация: нет Всего: 71 |
Так народ, что такое ПОП и ООП? всё равно не могу понять... Вот как я делаю.. Просто создаю разные функции: одна подключает бызу, другая получает данные, третья запихивает в базу. На сколько я понимаю, класс это тоже самое, только подключается чуть по другому и помоему код больше получается -------------------- Нельзя жить в прошлом, оно уже прошло. Нельзя жить в будущем, оно ещё не наступило. Нужно жить в настоящем, помня прошлое и думая о будущем! |
|||
|
||||
Mal Hack |
|
|||
Мудрый... Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 1 Всего: 261 |
ООП - объектно ориентированное программирование. ПОП - процедурно-ориентированное, если я правильно понял. Мы его просто структурным называли. Да тоже самое. Только при ООП у тебя все эти функции как бы в одной переменной лежат. Ну плюс добавляются разные вкусности типа уровней доступа, свойств, что делает процесс кодинга удобнее. |
|||
|
||||
Gold Dragon |
|
|||
Призрачный Профиль Группа: Экс. модератор Сообщений: 6753 Регистрация: 1.3.2004 Где: Россия, Тамбов Репутация: нет Всего: 71 |
давайте на примере если не трудно.. вот пример моих функций
как это заменить на класс? ps кто-то обещал доку про классы. -------------------- Нельзя жить в прошлом, оно уже прошло. Нельзя жить в будущем, оно ещё не наступило. Нужно жить в настоящем, помня прошлое и думая о будущем! |
|||
|
||||
Mal Hack |
|
|||
Мудрый... Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 1 Всего: 261 |
|
|||
|
||||
Vaulter |
|
|||
Эксперт Профиль Группа: Участник Клуба Сообщений: 1724 Регистрация: 30.12.2002 Где: бункер Репутация: нет Всего: 22 |
Gold Dragon, а что это?
|
|||
|
||||
Gold Dragon |
|
||||
Призрачный Профиль Группа: Экс. модератор Сообщений: 6753 Регистрация: 1.3.2004 Где: Россия, Тамбов Репутация: нет Всего: 71 |
я там малость ошибся... первая функция називается fConnect
Mal Hack, т.е. я тупо все свои функции загоняю в класс и получаю к ним доступ через $obj -> что-то?? Тогда нет никакой разницы между
Наверное это самое примитивное использование классов и там есть что-то такое, чего я ещё не понимаю.. Но согласен, что класс - это всё же один объект, а не набор разных функций, что уже удобнее чисто для восприятия одна функция получает список названий статей и материалов, другая получает сам материал конкретной статьи. А что есть замечания или предложения? с удовольствием выслушаю -------------------- Нельзя жить в прошлом, оно уже прошло. Нельзя жить в будущем, оно ещё не наступило. Нужно жить в настоящем, помня прошлое и думая о будущем! |
||||
|
|||||
Mal Hack |
|
|||
Мудрый... Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 1 Всего: 261 |
||||
|
||||
BuShaRt |
|
|||
Эксперт Профиль Группа: Завсегдатай Сообщений: 1391 Регистрация: 29.6.2006 Репутация: -1 Всего: 6 |
Потести смарти и сразу поймешь, что такое целостый класс... Недавно с другом готовились сдавать Удаленные базы данных, ну он вообшем ламер полный, спросил че такое класс, я подумал подумал и ответил, что это коллекция методов (функций)... Хотя ответ не раскрывает все сути, но в целом становиться яснее... Кроме того все методы связанны между собой=) Вот примерчик юзанья класса.. может не самый удачный... но я именно с этого момента понял, что классы лучше функций (когда писал код)
|
|||
|
||||
Opik |
|
|||
Эксперт Профиль Группа: Vingrad developer Сообщений: 1918 Регистрация: 6.10.2004 Где: Рига Репутация: нет Всего: 55 |
http://www.firststeps.ru/theory/oop/r.php?2 |
|||
|
||||
Eugene_Bond |
|
|||
Шустрый Профиль Группа: Участник Сообщений: 138 Регистрация: 3.9.2006 Репутация: нет Всего: 4 |
Mal Hack, очень вредный пример. только отпугивать от применения ООП годится
В продолжение начатого Opikом: OOP Concept explained: Polymorphism (Technology) -- простое и ясное объяснение полиморфизма |
|||
|
||||
Mal Hack |
|
|||
Мудрый... Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 1 Всего: 261 |
Opik, без обид, но статья ни о чем
Точнее она о основах ООП, как о его возможностях при реализации тех или иных вещей, но нет ни слова, относительно того, что такое ООП для проектирования... К сожалению, инет кишит такими статьями, а сути, которая не в реализации и возможностях, а в теории проектирования нигде нет... ИМХО, конечно.
Интересно чем? Что я показал базовый синтаксис описания класса и создания объекта? Да и вашего "не вредного" примера я тут что-то не видел. |
|||
|
||||
Blaga |
|
|||
ЛамМер++ Профиль Группа: Участник Сообщений: 429 Регистрация: 15.11.2005 Где: г. Иркутск Репутация: нет Всего: 4 |
А может кто нибудь даст почитать по теме? А то никак не могу найти. Нужно что бы было применимо именно к PHP. И что бы на русском.
-------------------- |
|||
|
||||
Mal Hack |
|
|||
Мудрый... Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 1 Всего: 261 |
Из того, что видел я (и писал сам), могу предложить:
http://phpclub.ru/detail/article/oop-vs-proc http://phpclub.ru/detail/article/intro_php5 http://vingrad.ru/PHP-ART-002848 |
|||
|
||||
BuShaRt |
|
|||
Эксперт Профиль Группа: Завсегдатай Сообщений: 1391 Регистрация: 29.6.2006 Репутация: -1 Всего: 6 |
Я плакал, новички теперь будут счастливы писать на ООП ))) |
|||
|
||||
Mal Hack |
|
|||
Мудрый... Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 1 Всего: 261 |
BuShaRt, плакать ты можешь столько, сколько тебе вздумается, только вот попробуй объяснить начинающему, что такое ООП и как вообще оно работает вот на таком коде:
|
|||
|
||||
BuShaRt |
|
|||
Эксперт Профиль Группа: Завсегдатай Сообщений: 1391 Регистрация: 29.6.2006 Репутация: -1 Всего: 6 |
Mal Hack,
Ну как не как новичок врядли решит программироваться на том примере, где 7 строк, когда есть пример в 1 строку=)) |
|||
|
||||
Mal Hack |
|
|||
Мудрый... Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 1 Всего: 261 |
Еще раз объясняю для тех кто на подлодке. Ты будешь новичку показывать основы синтаксиса и применения ООП в PHP на модуле из 1000 строк? Нет. Я говорю о том, как показать основы. Чтобы человек решил использовать ООП, он должен до этого дорасти, тобишь осознать ТЕОРЕТИЧЕСКИЕ аспекты ООП, а не код на 1000 строк. |
|||
|
||||
BuShaRt |
|
|||
Эксперт Профиль Группа: Завсегдатай Сообщений: 1391 Регистрация: 29.6.2006 Репутация: -1 Всего: 6 |
Mal Hack,
Верно... тока получается новичку вообше нет смысла показывать плюсы ООП+)) |
|||
|
||||
Eugene_Bond |
|
|||
Шустрый Профиль Группа: Участник Сообщений: 138 Регистрация: 3.9.2006 Репутация: нет Всего: 4 |
||||
|
||||
Opik |
|
|||
Эксперт Профиль Группа: Vingrad developer Сообщений: 1918 Регистрация: 6.10.2004 Где: Рига Репутация: нет Всего: 55 |
Я не так не считаю, там на явном примере поясняется смысл. Читайте тогда здесь: http://www.intuit.ru/department/se/tppobj/ |
|||
|
||||
Eugene_Bond |
|
|||
Шустрый Профиль Группа: Участник Сообщений: 138 Регистрация: 3.9.2006 Репутация: нет Всего: 4 |
Что-то вроде этого..
Опять таки упрощенно и "на коленке" в блокноте написанное. Может и не запуститься
|
|||
|
||||
Mal Hack |
|
||||||
Мудрый... Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 1 Всего: 261 |
Вот честно, перечитал еще раз... Уже зная что такое ООП не могу ну никак соединить этот пример с ООП. Да, отдалено суть показывает, но отдаленно. Но, ИМХО, конечно же.
ООП в PHP и в полностью событийном программировании, где объекты представлены не как информационные модели, а как реальные сущности (кнопки, менюшки) разные вещи. Объяснять ООП на визуалке это легко и понятно... ООП в PHP, к сожалению, объяснить тяжело... Новичок не может увязать понятие объекта с какой-ть сущностью... Сам понимаешь, "на яблоках" всегда проще...
Тогда какого черта надо сюда это постить !!
Почитай внимательнее о чем я с BuShaRt'ом дискутировал... Тоже самое и в твоем случае. |
||||||
|
|||||||
Eugene_Bond |
|
|||
Шустрый Профиль Группа: Участник Сообщений: 138 Регистрация: 3.9.2006 Репутация: нет Всего: 4 |
Многоуважаемый Мал Хак. Грубите, пожалуйста, своей бабушке! Вы же модератор.. Любые основы должны демонстрировать преимущества. Например уменьшение количества строк кода, функциональность и удобство в применении. |
|||
|
||||
Mal Hack |
|
||||
Мудрый... Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 1 Всего: 261 |
Я считаю неуважение к участникам форума выкладывать код, который: "Может и не запуститься".
|
||||
|
|||||
Eugene_Bond |
|
|||
Шустрый Профиль Группа: Участник Сообщений: 138 Регистрация: 3.9.2006 Репутация: нет Всего: 4 |
http://forum.vingrad.ru/index.php?showtopi...st&p=979753 Вопросов больше не имею |
|||
|
||||
-=Ustas=- |
|
|||
Ustix IT Group Профиль Группа: Участник Клуба Сообщений: 2222 Регистрация: 21.1.2005 Где: Краснодар Репутация: нет Всего: 69 |
Gold Dragon, я тебе говорил за эту литературу, на мой взгляз неплохие труды в плане теории. Объектно-ориентированный анализ и проектирование. Потом можно заодно и Страуструпа почитать.
Это сообщение отредактировал(а) -=Ustas=- - 3.1.2007, 23:55 -------------------- В искаженном мире все догмы одинаково произвольны, включая догму о произвольности догм. ----- |
|||
|
||||
awers |
|
|||
Эксперт Профиль Группа: Участник Сообщений: 1465 Регистрация: 22.3.2006 Где: Россия, Таганрог Репутация: нет Всего: 31 |
Вообще каждой цели свои методы.
Там где надо написать hello world я буду писать hello world А там где пахнет модулем - class hello { functuion message(){print(__CLASS__.' world'); } } Думаю так ) |
|||
|
||||
Gold Dragon |
|
|||
Призрачный Профиль Группа: Экс. модератор Сообщений: 6753 Регистрация: 1.3.2004 Где: Россия, Тамбов Репутация: нет Всего: 71 |
Так, народ, я хоть и новичок, но создать class hello в состоянии. Меня больше интересует не элементарное использование, а именно то, что другими способами сделать труднее.
PS кстати, тему лучше переименовать с Философия class Добавлено @ 10:44 кстати, очень понравилась статья http://vmk.ugatu.ac.ru/book/buch/index.htm правда пока только начал читать -------------------- Нельзя жить в прошлом, оно уже прошло. Нельзя жить в будущем, оно ещё не наступило. Нужно жить в настоящем, помня прошлое и думая о будущем! |
|||
|
||||
-=Ustas=- |
|
|||
Ustix IT Group Профиль Группа: Участник Клуба Сообщений: 2222 Регистрация: 21.1.2005 Где: Краснодар Репутация: нет Всего: 69 |
Gold Dragon, потом как ты ознакомишься с теорией ООП, советую прочитать Обзор паттернов проектирования, чтобы ты имел представление где и как строить архитектуру классов и самого приложения ;)
-------------------- В искаженном мире все догмы одинаково произвольны, включая догму о произвольности догм. ----- |
|||
|
||||
Mal Hack |
|
|||
Мудрый... Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 1 Всего: 261 |
Большая задача. Большое кол-во переменных. При структурном подходе ты был вынужден каждую через global подключать или через параметры передавать, а при объектом тебе достаточно ее один раз в конструкторе в свойство записать и затем с ним работать. |
|||
|
||||
Gold Dragon |
|
|||
Призрачный Профиль Группа: Экс. модератор Сообщений: 6753 Регистрация: 1.3.2004 Где: Россия, Тамбов Репутация: нет Всего: 71 |
вот! это уже интересно. Если честно, то для меня это уже стоновится проблемой.
-------------------- Нельзя жить в прошлом, оно уже прошло. Нельзя жить в будущем, оно ещё не наступило. Нужно жить в настоящем, помня прошлое и думая о будущем! |
|||
|
||||
nerezus |
|
|||
Вселенский отказник Профиль Группа: Участник Сообщений: 3330 Регистрация: 15.6.2005 Репутация: нет Всего: 43 |
|
|||
|
||||
CyClon |
|
|||
Опытный Профиль Группа: Участник Сообщений: 838 Регистрация: 3.12.2005 Репутация: нет Всего: 4 |
Если хочется понять ООП в PHP - имхо нужно читать литературу по ООП, в которой все примеры демонстрируются на PHP, а не на других языках...
Вообще, я смотрю ООП мало кому дается так легко Буквально год назад я вообще не понимал зачем это нужно, какой из этого толк и вообще "функции рулят". Когда перечитал несколько статей о ООП в PHP от разных авторов и понял основы, все равно не примеял его. Но постепенно начал сталкиваться с задачами и вспоминая основы ООП задумывалвася "А ведь это можно написать с использование классов, получится проще и красивее". Сейчас время от времени применяю. |
|||
|
||||
-=Ustas=- |
|
|||
Ustix IT Group Профиль Группа: Участник Клуба Сообщений: 2222 Регистрация: 21.1.2005 Где: Краснодар Репутация: нет Всего: 69 |
Ну тут ты в корне не прав, и я могу тебе это доказать и даже убедить тебя. ООП - это Объектно-Ориентированный Подход, а на каких языках - это уже по-барабану. Да, я согласен, в некоторых языках такая объектная модель, в других такая-то, но теоретическая основа везде аналогична, и ОБЪЕКТ он и в африке объект. Поэтому прежде - МАТ-чать! -------------------- В искаженном мире все догмы одинаково произвольны, включая догму о произвольности догм. ----- |
|||
|
||||
CyClon |
|
|||
Опытный Профиль Группа: Участник Сообщений: 838 Регистрация: 3.12.2005 Репутация: нет Всего: 4 |
Если будет выбор книг: ООП, ООП в (Visual Basic || Delphi || C++), ООП в PHP. Объем книг одинаковый, автор у всех вменяемый. Я бы выбрал ООП в PHP. Теория подкрепляется примерами на самом PHP. Если мне нужно понять ООП вообще и использовать его в PHP, этот выбор будет разумнее чем книга про просто ООП, и тем более про ООП в других языках. |
|||
|
||||
nerezus |
|
|||
Вселенский отказник Профиль Группа: Участник Сообщений: 3330 Регистрация: 15.6.2005 Репутация: нет Всего: 43 |
А что, много книг про ООП в ПХП?
Насколько я знаю, это не так ;) |
|||
|
||||
Sergey912 |
|
|||
Бывалый Профиль Группа: Участник Сообщений: 174 Регистрация: 3.1.2007 Репутация: нет Всего: нет |
Из всего топика и вообще в ООП понял, что оно лучше в проектировке так как задумывается как единое целое т.е. объекты могут взаимодействовать и пишутся с учетом связей в друг друге + к тому однотипные группируются в один класс, скажем класс баз данных и потом их удобно юзать. Кстати если класс грамотно написан им удобно пользоваться даже если его писал не ты, скажем в отличии от 50 процедур, которые писались под конкретную задачу и использовать их по делу для других часто довольно сложно....
Гм, вобщем-то понятнее стало. Не в синтаксисе дело, а именно в проектировке. Вот только как с процедурного перейти на ООП - я совсем подругому мыслю и для не шаюлонных задач море вопросов Ну например есть необходимость обработать тексты. - 3 группы текстов - по 50 в каждом - нестандартная верстка нужно свести к одному т.е. оформить одинаково. Вот где тут его использовать, как вобщем-то для самых разнородных задач начать проектировать такие вещи... вот тут процедуры имхо проще и практичнее. Не понимаю я как ООП тут мне поможет |
|||
|
||||
Vaulter |
|
|||
Эксперт Профиль Группа: Участник Клуба Сообщений: 1724 Регистрация: 30.12.2002 Где: бункер Репутация: нет Всего: 22 |
ООП там где много повторного кода.
|
|||
|
||||
Letov |
|
|||
Опытный Профиль Группа: Участник Сообщений: 321 Регистрация: 22.2.2007 Где: Санкт-Петербург Репутация: нет Всего: 4 |
ООП - как стиль программирования. Кто-то его придерживается, а кто-то - нет. Каждый выбирает сам для себя. ООП - структурированная модель. Удобно в больших приложениях. Функция - для маленьких приложений или старых версий языка. Переносить, например, приложение с PHP5 на PHP4 удобнее, если использовать функции.
-------------------- Не бывает плохих языков программирования. Бывают плохие программисты... |
|||
|
||||
-=Ustas=- |
|
|||
Ustix IT Group Профиль Группа: Участник Клуба Сообщений: 2222 Регистрация: 21.1.2005 Где: Краснодар Репутация: нет Всего: 69 |
Слушайте, подобная тема "объектное vs процедурное" уже далеко не актуальна, по интернету подобных обсуждей как грязи. Чтоб понять ху из ху, нужно взять любую книгу какого-нить ООриентированного языка, пусть тот же C++ или Java (есть и просто теория) , там в первых главах обзательно эта тема затрагивается, после прочтения которых вопросы у вас сами отпадут.
Добавлено через 4 минуты и 20 секунд Ну... не все вопросы конечно, сразу отпадут, но часть эт точно, а после практической реализации точно все. -------------------- В искаженном мире все догмы одинаково произвольны, включая догму о произвольности догм. ----- |
|||
|
||||
WolfON |
|
|||
Опытный Профиль Группа: Участник Сообщений: 604 Регистрация: 19.7.2004 Репутация: нет Всего: 8 |
Каждый подход применим к своей задаче.
Хороший программист должен писать хороший не только ОО код, но и функциональный и структурный. |
|||
|
||||
koreshX |
|
|||
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 28.3.2007 Репутация: нет Всего: нет |
CMS Drupal - пример, где модули пишутся исключительно с использованием функционального подхода. И я почему-то совершенно не видел каши, рутины или грязи. В тоже время встречал исключительно объектные проекты, в которых было разобьраться почти не реально. ПРограммируя на php использовать ооп нужно там где это нужно, а не везде, как мне кажется. Ибо это не Java и не C# (и не руби..), где ооп есть основа всего и вся. Моё ИМХО - пытаться писать на пхп исключительно объектно - это будет лишь пародия на системы написанные на исключительно объектных языках. |
|||
|
||||
vasac |
|
|||
Эксперт Профиль Группа: Завсегдатай Сообщений: 1060 Регистрация: 4.5.2006 Репутация: нет Всего: 36 |
||||
|
||||
koreshX |
|
||||
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 28.3.2007 Репутация: нет Всего: нет |
"Исключительно объектно" - это значит что нельзя сложить 2 числа не создав класса. А "ИМХО", на сколько я знаю в мотивациях не нуждается...
Посмею предположить, что вы видели модули написанные не самым лучшим образом. |
||||
|
|||||
WolfON |
|
|||
Опытный Профиль Группа: Участник Сообщений: 604 Регистрация: 19.7.2004 Репутация: нет Всего: 8 |
koreshX, абсолютно объектно-ориентированным языком можно назвать разве-что руби, да и то с натяжкой, по этому не надо гиперболизировать.
очевидно, что автор подразумевал разумное использование возможностей ооп, которыми наделен php Это сообщение отредактировал(а) WolfON - 24.5.2007, 00:40 |
|||
|
||||
WIPS |
|
|||
Бывалый Профиль Группа: Участник Сообщений: 199 Регистрация: 22.5.2006 Где: Украина, Киев Репутация: 1 Всего: 8 |
На мой взгляд ООП более приемлем, чем ПОП хотябы потому, что окружающий мир состоит из объектов (экземплятов классов, если угодно), а не из функций (читай действий) и имеет след. преимущества:
1. Повышается понимаемость кода. Возьмем, напр., ф-ю __стрелять(). Снайпер стреляет по мишени, бомж стреляет сигареты, девушка стреляет глазками. Используя ПОП необходимо либо передавать доп. параметр "кто_стреляет", либо использовать префиксное именование ф-ций, а отсюда вторая выгода: 2. Отчасти решается проблема именования. 3. Пусть у девушки есть ещё методы кроме __стрелять(), напр. __могу_ли_охмурить(), __могу_ли_съесть_пирожное(), __надо_ли_худеть() и пр.. Все они зависят от огромного числа параметров (рост, вес, объем груди, талии и бедер, харизма, наличие косметики и т.п.). В ООП достаточно задать эти параметры единожды для объекта, а в ПОП вам каждый раз придется описывать девушку передавая кучу её параметров в каждую ф-ю пусть даже и массивом. 4. Мы можем заставить всю нашу компанию (снайпер, бомж и девушка) стрелять по одной команде (__стрелять()), т.к. все они имеют таковой интерфейс. 5. Так же легче добавлять новых членов в нашу компанию (спина напр. тоже может __стрелять()). 6. Наша компания может состоять и из нескольких девушек (объектов одного класса), кот. тоже можно заставить стрелять по одной команде. Все будут делать это примерно одинаково, но каждая немножко по своему в зависимости от параметров (см. п. 3). Короче говоря реальная жизнь состоит из объектов которые имеют свойства и могут совершать действия (т.е. имеют методы), а следовательно спроектирвать и написать программу (т.е. создать информационную модель чего-то рельно существующего) проще имея аналоги рельных объектов (так устроен мозг человека). Процедурный подход хорош для чисто вычислительных задач, т.к. так же далек от реальности как и "чисто вычислительные задачи". Р.S. А понимать ООП проще все же вообще в отрыве от языка. Главное - понять концепцию. А ее реализация в каждом конкретном случае (читай - ЯП), это лишь вопрос синтаксиса и наличия/отсутсвия некоторых возможностей. P.Р.S. Все вышесказанное - мое ИМХО. --------------------
Автопроизводители, машины, марки, модели! |
|||
|
||||
Alan |
|
|||
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 2.8.2006 Где: Россия, Самара Репутация: нет Всего: нет |
Перехожу на ООП... постепенно. Преписывать старые проекты не буду. Но новые начну с ООП.
|
|||
|
||||
Sergey912 |
|
|||
Бывалый Профиль Группа: Участник Сообщений: 174 Регистрация: 3.1.2007 Репутация: нет Всего: нет |
WIPS,
Он не изучен даже до конца, не то чтобы сделаны однозначные выводы и построена четкая модель Сходство, конечно больше, но все равно это сомнительный довод.
Но никуда не денешься от реализации всех функций "стреляния" т.е. именно кода который за них отвечает и реализации огромного кол-ва классов. Но их избыточность это совсем не хорошо. Это сообщение отредактировал(а) Sergey912 - 26.7.2007, 02:22 |
|||
|
||||
Diesel Draft |
|
|||
Опытный Профиль Группа: Участник Сообщений: 876 Регистрация: 18.1.2005 Где: Lviv, Ukraine Репутация: -1 Всего: 5 |
ООП может дать особое понимание программирование. Когда то программа представляла собой только линейную структуру. ООП даёт не просто красивый и читабельный код, а представление мира в его аналогах. Для некоторых людей это просто способ обеднать свои функции в отдельную библиотеку и оно отличается от ПОП только тем что можно впихнуть больше кода, но другие могут написать аналог предмета или живого существа и тогда складывается впечатление что ты работаешь з реальным предметом, а не з программным кодом. Когда ты это поймешь то мир программирования покажется другим. Думаю многие согласятся.
|
|||
|
||||
Mal Hack |
|
|||
Мудрый... Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 1 Всего: 261 |
ООП ничего не может дать, это понимание программирования может дать возможность использовать "фишки" ООП, которые на больших проектах сильно улучшают структуриацию и модульную схему приложения.
|
|||
|
||||
Diesel Draft |
|
|||
Опытный Профиль Группа: Участник Сообщений: 876 Регистрация: 18.1.2005 Где: Lviv, Ukraine Репутация: -1 Всего: 5 |
Вот ты не понимаешь, ты не видел абстрактную сторону
|
|||
|
||||
WIPS |
|
||||
Бывалый Профиль Группа: Участник Сообщений: 199 Регистрация: 22.5.2006 Где: Украина, Киев Репутация: 1 Всего: 8 |
Кто это "он"? Который не изучен до конца? Естественно вся функциональность должна быть где-то реализована, будь то ОПП/ПОП или что-то еще. Код сам не напишется, это и ежу понятно.
Классов должно быть не огромное к-во, а оптимальное к-во. Оно определяется на стадии проектирования приложения. А избыточность - это плохо (тут я с вами согласен). Она по определению подразумевает что-то лишнее. Полностью согласен. Это то, что я пытался сказать в своем посте. В чем же заключается это самое "понимание программирования"? --------------------
Автопроизводители, машины, марки, модели! |
||||
|
|||||
NNaarreekk |
|
|||
Опытный Профиль Группа: Участник Сообщений: 768 Регистрация: 23.6.2007 Где: Армения Репутация: нет Всего: 3 |
Насколько я знаю класы нужны только для того чтобы секономить время!
То есть можешь написать ту же програму без класов, но получится в 3 раза длинее и медленее! |
|||
|
||||
Diesel Draft |
|
|||
Опытный Профиль Группа: Участник Сообщений: 876 Регистрация: 18.1.2005 Где: Lviv, Ukraine Репутация: -1 Всего: 5 |
Не совсем. Класс позволяет поделить программу на конкретные модули, которые ты можешь переиспользувать. Самый большой плюс сановит удобство |
|||
|
||||
Mal Hack |
|
|||
Мудрый... Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 1 Всего: 261 |
||||
|
||||
Diesel Draft |
|
|||
Опытный Профиль Группа: Участник Сообщений: 876 Регистрация: 18.1.2005 Где: Lviv, Ukraine Репутация: -1 Всего: 5 |
Разве? Кто еще со мной несогласен на счет модулей в форме классов?
|
|||
|
||||
Daevaorn |
|
|||
Эксперт Профиль Группа: Комодератор Сообщений: 2155 Регистрация: 29.11.2004 Где: Москва Репутация: 1 Всего: 70 |
||||
|
||||
Diesel Draft |
|
|||
Опытный Профиль Группа: Участник Сообщений: 876 Регистрация: 18.1.2005 Где: Lviv, Ukraine Репутация: -1 Всего: 5 |
Daevaorn, а я не говорил что обязательно, и это все образно. Каждый понимает модуль по своему.
|
|||
|
||||
WIPS |
|
|||
Бывалый Профиль Группа: Участник Сообщений: 199 Регистрация: 22.5.2006 Где: Украина, Киев Репутация: 1 Всего: 8 |
Еще плюс - возможность задания способов обработки данных, скрытых в классе. Функциями этого никак не добьешься.
Что в вашем понимании модуль? --------------------
Автопроизводители, машины, марки, модели! |
|||
|
||||
Mal Hack |
|
|||
Мудрый... Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 1 Всего: 261 |
Diesel Draft, модуль это не образно....
Модуль - это программная единица, куда вынесены куски программного кода, разделенные по смысловой и модульной нагрузке. |
|||
|
||||
Diesel Draft |
|
||||
Опытный Профиль Группа: Участник Сообщений: 876 Регистрация: 18.1.2005 Где: Lviv, Ukraine Репутация: -1 Всего: 5 |
Да, правильно, как я мог забыть про интерфейсы, это вообще выручает не редко
Вот ты подумал насколько неточно это. Правильно, но это не обязательно класс. Если б только для этого то можно было просто использовать шаблоны кода |
||||
|
|||||
Mal Hack |
|
|||
Мудрый... Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 1 Всего: 261 |
Diesel Draft, и чего-же тут не точного???
Шаблон, это заготовка и к модулям отношения не имеет. Да, модули ты делаешь по смысловому шаблону, но это не то... Учи матчасть !!! |
|||
|
||||
Diesel Draft |
|
|||
Опытный Профиль Группа: Участник Сообщений: 876 Регистрация: 18.1.2005 Где: Lviv, Ukraine Репутация: -1 Всего: 5 |
Mal Hack, Ты вот влепил мне минус в репу, а вот за что? Цитирую "Прежде чем что-то делать, надо сначала хотя бы основные понятия понять....". Вот если ты не знаешь, то не путай других. Шаблон это заготовка, но не только дизайна. Это может быть и шаблон кода.
У тебя есть компьютерное образование, или ты учился как большая часть здесь на примерах? Просто то что ты говоришь доказывает что ты не ориентируешься в этом. Ты видишь только одну сторону монеты. Почитай этот раздел, тебе это говорю не только я. П.С. И хватит мне портить репу, посте тебя меня народ за дилетанта какого принимает. Ты уже мне 3 минуса втиснул. Это сообщение отредактировал(а) Diesel Draft - 1.8.2007, 12:35 |
|||
|
||||
Mal Hack |
|
||||
Мудрый... Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 1 Всего: 261 |
Diesel Draft, у меня как раз образование по специальности "программное обеспечение вычислительной техники и автоматизированных систем", поэтому, поверь, уж, понятия я - знаю.
Вот я не понимаю. Ты тупой или прикидываешься, прости конечно (и пусть мне модеры вешают кирпич, может хоть так, удасться достучаться до твоих, талантливых, стоящих мозгов, которые вместо того, чтобы учиться, пытаются учить других). Уже в который раз ты не хочешь понять тех вещей, которые тебе говорят люди, понимающие больше тебя. Не надо мне приписывать тех слов, которых я не говорил? Я говорил о дизайне? Хоть слово, хоть намек? Нет. Если ты не в состоянии осознать то, что понятие модуля и понятие шаблона не имеют ничего общего, а связь того, что модули, состоящие из классов или функций написаны по одним правилам, читаю для тебя специально, по шаблону, имеет лишь практический смысл реализации, а не теоретической основы, нечего тебе делать в программировании.
МОжет быть ты просто не можешь понять того, что я говорю, точнее подумать над этим? ;) Я привожу факты, определения, от тебя я только слышу: "ты не прав" и т.п. Где обоснование? Не надо думать слишком поверхностно.. Минусы в репу "ты мне я тебе" можешь лепить сколько влезет, мне на репу - плевать, она тут уже давно профессиональные навыки не отображает... |
||||
|
|||||
Diesel Draft |
|
|||
Опытный Профиль Группа: Участник Сообщений: 876 Регистрация: 18.1.2005 Где: Lviv, Ukraine Репутация: -1 Всего: 5 |
Хорошо, давай начнем с начала или этот разговор начинает переходить в тупой спор.
Я человеку хотел абстрактно объяснить что такое класс. Давай так. З чем ты со мной не согласен? Скажи, а я постараюсь аргументировать свой ответ. П.С. Я закончил "Компьютерная инженерия". Веб не учили. Но я з самого маслу сам занимался. |
|||
|
||||
Mal Hack |
|
|||
Мудрый... Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 1 Всего: 261 |
В данной процитированной фразе не согласен с тем, что именно класс позволяет разделить программу на модули. На модули программу разделяет программист при проектировке, классы - вид реализации модулей.... Это лишь способ реализации модуля или его части.
Удобство это зависит от задачи. |
|||
|
||||
Diesel Draft |
|
|||
Опытный Профиль Группа: Участник Сообщений: 876 Регистрация: 18.1.2005 Где: Lviv, Ukraine Репутация: -1 Всего: 5 |
Вот, мы уже сошлись во мнении.
теперь смотри. Почему я сказал что позволяет поделить на модули? Потому что большая часть людей понимает модуль как отдельную часть, которую можно подключить, отключить и делать другую бесполезную роботу. Но это я сказал на таком простом уровне. Просто когда человеку скажешь термином он не поймет (нет хорошо сформулированного термина). |
|||
|
||||
Mal Hack |
|
|||
Мудрый... Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 1 Всего: 261 |
Если ты понял, наконец, что я тебе объяснял... И где в фразе слово класс??? Нету.. Термины объяснять надо... |
|||
|
||||
Diesel Draft |
|
|||
Опытный Профиль Группа: Участник Сообщений: 876 Регистрация: 18.1.2005 Где: Lviv, Ukraine Репутация: -1 Всего: 5 |
Основа ООП это объект и он есть главный. Тобто главное понимание вещи в объектном мире
|
|||
|
||||
sTa1kEr |
|
|||
9/10 программиста Профиль Группа: Завсегдатай Сообщений: 1553 Регистрация: 21.2.2007 Репутация: 2 Всего: 146 |
Diesel Draft, извините, но я не совсем понимаю. Что вы пытаетесь доказать? По-моему уже из определения предельно ясно, что такое модуль. Модуль это составная часть общей системы, но весь смысл модуля заключается в легкой отделимости от общей системы и такого же простого присоединения без вреда для всей системы. И для программирования это не исключение, не важно на чем написан модуль и какие технологии при этом использованы, если это условие выполняется. За примерам далеко ходить не надо, те же расширения PHP могут быть собраны как модули, т.е. если есть файл - есть требуемая функциональность, и пусть он хоть на ассемблере написан.
Объекты не имеют *никакого* отношения с модулями. Я согласен с тем, что ООП имеет похожую модульную структуру, но при этом не стоит путать понятия ООП и модульная система. Это сообщение отредактировал(а) sTa1kEr - 1.8.2007, 23:15 |
|||
|
||||
Mal Hack |
|
|||
Мудрый... Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 1 Всего: 261 |
Diesel Draft, основы ооп, это принципы наследования, инкапсуляции и полиморфизма.. Объект - лишь способ реализации ;)
|
|||
|
||||
WIPS |
|
|||
Бывалый Профиль Группа: Участник Сообщений: 199 Регистрация: 22.5.2006 Где: Украина, Киев Репутация: 1 Всего: 8 |
Однако согласитесь, что модуль может быть реализован как объект. При этом будет отвечать всем выдвигаемым к модулю требованиям. P.S. По моему, все говорят одно и тоже, но друг друга считают при этом неправыми =) --------------------
Автопроизводители, машины, марки, модели! |
|||
|
||||
sTa1kEr |
|
||||
9/10 программиста Профиль Группа: Завсегдатай Сообщений: 1553 Регистрация: 21.2.2007 Репутация: 2 Всего: 146 |
Я так и сказал - объектная модель похожа на модульную. Но любые объекты тесно связаны с другими объектами - в этом и заключается смысл ООП.
А по моему, либо кто-то не понимает простого смысла слова *модуль*, либо просто боится показаться не компетентными в данной области. Это сообщение отредактировал(а) sTa1kEr - 2.8.2007, 00:48 |
||||
|
|||||
WIPS |
|
|||
Бывалый Профиль Группа: Участник Сообщений: 199 Регистрация: 22.5.2006 Где: Украина, Киев Репутация: 1 Всего: 8 |
после этого тяжело не понять, что такое модуль: --------------------
Автопроизводители, машины, марки, модели! |
|||
|
||||
Diesel Draft |
|
||||
Опытный Профиль Группа: Участник Сообщений: 876 Регистрация: 18.1.2005 Где: Lviv, Ukraine Репутация: -1 Всего: 5 |
А вам не кажется мы говорим о том самом но разными словами?
Наследование, инкапсуляция и полиморфизм это его свойства
|
||||
|
|||||
Fally |
|
|||
Опытный Профиль Группа: Участник Сообщений: 265 Регистрация: 17.8.2006 Где: Dahla Репутация: нет Всего: 4 |
Поправка, модуль может быть реализован как класс, но не как объект...
Если одни объекты тесно связаны с другими, то это нарушает гибкость и расширяемость приложений, что противоречит принципу инверсии зависимостей . Тесно могут быть связаны обычные классы с реализациями абстрактных или реализациями интерфейсов. Это сообщение отредактировал(а) Fally - 2.8.2007, 11:51 |
|||
|
||||
Mal Hack |
|
|||
Мудрый... Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 1 Всего: 261 |
Совершенно нет. Это - основа ООП, потому что и наследование и полиморфизм и инкапсуляция не характеризуют объект или класс, т.е. не являются его свойством (синим белым, тяжелым, мягким), они дают функциональность объекту, возможность наследовать свойства не одного класса и т.д.. Свойства бывают у объекта, это по сути его переменные. Когда я писал своей предыдущий пост, я отвечал вот на это сообщение:
Я еще раз повторю (для всех) то, что написал выше. Объект - лишь практическя реализация, которая использует все возможности парадигмы ООП !!!! |
|||
|
||||
Fally |
|
|||
Опытный Профиль Группа: Участник Сообщений: 265 Регистрация: 17.8.2006 Где: Dahla Репутация: нет Всего: 4 |
||||
|
||||
Diesel Draft |
|
|||
Опытный Профиль Группа: Участник Сообщений: 876 Регистрация: 18.1.2005 Где: Lviv, Ukraine Репутация: -1 Всего: 5 |
Что является основой ООП?
|
|||
|
||||
Mal Hack |
|
|||
Мудрый... Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 1 Всего: 261 |
Основа - концепция программирования, включающая в себя такие концепции, как полиморфизм, наследование и инкапсляция.
|
|||
|
||||
Diesel Draft |
|
|||
Опытный Профиль Группа: Участник Сообщений: 876 Регистрация: 18.1.2005 Где: Lviv, Ukraine Репутация: -1 Всего: 5 |
Основа это представление все в объектном виде. Поэтому и называется объектно ориентированное программирование
|
|||
|
||||
Mal Hack |
|
|||
Мудрый... Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 1 Всего: 261 |
Основа - это теория, а объект лишь ее практическая реализация.
ООП подразумевае под собой не только описание классов и создание объектов, но и подход к решению задачи, отличный от структурного программирования. |
|||
|
||||
SamDark |
|
|||
Добрый кот Профиль Группа: Участник Сообщений: 1424 Регистрация: 25.7.2006 Где: Voronezh Репутация: 1 Всего: 38 |
Diesel Draft,
Принципы. Вообще модуль сам по себе не обязательно должен быть реализован на принципах ООП. Например, можно реализовать модули классами, можно объектами, можно вообще применить процедурный подход и реализовать систему модулей функциями. -------------------- rmcreative.ru — Это жжж неспроста... yiiframework.ru — О фреймворке Yii на русском. reggi — здесь я регистрирую домены |
|||
|
||||
Diesel Draft |
|
|||
Опытный Профиль Группа: Участник Сообщений: 876 Регистрация: 18.1.2005 Где: Lviv, Ukraine Репутация: -1 Всего: 5 |
Mal Hack, тебе не кажется что мы будем спорить еще страниц 20? Думаю это бессмысленно, все ровно говорим то самое всегда
|
|||
|
||||
SamDark |
|
|||
Добрый кот Профиль Группа: Участник Сообщений: 1424 Регистрация: 25.7.2006 Где: Voronezh Репутация: 1 Всего: 38 |
Mal Hack,
Вообще новичкам отлично объяснятся ООП на примере модулей. Только я предпочитаю открывать системный блок и показывать им железо(объекты классов), разъёмы(интерфейсы) и т.д. -------------------- rmcreative.ru — Это жжж неспроста... yiiframework.ru — О фреймворке Yii на русском. reggi — здесь я регистрирую домены |
|||
|
||||
Diesel Draft |
|
|||
Опытный Профиль Группа: Участник Сообщений: 876 Регистрация: 18.1.2005 Где: Lviv, Ukraine Репутация: -1 Всего: 5 |
SamDark, Вот хоть ты согласен со мной что мы говорим почти о том самом просто на разных языках?
|
|||
|
||||
Mal Hack |
|
|||
Мудрый... Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 1 Всего: 261 |
Модули это модули... Мне их объясняли на сях, структурных...
Дизель, ты не прав!!! (с) ЕБН |
|||
|
||||
Diesel Draft |
|
|||
Опытный Профиль Группа: Участник Сообщений: 876 Регистрация: 18.1.2005 Где: Lviv, Ukraine Репутация: -1 Всего: 5 |
Mal Hack, Объекты это не модули!!! Но на Них можно построить!!!! И не только на них!!!
Ты уже сам наченаеш изменять своим словам. И вовсе все что я скажу тебе не нравится!!! |
|||
|
||||
Mal Hack |
|
|||
Мудрый... Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 1 Всего: 261 |
||||
|
||||
SamDark |
|
|||
Добрый кот Профиль Группа: Участник Сообщений: 1424 Регистрация: 25.7.2006 Где: Voronezh Репутация: 1 Всего: 38 |
Diesel Draft,
Mal Hack, Давайте я срезюмирую? Модуль - автономная, взаимозаменяемая на сходные часть целого. В программировании - функционально законченный фрагмент программы. ООП может использоваться для описания модуля, но также модуль можно описать и другими, ничуть не уступающими, способами. -------------------- rmcreative.ru — Это жжж неспроста... yiiframework.ru — О фреймворке Yii на русском. reggi — здесь я регистрирую домены |
|||
|
||||
Fally |
|
|||
Опытный Профиль Группа: Участник Сообщений: 265 Регистрация: 17.8.2006 Где: Dahla Репутация: нет Всего: 4 |
Эмм.. конечно прошу прощения, что вмешиваюсь в столь ожесточённую дискуссию , но:
Разницу между классами и объектами чувствуете? Объект - всего лишь инстанцированный экземпляр класса. Т.е. модули описываются классами, а при программировании этих модулей, вы используете эти модули в виде объектов класса. А это важно знать. |
|||
|
||||
Diesel Draft |
|
|||
Опытный Профиль Группа: Участник Сообщений: 876 Регистрация: 18.1.2005 Где: Lviv, Ukraine Репутация: -1 Всего: 5 |
SamDark, +1
Mal Hack, ООП можно объяснить разными способами. Я пояснил на модулях, я не привязал. раньше я объяснял на яблоках, но тут долго писать, а мне на русском это сложно делать. А то что ты вцепился в это это уже твоя проблема |
|||
|
||||
SamDark |
|
|||
Добрый кот Профиль Группа: Участник Сообщений: 1424 Регистрация: 25.7.2006 Где: Voronezh Репутация: 1 Всего: 38 |
Fally,
Конечно чувствую. Не зря же написал. Реализация объектами подразумевает описание модулей одноимёнными классами следуя некоторым правилам (такое практиковалось на PHP4) и инстанциирование только одного из них. Diesel Draft, Mal Hack, Не ругайтесь. Всё хорошо -------------------- rmcreative.ru — Это жжж неспроста... yiiframework.ru — О фреймворке Yii на русском. reggi — здесь я регистрирую домены |
|||
|
||||
Diesel Draft |
|
|||
Опытный Профиль Группа: Участник Сообщений: 876 Регистрация: 18.1.2005 Где: Lviv, Ukraine Репутация: -1 Всего: 5 |
Mal Hack, У меня ощущение что в реальной жизни я тебе сделал что то плохого, но ни разу тебе не видел
|
|||
|
||||
Mal Hack |
|
|||
Мудрый... Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 1 Всего: 261 |
Diesel Draft, да нельзая объяснить ООП разными способами. НЕЛЬЗЯ...
То, как ты определял через модули - неверно, потому модуль это - объективное понятие, ооп - субъективное... ООП - теория, концепция создания ПО с использованием таких понятий как класс и объект, где последние два - лишь способ реализации концепции, пускай и другого пока не придумали. Модуль - программная единица, файл или группа файлов, объединяющий программный код по функциональному и смысловому назначению. Класс - описание объекта. Объект - некая программная единица, работа с которой ведется исходя из практический части теории ООП, а точнее, которая имеет такие свойства, как наследование, инкапсуляция и полиморфизм. В данном случае не надо придираться к словам, что наследование относится к классам.. Объект все равно производная класса, так что я говорил о следствии... Ну вот честно, я не понимаю, что тут сложного для понимая. |
|||
|
||||
Diesel Draft |
|
|||
Опытный Профиль Группа: Участник Сообщений: 876 Регистрация: 18.1.2005 Где: Lviv, Ukraine Репутация: -1 Всего: 5 |
Mal Hack, та вот не понимаешь что это пример. Тебе что никогда ничего не объясняли на других предметах. Это не означает что это оно, просто отдалено похожие. Почему ты вцепился в точность, и отбрасывает остальное
|
|||
|
||||
Mal Hack |
|
|||
Мудрый... Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 1 Всего: 261 |
Потому, что точности в твоем определении нет... Абстрагироваться-то можно, но у тебя это НЕ ПОЛУЧИЛОСЬ !!!
|
|||
|
||||
Diesel Draft |
|
|||
Опытный Профиль Группа: Участник Сообщений: 876 Регистрация: 18.1.2005 Где: Lviv, Ukraine Репутация: -1 Всего: 5 |
Mal Hack, Может только ты этого не понял
|
|||
|
||||
Mal Hack |
|
|||
Мудрый... Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 1 Всего: 261 |
Исходя из того, что я привел все 4 определения, и не услышал на них ничего против, то судя по всему я прекрасно все понимаю ;)
|
|||
|
||||
Diesel Draft |
|
|||
Опытный Профиль Группа: Участник Сообщений: 876 Регистрация: 18.1.2005 Где: Lviv, Ukraine Репутация: -1 Всего: 5 |
на мои кроме тебя тоже никто вроде не жаловался
|
|||
|
||||
Oflashp |
|
|||
Новичок Профиль Группа: Участник Сообщений: 34 Регистрация: 2.8.2007 Где: Россия, Санкт-Пет ербург Репутация: нет Всего: 2 |
Осилил 3 странице, если уже кто-то это написал, прошу прощения за повтор:
При ПОП программировании на PHP: 1)Имеется библиотека с функциями, которая подружается допустим index.php. PHP откладывает функции и параметры в память и ждёт их вызова. 2)Таже самая библиотека, использует какие-то переменные, если обьявлены до функции они становятся доступными без обьявления в теле кода или конструкцией global 3)Если включен перехват переменных из запроса, они становятся глобальными для кода. И если вначале вы определили, что login="Вася", то можно переопределить запросом ...?login="Alex". Это я так к примеру. Для более понятного вот код:
4)Попробуйте в стандартном коде обьяснить, что вот эта переменная относится сюда, эта сюда...Заипетесь При ООП: 1)Пока не вызовите класс, откладываться в памяти ничего не будет 2)Да хоть десять, пока в класс не пропишите, ему будет побоку 3)Читай 2. 4)Решение усложнения структуры класса решает и этот вопрос. Это так на пальцах. Если у вас приложение простое - а под простым приложением понимается не количество кода в строках(комментарии тоже бывают как целый FAQ), а: 1)У вас нет библиотек не написанных вами или библиотек динамических которые подружаются в зависимости от ситуации. 2)Количество библиотек не более 10 3)Количество переменных глобальных не большое 4)Если есть шаблоны, то вкладки и выкладки шаблонов при результате не превышает трех уровней Используйте смело ПОП. Он там не нужен. Для остального юзайте классы. PS: Рекомендую использовать классы так же для построенние модельных и пост-модульных систем. Другим программистам будет проще писать дополнения. Это сообщение отредактировал(а) Oflashp - 2.8.2007, 22:16 |
|||
|
||||
WIPS |
|
|||
Бывалый Профиль Группа: Участник Сообщений: 199 Регистрация: 22.5.2006 Где: Украина, Киев Репутация: 1 Всего: 8 |
Как это не придумали? А JavaScript? A Ada95+? Не всегда. Понятие "класс" для ООП в принципе не является обязательным. --------------------
Автопроизводители, машины, марки, модели! |
|||
|
||||
Daevaorn |
|
|||
Эксперт Профиль Группа: Комодератор Сообщений: 2155 Регистрация: 29.11.2004 Где: Москва Репутация: 1 Всего: 70 |
||||
|
||||
WIPS |
|
|||
Бывалый Профиль Группа: Участник Сообщений: 199 Регистрация: 22.5.2006 Где: Украина, Киев Репутация: 1 Всего: 8 |
--------------------
Автопроизводители, машины, марки, модели! |
|||
|
||||
Daevaorn |
|
|||
Эксперт Профиль Группа: Комодератор Сообщений: 2155 Регистрация: 29.11.2004 Где: Москва Репутация: 1 Всего: 70 |
python например с потрясающим рефлекшином. благодаря тому, что все классы сами объекты, к атрибутам которых можно получить доступ и всячески менять. в php увы пока такого нет Это сообщение отредактировал(а) Daevaorn - 3.8.2007, 02:10 |
|||
|
||||
Fally |
|
|||
Опытный Профиль Группа: Участник Сообщений: 265 Регистрация: 17.8.2006 Где: Dahla Репутация: нет Всего: 4 |
Это - Я-З-Ы-К-И П-Р-О-Г-Р-А-М-М-И-Р-О-В-А-Н-И-Я. Но никак не концепции программирования. Что за бред? Названия и определения терминов ООП учите. Вот специально для Вас (и не только): 1) Под классом подразумевается некая сущность, которая задает некоторое общее поведение для объектов. /Википедия 2) Под объектом подразумевается некоторая сущность, обладающая состоянием и поведением. Как правило при рассмотрении объектов выделяется, что объект принадлежат одному или нескольким классам, которые в свою очередь определяют поведение объекта. /Википедия/ З.Ы. Механизм отражений (reflection) в РНР есть тоже. Это сообщение отредактировал(а) Fally - 3.8.2007, 10:55 |
|||
|
||||
SamDark |
|
|||
Добрый кот Профиль Группа: Участник Сообщений: 1424 Регистрация: 25.7.2006 Где: Voronezh Репутация: 1 Всего: 38 |
WIPS, Fally,
В JavaScript нет ОО в привычном понимании. т.е. классов и объектов. Там совершенно другой принцип, основаный на прототипах. Вот там как раз с натяжкой можно сказать, что "класс сам является объектом", хотя сравнивать прототипное программирование с классическим ОО, а тем более приводить к нему, как многие делают, некорректно. Это сообщение отредактировал(а) SamDark - 3.8.2007, 11:29 -------------------- rmcreative.ru — Это жжж неспроста... yiiframework.ru — О фреймворке Yii на русском. reggi — здесь я регистрирую домены |
|||
|
||||
Mal Hack |
|
|||
Мудрый... Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 1 Всего: 261 |
Oflashp, мы тут с позиции теории разговариваем, а вы нам снова про практику..
Бред. Яйца без курицы не бывает. Объект нельзя создать без его определения. Другое дело, когда система в программе заранее создает объект по своим прототипам. |
|||
|
||||
Daevaorn |
|
|||
Эксперт Профиль Группа: Комодератор Сообщений: 2155 Регистрация: 29.11.2004 Где: Москва Репутация: 1 Всего: 70 |
А Вам бы я посоветовал не писать о том о чем не знаете. А то в лужу сели. Всё это справедливо для классов в языке python. О чем я и написал выше. Умейте слушать. Да, но не настолько гибкийи функциональный. На что я тоже уже посетовал. Если бы токой появился в php жить стало бы веселения. И в частности ORM было бы делать проще. |
|||
|
||||
Oflashp |
|
|||
Новичок Профиль Группа: Участник Сообщений: 34 Регистрация: 2.8.2007 Где: Россия, Санкт-Пет ербург Репутация: нет Всего: 2 |
Я же написал, что я прочитал первые 3-4 страницы топика, больше не выдержил. Да и у меня сложен так ум, что проще понять примерами, чем теорией. А вообще сложно назвать ваше обсуждение теорией. Уже обсуждение в стиле: "Начали про то, как установить унитаз, заканчиваете о том, как сделать ремонт во всём туалете." P.S: Ничего личного. P.S2: Остаюсь скромным наблюдателем Это сообщение отредактировал(а) Oflashp - 3.8.2007, 12:28 |
|||
|
||||
Mal Hack |
|
|||
Мудрый... Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 1 Всего: 261 |
Я точно также, но есть некоторые теоретические аспекты, которые надо понять, как теорию.. В догонку. Не знаю как и что в Питоне реализовано, но надо отдавать себе отчет, что сегодня, фактически используются 2 модели ООП. Первая - чисто ООПшная модель - используемая в визуальном программировании, где присутствует принцип событийности, немаловажный для ООП, как вид взаимодействия объектов. Вторая - информационная, как в ПХП, например, где объект в коде программы не отождествляется с каким-то вещественным субъектом, кнопкой и т.п., т.е. носит, фактически, информационный, сугубо механико-рабочий характер. Питон, если я не путаю, из того, что я о нем слышал, относится к первой категории. |
|||
|
||||
Daevaorn |
|
|||
Эксперт Профиль Группа: Комодератор Сообщений: 2155 Регистрация: 29.11.2004 Где: Москва Репутация: 1 Всего: 70 |
ну я бы не стал так разделять. В конце концов, что мешает мне реализовать событийную ситему в php. Ничего. Поэтому это не модели, а лишь способ применения. И зависит от решаемой задачи. |
|||
|
||||
Mal Hack |
|
|||
Мудрый... Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 1 Всего: 261 |
Да, разделение - условное. Нов от в PHP вы не можете использовать событийность, связанную с графисечким интерфейсом - раз. Два, любоую событийность, как взаимодействие между объектами, вы должны, в случае PHP, полностью отпрограммировать сами, а в том, первом случае, о чем я писал выше, механизм событий, реализовывается через системное API.
|
|||
|
||||
SamDark |
|
|||
Добрый кот Профиль Группа: Участник Сообщений: 1424 Регистрация: 25.7.2006 Где: Voronezh Репутация: 1 Всего: 38 |
Mal Hack,
Можем мы использовать событийность, связанную с графическим интерфейсом. AJAX нам на что? Если не хочется программировать событийную модель самостоятельно - можно всегда использовать фреймворк... благо они есть. -------------------- rmcreative.ru — Это жжж неспроста... yiiframework.ru — О фреймворке Yii на русском. reggi — здесь я регистрирую домены |
|||
|
||||
Daevaorn |
|
|||
Эксперт Профиль Группа: Комодератор Сообщений: 2155 Регистрация: 29.11.2004 Где: Москва Репутация: 1 Всего: 70 |
Допустим событийная система реализована в биндингах GUI библиотек для в php, в частности в PHP-GTK. А именно системное API конечно есть, но не так уж и частно встречается, сразу на ум приходит Delphi. Так что я не совем соглашусь, что имеено это делит ООП на модели.
|
|||
|
||||
Oflashp |
|
|||
Новичок Профиль Группа: Участник Сообщений: 34 Регистрация: 2.8.2007 Где: Россия, Санкт-Пет ербург Репутация: нет Всего: 2 |
AJAX - JavaScript, который мы моем лишь связать с PHP. Точнее PHP использует не своё средство представления событийности |
|||
|
||||
vasac |
|
||||
Эксперт Профиль Группа: Завсегдатай Сообщений: 1060 Регистрация: 4.5.2006 Репутация: нет Всего: 36 |
Присоединюсь к чату
В JavaScript есть ОО. Если под привычным пониманием понимается "классориентированная версия ООП, к которой привыкло большинство", то, да, такого нет. Но объектно-ориентированное программирование, это программирование с ориентированием на объекты . На объекты и их взаимодействие. А классы тут не причем.
Питон как раз ближе к прототипному ООП, а классы там, видимо, в основном для того, чтобы не слишком пугать людей, как в JS. |
||||
|
|||||
Mal Hack |
|
||||
Мудрый... Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 1 Всего: 261 |
Событийность имеется ввиду во время работы скрипта, а тот же Ajax просто вызывает скрипт PHP по какому-то действию, а вот внутри PHP событийности нет.
Не совсем понял мысль. Как я уже говорил, разделение, о котором говорил я - условное в том плане, что концепция - одна, но вот практический смысл, технические возможности - разные (в одном более широкие, в другом ваианте более маленькие). Без класса нет объекта!!! JS либо должна в себе содержать внутри определения классов, либо она просто дает синтаксис, близкий к ООП... |
||||
|
|||||
vasac |
|
|||
Эксперт Профиль Группа: Завсегдатай Сообщений: 1060 Регистрация: 4.5.2006 Репутация: нет Всего: 36 |
А вот и есть Синтаксис она как раз дает далекий от "классического" ООП. Но в том чтобы следовать принципам ООП это ей не мешает. |
|||
|
||||
WIPS |
|
||||||||||||
Бывалый Профиль Группа: Участник Сообщений: 199 Регистрация: 22.5.2006 Где: Украина, Киев Репутация: 1 Всего: 8 |
JavaScript я привел как пример концепции прототипного наследования, к тому же в этой концепции нет классов. Ada95 - пример реализации концепции статической типизации (по умолчанию запрещено наследование).
Потрудитесь почитать собственную ссылку 10 строками ниже и увидите: "...объекты являются экземплярами некоторого заранее описанного класса (однако например в таком языке как JavaScript понятие класс не используется вовсе)..." Fally, не нервничайте, просто попытайтесь понять о чем говорит собеседник. И не надо такого к-ва заглавных букв, это плохой тон.
Во-первых, не надо приписывать мне слова "класс сам является объектом". Я такого не говорил и пока даже не видел (хотя не скрою, мне эта тема показалась интересной). Во-вторых, я прекрасно осведомлен о тех принципах на которых базируется объектная модель в JavaScript (JS). В-третьих, никто здесь не говорил, что надо приводить прототипную модель наследования к классической (как я понимаю вы имеете в виду сиобразную). Вобщем, внимательнее читаем посты и не выдумываем того, чего нет.
Пожалуйста, не давите меня такими сильными аргументами как "бред" и "яйца без курицы не бывает". В JS объект может определяться во время создания. Причем его как вы выражаетесь "опеределение" может изменяться по ходу выполнения программы. Где здесь бред? Где "система в программе заранее создает объект по своим прототипам"? Давайте не будем опускать довольно мощный язык (и представляемую им концепцию) до уровна onclick="" и getElementById, только потому, что в основном он исп-ся в браузерах.
Событийность таки есть, взять хотя бы сокеты, можно их слушать, можно реагировать на изменение их состояния.
ООП - это три принципа (наслед-е, инкапсуляция, полиморфизм), надеюсь с этим никто спорить не станет. Все эти 3 принципа реализованы в JS, есть и объекты, но при этом нет классов. Что вы имеете в виду под словами "должна в себе содержать внутри определения классов"? Нет в JS классов ни внутри, ни снаружи, и не нужны они там. Либо у нас с вами разные определения слова "класс"... --------------------
Автопроизводители, машины, марки, модели! |
||||||||||||
|
|||||||||||||
Mal Hack |
|
||||||||
Мудрый... Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 1 Всего: 261 |
Определение этого класса, так или иначе, должно быть, оно зашито в движок JS. В противном случае это структура с синтаксисом объектного доступа + изменяемость.
Эта событийность реализуется ручками, от и до...
Я уже писал выше... Удосужтесь еще раз почитать... С точки зрения практической реализации ООП вы правы, но по большому счету - нет.
Если вы работали в Делфи, то я имею ввиду TObject, определенный в самом языке, а не тот, который определяете вы. |
||||||||
|
|||||||||
Daevaorn |
|
|||
Эксперт Профиль Группа: Комодератор Сообщений: 2155 Регистрация: 29.11.2004 Где: Москва Репутация: 1 Всего: 70 |
||||
|
||||
vasac |
|
|||
Эксперт Профиль Группа: Завсегдатай Сообщений: 1060 Регистрация: 4.5.2006 Репутация: нет Всего: 36 |
Все-таки, чисто имхо, в ОО-программировании важно взаимодействие объектов, а не их родословная. Объекты взаимодейтвуют друг с другом через представляемый интерфейс. А откуда взялся этот интерфейс, от статической иерархии классов или от цепочки прототипов, тому кто его использует должно быть безразлично. Поэтому, опять таки имхо, понятие "объект", важнее, понятия "класс".
"Класс", это наследие жесткой типизации, что есть ограничение компилирующих языков (хотя многие скажут, что это благо, а не ограничение). В C++ нужна эта иерархия, чтобы на этапе компиляции преобразовать вызовы функций в переходы на нужный участок памяти. А в PHP уже и не нужно, там наследование классов, просто позволяет более легко строить эти классы. А если нужно вызвать какой-то метод объекта, то важно только само наличие этого метода у объекта, а не принадлежность его какому-то классу. С абстрактной точки зрения, классовое наследование похоже на прототипное. Класс содержит набор свойств и методов и ссылку на родительский класс. При вызове метода объекта, он ищется в его классе, если там нет - в предке. Пускай в компилирующих языках это делается не совсем так и не на этапе исполнения, но сама суть та же. Класс определяет набор однотипных объектов. Однако, уже в PHP это не совсем так. Т.к. как там в начала цепочки поиска ставится сам объект. С учетом того, что в него можно добавлять свойства, а так же устроить перехват несуществующих методов, то все становится не так четко. Объект, в который добавлены новые свойства, уже не совсем объект того класса, от которого наследован, он не до конца подобен другим объектам того же класса. А в прототипном наследовании нет цепочки классов, там цепочка объектов. Главное отличие - это не абстрактные структуры, а именно объекты с которыми можно работать, как обычно. И в движок не зашито никаких определений классов, там есть предопределенные объекты для конкретных типов, которые можно спокойно изменять. Преимущества такого подхода (во всяком случае для области применения подобных языков, это преимущества): - Можно создавать набор похожих, но несколько различных по поведению объектов, не создавая при этом громоздкую иерархию классов и не таская её вместе с программой (очень важно для JS) - Можно динамически изменять (дополнять) поведение объектов определенного "типа" путем изменения прототипа (для JS с обилием предопределенных объектов и различными реализациями в браузерах, очень полезно) - Можно динамически изменять иерархию наследования (конкретно в JS нельзя) - Утиная типизация значительно повышает гибкость. Это не совсем к прототипам, но тоже то, чего нет в "классическом" ООП. Т.о. "классы", отнюдь не такая необходимая вещь. |
|||
|
||||
Mal Hack |
|
|||
Мудрый... Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 1 Всего: 261 |
||||
|
||||
Daevaorn |
|
|||
Эксперт Профиль Группа: Комодератор Сообщений: 2155 Регистрация: 29.11.2004 Где: Москва Репутация: 1 Всего: 70 |
а система это что? Библиотека VCL, которая тоже написана ручками, которая обработчик нажатия на кнопку и запускает. Другое дело что на самом низком уровне можно забиндить методы на события Windows, но напряму к интерфейсу это не относится. Так что пример половинчатый. Это сообщение отредактировал(а) Daevaorn - 4.8.2007, 15:08 |
|||
|
||||
WIPS |
|
||||||||||||
Бывалый Профиль Группа: Участник Сообщений: 199 Регистрация: 22.5.2006 Где: Украина, Киев Репутация: 1 Всего: 8 |
Это аксиома? Почему вы так твердо убеждены, что без классов не может быть объектов? С тем, что написал vasac, здесь вы тоже не согласны? Если бы эта событийность реализовывалась библиотекой от MS это бы считалось для вас "настоящей" событийностью?
Если рассматривать класс чисто как тип данных, то можно сказать, что они есть в JS (это будут классы "number", "string", "boolean", "object", "function", "undefined"). Но следуя этой логике можно сказать, что классы есть в любом языке, в котором хотя бы различаються типы данных число и строка.
Пожалуйста в след. раз дайте ссылку на то, что я дожен почитать (перечитывать все страницы в поисках одного поста довольно утомительно), но тем не менее я почитал еще раз и вот что нашел:
Вы говорите тоже, что и я... Почему я не прав по "большому счету"? Серьезно, без обид, объясните в чем моя ошибка. А если вы имели в виду это:
, то это ваше личное определение ОПП, которое вы почемуто считаете за аксиому. А о надобности классов в концепции ООП я с вами согласиться не могу, т.к. пока не увидел доказательтсва этого. --------------------
Автопроизводители, машины, марки, модели! |
||||||||||||
|
|||||||||||||
WolfON |
|
|||
Опытный Профиль Группа: Участник Сообщений: 604 Регистрация: 19.7.2004 Репутация: нет Всего: 8 |
имхо, ооп - система описания взаимодействия объектов на основе их реальных сущностей.
а классы, инкапсуляция и все остальное - это средства для их описания. WIPS, +1 |
|||
|
||||
Zeroglif |
|
|||
Опытный Профиль Группа: Участник Сообщений: 644 Регистрация: 22.9.2005 Репутация: нет Всего: 66 |
OOP - общая парадигма, под крышей которой должны сосуществовать разные языки. Приверженцы CBLs (class-based languages) обожают обвешивать общую парадигму своими собственными фишками (только классы, без классов нет ООП вообще и т.п.), что автоматически отрицает существование других объектно-ориентированных языков, в которых просто нет классов, как таковых, тех же PBL (prototype-based languages). Это несеръёзно. PBLs, замечательным представителем которых является тот же javascript или SELF, строят свою концепцию именно на отстутствии какого-либо разграничения "класс-экземпляр", старательно выравнивая объекты.
|
|||
|
||||
Mal Hack |
|
||||||||||||||
Мудрый... Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 1 Всего: 261 |
Потому что ни одна переменная не может существовать без своего описания, быть не типизированной.
Дело не в MS. Я имею ввиду то, что механизм возникновения событий и передача управления обработчкику Вами как программистом уже не программируется, и что этот механизм уже отпрограммирован и находится в системе.
Потому, что вы видете сразу к практике, забывая о теоретичекой сущности самого ОО подхода. Эти три принципа - те вещи, которые делают ООП именно ООП, но с практической точки зрения. Но они являются лишь следствие объектно-ориентированной концепции, подхода, которая подразумевает под собой определенный вид взаимодействия объектов, определенные этапы разработки и их стадии. И эти три принципа позволяют эту теорию осуществить на практике.
А разве класс не тип данных? Да, и в Паскале и в Бэйсике, наверное, есть классы, и в ПХП. Но, позволяются ли классы в паскале, как и в ПХП, полностью использовать мощь ООП? Отюсда и то, небольшое разделение о котором я говорил. Делфи и Паскаль, к примеру. Классы есть и там и там, а вот в каком из них реализуется ООП концепия - как раз тот самый вопрос. ПыСы, мог перепутать наличие классов в Паскале с Сями(С++) в консоли... Очень давно с класическим паскалем не работал.
Не то, чтобы за аксиому, просто на сегодняшний денья не вижу таких моментов, которые "убивали" бы какие-то мои высказывания. Так уж получилось, что я расматриваю программирование не только с позиции практики, но и с позиции теории, проектирования, построения моделей, а посему, считаю не правильным отделение теоретических, пусть и небольших, основ от практического применения. Хоть программирование и сугубо практическая вещь, но малая доля теории все же есть. По крайней мере, я хорошо помню, как для меня отличался процесс проектирования программы в консоли (структурне программирование) от визуального (можно сказать объектного)..
В концепции ООП классы и не присутствуют. Классы, как я уже говорил выше - это описание системы, если хотите, объекта, уже в практической части, которые позволяют реализовать эту концепцию. |
||||||||||||||
|
|||||||||||||||
sTa1kEr |
|
||||
9/10 программиста Профиль Группа: Завсегдатай Сообщений: 1553 Регистрация: 21.2.2007 Репутация: 2 Всего: 146 |
События - это, по сути, всего-лишь коллекция делегатов, вызываемых поочередно. По этому это совершенно не принципиально.
|
||||
|
|||||
Mal Hack |
|
|||
Мудрый... Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 1 Всего: 261 |
Не согласен. События - вид взаимодействия объектов друг с другом или реакции на какие-то внешние воздействия, механизм которых не реализуется самим программистом. Ты же просто вызвал метод и все. |
|||
|
||||
sTa1kEr |
|
||||||
9/10 программиста Профиль Группа: Завсегдатай Сообщений: 1553 Регистрация: 21.2.2007 Репутация: 2 Всего: 146 |
Подписка/отписка на событие заключается в добавлении/удалении делегата в/из коллекцию. Вызов события, соответственно, инициализирует вызов всех подписанных событий. Это и есть механизм событий. И не важно реакция это на внешнее воздействие или часть внутренней логики. Иначе хотелось бы услышать аргументированный ответ.
Это все отличие на примере C#. Да, в PHP это делается явно, а в C# об этом заботится компилятор, но суть от этого не меняется. |
||||||
|
|||||||
Mal Hack |
|
|||
Мудрый... Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 1 Всего: 261 |
||||
|
||||
WIPS |
|
||||||||||||
Бывалый Профиль Группа: Участник Сообщений: 199 Регистрация: 22.5.2006 Где: Украина, Киев Репутация: 1 Всего: 8 |
Если рассматривать класс чисто как тип данных, то я с вами соглашусь.
То, что вы называете ООП подходом в проектировании, все таки отличается от ООП подхода в чисто программировании (читай кодинге, или то что вы называте "чисто практической точкой зрения"). Да, при проектировании приложения выделяются сущности (насколько я понял, именно их вы называете классами в этом случае), способы, варианты их взаимодействия и пр.. На основе их в коде появляются классы (если это CBL) или сразу объекты (если это PBL). От бизнес логики приложения никуда не деться, такие "классы" будут в любом приложении.
В паскале есть классы. Только по иронии судьбы для их описания используется ключевое слово "оbject" =)
Не вижу приципиальных отличий в проектировании визуального и консольного приложения... Взять, например виндовый notepad и тот-же vim, логика приложений в принципе одинаковая, в чем разница при проектировании?
В таком понимании класс больше походит на интерфейс, т.е. описания возможностей объекта и способов взаим-я с ним.
sTa1kEr, +1. --------------------
Автопроизводители, машины, марки, модели! |
||||||||||||
|
|||||||||||||
SamDark |
|
||||
Добрый кот Профиль Группа: Участник Сообщений: 1424 Регистрация: 25.7.2006 Где: Voronezh Репутация: 1 Всего: 38 |
Mal Hack,
Кстати, в PHP5 есть уже реализованная событийная модель: http://www.php.net/~helly/php/ext/spl/inte...plObserver.html http://www.php.net/~helly/php/ext/spl/inte...SplSubject.html
Даст нам:
-------------------- rmcreative.ru — Это жжж неспроста... yiiframework.ru — О фреймворке Yii на русском. reggi — здесь я регистрирую домены |
||||
|
|||||
Diesel Draft |
|
|||
Опытный Профиль Группа: Участник Сообщений: 876 Регистрация: 18.1.2005 Где: Lviv, Ukraine Репутация: -1 Всего: 5 |
SamDark, +1
|
|||
|
||||
Mal Hack |
|
||||||||||
Мудрый... Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 1 Всего: 261 |
Не могу согласиться с тобой. Практика реализует теорию, и иначе быть не может. Да, при проектировании ты смотришь на предметную область, при реализаци уже на программные единицы - объекты, которыми оперируешь, но без первого второго не будет. В это и смылс, имхо, ООП как концепции, которая очень удачно совмещает теорию с практикой в результате чего получаем на практике те возможности, которые имеем.
Да, да, вроде так.
В консоли, фактически, ты используешь четко структурное программирование, в визуальном, где есть полная событийность, ты уже мыслишь по другому, в том плане, что при структурном ты НЕ можешь куда-либо перескочить, т.е. последовательность действий, отчасти - ограничена, а в визуальном, используя событийность ты в принципе не ограничен в выполнени действий. Т.е. ты видишь работу программы, как общую схему взаимодействия, а не как четкую последовательность действий.
А разве это не так? Разве классы не дают именно этого?
Я не говорю, что в ПХП событийности нет. Я говорю, что ее полностью надо самому реализовывать. PS: а хорошая дискуссия получается ;) |
||||||||||
|
|||||||||||
vasac |
|
|||
Эксперт Профиль Группа: Завсегдатай Сообщений: 1060 Регистрация: 4.5.2006 Репутация: нет Всего: 36 |
Оттого, что класс что либо дает, не значит, что это не может быть получено без использования класса. |
|||
|
||||
SamDark |
|
|||
Добрый кот Профиль Группа: Участник Сообщений: 1424 Регистрация: 25.7.2006 Где: Voronezh Репутация: 1 Всего: 38 |
Mal Hack,
Не нравится самому - используем фреймворки. p.s. на object pascal тоже можно без vcl писать... -------------------- rmcreative.ru — Это жжж неспроста... yiiframework.ru — О фреймворке Yii на русском. reggi — здесь я регистрирую домены |
|||
|
||||
Mal Hack |
|
|||
Мудрый... Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 1 Всего: 261 |
При чем тут фрэймворки... Можно, но опять при чем тут это? Ты же использует TObject тот же, если надо что-то визуальное сделать.
Переменная может быть без своего определения? нет. Другое дело, что она определяется самим языком, а не программистом. |
|||
|
||||
Daevaorn |
|
|||
Эксперт Профиль Группа: Комодератор Сообщений: 2155 Регистрация: 29.11.2004 Где: Москва Репутация: 1 Всего: 70 |
||||
|
||||
Mal Hack |
|
|||
Мудрый... Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 1 Всего: 261 |
||||
|
||||
egao |
|
|||
Шустрый Профиль Группа: Участник Сообщений: 109 Регистрация: 6.8.2007 Репутация: нет Всего: нет |
TObject - это не более чем корневой объект фреймворка VCL, который существует не только для дельфей, но и для сей и для пхп.
искать по словам delphy for php - там и события и визуальный редактор и тп плюшки. на уровне языка никаких событий нет. насколько мне известно на уровне языка события есть только в аспектно-ориентированных языках. и не надо отделять Объектно Ориентированное Программирование от собственно программирования и оттаскивать его в сторону проектирования. для проектирования существует uml и иже с ним. для программирования важны объекты и их взаимосвязи. классы не в тему совершенно. классы позволяют дополнительно типизировать объекты. а нафига? концепция объектов - это концепция умных данных. то есть в идеале внешнему коду должно бы глубоко пох какой там у объекта тип - главное, чтобы он поддерживал необходимый интерфейс. отсюда вывод: классы - откровенно вредная сущность с которой нужно бороться. и ещё, в пыхе класс фактически является объектом-синглетоном. банально потому, что он умеет хранить в себе данные, то есть ведёт себя как объект. Это сообщение отредактировал(а) egao - 6.8.2007, 20:42 |
|||
|
||||
WIPS |
|
||||||||||
Бывалый Профиль Группа: Участник Сообщений: 199 Регистрация: 22.5.2006 Где: Украина, Киев Репутация: 1 Всего: 8 |
Да, одно зависит от другого, но не всегда теория прямо проецируется в код. Просто в CBL отличия между моделью, описывающей логику и программной моделью невелики, а PBL они больше, вот и все.
Нет никаких отличий в событийности консольного приложения и визуального. Какая разница, вызывается обрабочик событий по клику мышкой или при нажатии комбинации клавиш?! Да и вобще события не обязательно порождаются пользователем, опять же сокеты, программные и аппаратные прерывания и пр. Извини, но твои аргументы в пользу разделения программ на визуальные и консольные меня совершенно не убедили. Дают. Но, что если интерфейс объекта может меняться во время исполнения программы? Тут классы совершенно не годятся.
Согласен.
Не согласен. Всякая вещь полезна если ею правильно пользоваться. И классы не исключение. Но и не панацея от всего.
Если ты про статические члены класса, то ты прав. Однако в данном случае это идет только на пользу. Кстати, как-то пытался использовать такую возможность в ObjectPascal и не нашел... мож ее там и нет? --------------------
Автопроизводители, машины, марки, модели! |
||||||||||
|
|||||||||||
SamDark |
|
|||
Добрый кот Профиль Группа: Участник Сообщений: 1424 Регистрация: 25.7.2006 Где: Voronezh Репутация: 1 Всего: 38 |
Mal Hack,
TObject, как уже было сказано, не более чем корневой объект фреймворка VCL. Это не базовый объект языка. -------------------- rmcreative.ru — Это жжж неспроста... yiiframework.ru — О фреймворке Yii на русском. reggi — здесь я регистрирую домены |
|||
|
||||
WolfON |
|
|||
Опытный Профиль Группа: Участник Сообщений: 604 Регистрация: 19.7.2004 Репутация: нет Всего: 8 |
SamDark,
Не VCL единым.
http://ru.wikipedia.org/wiki/TObject http://www.delphisources.ru/pages/faq/faq_...Object.php.html В большинстве языков с элементами ООП применен принцип базового класса - все остальне которые являются его наследником. А в похапэ такого нет - да это особо и не нужно. Это сообщение отредактировал(а) WolfON - 7.8.2007, 12:40 |
|||
|
||||
Mal Hack |
|
||||||||
Мудрый... Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 1 Всего: 261 |
Согласен, но согласись, в любом случае, практическая реализация в той или иной степени все равно основывается на теоретических понятиях. На них можно и забить, но вот работоспособность, точнее безопасность и оптимальность кода будут большим вопросом стоять.
Ты не совсем меня понимаешь. Я имею ввиду не вызов события, так сказать, как сам факт его появления - клик мышкой по кнопке, а механизм передачи управления, в зависимости от события, определенному программному коду (методу, функции и т.д.).
Да, так, но если честно, не совсем могу себе представить задачу, где бы это было бы необходимо.
Это базовый класс для описания визуальных объектов в среде OP... |
||||||||
|
|||||||||
Daevaorn |
|
|||
Эксперт Профиль Группа: Комодератор Сообщений: 2155 Регистрация: 29.11.2004 Где: Москва Репутация: 1 Всего: 70 |
||||
|
||||
Mal Hack |
|
|||
Мудрый... Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 1 Всего: 261 |
||||
|
||||
Daevaorn |
|
|||
Эксперт Профиль Группа: Комодератор Сообщений: 2155 Регистрация: 29.11.2004 Где: Москва Репутация: 1 Всего: 70 |
||||
|
||||
SamDark |
|
|||
Добрый кот Профиль Группа: Участник Сообщений: 1424 Регистрация: 25.7.2006 Где: Voronezh Репутация: 1 Всего: 38 |
Daevaorn,
Кстати, гадость ещё та т.к. тормознутая из-за дополнительных запросов... -------------------- rmcreative.ru — Это жжж неспроста... yiiframework.ru — О фреймворке Yii на русском. reggi — здесь я регистрирую домены |
|||
|
||||
Daevaorn |
|
|||
Эксперт Профиль Группа: Комодератор Сообщений: 2155 Регистрация: 29.11.2004 Где: Москва Репутация: 1 Всего: 70 |
||||
|
||||
Mal Hack |
|
|||
Мудрый... Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 1 Всего: 261 |
||||
|
||||
SamDark |
|
|||
Добрый кот Профиль Группа: Участник Сообщений: 1424 Регистрация: 25.7.2006 Где: Voronezh Репутация: 1 Всего: 38 |
-------------------- rmcreative.ru — Это жжж неспроста... yiiframework.ru — О фреймворке Yii на русском. reggi — здесь я регистрирую домены |
|||
|
||||
Daevaorn |
|
|||
Эксперт Профиль Группа: Комодератор Сообщений: 2155 Регистрация: 29.11.2004 Где: Москва Репутация: 1 Всего: 70 |
||||
|
||||
Mal Hack |
|
|||
Мудрый... Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 1 Всего: 261 |
С фреймворками не работал, к сожалению, либо очень мало и не на PHP...
|
|||
|
||||
Fally |
|
|||
Опытный Профиль Группа: Участник Сообщений: 265 Регистрация: 17.8.2006 Где: Dahla Репутация: нет Всего: 4 |
Daevaorn, кстати, меня всё интересует... все хвалят ORM... как я понял, то с его помощью можно и загружать данные из базы в объект. Если я правильно понял, то вопрос: Откуда гарантия что запрос к БД будет оптимальным с точки зрения производительности?
|
|||
|
||||
Daevaorn |
|
|||
Эксперт Профиль Группа: Комодератор Сообщений: 2155 Регистрация: 29.11.2004 Где: Москва Репутация: 1 Всего: 70 |
такой гарантии нет. все зависит от авторов ORM библиотеки. благо их щас развелось достаточно много и есть из чего выбрать. но всё равно в нетривиальной ситуации оптимальный запрос напишет только сам человек. поэтому иногда приходится ручками до SQL снисходить. обычно для этого тоже предусмотрены специальные инструменты, которые позволяют даже на основе "ручных" запросов создавать в итоге объекты. Зато ORM очень выручает, когда сложных запросов не много и нужно просто получить список неких объектов без сложных условий. ну и бесплатно получается некая структурность кода |
|||
|
||||
WIPS |
|
||||
Бывалый Профиль Группа: Участник Сообщений: 199 Регистрация: 22.5.2006 Где: Украина, Киев Репутация: 1 Всего: 8 |
Согласен, забивать ни на что нельзя. Все потом боками вылезает.
В одном случае этот механизм реализуется ручками, в другом автоматически, однако у нас по прежнему остается набор входных воздействий и реакций на эти воздействия. --------------------
Автопроизводители, машины, марки, модели! |
||||
|
|||||
SamDark |
|
|||
Добрый кот Профиль Группа: Участник Сообщений: 1424 Регистрация: 25.7.2006 Где: Voronezh Репутация: 1 Всего: 38 |
Mal Hack,
Я выше дал ссылку на propel. Наверное зря... штука пугающая. Лучше ORM посмотреть на ezpdo. Там всё проще и без заморочек... -------------------- rmcreative.ru — Это жжж неспроста... yiiframework.ru — О фреймворке Yii на русском. reggi — здесь я регистрирую домены |
|||
|
||||
Mal Hack |
|
|||
Мудрый... Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 1 Всего: 261 |
||||
|
||||
SamDark |
|
|||
Добрый кот Профиль Группа: Участник Сообщений: 1424 Регистрация: 25.7.2006 Где: Voronezh Репутация: 1 Всего: 38 |
Автомат тоже кто-то делал ручками. Что нам мешает один раз сделать и наслаждаться? -------------------- rmcreative.ru — Это жжж неспроста... yiiframework.ru — О фреймворке Yii на русском. reggi — здесь я регистрирую домены |
|||
|
||||
WIPS |
|
|||
Бывалый Профиль Группа: Участник Сообщений: 199 Регистрация: 22.5.2006 Где: Украина, Киев Репутация: 1 Всего: 8 |
Ничего не мешает. Я с этим и не спорю, а наоборот придерживаюсь этого мнения. --------------------
Автопроизводители, машины, марки, модели! |
|||
|
||||
chief39 |
|
|||
карманная тигра Профиль Группа: Участник Клуба Сообщений: 1631 Регистрация: 20.5.2005 Где: Киев Репутация: нет Всего: 77 |
"Чтобы понять рекурсию, надо понять рекурсию" )) -------------------- Люди - это свечи. Они либо горят, либо их - в жопу!(с) |
|||
|
||||
Diesel Draft |
|
|||
Опытный Профиль Группа: Участник Сообщений: 876 Регистрация: 18.1.2005 Где: Lviv, Ukraine Репутация: -1 Всего: 5 |
chief39,
+1 |
|||
|
||||
CyClon |
|
|||
Опытный Профиль Группа: Участник Сообщений: 838 Регистрация: 3.12.2005 Репутация: нет Всего: 4 |
Если писать CMS или что-то, что в дальнейшем будет очень часто модифицироваться, то естественно ООП. Если же нам нужно получить небольшой скрипт, который будет работать на большинстве платформ, причем быстро - тогда процедурное.
|
|||
|
||||
cccr85 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 43 Регистрация: 13.7.2010 Репутация: нет Всего: 2 |
Прочитал данную тему пока только до середины, и внесу свои 5 копеек.
Я программирую на php. Нигде не учился, все сам. И так, что мы имеем. Что такое класс? Нет это не class myClass {} а это КЛАСС каких либо повторяющихся вещей, предметов и т.д. Теперь что такое объект этого класса? Нет это не $Object = new myClass; А это один экземпляр класса. К чему я все это? А к тому что например у нас есть программа, которая работает например на компьютере пользователя, в этой программе есть например кнопочки, и практически все кнопочки похожи по своим характеристикам. Разнятся только действиями при клике на нее, надпись на кнопке. В итоге имеем один базовый класс кнопок, и классы которые расширяют базовый и говорят что делать при клике. Теперь для того чтобы создать сколько угодно кнопок, достаточно создать объект кнопки примерно так: $button = new myButton; // class myButton extends basicButton { $button->name = 'Моя кнопка'; // Текст на кнопке $window = new myWindow; $window->setButton($button); Все, кнопка отобразилась на окне, красота? Я думаю да. Понятно все? Да. ООП мне нравиться? Да. Ок. Разберем еще один пример, играем мы в стратегию, и там есть юниты, все они похожи, но кое в чем разнятся, ёмаё, да это еще один класс и его расширение. И таких примеров много!!! Но теперь вернемся к нашему php, я пока для себя нашел только один похожий на примеры выше код. Чуть предисловия: Класс базы данных. Раньше я делал так, создавал объект базы данных, в котором были методы конекта, отправки запроса, проверки данных, получения результата и т.д. На одном из форумов, или у кого то в библиотеки я подсмотрел идею что класс mysql должен только конектится, и делать запросы, а вот результат отдается в виде объекта, с которым я могу работать. Более того, при работе с результатом есть много общих действий для всего класса ответов на запросы, например освобождение памяти, получение размера, и т.д. Здесь ооп мне понравилось. Я понял его суть. В самом начале темы, говорили, что классы = набор функций заключенных в конструкцию class. Как я уже писал выше, класс это чуть другое. К сожалению других применений ООП в php я пока не вижу. В общем вот что я думаю. Добавлено через 4 минуты и 20 секунд
Позволю себе не согласиться, например все та же злосчастная кнопка является объектом!!! С ней удобно работать как с объектом. |
|||
|
||||
youri |
|
|||
Опытный Профиль Группа: Участник Сообщений: 740 Регистрация: 17.4.2004 Репутация: нет Всего: 16 |
отличить ООП-код от не-ООП на самом деле очень просто:
1. Берем исходники 2. Ищем полиморфизм ... PROFIT т.е. фактически сама задача определяет, будет ли использовано ООП. Нету юнитов - нету меда ;) по поводу событийности/визуальности... разделение, естественно, имеет место быть. Хорошо, а что важнее событийность или визуальность? Возьмем, например, java/c# в контексте веба. В php событийность - это запросы от сервера, только все объекты умирают от запроса к запросу. В java/c# это не так (насколько я знаю). Т.е. вроде как событийность есть, но нету визуальности... но в любом случае я не понимаю, почему это приводит к разделению на тру-ООП и нетру-ООП. Да, написание web- и десктопных приложений отличается. Но я бы сказал, что ООП - это в первую очередь подход к решению поставленной задачи. Да, это умирание объектов от запроса к запросу не вызывает к ним уважения. Но тем не менее, если ООП было удобно применить к некоторой задаче, значит она была решена с использование ООП по поводу ПОП... я думаю, что ООП - это продолжение ПОП, т.е. решение достаточно сложной задачи с помощью процедурного языка программирования в результате приведет к ООП-решению, несмотря на отсутствие в языке соответствующего синтаксиса |
|||
|
||||
SneG0K |
|
|||
Max Mara Профиль Группа: Завсегдатай Сообщений: 1887 Регистрация: 1.12.2007 Где: Wis Dells Репутация: нет Всего: 54 |
ООП - это гламурно
|
|||
|
||||
cccr85 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 43 Регистрация: 13.7.2010 Репутация: нет Всего: 2 |
А вообще тем кто хочет понять ооп, и тем кто хочет прокачать свой скил в программировании, советую посмотреть в сторону фреймворка. Начать лучше всего с code-igniter изучить его, по ссылке очень хорошая документация, когда читал про него, мне все нравилось, но в последствии многие вещи, я посчитал лишними, и не нужными. После того как изучен кодеигнитер, самое время посмотреть что нибудь повеселее, kohana полностью ООП, HMVC паттерн, и еще много вкусностей. Сейчас сделаю один проект на ней, и пойду изучать yii
|
|||
|
||||
NLspieler |
|
|||
Опытный Профиль Группа: Участник Сообщений: 619 Регистрация: 13.10.2008 Где: Берлин Репутация: нет Всего: 19 |
Совсем не обязательно все объекты должны умирать. Объекты-«долгожители» можно спокойно хранить в массиве $_SESSION и тогда им уже ничего больше грозить не будет Отсутствие событийности очень легко обходится при помощи javascript + ajax + php скрипт(ы), которые при разных запросах, будут производить разные действия, например, применять методы к объектам, которые хранятся в $_SESSION Впрочем, некая событийность есть даже при отсутствии javascript. Отправка формы или нажатие на get-ссылку: чем не событие? |
|||
|
||||
youri |
|
|||
Опытный Профиль Группа: Участник Сообщений: 740 Регистрация: 17.4.2004 Репутация: нет Всего: 16 |
такое впечатление, что ты, чтобы доказать что в php объекты не умирают, будешь всех их сериализовать/десериализовать в БД. Перечитай тему еще раз. java - это постоянно работающее приложение, которое отвечает на запросы, php - это набор скриптов, которые запускаются в результате запроса. Отсутствие событийности не надо обходить
|
|||
|
||||
Muerto |
|
|||
Эксперт Профиль Группа: Завсегдатай Сообщений: 1207 Регистрация: 23.9.2006 Репутация: нет Всего: 4 |
На самом деле нету Объектное вс процедурное...
это скорее объектное + процедурное вс только объектное... И здесь выигрывает однозначно объектное + процедурное... Без самых базовых типов, куда мы денимся... все равно отдельные части всегда будут в процедурном стиле, как бы нам не хотелось... |
|||
|
||||
bars80080 |
|
|||
прапор творюет Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: нет Всего: 315 |
||||
|
||||
NFL |
|
|||
Шустрый Профиль Группа: Участник Сообщений: 137 Регистрация: 5.5.2009 Репутация: нет Всего: нет |
||||
|
||||
Genn |
|
|||
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 7.12.2007 Где: Тамбов Репутация: нет Всего: нет |
> объектное vs процедурное
хм... исключительно в зависимости от проекта, от сложности и наследуемости объектов в нем |
|||
|
||||
Gold Dragon |
|
||||
Призрачный Профиль Группа: Экс. модератор Сообщений: 6753 Регистрация: 1.3.2004 Где: Россия, Тамбов Репутация: нет Всего: 71 |
Тема древняя и бестолковая Всё хорошо, и то и другое...
Лично я уже всегда использую объектное, процедурное только как "короткие формы" исключительно чтобы сократить код и для наглядности, например чтобы не писать это
достаточно сделать пару функций
Это сообщение отредактировал(а) Gold Dragon - 15.1.2013, 08:03 -------------------- Нельзя жить в прошлом, оно уже прошло. Нельзя жить в будущем, оно ещё не наступило. Нужно жить в настоящем, помня прошлое и думая о будущем! |
||||
|
|||||
xoptov |
|
|||
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 16.2.2008 Репутация: нет Всего: нет |
+1
Я не за "объектное vs процедурное", я за "объектное & процедурное". |
|||
|
||||
Deja_Vu |
|
|||
Шустрый Профиль Группа: Участник Сообщений: 88 Регистрация: 15.6.2007 Где: Казань Репутация: нет Всего: 2 |
Бред какой то. Тут большая часть вообще не понимает что такое ООП и с чем его едят.
Вот список вопросов для того, что бы оценить свои силы, в понимании ООП:
|
|||
|
||||
Gold Dragon |
|
|||
Призрачный Профиль Группа: Экс. модератор Сообщений: 6753 Регистрация: 1.3.2004 Где: Россия, Тамбов Репутация: нет Всего: 71 |
-------------------- Нельзя жить в прошлом, оно уже прошло. Нельзя жить в будущем, оно ещё не наступило. Нужно жить в настоящем, помня прошлое и думая о будущем! |
|||
|
||||
baldina |
|
|||
Эксперт Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: нет Всего: 101 |
||||
|
||||
Deja_Vu |
|
|||
Шустрый Профиль Группа: Участник Сообщений: 88 Регистрация: 15.6.2007 Где: Казань Репутация: нет Всего: 2 |
Это вопросы с которыми я столкнулся в процессе работы с людьми над большими проектами. Если человек не знает ответов на эти вопросы, значит и код его будет доставлять неприятности всей остальной команде. Вся процедурщина анархия вообще вытекает лишь тогда, когда человек не понимает для чего нужно ООП. В чём его предназначение. Если же человек понимает, тогда "объектное vs процедурное" вообще не стоит, ибо первое создано что бы снизить сложность понимания исходного кода продукта. Второй же подход не имеет инструментов что бы добиться снижения этой сложности, а потому в принципе не может больше подходить к разработке программных продуктов. Это сообщение отредактировал(а) Deja_Vu - 1.4.2013, 14:27 |
|||
|
||||
Gold Dragon |
|
|||
Призрачный Профиль Группа: Экс. модератор Сообщений: 6753 Регистрация: 1.3.2004 Где: Россия, Тамбов Репутация: нет Всего: 71 |
-------------------- Нельзя жить в прошлом, оно уже прошло. Нельзя жить в будущем, оно ещё не наступило. Нужно жить в настоящем, помня прошлое и думая о будущем! |
|||
|
||||
Deja_Vu |
|
|||
Шустрый Профиль Группа: Участник Сообщений: 88 Регистрация: 15.6.2007 Где: Казань Репутация: нет Всего: 2 |
Не совсем понял иронии. В принципе у программиста с большим опытом есть уже "чувство" когда и как лучше писать. Только вот понимать что ты делаешь надо. Иначе мне такие программисты напоминают алхимиков, которые пробовали ингредиенты на вкус для определения, чем они являются. |
|||
|
||||
baldina |
|
|||
Эксперт Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: нет Всего: 101 |
||||
|
||||
Gold Dragon |
|
|||
Призрачный Профиль Группа: Экс. модератор Сообщений: 6753 Регистрация: 1.3.2004 Где: Россия, Тамбов Репутация: нет Всего: 71 |
да вообще иронии нет.. Вот только как знание ответа на вопросы поможет в написании кода... Возьми с десяток проектов с абстрактными классами, всё реализовано но у всех по разному.. а мне больше всего хочется послушать вот по этому, особенно по второй части
-------------------- Нельзя жить в прошлом, оно уже прошло. Нельзя жить в будущем, оно ещё не наступило. Нужно жить в настоящем, помня прошлое и думая о будущем! |
|||
|
||||
Fortop |
|
|||
Эксперт Профиль Группа: Завсегдатай Сообщений: 2200 Регистрация: 13.11.2007 Где: Донецк Репутация: нет Всего: 42 |
Ну и как они связаны? Добавлено через 49 секунд
Почему по-умолчанию считается, что их использовать нельзя? -------------------- Мир это Я. Живее всех живых. |
|||
|
||||
krundetz |
|
||||||
Вечный странник Профиль Группа: Завсегдатай Сообщений: 1400 Регистрация: 14.6.2007 Где: НН(Сормово) Репутация: нет Всего: 69 |
а как вообще можно сравнивать эти этапы эволюции программирования? Процедурный подход, предшествовал структурному, а он в свою очередь предшествовал ООП. И все эволюционные этапы направлены именно на облегчение понимание большого объема исходного кода, а следовательно на облегчение его поддержки.
может использовать вместо должен слово может? если вопрос верен, и именно в этом слове подвох то, не должен.
все гораздо хуже, так как у алхимиков были не совершенные методы исследования. Но они были, а у этих и методов исследования нет никаких. Сегодня один такой деятель, пытался решить проблему ограничения времени выполнения скрипта на хостинге в 30 секунд при помощи введения вызова функции sleep(30). Я бы назвал таких людей не желающими смотреть куда тыкают своим пальцем, пусть это будет фекалии или высоковольтные провода. а почему можно? Это сообщение отредактировал(а) krundetz - 2.4.2013, 15:51 |
||||||
|
|||||||
baldina |
|
|||
Эксперт Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: нет Всего: 101 |
||||
|
||||
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | PHP: Избранное | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |