|
Модераторы: Aliance, skyboy, MoLeX, ksnk Страницы: (16) Все « Первая ... 7 8 [9] 10 11 ... Последняя »
( Перейти к первому непрочитанному сообщению ) |
|
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 |
||||
|
||||
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | PHP: Избранное | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |