OOAD - Nesneye Yönelik İlkeler
Nesne Tabanlı Sistemlerin Prensipleri
Nesne yönelimli sistemlerin kavramsal çerçevesi, nesne modeline dayanmaktadır. Nesne yönelimli bir sistemde iki öğe kategorisi vardır -
Major Elements- Büyük derken, bir modelin bu unsurlardan herhangi birine sahip olmaması durumunda, nesne yönelimli olmasının sona erdiği kastedilmektedir. Dört ana unsur:
- Abstraction
- Encapsulation
- Modularity
- Hierarchy
Minor Elements- Küçük ile, bu öğelerin yararlı olduğu, ancak nesne modelinin vazgeçilmez bir parçası olmadığı kastedilmektedir. Üç küçük unsur:
- Typing
- Concurrency
- Persistence
Soyutlama
Soyutlama, OOP'deki bir öğenin veya nesnenin temel özelliklerine, gereksiz veya kazara özelliklerini göz ardı ederek odaklanmak anlamına gelir. Temel özellikler, nesnenin kullanıldığı bağlama göre değişir.
Grady Booch, soyutlamayı şu şekilde tanımlamıştır:
"Soyutlama, bir nesneyi diğer tüm nesnelerden ayıran ve böylece izleyicinin perspektifine göre net bir şekilde tanımlanmış kavramsal sınırlar sağlayan temel özelliklerini belirtir."
Example - Bir sınıf Öğrenci tasarlandığında, enrolment_number, isim, kurs ve adres nitelikleri dahil edilirken pulse_rate ve size_of_shoe gibi özellikler eğitim kurumu perspektifiyle alakasız olduğundan elimine edilir.
Kapsülleme
Kapsülleme, bir sınıf içinde hem öznitelikleri hem de yöntemleri birbirine bağlama işlemidir. Kapsülleme yoluyla, bir sınıfın iç detayları dışarıdan gizlenebilir. Sınıf, sınıf tarafından sağlanan hizmetlerin kullanılabileceği kullanıcı arabirimleri sağlayan yöntemlere sahiptir.
Modülerlik
Modülerlik, problemin genel karmaşıklığını azaltmak için bir problemi (programı) bir dizi modüle ayırma sürecidir. Booch, modülerliği şu şekilde tanımlamıştır:
"Modülerlik, bir dizi birleşik ve gevşek bir şekilde birleştirilmiş modüle ayrıştırılmış bir sistemin özelliğidir."
Modülerlik özünde kapsülleme ile bağlantılıdır. Modülerlik, kapsüllenmiş soyutlamaları modüller içinde yüksek kohezyona sahip gerçek, fiziksel modüllere eşlemenin bir yolu olarak görselleştirilebilir ve bunların modüller arası etkileşimi veya bağlantısı düşüktür.
Hiyerarşi
Grady Booch'un sözleriyle, "Hiyerarşi, soyutlamanın sıralaması veya sıralanmasıdır". Hiyerarşi yoluyla bir sistem, kendi alt sistemlerine sahip olabilen birbiriyle ilişkili alt sistemlerden oluşabilir ve en küçük seviyeli bileşenlere ulaşılana kadar bu şekilde devam eder. "Böl ve yönet" ilkesini kullanır. Hiyerarşi, kodun yeniden kullanılabilirliğine izin verir.
OOA'daki iki tür hiyerarşi şunlardır:
“IS–A” hierarchy- Kalıtımdaki hiyerarşik ilişkiyi tanımlar, böylece bir süper sınıftan, yine alt sınıflara sahip olabilecek bir dizi alt sınıf türetilebilir. Örneğin, bir Çiçek sınıfından bir Gül sınıfını türetirsek, bir gülün çiçektir "olduğunu" söyleyebiliriz.
“PART–OF” hierarchy- Bir sınıfın diğer sınıflardan oluşabileceği kümelenmedeki hiyerarşik ilişkiyi tanımlar. Örneğin, bir çiçek çanak yaprakları, yaprakları, organlarındaki ve karpelden oluşur. Bir taç yaprağının çiçeğin “parçası” olduğu söylenebilir.
Yazıyor
Soyut veri türü teorilerine göre, bir tür, bir dizi öğenin karakterizasyonudur. OOP'de bir sınıf, diğer türlerden farklı özelliklere sahip bir tür olarak görselleştirilir. Yazma, bir nesnenin tek bir sınıf veya türün örneği olduğu fikrinin uygulanmasıdır. Ayrıca, farklı türlerdeki nesnelerin genel olarak birbirleriyle değiştirilmemesini zorunlu kılar; ve ancak kesinlikle gerekliyse çok kısıtlı bir şekilde değiştirilebilir.
İki tür yazım:
Strong Typing - Burada, Eiffel programlama dilinde olduğu gibi, bir nesne üzerindeki işlem derleme sırasında kontrol edilir.
Weak Typing- Burada mesajlar herhangi bir sınıfa gönderilebilir. Smalltalk programlama dilinde olduğu gibi, işlem yalnızca yürütme sırasında kontrol edilir.
Eşzamanlılık
İşletim sistemlerindeki eşzamanlılık, birden çok görevi veya işlemi aynı anda gerçekleştirmeye izin verir. Bir sistemde tek bir süreç olduğunda, tek bir kontrol dizisi olduğu söylenir. Bununla birlikte, çoğu sistemde birden fazla iş parçacığı vardır, bazıları aktif, bazıları CPU için bekliyor, bazıları askıya alındı ve bazıları sonlandırıldı. Birden çok CPU'lu sistemler, doğası gereği eşzamanlı kontrol işlemlerine izin verir; ancak tek bir CPU üzerinde çalışan sistemler, eşzamanlılığı sağlamak için iş parçacığına eşit CPU süresi vermek için uygun algoritmalar kullanır.
Nesne yönelimli bir ortamda, aktif ve pasif nesneler vardır. Etkin nesneler, diğer nesnelerin iş parçacıklarıyla eşzamanlı olarak çalışabilen bağımsız denetim süreçlerine sahiptir. Aktif nesneler birbirleriyle ve tamamen sıralı nesnelerle senkronize olur.
Kalıcılık
Bir nesne bir bellek alanını kaplar ve belirli bir süre boyunca var olur. Geleneksel programlamada, bir nesnenin ömrü tipik olarak onu oluşturan programın çalıştırılma süresidir. Dosyalarda veya veritabanlarında, nesne ömrü, nesneyi oluşturan işlemin süresinden daha uzundur. Bir nesnenin yaratıcısı yok olduktan sonra bile var olmaya devam etmesini sağlayan bu özellik, kalıcılık olarak bilinir.