PHP в деталях



         

Комментарии к статье "" - часть 2


table width="100%" cellpadding="0" cellspacing="0" >9.4.2001 11:33  Lvetal  []

1. Твое непонятие - очень странно... Потому что, в следующей статье ты ответил на свой же вопрос...

Подсказка, ООП - прежде всего для удобства разработки, а дело десятое скорость(Хотя ты можешь считать, что это мдленне должно быть, но компиляторы умеют проводить оптимизацию)...

1.1. Оформлять или не оформлять как класс - это зависит от того как ты собираешься писать... Если с ОО подоходом - то это класс; если без, то пофигу как его делать... даже лучше вообще классом не оформлять.

Так что изменять прямо свояства класса - это уже усеченный ОО подход. :)

2. Класс - это закоченное описание какой-либо сущности включая все нужне действия и свойства.

Объект - это конкретная сущность... Так вернее. Класс - первичнее, чем объект. Хотя бы потому, что один объект может представлять сразу несколько классов((из-за наследования)треугольник -> плоская фигура -> фигура) и работать с ним можно тоже исходя из этого(то есть когда хочу - это треугольник, а когда подругому хочу - это плоская фигура), а вот Класс - это все-таки законечнное описание сущности(плоская фигура - это конечно тоже фигура, но она обязательно(!) имеет свои собственные свойства и возможные действия и если их выбросить - то это уже будет все-таки класс фигура, а не класс плоская фигура).

Вообщем типа того... :)

2. attach_file используется в конструторе потому, что при создании письма ты можешь задать аттачмент... Также, ты можешь задать 2 или 3 аттачмента к письму... но уже без констурктора. Поэтому, зачем плодить attach_file в разных местах, когда удобнее сделать его одним.

3. Инкапсуляция - это сокрытие реализации от конечного пользователя. И это не дань традиции, а насущная необходимость. Класс разрабатывается под определенные задачи, которые он должен решать, поэтому дело десятое как именно я храню внутренние переменные класса. В идеале, к ним не должно быть доступа вообще, даже через функции типа GetProperty. Если для задачи нужно, чтобы тебе возвращали какое-то свойство класса - делай для этого паблик метод. НО!!! Заметь, совершенно не факт, что в классе это свойство действительно есть. Простой пример: класс треугольник - можно задать тремя точками, двумя векторами, вектором и двумя углами... Причем, вектор,точка и угол - могут быть в принципе тоже объектами. Если для задачи нужно иметь получение всех точек треугольник - делаем этот метод... А от замены внутреннго представления твоя программа соверщенно не зависит. Поэтому, если в следующей версии класса, который вообще говоря, может рапространятся уже в скомпилированном виде, заменят внутреннюю реализацию для увеличения скорости, уменьшения памяти и т.п.- у тебя программа будет нормально работать.

P.P.S. Если чего - пишиет на мыло... Пообщеамся.

<


Содержание  Назад  Вперед