ООП во FLASH 5


Содержание


Ещё одна приятная особенность состоит в том, что отныне вы не обязаны устанавливать непосредственные отношения между методами и данными. Вместо того чтобы говорить setX и setY, можно сказать проще: setLocation. Вместо того чтобы говорить setWidth и setHeight, мы можем сказать setSize. Разумеется, где-то внутри нашего класса существуют X, Y, Widht и Height, но пользователь не должен забивать себе этим голову. Или сделать иначе, для установки одних и тех же значений создать не один метод, а несколько. К примеру, метод setRectangle, который установит все 4 поля "одним залпом". Внутри он может вызвать оба метода setLocation и setSize, или те же setX, setY, setWidth, setHeight один за другим - ну вот, пользователи класса уже не теряются в догадках о происходящем (что является их обычным состоянием).

Неплохие аргументы за использование того, что зовётся "getters и setters"? Суть в том, что теперь класс обладает свойством, которым можно управлять только через методы класса. Исторически такие методы назывались getXX() и setXX(), отсюда и названия терминов: "getters и setters". Однако учтите, их следует использовать лишь в том случае, если вы не уверены, что данное свойство никогда не будет подтверждаться, ограничиваться, регламентироваться или обрабатываться как-то иначе, но точно знаете, что значение свойства никогда не будет преобразовано во что-то другое. Если же одолевает лень, попробуйте заставить себя сделать это несколько раз, и в будущем подобная практика станет естественной. Она может даже перерасти в привычку: поставьте себе цель делать это, после того как закомментируете код. Хм...


Погодите-ка, разве вышеупомянутый .NET-пример не использует "getters и setters"?

button1.Location = new Point (168, 168);

Это определенно не выглядит как "setter", не так ли? Ну, по правде говоря, это и не "setter", а то, что известно под именем "свойство" (Мд-а... ещё больше запутались!) в C#, и что автоматически вызывает метод get, когда значение читается, и метод set, когда значение устанавливается. "Майкрософту" так нравятся эти методы, что они встроили их в язык C# (на который обладают монополией), одним махом избавившись от необходимости когда-либо использовать методы getXX или setXX. Что ж, мы не имеем такой роскоши в ActionScript, поэтому придётся обзывать методы setXX и getXX вручную. Да, не так удобно, зато у них довольно посредственная поддержка векторной графики, вот!




Начало  Назад  Вперед



Книжный магазин