Bence bu soruyu anlamalısın, soyutlamanın ne olduğunu anlamalısın. (Resmi bir tanım bulamadığım için çok tembelim, bu yüzden ölmek üzere olduğumdan eminim, ama işte gidiyor ...) Karmaşık bir konuya girdiğinizde veya ayrıntılarını çoğaldığında ve sakladığınızda bir soyutlama olur. Bu nesnenin özünü hala tanımlayan işlevselliği ortaya koyarken.
Kitabın sana verdiği örneğin bir ev olduğuna inanıyorum. Eve çok detaylı bir şekilde bakarsanız, panolardan, çivilerden, pencerelerden, kapılardan oluştuğunu görürsünüz ... Ama bir fotoğrafın yanındaki evin çizim karikatürü hala eksik olsa bile, bir evdir. bu ayrıntıların çoğu.
Yazılım ile aynı şey. Programladığınız zaman, tıpkı kitabın tavsiye ettiği gibi, yazılımınızı katman olarak düşünmeniz gerekir. Belirli bir program, yüzden fazla katmana kolayca sahip olabilir. En altta, bir CPU üzerinde çalışan montaj talimatlarına sahip olabilirsiniz, daha yüksek bir seviyede bu talimatlar, disk G / Ç yordamları oluşturmak için birleştirilebilir, ancak daha yüksek bir seviyede, Disk I / ile çalışmanıza gerek yoktur O doğrudan, Windows işlevlerini bir dosyayı açmak / okumak / yazmak / aramak / kapatmak için kullanabilirsiniz. Bunların hepsi kendi uygulama kodunuza girmeden önce bile soyutlamalar.
Kodunuzda, soyutlama katmanları devam eder. Daha düşük seviyeli string / network / data manipülasyon yordamlarınız olabilir. Daha yüksek bir seviyede bu rutinleri kullanıcı yönetimi, kullanıcı arayüzü katmanı, veritabanı erişimi tanımlayan alt sistemlerde birleştirebilirsiniz. Yine bir başka katman, bu alt sistemler daha büyük bir kurumsal sistemin bir parçası olmak için bir araya gelen sunucu bileşenleriyle birleştirilebilir.
Bu soyutlama katmanlarının her birinin anahtarı, her birinin önceki katman (lar) tarafından maruz bırakılan ayrıntıları gizlemesi ve bir sonraki katman tarafından tüketilecek çok temiz bir arayüz sunmasıdır. Bir dosyayı açmak için, tek tek sektörlerin nasıl yazılacağını veya hangi donanımın işlemeyi keseceğini bilmeniz gerekmez. Ancak, soyutlama katmanı zincirinde hareket etmeye başlarsanız, kesinlikle Write () işlev çağrısından, sabit sürücü denetleyicisine gönderilen talimatın sonuna kadar izleyebileceksiniz.
Yazarın size yapması gereken, bir sınıfı veya işlevi tanımladığınızda, hangi katman olduğunuzu düşünün. Alt sistemleri ve kullanıcı nesnelerini yöneten bir sınıfınız varsa, aynı sınıf düşük düzeyli dize işlemi gerçekleştirmemeli veya yalnızca soket aramaları yapmak için bir sürü değişken içermelidir. Bu, soyutlama katmanlarını geçmenin ve aynı zamanda tek bir sınıf / işleve sahip olmanın ihlali olacaktır (SRP - Tek Sorumluluk İlkesi).