![]() |
ООП - защита классов,функций и переменных.. не понимаю =(
Здравствуйте флешеры)
скорее вопрос заключается в ООП, а не в именно в AC3, но все же... Моя беда в том, что не могу я понять зачем нужно использовать private или protected при описании чего-либо... чаще всего использую ключевое слово public и последнее время меня начало это как-то очень сильно волновать, потому что в чужом коде есть и private и protected объекты. хелп читал: internal (по умолчанию) Видимый для ссылок внутри того же пакета. private - Видимый для ссылок в том же классе. protected - Видимый для ссылок в том же классе и в производных классах. public - Видимый для всех ссылок. Это понятно... но для чего они защищаются? Я не могу привести такой пример, в котором необходимо пользоваться private и protected.. какая у них выгода перед public? Еще я не могу понять зачем использовать геттеры и сеттеры, когда можно устанавливать значения напрямую обращаясь к переменной.. Просветите, если не трудно, очень хорошо бы было, если на примерах :rolleyes:. Спасибо. |
ага...а ещё лучше везде юзать класс Object
это так...шутка. Не хочется разводить демагогий долгих (ждём wvxvw :D ). Понимание необходимости придёт с опытом + без этого нельзя, если вы работает в команде |
Private и protected нужны для того, чтобы никто без вашего разрешения не смог что-то изменить в вашем объекте. Со временем для вас станет нормой объявлять все свойства private, и только некоторые, в качестве исключения - public. Тут должен быть жёсткий принцип: всё, что не разрешено - запрещено.
|
К примеру у тебя есть объект рубильник:MovieClip(мувик с двумя кадрами:рычаг поднят/опущен), у него есть свойство on:Boolean. если ты свойство on просто сделаешь public, вместо специального setter-метода ты можешь забыть что для переключения рубильника нужно не только изменить свойство on, но и перейти на другой кадр.
|
Цитата:
Цитата:
|
Цитата:
Цитата:
И в правду, если у тебя есть метод Код AS3:
А вообще поставь себе FlashDevelop, там автокомплит прикольный - будешь писать private/public/protected ради автокомплита) Я кстати начинал так писать только из за этого, понимание пришло потом) |
Геттеры/ Сеттеры очень хорошая вещь:
1: в сеттере можно вставить проверку валидности данных Код AS3:
Код AS3:
Код AS3:
5: сеттеры позволяют выполнить некую операцию, например: при изменении width на самом деле изменяем масштабирование по scaleX 6: в геттере можно возвращать вычисляемое значение: Код AS3:
Код AS3:
|
На 57 странице русской версии Мука есть таблица про модификаторы управления доступом переменными. Хотя бы скачайте эту книжку, там очень доходчиво про них написано. По крайней мере я понял))).
|
Цитата:
|
так пожалуйста, юзайте public, только Object или не, лучше * и код пишите в блокноте, а потом покажите результат мега-клёвого проекта
|
когда работаешь в одиночку над проектом в пару тысяч строчек ООП не дает никаких приимуществ.
Попробуйте создать проект ~500кб текста. Откройте его через пол года и попробуйте вспомнить для чего какие методы и поля созданы, которые из них используются исключительно внутри класса, а какие вызваются другими классами. Другими словами в не низкоуровневых языках типа явы или флеша ООП, так же как и типизация переменных, служит скорее для самоконтроля, упрощения работы с вашим кодом других людей, и придупреждения компилятором самых очевидных ошибок. |
Цитата:
однако в обиходе программистов низкоуровневые и высокоуровнениые вещи относительно языка - это всё относительно (сорри за тавтологию). Грубо говоря компонет Button это высокий уровень относительно DisplayObject. А ваще низкий уровень - это паяльник :) |
ты частицу "не" не видишь?
|
сорри, пригубил слегка, слова пропускаю :D
P.S. это не оффтоп, это ответ на вопрос :) если чё плюс ему :D |
Цитата:
|
Вообще, чисто с практической точки зрения - private дает возможность оптимизировать объем програмы, ну и скорость вызова немного т.как не обязательно хранить имена приватных полей класса и можно смело записывать их как UInt (но AS3 компилятор этого не делает). А так, ну как уже было сказано - организационный момент - чтобы не забыть у чего откуда ноги растут, да и если все свойства вывалить в автокомплит, от него практической пользы будет не много :)
|
Цитата:
Цитата:
|
Цитата:
|
Цитата:
|
Спасибо, начинаю понимать...
до этого код писался прямо во Flash безо всякого автокомплита и прочих примочек.... сейчас скачал Flash Develop и Flex SDK + прочитал несколько тем по этому поводу... эм... ну да, код пишется более удобно... объявляешь переменную какого-либо класса и сразу же появляется import этого класса.. кайф... правда не компилируется пока.. :) но это уже другая тема... боюсь правда, что мозг атрофируется при использовании всех прелестей автоматизации FD..( как я понял, защищать классы нужно от самого себя(разработчика) и других разработчиков команды, а сеттеры и геттеры нужны чтобы при присвоении/взятии значения выполнять какие-либо действия. |
Не атрофируется мозг)) Просто работать будет не над вспоминанием, в каком же пакете лежит этот URLLoaderDataFormat, а думать об организации проекта, что во Флэш ИДЕ мучительно трудно) Как всякий профессиональный инструмент, ФД только помогает избавиться от ненужной рутины и заняться творчеством)))
|
| Часовой пояс GMT +4, время: 00:05. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.