Menu
Coddy logo textTech

Kapsülleme

Coddy'nin JavaScript Journey'sinin Nesne Yönelimli Programlama bölümünün bir parçası. Ders 17 / 56.

Kapsülleme, verileri bir sınıfın içinde tek bir birimde birleştirme işlemidir.

Bu, sınıf verilerine doğrudan erişim konusunda kısıtlamalar getirmeye yardımcı olur ve sonuç olarak verilerin yanlışlıkla değiştirilmesini önlememize yardımcı olur. 

Basit bir örnekle kapsüllemenin işleyişini görelim. Genel özelliklere sahip temel bir nesne oluşturun:

const user = {
  name: "John",
  email: "john@example.com"
};

Herkes bu özelliklere doğrudan erişebilir ve bunları değiştirebilir:

user.name = "Jane"; // Dışarıdan kolayca değiştirilebilir
console.log(user.email); // Dışarıdan kolayca erişilebilir

Daha kapsüllenmiş bir yaklaşım, verileri gizlemek için kapanımları kullanır:

function createUser(name, email) {
  // Bu değişkenler özeldir (kapsüllenmiş)
  let userName = name;
  let userEmail = email;
  
  // Özel verilerle etkileşim kurmak için metotlar içeren bir nesne döndür
  return {
    getName: function() {
      return userName;
    },
    getEmail: function() {
      return userEmail;
    },
    setName: function(newName) {
      userName = newName;
    }
  };
}
const encapsulatedUser = createUser("John", "john@example.com");

Şimdi, verilerle etkileşim kurmak için:

console.log(encapsulatedUser.getName()); // "John"
encapsulatedUser.setName("Jane");
console.log(encapsulatedUser.getName()); // "Jane"

// Verilere doğrudan erişilemez
console.log(encapsulatedUser.userName); // undefined
challenge icon

Görev

Kullanıcı verilerini korumak için kapsüllemeyi kullanan bir kod verildi. Görevin, yaşa erişmek için bir getAge() yöntemi eklemek.

Testler şunları kontrol edecek:

  • getAge() yönteminin mevcut olması
  • Doğru yaşı döndürmesi
  • Yaş bilgilerinin gizli kalması

Beklenen Çıktı:

john_doe

25

Kendin dene

import { createUser } from './createUser.js';

// Test kodu - değiştirmeyin
const user = createUser("john_doe", 25);
console.log(user.getUsername()); // "john_doe" çıktısı vermeli
console.log(user.getAge());      // 25 çıktısı vermeli

quiz iconKendini test et

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

Nesne Yönelimli Programlama bölümündeki tüm dersler

Kendi başına pratik yap: Online JavaScript derleyicisi