1. OOP ilkelerinin tanıtılması

Bugün yeni ve ilginç bir dünya keşfedeceksiniz. Nesne Yönelimli Programlama ( OOP ) dünyası . Daha önce sınıfları ve nesneleri öğrendiniz. Bugün onlar hakkında daha fazlasını öğreneceksiniz, çok daha fazlasını.

OOP, programların artan karmaşıklığına bir yanıt olarak ortaya çıktı. Programlardaki değişkenler ve yöntemler on binleri bulmaya başladığında, bir şeyler yapılması gerektiği ortaya çıktı. Bir çözüm, verileri ve ilişkili yöntemleri ayrı nesnelerde birleştirmekti.

Artık programcılar, nesnelerin harici olarak nasıl etkileşime girdiğini ve dahili olarak nasıl davrandıklarını ayrı ayrı açıklamak zorundaydı. Bu, programları anlamayı ve yazmayı çok daha kolay hale getirdi. Ancak, bir soru kaldı: hangi yöntemler bir nesnenin içinde olmalı ve hangileri diğer nesneler için kullanılabilir olmalıdır?

Birçok yaklaşım denendi. Ve keşfedilen en iyi uygulamalara dayanarak, OOP'nin 4 ilkesi ortaya çıktı. Bunlar soyutlama, kapsülleme, kalıtım ve polimorfizmdir . Daha önce sadece üç tane vardı, ancak uzmanlar daha sonra soyutlamayı da eklemeye karar verdiler.


2. Soyutlama

İnternetteki insanlar hala OOP'deki soyutlamanın tanımı üzerinde tartışıyorlar . Sorun herkesin hatalı olması değil. Herkesin haklı olduğudur . Bir program ne kadar küçükse, Java diline o kadar çok soyutlama bağlıdır. Bir program ne kadar büyükse, gerçek dünya nesnelerini modellemeye/basitleştirmeye o kadar fazla soyutlama bağlıdır.

Ancak en iyi beyinler şu konuda hemfikir görünüyor:

Soyutlama , bir nesnenin yalnızca onu bir programda yeterince doğru bir şekilde temsil eden özelliklerinin kullanılmasıdır. Ana fikir, nesneyi aynı anda görevlerinizin yeterli doğrulukla çözülmesine izin veren en küçük alan ve yöntemlerle temsil etmektir .

Java'da soyutlama, soyut sınıflar ve arayüzler aracılığıyla gerçekleştirilir.

Gerçek hayatta soyutlama

Gerçek hayatta iyi bir soyutlama örneği, bir şirket veya kuruluştaki iş tanımlarıdır. Bir pozisyonun unvanı bir şeydir, ancak bir pozisyona atanan belirli sorumluluklar tamamen farklı bir konudur.

Gelecekteki şirketinizin organizasyon yapısını tasarladığınızı hayal edin. Sekreterlik sorumluluklarını birkaç farklı pozisyona dağıtarak bölebilirsiniz. CEO pozisyonunu birkaç ayrı pozisyona ayırabilirsiniz: CFO, CTO, CMO, İK Direktörü. Veya, örneğin, ofis yöneticisi ve işe alma görevlisi pozisyonlarını bir araya getirebilirsiniz.

İş unvanlarını düşünürsünüz ve ardından bu pozisyonlar için sorumlulukları bölüştürürsünüz. Soyutlama, nesneyi bir bütün olarak koparmak ve ihtiyacımız olan temel özellikleri ve bileşenleri seçmektir.

OOP ilkelerinin tanıtılması.  Soyutlama

Programlama açısından soyutlama, bir programın nesnelere doğru bölünmesidir . Tipik olarak, herhangi bir büyük programı etkileşimli nesneler olarak temsil etmenin düzinelerce yolu vardır. Soyutlama, temel özellikleri seçmenize ve temel olmayanları göz ardı etmenize olanak tanır.


3. Kapsülleme

Kapsüllemenin amacı, nesneleri daha basit hale getirerek etkileşimleri iyileştirmektir.

Ve bir şeyi basitleştirmenin en iyi yolu, karmaşık olan her şeyi meraklı gözlerden gizlemektir. Örneğin, bir Boeing jumbo jetinin kokpitine konulursanız, onu nasıl çalıştıracağınızı hemen anlamazsınız:

