Menu
CoddyTech

Pengantar Blok Implementasi

Termasuk bagian Pemrograman Berorientasi Objek dalam perjalanan Rust di Coddy. Pelajaran 1 dari 61.

Di Rust, struct menentukan data apa yang dimiliki suatu tipe, tetapi tidak menentukan apa yang bisa dilakukan tipe tersebut. Untuk memberikan perilaku pada struct, kita menggunakan blok implementasi dengan kata kunci impl.

Blok implementasi menghubungkan fungsi (yang disebut method) ke struct tertentu. Berikut struktur dasarnya:

struct Dog {
    name: String,
    age: u8,
}

impl Dog {
    fn bark(&self) {
        println!("{} says woof!", self.name);
    }
}

Blok impl Dog memberi tahu Rust bahwa semua yang ada di dalamnya termasuk dalam struct Dog. Pemisahan ini menjaga definisi datamu tetap rapi sekaligus memungkinkan kamu menambahkan sebanyak mungkin method di blok implementasi.

Untuk memanggil method, gunakan notasi titik pada instance:

fn main() {
    let my_dog = Dog {
        name: String::from("Rex"),
        age: 3,
    };
    
    my_dog.bark(); // output: Rex says woof!
}

Pola pemisahan data (struct) dari perilaku (blok impl) ini merupakan dasar untuk mengatur kode Rust. Dalam pelajaran berikutnya, kita akan mempelajari cara method mengakses data struct melalui parameter &self yang kamu lihat pada contoh di atas.

challenge icon

Tantangan

Mudah

Buat struct Cat dengan dua field: name (String) dan lives (u8).

Tambahkan blok implementasi untuk Cat dengan method bernama meow yang menerima &self dan mencetak nama kucing diikuti " says meow!".

Kamu akan menerima dua input:

  • Baris pertama: nama kucing (String)
  • Baris kedua: jumlah nyawa (u8)

Buat instance Cat dengan nilai yang diberikan dan panggil method meow padanya.

Format output yang diharapkan:

{name} says meow!

Coba sendiri

use std::io;

// TODO: Definisikan struct Cat dengan field 'name' (String) dan 'lives' (u8)


// TODO: Tambahkan blok implementasi untuk Cat dengan method 'meow'


fn main() {
    let mut name = String::new();
    io::stdin().read_line(&mut name).expect("Failed to read line");
    let name = name.trim().to_string();
    
    let mut lives_input = String::new();
    io::stdin().read_line(&mut lives_input).expect("Failed to read line");
    let lives: u8 = lives_input.trim().parse().expect("Failed to parse lives");
    
    // TODO: Buat instance Cat dan panggil method meow
    
}
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 Rust online