Menu
Coddy logo textTech

Pobieranie salda

Część sekcji Programowanie obiektowe ścieżki C w Coddy. Lekcja 26 z 61.

challenge icon

Wyzwanie

Łatwy

Twój moduł konta bankowego jest prawie gotowy! Masz już możliwość tworzenia kont, wpłacania środków i wypłacania pieniędzy, ale brakuje jeszcze jednego ważnego elementu. Obecnie zewnętrzny kod nie ma możliwości sprawdzenia aktualnego salda. Naprawmy to, dodając funkcję pobierającą.

Funkcja pobierająca to właściwy sposób na udostępnienie ukrytych danych w enkapsulowanym module. Zamiast upubliczniać pole salda (co naruszyłoby enkapsulację), udostępniasz funkcję tylko do odczytu, która zwraca tę wartość. Dzięki temu dane pozostają chronione, a jednocześnie można uzyskać do nich kontrolowany dostęp.

Kontynuujesz pracę z trzema plikami:

  • account.h: Dodaj nowy prototyp funkcji: get_balance. Funkcja przyjmuje argument typu const Account * (ponieważ tylko odczytuje dane i nigdy ich nie modyfikuje) i zwraca wartość typu double reprezentującą aktualne saldo. Zachowaj wszystkie istniejące deklaracje.
  • account.c: Zaimplementuj funkcję get_balance. Po prostu zwraca ona ukryte pole salda konta. Zwróć uwagę, że ta funkcja może uzyskać dostęp do danych wewnętrznych, ponieważ jest zdefiniowana w tym samym pliku co struktura: kod zewnętrzny nadal nie może zajrzeć do środka bezpośrednio.
  • main.c: Wreszcie możesz zobaczyć, co dzieje się na Twoich kontach! Utwórz konto, wykonaj kilka transakcji i użyj nowej funkcji pobierającej, aby wyświetlić saldo na każdym etapie.

Otrzymasz cztery dane wejściowe: identyfikator konta (liczbę całkowitą), kwotę wpłaty, kwotę wypłaty i kwotę drugiej wpłaty.

W pliku głównym utwórz konto i wyświetl jego początkowe saldo (powinno wynosić 0.00). Wpłać pierwszą kwotę i wyświetl nowe saldo. Wypłać podaną kwotę i ponownie wyświetl saldo. Na koniec dokonaj drugiej wpłaty i wyświetl saldo końcowe. Następnie zniszcz konto.

Wyświetl wynik w tym formacie:

Account 1001 created
Balance: 0.00
Balance: 500.00
Balance: 200.00
Balance: 350.00
Account destroyed

Gdzie 1001 to identyfikator konta, a salda odpowiadają kolejno: wartości początkowej (0.00), wartości po wpłacie 500.00, wartości po wypłacie 300.00 i wartości po kolejnej wpłacie 150.00. Formatuj wszystkie wartości salda z dokładnością do dwóch miejsc po przecinku, używając %.2f.

Dzięki tej funkcji pobierającej moduł konta bankowego zapewnia teraz kompletny, kontrolowany dostęp do danych konta: użytkownicy mogą sprawdzać saldo, ale mogą je zmieniać wyłącznie za pomocą funkcji wpłaty i wypłaty, które weryfikują poprawność operacji.

Spróbuj swoich sił

#include <stdio.h>
#include "account.h"

int main() {
    int account_id;
    scanf("%d", &account_id);
    
    double deposit1;
    scanf("%lf", &deposit1);
    
    double withdraw_amount;
    scanf("%lf", &withdraw_amount);
    
    double deposit2;
    scanf("%lf", &deposit2);
    
    Account* account = create_account(account_id);
    printf("Account %d created\n", account_id);
    
    // TODO: Wypisz saldo początkowe, używając get_balance
    
    deposit(account, deposit1);
    // TODO: Wypisz saldo po pierwszej wpłacie
    
    withdraw(account, withdraw_amount);
    // TODO: Wypisz saldo po wypłacie
    
    deposit(account, deposit2);
    // TODO: Wypisz saldo po drugiej wpłacie
    
    destroy_account(account);
    printf("Account destroyed\n");
    
    return 0;
}

Wszystkie lekcje w sekcji Programowanie obiektowe

Poćwicz samodzielnie: Kompilator C online