Implementasi Lingkaran
Termasuk bagian Pemrograman Berorientasi Objek dalam perjalanan C di Coddy. Pelajaran 45 dari 61.
Tantangan
MudahMari lanjutkan membangun proyek Shape Drawer dengan mengimplementasikan Circle: sebuah bentuk konkret yang menyematkan struct dasar Shape dan menyediakan logika menggambar serta perhitungan luasnya sendiri.
Dengan berlandaskan fondasi dari pelajaran sebelumnya, kamu akan mengembangkan proyekmu dengan file-file berikut:
shape.h: Pertahankan antarmuka dasarShapedari pelajaran sebelumnya dengan tipe pointer fungsiDrawFuncdanAreaFunc.circle.h: Definisikan structCircle-mu di sini. Sebuah lingkaran menyematkanShapesebagai anggota pertama (sehingga memungkinkan aturan anggota pertama untuk upcasting) dan menambahkan fieldradiusbertipedouble. Deklarasikan fungsi konstruktorcreate_circleyang menerima radius dan mengembalikanCircleberdasarkan nilai.circle.c: Implementasikan perilaku khusus lingkaran di sini:draw_circle: mencetakDrawing Circle with radius: X.XX(radius ditampilkan dengan 2 angka desimal)area_circle: mengembalikan π × radius² (gunakan3.14159untuk π)create_circle: menginisialisasiCircle, menghubungkan pointer fungsi padaShapeyang disematkan kedraw_circledanarea_circle, menetapkan radius, lalu mengembalikan lingkaran tersebut
main.c: Satukan semuanya. Baca nilai radius sebagai input, buat lingkaran menggunakan konstruktor, lalu panggildrawdanareamelalui pointer fungsi padaShapeyang disematkan. Cetak luas dengan 2 angka desimal.
Programmu akan menerima satu input: nilai radius (sebagai angka floating-point).
Contoh output ketika inputnya adalah 5.0:
Drawing Circle with radius: 5.00
Area: 78.54Contoh output ketika inputnya adalah 3.5:
Drawing Circle with radius: 3.50
Area: 38.48Hal penting yang perlu dipahami adalah bahwa Circle memiliki Shape sebagai anggota pertamanya, sehingga kamu bisa mengakses pointer fungsi melalui circle.base.draw dan circle.base.area (atau nama lain yang kamu gunakan untuk anggota yang disematkan). Saat memanggil fungsi-fungsi ini, berikan pointer ke anggota Shape. Ingat untuk menggunakan include guard di semua file header.
Coba sendiri
#include <stdio.h>
#include "shape.h"
#include "circle.h"
int main() {
double radius;
scanf("%lf", &radius);
// TODO: Buat Circle menggunakan create_circle
// TODO: Panggil draw melalui pointer fungsi milik Shape yang tertanam
// TODO: Panggil area melalui pointer fungsi milik Shape yang tertanam
// dan cetak dengan 2 angka di belakang koma: "Area: %.2f\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