C++'da Veri Gizleme Nedir? Soyutlama ve Kapsülleme Açıklaması

Yayınlanan: 2021-05-24

İçindekiler

Veri Gizlemeye Giriş

Veri, bir programın en hassas ve değişken bileşenidir ve manipüle edilirse hatalı çıktıya neden olabilir ve verilerin bütünlüğüne zarar verebilir. Veri gizlemenin gerekli olduğu yer burasıdır. Teknik jargonda, bilgi gizleme olarak da adlandırılan veri gizleme, dahili nesne ayrıntılarını son kullanıcıdan gizlemek için doğal bir nesne yönelimli programlama mekanizmasıdır (OOP).

Veri gizlemenin temel amacı, bir sınıf içindeki verileri yetkisiz erişimden gizlemek ve sınıf dışından gereksiz sızmayı önlemektir. Veri gizleme, nesne bütünlüğünü sağlamak ve söz konusu programda istenmeyen veya amaçlanan değişiklikleri önlemek için kısıtlı veri erişimini garanti eder.

Basitçe söylemek gerekirse, veri gizleme, bir program kodunun belirli kısımlarını alır ve onu nesne üyelerinden süzer. Bir nesne üyesi gizli verilere erişmeye çalışıyorsa, program bir hata döndürür. Bu, programcının gizlenmiş hatalı verilere bağlanmaktan kaçınmasını sağlamak için tanıtılan bir uyarı mekanizmasıdır. Genellikle gizli olan, kullanıcının tarafında öngörülebilir bir ihtiyacı olmayan dahili bileşenlerdir.

Veri Gizleme, Veri Soyutlama ve Veri Kapsülleme

C++'da veri gizleme, diğer iki OOP özelliğiyle, soyutlama ve kapsüllemeyle yakından ilişkilidir.

Veri soyutlama

Veri soyutlama, son kullanıcıya yalnızca ilgili program arabirimini gösteren ve daha karmaşık ve karmaşık uygulama ayrıntılarını gizleyen bir mekanizmadır. Daha iyi anlamak için gerçek hayattan bir örnek düşünelim. Televizyonunuzu düşünün. Televizyonu açıp kapatabilir, kanalı değiştirebilir, sesini ayarlayabilir ve VCR, DVD oynatıcı ve hoparlör gibi harici bileşenler ekleyebilirsiniz. Ama televizyonun iç mekanizmalarını bilmiyorsunuz.

Sinyalleri nasıl aldığını, çevirdiğini ve sonunda çıktıyı nasıl gösterdiğini bilmiyorsunuz. Dolayısıyla televizyon, iç uygulama ile dış etki arasındaki ayrımın usta bir örneğidir. Veri soyutlama ile sınıf uygulaması, yanlışlıkla yapılan hatalardan korunur ve değişen gereksinimlere veya kullanıcı düzeyinde müdahale olmaksızın hata raporlarına yanıt olarak gelişir.

Veri Kapsülleme

Veri kapsülleme, verilerin ve bunlarla ilgili işlevlerin sınıf adı verilen tek bir birimde toplanması anlamına gelir. Yani, bir nesnenin dışından görünmez bir özniteliğiniz varsa ve onu ona okuma veya yazma erişimi sağlayan yöntemlerle paketlerseniz, hassas bilgileri gizleyebilir ve nesnenin iç durumuna erişimi düzenleyebilirsiniz.

Bu nedenle, uyguladığınız yöntemlere bağlı olarak, bir özniteliğin okunup değiştirilemeyeceğine veya salt okunur olup olmadığına veya hiç görünmeyeceğine karar vermekle yükümlüsünüz.

Veri gizleme ve veri kapsülleme arasındaki fark

OOP'yi tartışırken, veri gizleme ve veri kapsülleme genellikle birbirinin yerine kullanılır çünkü bu iki kavram da ortak bir amaç-yardımcı hassas bilgi bekçisi gerçekleştirmek için işbirliği yapar. Veri kapsülleme fikri şüphesiz işlevsel olarak veri gizlemeyle karşılaştırılabilir, ancak farklı seviyelerde çalıştıkları için yapısal olarak farklıdırlar.

