Зачем нужна инкапсуляция в Java?
Источник: Use My Notes Из этой публикации вы узнаете, зачем нужна инкапсуляция в объектно-ориентированном программировании. В статье рассмотрена концепция ее работы и способы реализации на языке Java.Что такое инкапсуляция в Java
Инкапсуляция — это концепция в языке Java, которая объединяет данные и методы, работающие с ними, в единое целое — в одну упаковку или оболочку. Проще говоря, инкапсуляция объединяет переменные и методы в одном классе.Зачем нам нужна инкапсуляция в Java?
- Чтобы код оставался чистым и организованным.
- Для лучшего контроля доступа к инкапсулированным членам.
- Чтобы лучше понимать код.
class MyBankAccount {
private int acc_number;
private int acc_balance;
public MyBankAccount(int acc_number, int acc_balance) {
this.acc_number = acc_number;
this.acc_balance = acc_balance;
}
public int printAccountBalance() {
System.out.println("Balance: " + acc_balance);
}
public int printAccountNumber() {
System.out.println("Account Number: " + acc_number);
}
public void depositMoney(int money) {
acc_balance = acc_balance + money;
}
}
Здесь у нас есть класс MyBankAccount с конструктором, двумя переменными и тремя методами. Эти члены класса связаны друг с другом, поэтому они находятся в одном классе. Класс MyBankAccount инкапсулирует или объединяет содержимое класса, и весь этот код действует как единое целое.
Теперь, просто взглянув на имя класса, то есть на “MyBankAccount”, мы можем предположить, что у него есть баланс счета и номер счета (которые он имеет в качестве переменных).
Банковские счета связаны с денежными транзакциями, такими как внесение денег, распечатка остатков на счетах и так далее. Эти транзакции выполняются с помощью методов, соответствующих вышеприведенному классу. Как мы видим, это улучшило читаемость и поддержку кода.
Предположим, у нас есть 100 классов, и каждый класс имеет от 5 до 10 методов и почти такое же количество переменных. С инкапсуляцией нам намного проще найти определенные методы или переменные, просто предположив, к какому классу они могут относиться.
Как концепция инкапсуляции может помочь в работе?
У инкапсуляции в программировании есть несколько преимуществ, мы их просто не осознаем, пока не увидим в работе. В современном мире все так или иначе цифровое и программное. Существует много языков программирования, на которых генерируется огромное количество кода при разработке софта или библиотек программирования. Все они так или иначе инкапсулированы. Без инкапсуляции программирование было бы беспорядочным (особенно в индустрии ПО). Инкапсуляция в Java:- Помогает организовать код лучше и понятнее.
- Позволяет прилагать меньше усилий при сопровождении большого количества кода.
- Снижает сложность управления кодом.
- Разделяет код на части.
- Повышает читабельность.
А если бы инкапсуляции не было?
Есть языки программирования, в которых нет концепции инкапсуляции. Одним из них является язык программирования C. У него нет понятия инкапсуляции. Код может быть разбросан по файлам, и каждый файл может иметь любую переменную или функцию, которые могут быть связаны или не связаны друг с другом. Это создает путаницу в управлении кодом и увеличивает сложность. Без инкапсуляции:- Код может стать неорганизованным или беспорядочным.
- Увеличивается сложность поддержки кода.
- Усложняется отладка кода.
- Снижается читабельность.
Три способа использования функции Print в Java
Источник: FreeCodeCamp Далеко не все разработчики знают о трех разных функциях/операторах Print в Java. Автор этой статьи расскажет о них и покажет, как они работают на примерах.Как использовать функцию println() в Java
Функция println() добавляет новую строку после печати значения/данных внутри нее. Здесь суффикс ln работает как символ новой строки \n. Давайте посмотрим на пример кода:
public class Main{
public static void main(String[] args) {
System.out.println("Hello World!");
}
}
Если пока не очень понятно, что именно происходит, то вкратце это можно объяснить так. Когда вы печатаете только одну строку, то получаете на выводе вот что:
Hello World!
А теперь, если вы попытаетесь напечатать несколько разных выражений, используя println(), то ясно видна разница!
public class Main{
public static void main(String[] args) {
System.out.println("Hello World!");
System.out.println("Welcome to freeCodeCamp");
}
}
Как можно заметить, после выполнения первого оператора печати добавляется один символ новой строки (\n). Таким образом, вы получаете второй оператор печати Welcome to freeCodeCamp в следующей строке.
Весь вывод будет таким, как показано ниже:
Hello World!
Welcome to freeCodeCamp
Но нет ли способа избежать автоматически сгенерированного символа новой строки в функции print? Есть! В этом случае вам нужно использовать оператор print().
Как использовать функцию print() в Java
Для демонстрации этой функции позвольте мне использовать пример, который поможет сразу увидеть разницу:
public class Main{
public static void main(String[] args) {
System.out.print("Hello World!");
System.out.print("Welcome to freeCodeCamp");
}
}
Как вы видите, я использовал print вместо использования println, как раньше. Оператор print не добавляет дополнительный \n в качестве символа новой строки после выполнения задачи в нем. То есть, вы не получите еще одну новую строку на выводе, а будет примерно вот так:
Hello World! Welcome to freeCodeCamp
Если хотите, то вы можете решить проблему \n, как показано ниже:
public class Main{
public static void main(String[] args) {
System.out.print("Hello World!\n");
System.out.print("Welcome to freeCodeCamp");
}
}
На этот раз \n будет работать как символ новой строки, и вы получите вторую строку. Вот результат:
Hello World!
Welcome to freeCodeCamp
Вы также можете распечатать две строки, используя только один оператор print, как показано ниже:
public class Main{
public static void main(String[] args) {
System.out.print("Hello World!\nWelcome to freeCodeCamp");
}
}
Вывод будет таким же:
Hello World!
Welcome to freeCodeCamp
Как использовать функцию printf() в Java
Функция printf() работает как форматированная функция print. Чтобы лучше понять, вот два сценария: Сценарий 1. Ваш друг Томми хочет, чтобы вы передали ему PDF-файл по электронной почте. Вы можете просто создать электронное письмо, указать тему по своему усмотрению (например, привет Томми, это Джим). Вы даже можете ничего не писать в основной части электронного письма и отправить пустой e-mail лишь прикрепив PDF-файл. Сценарий 2. Вы не смогли вчера прийти на занятие. Ваш преподаватель попросил вас предоставить причины отсутствия с доказательствами и отправить документы по электронной почте. Здесь вы не можете отправить письмо своему профессору так, как вы это делали для своего друга Томми. Вам нужно соблюсти некоторую формальность и надлежащий этикет. То есть, в письме вы должны указать формальную тему и написать необходимую информацию в основной части. И последнее, но не менее важное: вы должны прикрепить документ к своему электронному письму после переименования его в соответствии с надлежащим соглашением об именах. Речь о том, что вам нужно отформатировать свою электронное письмо так, как от вас требуют. Функция printf() помогает нам реализовать второй сценарий. Если мы хотим указать какой-либо конкретный формат/стиль печати, мы используем именно функцию printf(). Приведу краткий пример, как это работает:
public class Main{
public static void main(String[] args) {
double value = 2.3897;
System.out.println(value);
System.out.printf("%.2f" , value);
}
}
Здесь я объявляю переменную типа double с именем value и присваиваю ей значение 2.3897. Теперь, когда я использую функцию println(), она печатает все значение с четырьмя цифрами после точки счисления. Вот результат:
2.3897
2.39
После этого, когда я использую функцию printf(), я могу изменить выходной поток, чтобы функция выводила значение. Здесь я сообщаю функции, что хочу, чтобы после точки счисления выводилось ровно две цифры. Таким образом, функция печатает округленное значение до двух цифр после точки счисления. И это лишь один из способов использования функции printf(). Имейте в виду, что она имеет множество применений в языке Java.
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