Menu
Coddy logo textTech

Implementacja konta

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

challenge icon

Wyzwanie

Łatwy

Teraz czas ożywić Twoje konto bankowe! Interfejs publiczny masz już utworzony w account.h: teraz zaimplementujesz ukryte elementy wewnętrzne, dzięki którym wszystko działa.

Na podstawie swojej wcześniejszej pracy dodasz plik źródłowy zawierający tajną definicję struktury i rzeczywiste implementacje funkcji. To właśnie tutaj naprawdę zachodzi enkapsulacja: ciało struktury istnieje wyłącznie w pliku .c i jest całkowicie niewidoczne dla osób korzystających z Twojej biblioteki.

Będziesz pracować z trzema plikami:

  • account.h: Istniejący plik nagłówkowy z deklaracją nieprzezroczystego typu Account i prototypami funkcji create_account oraz destroy_account. Zachowaj strażniki nagłówka z ACCOUNT_H.
  • account.c: Tutaj dzieje się magia. Zdefiniuj właściwą struct Account z dwoma ukrytymi polami: int id (identyfikator konta) oraz double balance (dla nowych kont początkowo 0.0). Zaimplementuj konstruktor, który przydziela pamięć, ustawia identyfikator na podstawie parametru i inicjalizuje saldo wartością zero. Zaimplementuj destruktor, który prawidłowo zwalnia pamięć.
  • main.c: Przetestuj swoją implementację, tworząc konto i sprawdzając, czy działa. Ponieważ pola struktury są ukryte, nie możesz zajrzeć do jej wnętrza, ale możesz sprawdzić, czy cykl życia działa prawidłowo.

Otrzymasz jedno wejście: identyfikator konta (liczbę całkowitą), który należy przypisać do nowego konta.

W pliku main utwórz konto z podanym identyfikatorem, wypisz komunikat potwierdzający jego utworzenie i pokazujący identyfikator, a następnie zniszcz konto i potwierdź zwolnienie zasobów.

Wypisz wynik w tym formacie:

Account 1001 created
Account destroyed

Wartość 1001 zastąp rzeczywistym identyfikatorem otrzymanym na wejściu.

Pamiętaj: plik main.c nie może uzyskać bezpośredniego dostępu do account->id ani account->balance. Te pola są całkowicie ukryte w pliku account.c. Na razie użyjesz do komunikatu wyjściowego identyfikatora z wejścia. W kolejnych lekcjach dodasz funkcje pobierające, które pozwolą prawidłowo odczytywać ukryte dane.

Spróbuj swoich sił

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

int main() {
    int account_id;
    // TODO: wczytaj account_id z wejścia
    scanf("%d", &account_id);

    // TODO: utwórz konto za pomocą create_account() i wypisz "Account <id> created"

    // TODO: zniszcz konto za pomocą destroy_account() i wypisz "Account destroyed"

    return 0;
}

Wszystkie lekcje w sekcji Programowanie obiektowe

Poćwicz samodzielnie: Kompilator C online