Объектно ориентированное программирование глобальные переменные

Содержание
  1. Rukovodstvo
  2. статьи и идеи для разработчиков программного обеспечения и веб-разработчиков.
  3. Использование глобальных переменных / констант в Java
  4. Введение Объектно-ориентированная структура кода Java может затруднить обращение к переменным в нескольких местах. Иногда бывает трудно решить, к какому классу должна входить данная переменная, особенно если это широко используемое значение, такое как коннектор базы данных или математическая константа. Во многих языках, когда мы сталкиваемся с подобной проблемой, мы можем объявить глобальную переменную. Хотя, к сожалению, Java технически не позволяет создавать переменные в глобальной области видимости. В этом
  5. Вступление
  6. Что такое глобальная переменная?
  7. Почему Java не использует глобальные переменные?
  8. Как эмулировать глобальную переменную в Java?
  9. Заключение
  10. Объектно-ориентированное Программирование в Python
  11. Преимущества и недостатки ООП Python
  12. Класс

Rukovodstvo

статьи и идеи для разработчиков программного обеспечения и веб-разработчиков.

Использование глобальных переменных / констант в Java

Введение Объектно-ориентированная структура кода Java может затруднить обращение к переменным в нескольких местах. Иногда бывает трудно решить, к какому классу должна входить данная переменная, особенно если это широко используемое значение, такое как коннектор базы данных или математическая константа. Во многих языках, когда мы сталкиваемся с подобной проблемой, мы можем объявить глобальную переменную. Хотя, к сожалению, Java технически не позволяет создавать переменные в глобальной области видимости. В этом

Вступление

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

Во многих языках, когда мы сталкиваемся с подобной проблемой, мы можем объявить глобальную переменную. Хотя, к сожалению, Java технически не позволяет создавать переменные в глобальной области видимости.

Читайте также:  Про языки программирования кратко

В этой статье мы рассмотрим эмуляцию и использование глобальных переменных в Java .

Что такое глобальная переменная?

Глобальная переменная — это переменная, к которой можно получить доступ из любой области. Многие языки программирования имеют специальный синтаксис для объявления глобальной переменной, например, Python позволяет нам использовать ключевое слово global

C создает глобальные объекты, просто объявляя переменную вне функции.

 int aVariable = 3; int someFunction()

Независимо от синтаксиса создания глобальной переменной, они работают более или менее одинаково. Они позволяют вам получить доступ и изменить значение из любого другого класса или функции. Это может вызвать проблемы, если вы попытаетесь повторно использовать имя в другой области. Например:

 int aVariable = 3; int someFunction()

В зависимости от языка это обычно выполняется одним из трех способов:

  • Выдает ошибку при объявлении уже существующей переменной.
  • Предположим, что оператор печати ссылается на локальную переменную.
  • Предположим, что оператор печати ссылается на локальную переменную, если для ссылки на глобальную переменную не используется специальный синтаксис.

Третий метод — это то, как Java обрабатывает переменные экземпляра, когда параметр метода использует то же имя. Представьте класс с переменной, объявленной как private int number . Чтобы изменить значение number позже, вы можете создать функцию:

 public int setNumber(int number)

this показывает, что вам нужен number из класса, а не из параметров метода.

Почему Java не использует глобальные переменные?

Краткий ответ на этот вопрос: преднамеренный дизайн. Java была создана как чисто объектно-ориентированный язык программирования, поэтому все, что вы создаете, заключено в класс.

Будучи чисто объектно-ориентированным, разработчикам рекомендуется хранить связанные переменные и функции вместе, что делает программу в целом более организованной. Это также может помочь в определении цели плохо документированной переменной. Например:

Без знания того, что эти переменные были частью GridCoordinate , их было бы почти невозможно идентифицировать. С учетом контекста имени класса мы можем сделать вывод, что это горизонтальное и вертикальное положение данной точки на сетке.

А теперь представьте, что вы работаете в составе полностью удаленной команды с членами по всему миру. Вы и ваш коллега на другом континенте работаете над одним и тем же файлом, когда вы оба сталкиваетесь с этим:

Вы предполагаете, что переменная представляет собой номер версии. Ваш коллега думает, что это может иметь какое-то отношение к вертикальной оси. Вы оба вносите изменения в разные функции на основе своих предположений, изменяя значение и ссылаясь на него по своему усмотрению.

Это ситуация, которой Java пытается избежать, не имея глобальных переменных. Использование глобальных переменных в большом проекте может привести к непреднамеренному и неожиданному поведению, поскольку переменные объявляются и изменяются в разных частях кода.

Как эмулировать глобальную переменную в Java?

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

Например, вы можете захотеть сослаться на подключение к базе данных в нескольких классах, но не объявили DatabaseConnection для обработки всех функций вашей базы данных. Вы также можете просто предпочесть просто использовать встроенные методы из выбранной вами библиотеки базы данных без оболочки для обработки транзакций.

Обычно вы можете создать Constants или Reference класс, в котором вы храните различные «глобальные» значения, если они обычно используются в других частях приложения. Одна переменная не обязательно гарантирует наличие всего класса, поэтому вы можете объединить многие из них в один класс Reference или Constants

Затем к этим переменным можно будет получить доступ в другом месте, обратившись к классу:

Наличие Reference позволяет легко узнать, где искать комментарии, объясняющие назначение переменной. Если бы указанные выше переменные были созданы как настоящие глобальные переменные, скорее всего, они были бы созданы в разных файлах, что затрудняет поиск предполагаемой цели автора.

