Итоги — Менеджер банковского счета
Часть раздела Объектно-ориентированное программирование путешествия по Java на Coddy — урок 14 из 87.
Задание
ЛегкоДавайте создадим полноценную систему BankAccount, которая объединит все, что вы узнали об инкапсуляции, модификаторах доступа, геттерах, сеттерах и ключевом слове final.
Для организации кода вы создадите два файла:
BankAccount.java: Разработайте защищенный класс банковского счета, который оберегает конфиденциальные финансовые данные:- Неизменяемый номер счета, который никогда не может быть изменен после создания счета
- Приватный баланс, который начинается с 0.0 и может быть изменен только через контролируемые методы
- Приватное имя владельца, которое можно получить, но нельзя изменить напрямую
- Конструктор, принимающий номер счета и имя владельца
- Геттер для номера счета
- Геттер для имени владельца
- Геттер для баланса
- Метод
deposit(double amount), который пополняет баланс только в том случае, если сумма положительна, возвращаяtrueв случае успеха илиfalseв случае отказа - Метод
withdraw(double amount), который списывает средства с баланса только в том случае, если сумма положительна И достаточно средств, возвращаяtrueв случае успеха илиfalseв случае отказа - Метод
getAccountSummary(), который возвращает:"Account [accountNumber] | Owner: [ownerName] | Balance: $[balance]"(баланс отформатирован до 2 знаков после запятой)
Main.java: Создайте BankAccount и выполните серию транзакций. Вы получите пять входных данных: номер счета, имя владельца, сумма депозита, сумма первого снятия и сумма второго снятия. Выведите четыре строки:- Результат депозита:
Deposit: trueилиDeposit: false - Результат первого снятия:
Withdraw 1: trueилиWithdraw 1: false - Результат второго снятия:
Withdraw 2: trueилиWithdraw 2: false - Итоговая сводка по счету
- Результат депозита:
Вы получите пять входных данных по порядку: accountNumber (String), ownerName (String), depositAmount (double), withdrawAmount1 (double), withdrawAmount2 (double).
Для форматирования баланса до 2 знаков после запятой вы можете использовать String.format("%.2f", balance).
Попробуйте сами
import java.util.Scanner;
class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// Чтение входных данных
String accountNumber = scanner.nextLine();
String ownerName = scanner.nextLine();
double depositAmount = scanner.nextDouble();
double withdrawAmount1 = scanner.nextDouble();
double withdrawAmount2 = scanner.nextDouble();
// TODO: Создайте объект BankAccount с accountNumber и ownerName
// TODO: Выполните депозит и выведите результат в формате "Deposit: true" или "Deposit: false"
// TODO: Выполните первое снятие средств и выведите результат в формате "Withdraw 1: true" или "Withdraw 1: false"
// TODO: Выполните второе снятие средств и выведите результат в формате "Withdraw 2: true" или "Withdraw 2: false"
// TODO: Выведите сводку по счету
}
}
Все уроки раздела Объектно-ориентированное программирование
1Основы ООП
Внешние файлыВведение в ООПКлассы и объектыКлючевое слово thisМетодыПоля (атрибуты)Метод-конструкторПерегрузка конструкторовИтоги — Простой калькулятор4Наследование
Основы наследования (extends)Ключевое слово superПереопределение методов (@Override)Цепочка конструкторовКласс ObjectОдиночное и многоуровневое наследованиеПочему нет множественного наследования классовИтоги — Иерархия сотрудников7Специальные методы и класс Object
Метод toString()equals() и hashCode()Метод clone()compareTo() и ComparableИнтерфейс ComparatorПовторение — Кастомная сортировка2Модификаторы доступа и инкапсуляция
Обзор уровней доступаМетоды геттеры и сеттерыСокрытие данныхКлючевое слово finalИтоги — Менеджер банковского счета5Полиморфизм
Основы перегрузки методовПереопределение методов (Run-Time)Upcasting и DowncastingОператор instanceofАбстрактные классы и методыИтоги: Калькулятор фигур8Продвинутые концепции ООП
Композиция против наследованияАгрегация против композицииВнутренние, вложенные и анонимные классыEnums и методы перечисленийRecords (Java 16+)Sealed-классы (Java 17+)11Паттерны проектирования. Часть 1
Введение в паттерны проектированияПаттерн SingletonПаттерн FactoryПаттерн BuilderПаттерн ObserverПаттерн Strategy3Свойства класса и статические члены
Переменные экземпляра и статические переменныеСтатические методыСтатические блокиКонстанты (static final)Итоги: Счетчик и утилиты6Интерфейсы и абстрактные классы
Введение в интерфейсыРеализация интерфейсовРеализация нескольких интерфейсовDefault и Static методы в интерфейсахАбстрактные классы vs ИнтерфейсыФункциональные интерфейсыИтоги — Платежная система9Обобщения
Введение в обобщенияОбобщенные классыОбобщенные методыОграниченные параметры типаСимволы подстановки (Wildcards: ?, extends, super)Итоги — Обобщенный контейнер12Паттерны проектирования. Часть 2
Паттерн «Команда»Паттерн «Адаптер»Паттерн «Декоратор»Паттерн «Шаблонный метод»Паттерн «Состояние»Паттерн «Компоновщик»Паттерн «Итератор»