Просмотр полной версии : ООП
Расскажите про ооп в пхп.
Что-то я не вижу особой надобности переходить на ООП.
ЧТо это даёт?
вечный спор
нужен или нет ООП...
решать прийдётся тебе...
потому что всё, что ты можешь услышать, это предвзятое мнение
моё мнение:
очень редко когда действительно оправдано создание класса... ОЧЕНЬ РЕДКО
95% всех ныне существующих классов стоило бы переписать в линейный код...
kompadre
22.07.2004, 02:25
nagash, помоему то что ты понимаешь под словом "линейный код" не совсем то чем он является на самом деле. Наверное ты за то что-бы перевести 95% классов в структурированный стиль. Если это так то я очень даже за =)
О линейном программирование можно ознакомиться здесь (http://www.dvo.ru/studio/linpro/lp1st/node3.html) :)
Мне тоже кажется, что лучше структурированный стиль.
Весь вопрос ведь в том для чего сделано ООП... Оно ведь сделано только для удобства программиста, чтобы он не держал всё в голове. Так что если большой проект, то ООП - однозначно, независимо от языка. Иначе потом заколебёшься ошибки исправлять.
ООП как средство борьбы с ошибками...
а можно пример?
Примера у меня нет, но по своему опыту скажу, что когда делаешь на ООП, то легче всё выходит. ООП помогает создать чёткую структуру проекта, а без этого никак.
Кстати в PHP нету ООП. PHP - объектно-основанный язык, т.е. там нет наследования, абстрактных классов, интерфейсов. Короче всего, что помогает "поставить на конвейер" работу программера.
Оригинал написал(а) Nucer
Примера у меня нет, но по своему опыту скажу, что когда делаешь на ООП, то легче всё выходит. ООП помогает создать чёткую структуру проекта, а без этого никак.
Кстати в PHP нету ООП. PHP - объектно-основанный язык, т.е. там нет наследования, абстрактных классов, интерфейсов. Короче всего, что помогает "поставить на конвейер" работу программера.
наверное забыл прочитать вот это?
http://www.php.net/zend-engine-2.php
ну ничего... прочитаешь, веселее станет =)
А блин, есть же ещё этот пхп 5. Про него то я и забыл.
Ну так ведь даже лучше...
Да-да-да.... Зенд-2 и всё такое... А на практике - глюкаво до безобразия. Опять таки - в теории ООП - рулит, а на практике возможностей PHP4 не хватает для нормального обджект-ориентинг, а на пятый я лично решусь перейти не раньше чем через год. В лучшем случае... Когда устаканится вся эта бодяга.
Оригинал написал(а) Dindin
Да-да-да.... Зенд-2 и всё такое... А на практике - глюкаво до безобразия. Опять таки - в теории ООП - рулит, а на практике возможностей PHP4 не хватает для нормального обджект-ориентинг, а на пятый я лично решусь перейти не раньше чем через год. В лучшем случае... Когда устаканится вся эта бодяга.
именно так пишут создатели. четвертый само собой. лично мне удобней. такого, чтобы занимало ресурсов столько, чтобы я вообще о них задумывался при частичном применении ооп, к сожалению, не писал. потому особо этим вопросом не задаюсь. а с пятым вообще жуть. переходить хочется. а без опыта - это ничего. время =(
считаю, что дает - удобство в первую очередь. опять же все аканчивается на логике девелопера.
kompadre
04.08.2004, 23:05
Вялотекущий не кому не нужный тУпик.
Пардон, топик.
Веселее, ребята, щелкайте своей эрудицией.
по поводу удобства пятёрочки...
такие вещи как
DOM - написанный полностью по стандарту w3c - меня лично очень радует... очень... есть строгий стандарт... есть строгое ему соответствие... работать с XML это вообще не проблема нынче...
__autoload
ну а это вообще сказка какая-то... тут даже не знаю что комментировать... жир... =)
щелк, щелк!
ООП это хорошо. если у тебя под рукой язык, в котором возможно, или рекомендования использовано ООП - тебе повезло. Потому, что ты поймешь этот мир. Ведь оглянись вокруг! вокруг - люди. Длина, ширина, площадь, расстояние, напряжение, человек, животное, насекомое - то, что измеряет то, что находится вокруго того, на что ты смотришь. Вот оно - ООП. Объектная модель. Стереотипы, эдакие классы жизни, на основе которых существуют тысячи, миллионы объектов. Представить с помощью классов можно все. Уши, сердце, движения, поступки. Наследствуя классы один за одним, создавая новые галактики. Вот оно будущее - Объектная модель. Если ты - рассматриваешь все с высоты объектов, отбрасыавая в сторону призму структур и последовательных вычислений, ты - будущее! Ты - не кто иной! Да здраствует ООП.
щелк, щекл.
ага, но вы мне все говорите образно только.
скажите что я получу имея класс а не например файл с функциями?
mishinaelle
05.08.2004, 14:07
из личного опыта - будет тормознутей работать
В сущности, ели тебе нужен просто набор функций - ты можешь написать класс-холдер, описать в нём статические функции.
А на самом деле - объектно-ориентированное программирование предоставляет огромную гибкость приложений. Каждое из приложений, в свою очередь, может БЕЗ ДОРАБОТКИ использоваться для разработки других приложений как целиком, так и частями.
Хотя, имхо, на словах это объяснить невозможно. Это нужно прочувствовать.
Хорошо написанный класс - это нечто совершенно самодостаточное.
Есть в XP(это не виндоус) такое понятие - "строительство с крыши" - это когда СНАЧАЛА создаётся приложение целиком, а только после этого пишутся его модули. Грубо говоря, сначала ты строишь каркас приложения, а потом - дописываешь классы, составляющие суть.
В общем-то, разница между процедурным программированием и ООП - как между строительством крупнопанельного и кирпичного домов.
Оригинал написал(а) mishinaelle
из личного опыта - будет тормознутей работать
А вот это уже - в прямой зависимости от кривизны рук =)
mishinaelle
05.08.2004, 14:21
а вот и нифига!
руки у меня даже очень прямые :D
Оригинал написал(а) juggy
что я получу имея класс а не например файл с функциями?
Отдельное пространство имен. Возможность наследования. Возможность уточнения функций.
Оригинал написал(а) Crazy
Отдельное пространство имен. Возможность наследования. Возможность уточнения функций. А кроме того - полиморфизм, множественное наследование, композицию классов, объявление public (доступных) и private (закрытых) полей - в т.ч. методов, создание абстрактных классов, определение интерфейсов и абстрактных интерфейсов. Определение классов с заимствованным интерфейсом. Чёткую структуру приложения. Удобную систему документирования (хотя это только в яве JavaDoc есть). И самое главное - предельную простоту в разработке.
Да, и ещё, чуть не забыл. Если ты нормально освоишь один объектно-ориентированный язык - как нефиг делать выучишь в комплект к непу ещё пару десятков, потому как самое сложное здесь -концепция и приёмы построения классов вообще.
Короче, выучишь один язык - в остальных придётся только учить синтаксис.
Оригинал написал(а) Dindin
А кроме того - полиморфизм, множественное наследование, композицию классов, объявление public (доступных) и private (закрытых) полей - в т.ч. методов, создание абстрактных классов, определение интерфейсов и абстрактных интерфейсов. Определение классов с заимствованным интерфейсом. Чёткую структуру приложения. Удобную систему документирования (хотя это только в яве JavaDoc есть). И самое главное - предельную простоту в разработке.
Это ты про какой язык? :)
Вообще-то, про яву... Но многое из этого и в php5 вроде как есть..
Оригинал написал(а) Dindin
Вообще-то, про яву...
Правда? Ну тогда вопрос: что такое в яве "абстрактные интерфейсы" и как синтаксически выглядит этот изыск? :)
хыхыхы...
можно мне тоже поглядеть? =)
kompadre
06.08.2004, 07:03
Каждый интерфейс по умолчанию является abstract (абстрактным). Этот модификатор устарел и не используется в новых программах на Яве.
Не "является по умолчанию", а "в Java модификатор abstract может быть применен в описании интерфейса, однако не оказывает никакого влияния на результат".
Желающим предоставляется уникальная возможность: определить по приведенным ниже дампам байткода, который интерфейс является абстрактным, а какой "конкретным":
00000000: CA FE BA BE 00 00 00 2E | 00 09 07 00 07 07 00 08
00000010: 01 00 03 66 6F 6F 01 00 | 03 28 29 56 01 00 0A 53
00000020: 6F 75 72 63 65 46 69 6C | 65 01 00 0B 41 62 73 49
00000030: 6E 74 2E 6A 61 76 61 01 | 00 06 41 62 73 49 6E 74
00000040: 01 00 10 6A 61 76 61 2F | 6C 61 6E 67 2F 4F 62 6A
00000050: 65 63 74 06 01 00 01 00 | 02 00 00 00 00 00 01 04
00000060: 01 00 03 00 04 00 00 00 | 01 00 05 00 00 00 02 00
00000070: 06 |
Второй:
00000000: CA FE BA BE 00 00 00 2E | 00 09 07 00 07 07 00 08
00000010: 01 00 03 66 6F 6F 01 00 | 03 28 29 56 01 00 0A 53
00000020: 6F 75 72 63 65 46 69 6C | 65 01 00 0B 41 62 73 49
00000030: 6E 74 2E 6A 61 76 61 01 | 00 06 41 62 73 49 6E 74
00000040: 01 00 10 6A 61 76 61 2F | 6C 61 6E 67 2F 4F 62 6A
00000050: 65 63 74 06 01 00 01 00 | 02 00 00 00 00 00 01 04
00000060: 01 00 03 00 04 00 00 00 | 01 00 05 00 00 00 02 00
00000070: 06 |
Исходник:
public abstract interface AbsInt {
void foo();
}
...в одном случае и без "abstract" -- в другом.
Вообще, в Java модификатор abstract для сущностей уровня классов означает, что данный класс нельзя инстанциировать и то, что в нем могуо быть методы, не имеющие реализации. Инстанциировать интерфейсы нельзя никогда, а реализации в них в принципе не бывает.
Посему "абстрактный интерфейс" есть "масло масляное".
ага, но насколько я понимаю в 4 пхп с ООП было плоховато? а что нового появилось в пятой версии?
Оригинал написал(а) juggy
ага, но насколько я понимаю в 4 пхп с ООП было плоховато?
С ООП в PHP4 все в порядке. Оно там даже лучше, чем в Plain C. :)
kompadre
06.08.2004, 19:52
Crazy, зачем столько байткода? Я же так и сказал : интерфейсы по умолчанию (собственно "по жизни") абстрактны пытаясь доказать только тот факт что они все-же существуют и их не мало -- они (интерфейсы) Все абстрактные.
Кстати, в каких еденицах ооп измеряется? Я тоже хочу :confused: :rolleyes:
Оригинал написал(а) kompadre
интерфейсы по умолчанию
Еще раз: оборот "по умолчанию" применим только тогда, когда есть принципиальная возможность явно заявить/сделать что-то иное. В Java это не "по умолчанию", а "единственно доступный вариант".
Кстати, в каких еденицах ооп измеряется? Я тоже хочу :confused: :rolleyes:
Неужели ты забыл этот мультфильм? Все на свете измеряется в:
1. Попугаях.
2. Мартышках
3. Удавах
4. Слоненках.
Длинее всего -- в попугаях. :)
по поводу нового в пятёрке
http://www.php.net/zend-engine-2.php
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.