Her ne kadar özünde birbiriyle ilişkili olsa da, veri gizleme ve veri kapsülleme arasında çok önemli bir fark vardır.

  1. Veri gizleme ve kapsülleme arasındaki temel fark, birincisinin programdaki veri güvenliğini artırmaya odaklanması, ikincisi ise programın karmaşıklığını gizlemekle ilgilenmesidir.
  2. Veri gizleme, bir sınıf içindeki bir nesne üyesinin erişilebilirliğine odaklanırken, veri kapsülleme, verilere nasıl erişildiğine ve farklı nesnelerin nasıl davrandığına odaklanır. Kapsülleme, yalnızca bilgi gizleme yoluyla değil, esas olarak bilgi gizleme yoluyla gerçekleştirilir. Bu, programcının nesne üyesinin yapılarını gizlediği ve tüm yöntemlerinin uygulanmasını gizlediği anlamına gelir.
  3. Veri gizleme, veri güvenliğini sağlamak için bir programda veri kullanımını kısıtlamaya odaklanırken, veri kapsülleme, kullanıcıya daha basit bir görünüm sunmak için karmaşık verileri sarmaya (veya kapsüllemeye) odaklanır.
  4. Veri gizlemede, veriler yalnızca özel olarak tanımlanmalıdır. Veri kapsüllemede, veriler genel veya özel olabilir.
  5. Veri gizleme kendi içinde hem bir süreç hem de bir tekniktir, veri kapsülleme ise veri gizlemenin bir alt sürecidir.

Erişim Belirticileri

C++, veri gizlemeyi ve buna bağlı olarak, sınıflar olarak bilinen kullanıcı tanımlı türlerin oluşturulması yoluyla veri soyutlamayı ve veri kapsüllemeyi destekler. Bu oluşturulan sınıfın üyelerinin kapsamı, erişim belirteçleri olarak bilinen anahtar sözcüklerle tanımlanır. Tipik olarak, bir kategori içinde, sınıfın kapsülleme yeteneklerini oluşturmak için kullanılan özel, korumalı ve genel olmak üzere üç tür koruma veya erişim belirteci vardır.

Erişim belirteçleri, bir türün değişkenlerine ve işlevlerine sınıfın dışından nasıl erişilebileceğini tanımlamaya yardımcı olur. Genellikle, bir sınıf içindeki veriler, yanlışlıkla yapılan manipülasyon örneklerini ortadan kaldırmak için özeldir ve işlemleri geneldir. Ancak, bir rütbe içindeki erişilebilirlik herhangi bir kısıtlamaya bağlı değildir.

Özel değişkenler/işlevler: Yalnızca sınıfın bir parçası olarak tanımlanan üyeler tarafından erişilebilir.

Genel değişkenler/işlevler: Programın herhangi bir yerinden erişilebilir.

Korumalı değişkenler/işlevler bir sınıf içinde özeldir ve yalnızca türetilmiş sınıfta uzaktan erişim için kullanılabilir.

Veri Gizleme Uygulaması

Veri gizlemeyi daha iyi anlamak için aşağıdaki örneği ele alalım. Programcı olduğunuzu göz önünde bulundurarak, bir kullanıcının banka hesap bakiyesini ifade eden 'Bakiye' terimi ile bir veri üyesi tanımladığınız 'CheckAccount' adında bir sınıf beyan ettiğinizi varsayalım.

Bu özel örnekte, 'Denge' veri üyesi hassas bilgidir. Bu hassas bilgileri görüntülemek için dışarıdan uygulama erişimi sunabilseniz de, büyük olasılıkla, bu harici uygulamanın üyenin 'Bakiyesinde' depolanan verilerin özelliklerini değiştirmesine izin vermeyeceksiniz. Bu sonuç, veri gizleme kullanılarak elde edilebilir ve daha spesifik olarak, özel erişim belirteci kullanılarak kontrol edilir.

  1. Veri gizleme genellikle öngörülemeyen ve hassas veriler üzerinde yürütülür. Bu tür veriler, bir programın etkin ve hızlı bir şekilde çalıştırılmasında esastır. Yersiz erişim nedeniyle, sonuçta ortaya çıkan veri değişiklikleri verileri kalıcıdır ve daha fazla kullanımdan önce programcının tamamen yeniden çalışmasını zorunlu kılar.
  2. Veri gizleme, sınıf üyelerinin kasıtsız gözden kaçmalara karşı korunmasına yardımcı olur. Bir sınıf genellikle güvenilir bir durumda olması gereken çeşitli ilgili alanları içerir. Bir programcının bu alanlardan herhangi birini doğrudan kontrol etmesine izin verildiğini varsayalım. Bu durumda, ilgili kritik alanları değiştirmeden bir alanı dönüştürerek sınıfınızı çelişkili bir durumda bırakma olasılığınız vardır.

Veri Gizlemenin Faydaları

