Menu
CoddyTech

Struct sebagai object

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

Dalam bahasa berorientasi objek, object adalah entitas yang menggabungkan data (state) dengan fungsi yang beroperasi pada data tersebut (method). C tidak memiliki object bawaan, tetapi kita dapat mencapai konsep yang sama dengan menggunakan struct dan fungsi.

Anggap struct sebagai bagian "data" dari sebuah object. Struct menyimpan keadaan: nilai-nilai yang menentukan seperti apa object saat ini:

typedef struct {
    int value;
} Counter;

struct Counter ini merepresentasikan entitas dengan satu bagian state: nilainya saat ini. Untuk memberinya perilaku, kita menulis fungsi yang menerima struct sebagai parameter:

void counter_increment(Counter *c) {
    c->value++;
}

int counter_get(Counter *c) {
    return c->value;
}

Fungsi-fungsi ini bertindak seperti method. Fungsi-fungsi tersebut beroperasi secara khusus pada data Counter. Dengan meneruskan struct ke fungsi, kita menyimulasikan hal yang dilakukan bahasa lain secara otomatis saat kamu memanggil counter.increment().

int main() {
    Counter my_counter = {0};
    counter_increment(&my_counter);
    printf("%d\n", counter_get(&my_counter)); // Mencetak: 1
    return 0;
}

Konvensi penamaan typename_action (seperti counter_increment) membantu mengatur kodemu dan memperjelas struct mana yang menjadi bagian dari suatu fungsi. Pola ini adalah dasar pemrograman berorientasi object di C.

challenge icon

Tantangan

Mudah

Mari buat module Counter sederhana yang memperlakukan struct sebagai object dengan perilaku. Kamu akan mengatur kodemu dalam tiga file untuk berlatih menggunakan pola yang menggabungkan data dengan fungsi yang mengoperasikannya.

Kamu akan membuat tiga file:

  • counter.h: File header yang mendeklarasikan struct Counter dengan satu anggota int value. Deklarasikan juga dua fungsi yang bertindak sebagai "method" untuk counter: counter_increment (menerima pointer ke Counter dan menaikkan nilainya sebesar 1) dan counter_get (menerima pointer ke Counter dan mengembalikan nilainya saat ini). Gunakan include guard dengan simbol COUNTER_H.
  • counter.c: File source yang mengimplementasikan kedua fungsi. Ingat untuk menyertakan file header-mu.
  • main.c: File utama yang membuat Counter, melakukan operasi padanya, dan menampilkan hasilnya.

Kamu akan menerima dua input integer: nilai awal counter-mu dan jumlah berapa kali nilainya dinaikkan.

Di file utama, inisialisasi Counter dengan nilai awal, lalu panggil counter_increment sebanyak jumlah yang ditentukan. Terakhir, gunakan counter_get untuk mengambil dan mencetak nilai akhirnya.

Cetak hasilnya dengan format ini:

Final value: {result}

Contohnya, dengan nilai awal 5 dan kenaikan sebanyak 3 kali, output-nya adalah:

Final value: 8

Coba sendiri

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

int main() {
    // Baca input
    int starting_value;
    int num_increments;
    scanf("%d", &starting_value);
    scanf("%d", &num_increments);
    
    // TODO: Buat Counter dan inisialisasi dengan starting_value
    
    // TODO: Panggil counter_increment sebanyak jumlah yang ditentukan
    
    // TODO: Gunakan counter_get untuk mengambil nilai akhir dan mencetaknya
    // Format cetak: "Final value: {result}"
    
    return 0;
}
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Pemrograman Berorientasi Objek

Latihan sendiri: Compiler C online