Menu
CoddyTech

Implementasi Lingkaran

Termasuk bagian Pemrograman Berorientasi Objek dalam perjalanan C di Coddy. Pelajaran 45 dari 61.

challenge icon

Tantangan

Mudah

Mari 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 dasar Shape dari pelajaran sebelumnya dengan tipe pointer fungsi DrawFunc dan AreaFunc.
  • circle.h: Definisikan struct Circle-mu di sini. Sebuah lingkaran menyematkan Shape sebagai anggota pertama (sehingga memungkinkan aturan anggota pertama untuk upcasting) dan menambahkan field radius bertipe double. Deklarasikan fungsi konstruktor create_circle yang menerima radius dan mengembalikan Circle berdasarkan nilai.
  • circle.c: Implementasikan perilaku khusus lingkaran di sini:
    • draw_circle: mencetak Drawing Circle with radius: X.XX (radius ditampilkan dengan 2 angka desimal)
    • area_circle: mengembalikan π × radius² (gunakan 3.14159 untuk π)
    • create_circle: menginisialisasi Circle, menghubungkan pointer fungsi pada Shape yang disematkan ke draw_circle dan area_circle, menetapkan radius, lalu mengembalikan lingkaran tersebut
  • main.c: Satukan semuanya. Baca nilai radius sebagai input, buat lingkaran menggunakan konstruktor, lalu panggil draw dan area melalui pointer fungsi pada Shape yang 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.54

Contoh output ketika inputnya adalah 3.5:

Drawing Circle with radius: 3.50
Area: 38.48

Hal 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

Latihan sendiri: Compiler C online