Лучшим способом использования Reference было бы рассматривать все переменные как частные и использовать методы получения для управления всем доступом к значениям. Также разумно использовать константы вместо переменных для данных, которые не должны изменяться во время работы программы. Например:

 private static final String DATABASE_URL = "https://databaseurl.db/database"; private static final Database DATABASE = Database.connect(databaseURL); public static Database getDatabase() < return DATABASE; >public static String getUrl()

В этом примере URL-адрес базы данных и соединение с базой данных не могут быть изменены где-либо еще в коде, но соединение с базой данных может использоваться по мере необходимости для транзакций.

Хотя синтаксически это не так чисто, как определение глобальной переменной, оно может обеспечить такой же уровень свободы.

Другое распространенное использование — определение некоторых констант в приложении с неизменяемыми значениями, которые вы часто используете. Например, если вы тренируете нейронную сеть или запускаете генетические алгоритмы, повсюду будут использоваться различные значения:

 public static final int GENERATION_SIZE; public static final int GENOME_SIZE; public static final int REPRODUCTION_SIZE; public static final int MAX_ITERATIONS; 

Затем вы получите доступ к ним через их общедоступный класс, например:

Заключение

Глобальные переменные часто рассматриваются как тема, вызывающая разногласия, и многие разработчики говорят, что их никогда не следует использовать. Эти разработчики обычно утверждают, что глобальные переменные усложняют сопровождение кода. Однако есть некоторые случаи, когда глобальные переменные полезны, если они хорошо организованы и четко определены.

В конечном итоге решение об их использовании ложится на вас или на одного из старших членов команды разработчиков.

В этой статье мы рассмотрели, как эмулировать глобальные переменные в Java .

Licensed under CC BY-NC-SA 4.0

Источник

Объектно-ориентированное Программирование в Python

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

Представьте сценарий, где вам нужно разработать болид Формулы-1 используя подход объектно-ориентированного программирования. Первое, что вам нужно сделать — это определить реальные объекты в настоящей гонке Формула-1. Какие аспекты в Формуле-1 обладают определенными характеристиками и могут выполнять ту или иную функцию?

Есть вопросы по Python?

На нашем форуме вы можете задать любой вопрос и получить ответ от всего нашего сообщества!

Telegram Чат & Канал

Вступите в наш дружный чат по Python и начните общение с единомышленниками! Станьте частью большого сообщества!

Одно из самых больших сообществ по Python в социальной сети ВК. Видео уроки и книги для вас!

Один из очевидных ответов на этот вопрос — гоночный болид. Условный болид может обладать такими характеристиками как:

Соответственно, болид можно запустить, остановить, ускорить, и так далее. Гонщик может быть еще одним объектом в Формуле-1. Гонщик имеет национальность, возраст, пол, и так далее, кроме этого, он обладает таким функционалом, как управление болидом, рулевое управление, переключение передач.

Как и в этом примере, в объектно-ориентированном программировании мы создадим объекты, которые будут соответствовать реальным аспектам.

Стоит обратить внимание на то, что объектно-ориентированное программирование — не зависящая от языка программирования концепция. Это общая концепция программирования и большинство современных языков, такие как Java, C#, C++ и Python поддерживают объектно-ориентированное программирование.

В этой статье мы разберем подробную инструкцию объектно-ориентированного программирования в Python, но перед этим, рассмотрим некоторые преимущества и недостатки объектно-ориентированного программирования.

Преимущества и недостатки ООП Python

Рассмотрим несколько основных преимуществ объектно-ориентированного программирования:

  1. Объектно-ориентированное программирование подразумевает повторное использование. Компьютерная программа написанная в форме объектов и классов может быть использована снова в других проектах без повторения кода;
  2. Использование модулярного подхода в объектно-ориентированном программировании позволяет получить читаемый и гибкий код;
  3. В объектно-ориентированном программировании каждый класс имеет определенную задачу. Если ошибка возникнет в одной части кода, вы можете исправить ее локально, без необходимости вмешиваться в другие части кода;
  4. Инкапсуляция данных (которую мы рассмотрим дальше в статье) вносит дополнительный уровень безопасности в разрабатываемую программу с использованием объектно-ориентированного подхода;

Хотя объектно-ориентированное программирование обладает рядом преимуществ, оно также содержит определенные недостатки, некоторые из них находятся в списке ниже:

  1. Для создания объектов необходимо иметь подробное представление о разрабатываемом программном обеспечении;
  2. Не каждый аспект программного обеспечения является лучшим решением для реализации в качестве объекта. Для новичков может быть тяжело прочертить линию в золотой середине;
  3. С тем, как вы вносите все новые и новые классы в код, размер и сложность программы растет в геометрической прогрессии;

В следующем разделе мы рассмотрим ряд самых важных концепций объектно-ориентированного программирования.

Как и следует из названия, объектно-ориентированное программирование — это речь об объектах. Однако, перед тем как создать объект, нам нужно определить его класс.

Класс

Класс в объектно-ориентированном программировании выступает в роли чертежа для объекта. Класс можно рассматривать как карту дома. Вы можете понять, как выглядит дом, просто взглянув на его карту.

Cам по себе класс не представляет ничего. К примеру, нельзя сказать что карта является домом, она только объясняет как настоящий дом должен выглядеть.

Отношение между классом и объектом можно представить более наглядно, взглянув на отношение между машиной и Audi. Да, Audi – это машина. Однако, нет такой вещи, как просто машина. Машина — это абстрактная концепция, которую также реализуют в Toyota, Honda, Ferrari, и других компаниях.

Ключевое слово class используется для создания класса в Python. Название класса следует за ключом class , за которым следует двоеточие. Тело класса начинается с новой строки, с отступом на одну вкладку влево.

Давайте рассмотрим, как мы можем создать самый простой класс в Python. Взглянем на следующий код:

Источник

Оцените статью