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 içinde tek bir birim altında birleştirme sürecidir.
Bu, sınıf verilerine doğrudan erişime kısıtlamalar getirmeye yardımcı olur ve nihayetinde verilerin yanlışlıkla değiştirilmesini önlememizi sağlar.
Kapsüllemeyi basit bir örnekle iş başında görelim. Genel özelliklere sahip temel bir nesne oluşturalım:
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 değiştirilmesi kolay
console.log(user.email); // Dışarıdan erişilmesi kolayDaha kapsüllenmiş bir yaklaşım, verileri gizlemek için closure'ları (kapatmaları) kullanır:
function createUser(name, email) {
// Bu değişkenler özeldir (kapsüllenmiştir)
let userName = name;
let userEmail = email;
// Özel verilerle etkileşime girmek için yöntemler 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şime geçmek için:
console.log(encapsulatedUser.getName()); // "John"
encapsulatedUser.setName("Jane");
console.log(encapsulatedUser.getName()); // "Jane"
// Veriye doğrudan erişilemez
console.log(encapsulatedUser.userName); // undefinedGörev
Kullanıcı verilerini korumak için kapsülleme (encapsulation) kullanan bir kod size verilmiştir. Göreviniz, yaşa erişmek için bir getAge() yöntemi eklemektir.
Testler şunları kontrol edecektir:
getAge()yöntemi mevcut- Doğru yaşı döndürüyor
- Yaş bilgisi gizli (private) kalıyor
Beklenen Çıktı:
john_doe
25
Kopya kağıdı
Kapsülleme (Encapsulation), verileri bir sınıf içinde tek bir birim altında birleştirme ve bu verilere doğrudan erişimi kısıtlayarak yanlışlıkla değiştirilmesini önleme sürecidir.
Kapsülleme olmadan, nesne özelliklerine herkese açık (public) olarak erişilebilir:
const user = {
name: "John",
email: "john@example.com"
};
user.name = "Jane"; // Doğrudan değiştirilebilir
console.log(user.email); // Doğrudan erişilebilirVerileri kapsüllemek için closure (kapatma) kullanımı:
function createUser(name, email) {
// Özel değişkenler (kapsüllenmiş)
let userName = name;
let userEmail = email;
// Özel verilerle etkileşim kurmak için genel metodlar
return {
getName: function() {
return userName;
},
getEmail: function() {
return userEmail;
},
setName: function(newName) {
userName = newName;
}
};
}
const encapsulatedUser = createUser("John", "john@example.com");
console.log(encapsulatedUser.getName()); // "John"
encapsulatedUser.setName("Jane");
console.log(encapsulatedUser.getName()); // "Jane"
console.log(encapsulatedUser.userName); // undefined (özel verilere erişilemez)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ını vermeli
console.log(user.getAge()); // 25 çıktısını vermeli
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
1Nesneler ve this Anahtar Kelimesi
Hızlı Tekrar: NesnelerNesnelere Metot Eklemethis Anahtar Kelimesini AnlamakYapıcı Fonksiyonlarnew Anahtar KelimesiGenel Tekrar Uygulaması7Kalıtım ve extends Anahtar Kelimesi
Kalıtım"is-a" İlişkisiextends Anahtar Kelimesisuper() MetoduÖzellikleri ve Metotları DevralmaÖzet Meydan Okuması2Kodu Düzenleme
Modüller Nedir?export ile Dışa Aktarmaimport ile İçe AktarmaVarsayılan ve Adlandırılmış Dışa Aktarmalar8OOP Kodunu Düzenleme
Sınıfları Modüller Halinde Düzenleme6Proje: Basit Bir Banka Hesabı
BankAccount SınıfıPara Yatırma ve Para Çekme9Statik Metotlar ve Özellikler
Sınıf Düzeyi ve Örnek DüzeyiStatik ÖzelliklerStatik Yardımcı MetotlarÖzet Meydan Okuma12Getter ve Setter'lar
get ve set Anahtar KelimeleriHesaplanmış ÖzelliklerDoğrulama ve Yan EtkilerÖzet Meydan Okuması15Final Meydan Okumaları
Oyun Karakteri OluşturucuE-ticaret Ürün SistemiÜniversite Yönetim SistemiAkıllı Ev Cihaz Sistemi