Veri gizlemenin faydaları çok yönlüdür:

  1. Verilerin öngörülemezliğini ve veri karmaşıklığını azaltmak için kullanılır.
  2. Programın yeniden kullanılabilirliğini artırır.
  3. Yazılım bileşenleri arasındaki karşılıklı bağımlılıkları sınırlayarak, daha fazla sağlamlık için sistem karmaşıklığını da azaltır.
  4. Veriler için fiziksel stoklama tasarımını gizler. Bu, arayüzün net bir şekilde tanımlanmasına yardımcı olur, okunabilirliği ve anlaşılırlığı artırır.
  5. Yolsuzluk ve yetkisiz erişime karşı veri güvencesi sağlar. Başka bir deyişle, önemli verileri gizlemeye yardımcı olur, böylece bilgisayar korsanlarına karşı yüksek güvenlik protokolleri sağlar. Tüm dahili veriler kamuya açıklanacak olsaydı, bilgisayar korsanları dahili verilere kolayca girebilir ve programın işleyişini değiştirmek için kötü niyetli değişiklikler yapabilir. Verileri gizlemek, kodu kırmayı çok daha zor hale getirir, çünkü gizli veriler sınıfın dış üyelerine ve dolayısıyla bilgisayar korsanına görünmez olarak görünür.
  6. Kapsüllenmiş sınıflar basittir, yönetimi kolaydır ve uygulamanın gelecekteki gelişimini kolaylaştırır.

Veri Gizlemenin Dezavantajı

Veri gizlemenin tek dezavantajı ekstra kodlamadır. Veri gizleme, programcıların gizli verilerde istenen etkiyi yaratmak için daha uzun kodlar yazmasını gerektirir.

Dünyanın En İyi Üniversitelerinden Online Yazılım Mühendisliği Kursları öğrenin . Kariyerinizi hızlandırmak için Yönetici PG Programları, Gelişmiş Sertifika Programları veya Yüksek Lisans Programları kazanın.

Çözüm

Veri gizleme, Rus Ruleti oyununa benzer. Rus Ruletinde altı delikten sadece birinde mermi vardır. Saldırının algılanabilir bir veri tehdidi olduğunu hayal edelim. Bir şans vermeye istekli olur musun? Lehinize çalışan beş senaryo olabilir, ancak tehdidi özellikle tanımlayabilir misiniz? Cevap hayır. Tüm senaryolar, eşit olasılıklı bir şüphe ve korku yükü taşır. Bu belirsizliğe teslim olmak yerine, veri tehditlerine karşı tavır alın. Veri gizleme ile gizli göreve gidin.

Java, OOP'ler ve tam yığın yazılım geliştirme hakkında daha fazla bilgi edinmek istiyorsanız, upGrad & IIIT-B'nin çalışan profesyoneller için tasarlanmış ve 500 saatten fazla sıkı eğitim sunan Tam Yığın Yazılım Geliştirmede Yönetici PG Programına göz atın. 9+ proje ve ödev, IIIT-B Mezun statüsü, pratik uygulamalı bitirme projeleri ve en iyi firmalarla iş yardımı.

Nesne yönelimli programlamada kapsülleme nedir?

Kapsülleme, verileri ve veriler üzerinde çalışan kodu birbirine bağlamanın bir yoludur. Veri soyutlamayı dış dünyaya gösterirken veri uygulama detaylarını gizlemek için kullanılan bir mekanizmadır. Bilgileri iyi tanımlanmış bir arabirimin arkasına gizleme işlemi, kapsülleme olarak bilinir. Kapsülleme, güçlü bir nesne yönelimli programlama kavramıdır. Accessor fonksiyonları oluşturularak bir cismin dahili verilerini ve işlemlerini dış dünyadan gizleme işlemidir.

Nesne yönelimli programlamada soyutlama nedir?

Soyutlama, Nesne Yönelimli Programlamada sınıfların arayüzlerini her bir nesnenin uygulama detaylarından ayırmak için kullanılan bir tekniktir. Bu, sınıfı kullanan kodu değiştirmeden kodun değiştirilebileceği anlamına gelir. Nesne yönelimli programlamada (OOP), bir soyutlama, manipüle edilebilen ancak açıkça tanımlanamayan bir nesneyi temsil eder. Soyutlama, OOP'nin önemli bir parçasıdır; bir sınıfın arabirimini, yöntemlerinin uygulanmasından ayırma işlemidir.

Nesne yönelimli programlamada sınıflar ve nesneler nasıl etkileşime girer?

Sınıflar ve nesneler, nesne yönelimli (OO) programlamanın temelidir. Nesne yönelimli programlama, gerçek dünyayı modellemek için nesneleri ve sınıfları kullanan bir programlama paradigmasıdır. Sınıf, bir plan veya şablondur. Bir nesnenin ne olması gerektiğine dair bir açıklama veya belirtimdir. Belirli bir nesne türünün özelliklerini, davranışlarını ve verilerini tanımlar. Nesneler, bir sınıfın örnekleri veya örnekleridir. Bir programdaki her nesne bir veya daha fazla sınıfa sınıflandırılabilir. Bir sınıf, başka bir sınıfın özelliklerini, yöntemlerini ve diğer özelliklerini miras alabilir. Buna miras denir.