Menu
CoddyTech

Implementasi Persegi Panjang

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

challenge icon

Tantangan

Mudah

Mari lanjutkan membangun proyek Shape Drawer dengan mengimplementasikan Rectangle: bentuk konkret lain yang menyematkan struct dasar Shape, seperti yang kita lakukan dengan Circle.

Dengan melanjutkan proyek yang sudah ada, kamu akan menambahkan fungsionalitas rectangle di beberapa file berikut:

  • shape.h: Pertahankan antarmuka dasar Shape dengan tipe pointer fungsi DrawFunc dan AreaFunc dari pelajaran sebelumnya.
  • circle.h dan circle.c: Pertahankan implementasi Circle dari pelajaran sebelumnya.
  • rectangle.h: Definisikan struct Rectangle di sini. Rectangle menyematkan Shape sebagai member pertama dan menambahkan field width dan height (keduanya bertipe double). Deklarasikan fungsi konstruktor create_rectangle yang menerima parameter width dan height serta mengembalikan Rectangle sebagai nilai.
  • rectangle.c: Implementasikan perilaku khusus rectangle:
    • draw_rectangle: mencetak Drawing Rectangle with width: X.XX and height: X.XX (kedua nilai ditampilkan dengan 2 angka di belakang koma)
    • area_rectangle: mengembalikan width × height
    • create_rectangle: menginisialisasi Rectangle, menghubungkan pointer fungsi milik Shape yang disematkan ke fungsi-fungsi rectangle, mengatur dimensinya, lalu mengembalikan rectangle
  • main.c: Tunjukkan kedua bentuk bekerja melalui antarmuka yang sama. Baca dua input: width dan height untuk rectangle. Buat rectangle menggunakan konstruktor, lalu panggil draw dan area melalui pointer fungsi milik Shape yang disematkan. Cetak luas dengan 2 angka di belakang koma.

Programmu akan menerima dua input: nilai width dan height (sebagai angka floating-point).

Contoh output saat inputnya adalah 4.0 dan 3.0:

Drawing Rectangle with width: 4.00 and height: 3.00
Area: 12.00

Contoh output saat inputnya adalah 7.5 dan 2.5:

Drawing Rectangle with width: 7.50 and height: 2.50
Area: 18.75

Sama seperti Circle, Rectangle menyematkan Shape sebagai member pertamanya, sehingga kamu dapat mengakses pointer fungsi melalui member yang disematkan. Pola yang konsisten ini memungkinkan polimorfisme: kedua bentuk dapat diperlakukan secara seragam melalui antarmuka Shape. Ingat untuk menggunakan include guard di semua file header.

Coba sendiri

#include <stdio.h>
#include "shape.h"
#include "rectangle.h"

int main() {
    double width, height;
    scanf("%lf", &width);
    scanf("%lf", &height);
    
    // TODO: Buat persegi panjang menggunakan create_rectangle(width, height)
    
    // TODO: Panggil draw melalui pointer fungsi milik Shape yang tertanam
    
    // TODO: Panggil area melalui pointer fungsi milik Shape yang tertanam
    // TODO: Cetak luas dengan 2 angka di belakang koma: "Area: %.2f\n"
    
    return 0;
}

Semua pelajaran di Pemrograman Berorientasi Objek

Latihan sendiri: Compiler C online