Mendapatkan Saldo
Termasuk bagian Pemrograman Berorientasi Objek dalam perjalanan C di Coddy. Pelajaran 26 dari 61.
Tantangan
MudahRekening Bank-mu hampir selesai! Kamu sudah membangun kemampuan untuk membuat rekening, menyetor dana, dan menarik uang, tetapi masih ada satu bagian penting yang belum ada. Saat ini, kode eksternal tidak dapat melihat saldo terkini. Mari kita perbaiki dengan menambahkan fungsi getter.
Getter adalah cara yang tepat untuk mengekspos data tersembunyi dalam module yang dienkapsulasi. Alih-alih membuat field saldo menjadi public (yang akan merusak enkapsulasi), kamu menyediakan fungsi hanya-baca yang mengembalikan nilai tersebut. Ini menjaga data tetap terlindungi sekaligus memungkinkan akses yang terkendali.
Kamu akan melanjutkan pekerjaan dengan tiga file:
account.h: Tambahkan prototype fungsi baru:get_balance. Fungsi ini menerimaconst Account *(karena hanya membaca data, tidak pernah mengubahnya) dan mengembalikandoubleyang mewakili saldo terkini. Pertahankan semua deklarasi yang sudah ada.account.c: Implementasikan fungsiget_balance. Fungsi ini hanya mengembalikan field saldo tersembunyi dari rekening. Perhatikan bahwa fungsi ini dapat mengakses data internal karena didefinisikan di file yang sama dengan struct: kode eksternal tetap tidak dapat mengintip isinya secara langsung.main.c: Sekarang kamu akhirnya bisa melihat apa yang terjadi di dalam rekeningmu! Buat rekening, lakukan beberapa transaksi, dan gunakan getter baru untuk menampilkan saldo pada setiap tahap.
Kamu akan menerima empat input: ID rekening (bilangan bulat), jumlah setoran, jumlah penarikan, dan jumlah setoran kedua.
Di file utama, buat rekening dan cetak saldo awalnya (seharusnya 0.00). Setorkan jumlah pertama dan cetak saldo baru. Tarik jumlah yang ditentukan dan cetak saldo lagi. Terakhir, lakukan setoran kedua dan cetak saldo akhir. Lalu hancurkan rekening tersebut.
Cetak output dengan format ini:
Account 1001 created
Balance: 0.00
Balance: 500.00
Balance: 200.00
Balance: 350.00
Account destroyedDi sini, 1001 adalah ID rekening, dan saldo mencerminkan: saldo awal (0.00), setelah menyetor 500.00, setelah menarik 300.00, dan setelah menyetor 150.00 lagi. Format semua nilai saldo dengan dua angka desimal menggunakan %.2f.
Dengan getter ini, module Rekening Bank-mu kini menyediakan akses yang lengkap dan terkendali ke data rekening: pengguna dapat melihat saldo, tetapi hanya dapat mengubahnya melalui fungsi setoran dan penarikanmu yang sudah divalidasi.
Coba sendiri
#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: Cetak saldo awal menggunakan get_balance
deposit(account, deposit1);
// TODO: Cetak saldo setelah setoran pertama
withdraw(account, withdraw_amount);
// TODO: Cetak saldo setelah penarikan
deposit(account, deposit2);
// TODO: Cetak saldo setelah setoran kedua
destroy_account(account);
printf("Account destroyed\n");
return 0;
}Semua pelajaran di Pemrograman Berorientasi Objek
1Dasar-Dasar Pemrograman Modular
file headerProteksi includefile sumberFungsi StatisRingkasan: Kalkulator Modular4Enkapsulasi
Konsep Opaque PointerMendefinisikan Opaque StructGetter dan SetterValidasi pada SetterUlasan: Kotak Rahasia2Object dan method
Struct sebagai objectPointer 'self'Konsistensi constPointer vs nilaiMethod pembantuRangkuman: Pengelola Point5Proyek: Akun Bank Sederhana
Penyiapan ProyekImplementasi Akun3Siklus Hidup object
Pola KonstruktorPola DestruktorInisialisasi StackSalinan MendalamRangkuman: Pembungkus string6Pewarisan melalui Komposisi
Penyematan StructAturan Anggota PertamaMengakses Anggota ParentUpcastingRekap: Hierarki Bentuk9Proyek: Penggambar Bentuk
Ringkasan ProyekImplementasi LingkaranImplementasi Persegi PanjangPenggunaan PolimorfismeWadah BentukLatihan sendiri: Compiler C online