Ancak uçaktaki yolcular için her şey daha basit: bir bilet alırsınız ve uçağa binersiniz, uçak kalkar ve sonra iner. Sadece "bilet alma" ve "uçağa binme" yeteneği ile bir kıtadan diğerine kolayca uçabilirsiniz. Uçağı uçuşa, kalkışa, inişe ve çeşitli acil durumlara hazırlamanın tüm karmaşıklığı sizden gizleniyor. Uydu navigasyon, otopilot ve hava trafik kontrol merkezlerinden bahsetmiyorum bile. Bu da bizim için hayatı kolaylaştırıyor.

Programlama açısından, kapsülleme "uygulamayı gizlemektir". Bu tanımı beğendim. Sınıfımız yüzlerce yöntem içerebilir ve çeşitli durumlarda çok karmaşık davranışlar uygulayabilir. Ancak tüm yöntemlerini meraklı gözlerden gizleyebiliriz (özel değiştirici ile işaretleyerek) ve diğer sınıflarla etkileşime girmesi için yalnızca iki veya üç yöntem bırakabiliriz (onları genel değiştirici ile işaretleyerek). O zaman programımızın diğer tüm sınıfları yalnızca üç genel yöntemi görecek ve onları çağıracak, diğerlerini çağırmayacaktır. Ve tüm karmaşıklık, tıpkı kokpitin mutlu yolculardan gizlendiği gibi, sınıfın içinde gizlenecek.


4. Miras

Mirasın iki tarafı vardır . Programlamada kalıtım ve gerçek hayatta kalıtım. Programlamada kalıtım, iki sınıf arasındaki özel bir ilişkidir . Ancak gerçek hayatta kalıtım çok daha ilginçtir.

Gerçek hayatta bir şeyler yaratmamız gerekirse iki seçeneğimiz var:

  1. Çok fazla zaman ve çaba harcayarak ihtiyacımız olan şeyi sıfırdan yaratın.
  2. Zaten var olan bir şeye dayanarak ihtiyacımız olan şeyi yaratın.

En uygun strateji şudur: mevcut iyi bir çözümü alın, biraz değiştirin, ihtiyaçlarımıza uyacak şekilde ayarlayın ve sonra onu kullanın.

İnsanlık tarihinin başlangıcına kadar izini sürersek, gezegende yaşamın başlamasından bu yana milyarlarca yıl geçtiğini keşfederiz. Ama insanın çıkış noktasının primat atalarımız olduğunu düşünürsek (yani insanlar primat atalara "dayanmıştır"), o zaman aradan sadece birkaç milyon yıl geçmiştir. Sıfırdan inşa etmek daha uzun sürer. Daha uzun.

Programlamada, diğerine dayalı bir sınıf oluşturarak benzer bir şey yapabilirsiniz. Yeni sınıf, mevcut sınıftan türer (miras alır). Bu, mevcut bir sınıf ihtiyacımız olan veri ve yöntemlerin %80-90'ına sahip olduğunda çok faydalıdır. Uygun sınıfı yeni sınıfımızın ebeveyni olarak ilan ederiz ve ebeveyn sınıfın tüm verileri ve yöntemleri otomatik olarak yeni sınıfta görünür. Uygun, değil mi?


5. Polimorfizm

Polimorfizm bir programlama kavramıdır. Farklı uygulamaların tek bir arabirimin arkasına gizlendiği bir durumu açıklar. Bir muadili için gerçek hayata baktığımızda, bir araç kullanmanın uygun olduğunu görüyoruz.

Birisi kamyon kullanabiliyorsa, o zaman bir ambulansın direksiyonuna veya bir spor arabanın direksiyonuna da alınabilir. Bir kişi, arabanın türünden bağımsız olarak bir arabayı kullanabilir, çünkü tüm arabalarda aynı kontrol arayüzü vardır: direksiyon simidi, pedallar ve vites değiştirme. Arabaların iç kısımları farklıdır, ancak hepsi aynı kontrol arayüzüne sahiptir.

Programlama dünyasına geri dönersek, polimorfizm, farklı sınıflardaki (genellikle ortak bir ataya sahip olan) nesnelere aynı şekilde erişilmesine izin verir; bu, değeri neredeyse hiç abartılamayacak bir özelliktir. Program büyüdükçe değeri artar.

OOP ilkeler anlamına gelir. İç yasalar. Her biri bizi bir şekilde sınırlandırıyor ama program büyüyünce karşılığında büyük faydalar sağlıyor. OOP'nin dört ilkesi bir masanın dört ayağı gibidir. Birini alın ve tüm sistem kararsız hale gelir.