На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: Qraizer, Hsilgos
  
> Спецификаторы доступа , Доступ к переменным
    Может быть для кого-то этот вопрос покажется глупым, но тем неменее! В книжках пишут что переменные должны быть 3 типов: private, protected, public! Все с ними понятно. Но не понятно только одно:
    если в проге используются public переменные как это может ей повредить, т.е. можно ли получить доступ из внешней программы к переменным или каким то другим способом.
    Спасибо!
      FlyDead, public-переменные нарушают условие инкапсулированности данных, т. к. любой может изменить эти переменные так, что класс об это нчего не "узнает", что не есть хорошо. Касабельно изменений из других программ - это вряд ли, т. к. это разделение существует только для компилятора и программиста до момента линковки программы.
        Меня тоже очень интересует данный вопрос! Хороший тон- это конечно хорошо, :) вы хотитете сказать, что эти спецификации ограничиваю только самого себя от случайного доступа, или есть какието другие условия и ситуации? Или как? Ведь после компиляции здесь никто не пробьется! :ph34r:
          Цитата
          StavR, 22.01.04, 18:16
          вы хотитете сказать, что эти спецификации ограничиваю только самого себя от случайного доступа


          скорее не себя, а тех кто будет работать с твоим классом, другой программер, откуда ему знать должен меняться m_count, при увеличении размера списка ;) (если у тебя класс этого списка )

          Цитата
          StavR, 22.01.04, 18:16
          Ведь после компиляции здесь никто не пробьется!


          можно и хедер пофиксить :)
            То есть пользователю твоего класса должно быть абсолютно параллельно, каким образом работает твой класс. Например список. Пользователь не должен знать как организован класс. Ему главное что бы элементы списка правельно добавлялись, удалялись и хранились. А на какой он основе он организаван, не играет роли.
              Гы, всё несколько сложнее - существует несколько направлений, отстаивающие противоположные точки зрения. Создание приватных данных и прописывание к ним методов Set()/Get() вроде как считается соответствующим духу ООП, но реально в 50% случаев (а то и больше!) это приводит к излишнему коду, который ни в коей мере не скажется на преобразовании информации в программе и не повлияет на "инкапсулированность". Это происходит в основном из-за плохого проектирования иерархий классов в программе - но создать идельную, классическую программу, которая бы полностью соответствовала ООП практически невозможно. :)
              Подробнее об этом - А.Голуб "C&C++. Правила программирования", М.Фаулер "Рефакторинг" и тд.
              0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
              0 пользователей:


              Рейтинг@Mail.ru
              [ Script execution time: 0,0274 ]   [ 16 queries used ]   [ Generated: 27.04.24, 10:31 GMT ]