Powtórzenie — menedżer kont bankowych
Część sekcji Programowanie obiektowe ścieżki C# w Coddy. Lekcja 18 z 70.
Wyzwanie
ŁatwyZbudujmy kompletny system zarządzania kontami bankowymi, który łączy wszystko, czego nauczyłeś się o architekturze klas. Utworzysz klasę BankAccount, która prawidłowo rozróżnia dane instancji (unikalne dla każdego konta) i dane statyczne (współdzielone przez wszystkie konta), a jednocześnie używa walidacji, aby konta zawsze znajdowały się w prawidłowym stanie.
Utworzysz dwa pliki, aby uporządkować swój kod:
BankAccount.cs: Zdefiniuj klasęBankAccountw przestrzeni nazwBanking. Twoje konto powinno zawierać:- Pole
constMinimumBalanceustawione na100— minimalne saldo, które muszą utrzymywać wszystkie konta - Pole
staticInterestRate(decimal), którego początkowa wartość to0.03m— współdzielone przez wszystkie konta - Pole
staticTotalAccounts(int), które śledzi liczbę istniejących kont - Pole
readonlyAccountNumber(string) — ustawiane raz podczas tworzenia i nigdy później niezmieniane - Prywatne pole zapasowe
_ownerNamez właściwościąOwnerName, która usuwa białe znaki podczas ustawiania wartości - Prywatne pole zapasowe
_balancez właściwościąBalance, która nie pozwala, aby saldo spadło poniżejMinimumBalance(jeśli ktoś spróbuje ustawić niższą wartość, saldo pozostanie równeMinimumBalance) - Konstruktor przyjmujący numer konta, imię i nazwisko właściciela oraz saldo początkowe, który zwiększa
TotalAccounts - Metodę statyczną
SetInterestRate(decimal rate)do aktualizowania współdzielonej stopy procentowej - Metodę
CalculateInterest(), która zwraca saldo pomnożone przez stopę procentową
- Pole
Program.cs: W głównym pliku utwórz dwa konta bankowe na podstawie wartości wejściowych, zaktualizuj stopę procentową i wyświetl informacje o kontach wraz ze współdzielonymi danymi banku.
Otrzymasz siedem danych wejściowych:
- Numer pierwszego konta
- Imię i nazwisko właściciela pierwszego konta
- Saldo początkowe pierwszego konta
- Numer drugiego konta
- Imię i nazwisko właściciela drugiego konta
- Saldo początkowe drugiego konta
- Nowa stopa procentowa (jako liczba dziesiętna, np.
0.05)
Wypisz wynik w następującym formacie:
--- Bank Summary ---
Interest Rate: {InterestRate}
Minimum Balance: {MinimumBalance}
Total Accounts: {TotalAccounts}
Account: {AccountNumber}
Owner: {OwnerName}
Balance: {Balance}
Interest Earned: {interest}
Account: {AccountNumber}
Owner: {OwnerName}
Balance: {Balance}
Interest Earned: {interest}Na przykład, jeśli danymi wejściowymi są ACC001, Alice Smith , 500, ACC002, Bob Jones, 50 i 0.05, wynikiem powinno być:
--- Bank Summary ---
Interest Rate: 0.05
Minimum Balance: 100
Total Accounts: 2
Account: ACC001
Owner: Alice Smith
Balance: 500
Interest Earned: 25.0
Account: ACC002
Owner: Bob Jones
Balance: 100
Interest Earned: 5.0Zwróć uwagę, że nadmiarowe spacje w imieniu i nazwisku Alice zostają usunięte, a saldo Boba wynoszące 50 zostaje podniesione do minimalnej wartości 100. Odsetki są obliczane z użyciem zaktualizowanej stopy procentowej 0.05, ustawionej po utworzeniu kont.
Spróbuj swoich sił
using System;
using Banking;
class Program
{
public static void Main(string[] args)
{
// Wczytaj dane pierwszego konta
string accountNumber1 = Console.ReadLine();
string ownerName1 = Console.ReadLine();
decimal balance1 = Convert.ToDecimal(Console.ReadLine());
// Wczytaj dane drugiego konta
string accountNumber2 = Console.ReadLine();
string ownerName2 = Console.ReadLine();
decimal balance2 = Convert.ToDecimal(Console.ReadLine());
// Wczytaj nową stopę procentową
decimal newRate = Convert.ToDecimal(Console.ReadLine());
// TODO: Utwórz dwa obiekty BankAccount na podstawie wczytanych danych
// TODO: Zaktualizuj stopę procentową za pomocą metody statycznej
// TODO: Wyświetl podsumowanie banku w wymaganym formacie
// --- Bank Summary ---
// Interest Rate: {InterestRate}
// Minimum Balance: {MinimumBalance}
// Total Accounts: {TotalAccounts}
// (pusta linia)
// Konto: {AccountNumber}
// Właściciel: {OwnerName}
// Saldo: {Balance}
// Interest Earned: {interest}
// (pusta linia)
// Konto: {AccountNumber}
// Właściciel: {OwnerName}
// Saldo: {Balance}
// Interest Earned: {interest}
}
}
Wszystkie lekcje w sekcji Programowanie obiektowe
1Podstawy programowania obiektowego
Pliki zewnętrznePrzestrzenie nazw i dyrektywyWprowadzenie do klas i obiektówSłowo kluczowe „this”Metody i parametryPola a właściwościKonstruktoryInicjalizatory obiektówPodsumowanie — prosty kalkulator4Dziedziczenie
Podstawowa składnia dziedziczenia (:)Słowo kluczowe 'base'Słowa kluczowe virtual i overrideKlasy sealedBazowa klasa 'object'Powtórzenie – hierarchia pracowników7Zaawansowane funkcje
Przeciążanie operatorówIndeksery (this[])Nadpisywanie ToString()Metody rozszerzającePodsumowanie – własna lista2Właściwości i składowe statyczne
Właściwości automatyczneWłaściwości tylko do odczytu i zapisuPola i metody statyczneKlasy statyczneSkładowe z ciałem wyrażeniowym5Polimorfizm i interfejsy
Polimorfizm czasu kompilacji a czasu wykonaniaInterfejs a klasa abstrakcyjnaWiele interfejsówJawne implementowanie interfejsówRzutowanie w górę i w dółPowtórka — kalkulator kształtów8Zaawansowane koncepcje OOP
Kompozycja zamiast dziedziczeniaTypy generyczne (klasy i metody)Delegaty i zdarzeniaAtrybuty i refleksjaIDisposable i instrukcja usingPodstawy wstrzykiwania zależności11Wzorce projektowe, część 2
Wzorzec poleceniaWzorzec adapteraWzorzec dekoratoraWzorzec metody szablonowejWzorzec stanuWzorzec kompozytu3Architektura klas
Dane instancji a dane statyczneSłowa kluczowe 'readonly' i 'const'Pola zapasowePowtórzenie — menedżer kont bankowych6Hermetyzacja
Modyfikatory dostępuWłaściwości w hermetyzacjiImplementacja ukrywania danychWzorce niezmiennościPowtórka — dane studentów9Argumenty zmiennej liczby
Słowo kluczowe „params”Parametry opcjonalneArgumenty nazwanePrzeciążanie metodPoćwicz samodzielnie: Kompilator C# online