Menu
CoddyTech

Rekap: Hierarki Bentuk

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

challenge icon

Tantangan

Mudah

Mari buat hierarki shape lengkap yang menunjukkan kekuatan pewarisan melalui komposisi. Kamu akan membuat tipe dasar Shape yang dapat menjadi dasar bagi shape tertentu, lalu membuat Rect yang memperluasnya.

Kamu akan menyusun kodemu dalam tiga file:

  • shape.h: Definisikan hierarki struct dengan include guard. Buat struct Shape dengan satu field color (bilangan bulat). Lalu definisikan struct Rect yang menyertakan Shape sebagai member pertamanya dan menambahkan field width serta height (keduanya bilangan bulat). Deklarasikan dua fungsi: set_color yang menerima Shape* dan nilai warna baru, serta print_rect yang menerima Rect*.
  • shape.c: Implementasikan kedua fungsi. Fungsi set_color-mu bekerja dengan tipe dasar. Fungsi ini mengubah warna shape apa pun. Fungsi print_rect-mu menampilkan semua informasi persegi panjang, termasuk warna yang diwarisinya.
  • main.c: Buat Rect dan inisialisasi semua field-nya. Lalu tunjukkan upcasting dengan memanggil set_color menggunakan persegi panjangmu yang di-cast menjadi Shape*. Terakhir, cetak persegi panjang untuk memastikan warnanya telah diubah melalui pointer tipe dasar.

Kamu akan menerima empat input: width persegi panjang, height-nya, warna awal, dan warna baru yang akan ditetapkan melalui fungsi generik.

Di file utama, buat persegi panjang dengan nilai awal, lalu gunakan set_color untuk mengubah warnanya menjadi nilai baru (ingat untuk melakukan cast dari Rect* menjadi Shape*), dan terakhir panggil print_rect untuk menampilkan hasilnya.

Output-mu akan terlihat seperti ini:

Width: 10
Height: 5
Color: 7

Di sini, 10 adalah width, 5 adalah height, dan 7 adalah warna yang diperbarui (bukan warna awal). Inti pentingnya adalah set_color tidak mengetahui apa pun tentang persegi panjang. Fungsi ini hanya bekerja dengan Shape. Namun, berkat aturan member pertama dan upcasting, warna persegi panjangmu dapat diubah melalui fungsi generik ini.

Coba sendiri

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

int main() {
    int width, height, initial_color, new_color;
    scanf("%d", &width);
    scanf("%d", &height);
    scanf("%d", &initial_color);
    scanf("%d", &new_color);
    
    // TODO: Buat Rect dan inisialisasi semua field-nya
    // (width, height, dan color pada Shape yang tertanam dengan initial_color)
    
    // TODO: Panggil set_color dengan persegi panjang yang dikonversi ke Shape*
    // untuk mengubah color menjadi new_color
    
    // TODO: Panggil print_rect untuk menampilkan hasilnya
    
    return 0;
}

Semua pelajaran di Pemrograman Berorientasi Objek

Latihan sendiri: Compiler C online