Podsumowanie — menedżer kont bankowych
Część sekcji Programowanie obiektowe ścieżki Java w Coddy. Lekcja 14 z 87.
Wyzwanie
ŁatwyZbudujesz kompletny system BankAccount, który łączy wszystko, czego nauczyłeś się o hermetyzacji, modyfikatorach dostępu, getterach, setterach i słowie kluczowym final.
Utworzysz dwa pliki, aby uporządkować swój kod:
BankAccount.java: Zaprojektuj bezpieczną klasę konta bankowego, która chroni wrażliwe dane finansowe:- Niezmienny numer konta, którego nie można zmienić po utworzeniu konta
- Prywatne saldo, które zaczyna się od 0.0 i można je modyfikować wyłącznie za pomocą kontrolowanych metod
- Prywatne imię i nazwisko właściciela, które można pobrać, ale nie zmienić bezpośrednio
- Konstruktor przyjmujący numer konta oraz imię i nazwisko właściciela
- Getter dla numeru konta
- Getter dla imienia i nazwiska właściciela
- Getter dla salda
- Metodę
deposit(double amount), która dodaje kwotę do salda tylko wtedy, gdy jest dodatnia; zwracatruew przypadku powodzenia lubfalse, jeśli operacja zostanie odrzucona - Metodę
withdraw(double amount), która odejmuje kwotę od salda tylko wtedy, gdy jest dodatnia ORAZ dostępne są wystarczające środki; zwracatruew przypadku powodzenia lubfalse, jeśli operacja zostanie odrzucona - Metodę
getAccountSummary(), która zwraca:"Account [accountNumber] | Owner: [ownerName] | Balance: $[balance]"(saldo sformatowane do 2 miejsc po przecinku)
Main.java: Utwórz obiekt BankAccount i wykonaj serię transakcji. Otrzymasz pięć danych wejściowych: numer konta, imię i nazwisko właściciela, kwotę wpłaty, kwotę pierwszej wypłaty oraz kwotę drugiej wypłaty. Wypisz cztery wiersze:- Wynik wpłaty:
Deposit: truelubDeposit: false - Wynik pierwszej wypłaty:
Withdraw 1: truelubWithdraw 1: false - Wynik drugiej wypłaty:
Withdraw 2: truelubWithdraw 2: false - Końcowe podsumowanie konta
- Wynik wpłaty:
Otrzymasz kolejno pięć danych wejściowych: accountNumber (String), ownerName (String), depositAmount (double), withdrawAmount1 (double), withdrawAmount2 (double).
Aby sformatować saldo do 2 miejsc po przecinku, możesz użyć String.format("%.2f", balance).
Spróbuj swoich sił
import java.util.Scanner;
class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// Wczytaj dane wejściowe
String accountNumber = scanner.nextLine();
String ownerName = scanner.nextLine();
double depositAmount = scanner.nextDouble();
double withdrawAmount1 = scanner.nextDouble();
double withdrawAmount2 = scanner.nextDouble();
// TODO: Utwórz obiekt BankAccount z accountNumber i ownerName
// TODO: Wpłać środki i wypisz wynik jako "Deposit: true" lub "Deposit: false"
// TODO: Wykonaj pierwszą wypłatę i wypisz wynik jako "Withdraw 1: true" lub "Withdraw 1: false"
// TODO: Wykonaj drugą wypłatę i wypisz wynik jako "Withdraw 2: true" lub "Withdraw 2: false"
// TODO: Wypisz podsumowanie konta
}
}
Wszystkie lekcje w sekcji Programowanie obiektowe
1Podstawy programowania obiektowego
Pliki zewnętrzneWprowadzenie do programowania obiektowegoKlasy a obiektySłowo kluczowe thisMetodyPola (atrybuty)Metoda konstruktoraPrzeciążanie konstruktoraPodsumowanie — prosty kalkulator4Dziedziczenie
Podstawy dziedziczenia (extends)Słowo kluczowe superPrzesłanianie metod (@Override)Łańcuch wywołań konstruktorówKlasa ObjectDziedziczenie jedno- i wielopoziomoweDlaczego Java nie obsługuje wielodziedziczenia klasPodsumowanie – hierarchia pracowników7Metody specjalne i klasa Object
Metoda toString()equals() i hashCode()Metoda clone()compareTo() i ComparableInterfejs ComparatorPodsumowanie — własne sortowanie10Obsługa wyjątków w programowaniu obiektowym
Hierarchia klas wyjątkówWłasne wyjątkiBłędy sprawdzane a niesprawdzaneWzorzec try-with-resourcesPodsumowanie – zweryfikowany użytkownik2Modyfikatory dostępu i enkapsulacja
Przegląd poziomów dostępuMetody pobierające i ustawiająceUkrywanie informacjiSłowo kluczowe finalPodsumowanie — menedżer kont bankowych5Polimorfizm
Podstawy przeciążania metodPrzesłanianie metod (w czasie wykonywania)Rzutowanie w górę i w dółOperator instanceofKlasy i metody abstrakcyjnePowtórka — kalkulator figur8Zaawansowane koncepcje OOP
Kompozycja a dziedziczenieAgregacja a kompozycjaKlasy wewnętrzne, zagnieżdżone i anonimoweEnumy i metody enumówRekordy (Java 16+)Klasy zapieczętowane (Java 17+)11Wzorce projektowe — część 1
Wprowadzenie do wzorców projektowychWzorzec SingletonWzorzec FactoryWzorzec BuilderWzorzec ObserverWzorzec Strategy3Właściwości klas i składowe statyczne
Zmienne instancji a zmienne statyczneMetody statyczneBloki statyczneStałe (static final)Powtórka – Counter i Utility6Interfejsy i klasy abstrakcyjne
Wprowadzenie do interfejsówImplementowanie interfejsówImplementacja wielu interfejsówMetody domyślne i statyczne w interfejsieKlasy abstrakcyjne a interfejsyInterfejsy funkcyjnePodsumowanie — system płatnościPoćwicz samodzielnie: Kompilator Java online