Menu
Coddy logo textTech

Uygulama Bloklarına Giriş

Coddy'nin Rust Journey'sinin Object Oriented Programming bölümünün bir parçası — ders 1 / 61.

Rust'ta struct'lar bir türün hangi verileri tuttuğunu tanımlar, ancak bu türün ne yapabileceğini tanımlamazlar. Bir struct'a davranış kazandırmak için impl anahtar kelimesi ile uygulama bloklarını kullanırız.

Bir implementation bloğu, fonksiyonları (metot olarak adlandırılır) belirli bir struct'a bağlar. İşte temel yapı:

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

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

impl Dog bloğu, Rust'a içerideki her şeyin Dog struct'ına ait olduğunu söyler. Bu ayrım, veri tanımınızı temiz tutarken uygulama bloğuna ihtiyaç duyduğunuz kadar metot eklemenize olanak tanır.

Bir metodu çağırmak için bir örnek üzerinde nokta notasyonunu kullanın:

fn main() {
    let my_dog = Dog {
        name: String::from("Rex"),
        age: 3,
    };
    
    my_dog.bark(); // Çıktı: Rex hav diyor!
}

Veriyi (struct) davranıştan (impl bloğu) ayırmaya yönelik bu desen, Rust kodunu organize etmenin temelidir. Gelecek derslerde, metotların yukarıdaki örnekte gördüğünüz &self parametresi aracılığıyla struct verilerine nasıl eriştiğini inceleyeceğiz.

challenge icon

Görev

Kolay

İki alanı olan bir Cat struct'ı oluşturun: name (String) ve lives (u8).

Cat için &self alan ve kedinin adının ardından " says meow!" yazdıran meow isimli bir metodun bulunduğu bir implementation bloğu ekleyin.

İki girdi alacaksınız:

  • İlk satır: kedinin adı (String)
  • İkinci satır: can sayısı (u8)

Sağlanan değerlerle bir Cat örneği oluşturun ve üzerinde meow metodunu çağırın.

Beklenen çıktı formatı:

{name} says meow!

Kopya kağıdı

Uygulama blokları, impl anahtar kelimesini kullanarak metotları struct'lara bağlar:

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

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

impl bloğu, veri tanımını (struct) davranıştan (metotlar) ayırır. Metotlar nokta notasyonu kullanılarak çağrılır:

let my_dog = Dog {
    name: String::from("Rex"),
    age: 3,
};

my_dog.bark(); // Çıktı: Rex says woof!

Metotlar, struct verilerine erişmek için &self parametresini kullanır.

Kendin dene

use std::io;

// TODO: 'name' (String) ve 'lives' (u8) alanlarına sahip Cat yapısını (struct) tanımlayın


// TODO: Cat için 'meow' metoduna sahip bir uygulama (implementation) bloğu ekleyin


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: Bir Cat örneği oluşturun ve meow metodunu çağırın
    
}
quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Object Oriented Programming bölümündeki tüm dersler