|
Türetme, Genelleme ve Arayüz Kavramları |
|
Gönderiliyor lütfen bekleyin... |
|
|
Bir önceki makalemizde
sınıfların gösterimini ve sınıflararası ilişkiyi görmüştük, bu makalemizde ise
sınıflar arasındaki türetmeyi, genellemeyi ve arayüz kavramlarını göreceğiz.
TÜRETME(INHERITANCE)
Eğer eşyalar arasında genellemeler yapabiliyorsak genellemeyi yaptığımız
eşyalarda ortak özelliklerin olduğunu biliriz. Mesela, "Hayvan" diye bir
sınıfımız olsun.Memeliler, Sürüngenler, Kuşlar da diğer sınıflarımız
olsun.Memeliler, Sürüngenler ve Kuşlar sınıfının farklı özellikleri olduğu gibi hepsinin
Hayvan olmasından dolayı birtakım ortak özellikleri vardır. Bu yüzden Memeliler, Sürüngenler
ve Kuşlar birer hayvandır deriz. Yani kısacası Memeliler, Sürüngenler ve Kuşlar,
Hayvan sınıfından türemiş ve herbirinin kendine özgü özellikleri vardır deriz.
Nesne yönelimli programlamada buna türetme (Inheritance) denir. UML 'de türetme
aşağıdaki şekilde olduğu gibi gösterilir.
|
Yanda
gördüğünüz türetme ağacında Sürüngenler, Kuşlar ve Memeliler hayvandır.İnsan,
Kedi ve Köpek ise memelidir anlamı çıkmaktadır. Sınıflar arasındaki türetme
işlemi yandaki gibi ucu açık üçgen ve düz bir çizgiyle gösterilir. Bu durumda
"HAYVAN" sınıfı ana sınıf(parent class), Memeliler, Kuşlar ve
Sürüngenler ise yavru (sub class) sınıflardır.
Türetmeye sınıflar arası ilişki açısından baktığımızda türetmenin "is
kind of" (bir çeşit) ilişkisinin olduğu görülür.Yani Kuş bir çeşit
Hayvan'dır deriz. (Bird is kind of Animal) |
Kısaca toplarlarsak, türetmenin ve genellemenin programcı açısından önemi
büyüktür.Nesneler arasında ortak özellikler varsa bunu her sınıfta belirtmenin
yerine ortak özellikleri bir sınıfta toplayıp diğer sınıfları ondan türetip
yeni özellikler ekleyerek organizasyonu daha etkin hale getirebiliriz.Tabi
istersek ortak özelliklerin toplandığı sınıf ile gerçek nesneler oluşturmayı
engelleyebiliriz.Bu tür sınıflara "abstract class" denir.Bir sınıfın
"Abstract" olması için Sınıf ismini italik yazmamız gerekir. |
İÇERME (AGGREGATIONS)
Bazı sınıflar birden
fazla parçadan oluşur.Bu tür özel ilişkiye "Aggregation" denir.Mesela
,bir TV 'yi ele alalım.Bir televizyon çeşitli parçalardan oluşmuştur.Ekran,Uzaktan
Kumanda,Devreler vs.. Bütün bu parçaları birer sınıf ile temsil edersek TV bir
bütün olarak oluşturulduğunda parçalarını istediğimiz gibi ekleyebiliriz. Aggregation
ilişkisini 'bütün parça' yukarıda olacak şekilde ve 'bütün parça'nın ucuna içi boş
elmas yerleştirecek şekilde gösteririz.Örnek bir şekil aşağıdaki gibidir.
|
Yandaki şekilden de görüldüğü üzere bir TV sistemi 1 EKRAN,1 KUMANDA, birden çok
DEVRE 'den oluşmaktadır. TV' nin bir parçası olan KUMANDA ise 2 PİL, 1 TUŞ
TAKIMI ve 1 IŞIK LAMBASI 'ndan oluşmaktadır. İçi boş elma ile gösterilen
ilşkilerde herbir parça ayrı bir sınıftır ve tek başlarına anlam ifade ederler.
Parça bütün arasında çok sıkı bir ilişki yoktur. TV nesnesi yaratıldığında bir
ekran veya bir kumanda nesnesi daha sonradan oluşturularak TV ye takılır. Ama
bazı durumlarda bütün nesneyi yarattığımızda parçalarının da yaratılmasını
isteriz. Mesela bir insan bedenini analizini yapalım.Bir insan vücudu baş,
gövde, el ve ayaklardan oluşur. Bir insan vücudunu düşündüğümüzde tümüyle
düşünürüz. |
Sadece "Beden" nesnesini
oluşturup sonradan bedene el, ayak, baş takmak çok mantıksız
olurdu. Bu tür ilişkilerin gösterilmesine ise "COMPOSITE ASSOCATION" denir. Bu
ilişki diğerine göre daha sıkıdır. Bu tür ilişkilerde bütün nesne
yaratıldığında parçalar da anında yaratılır. Bazı durumlarda, takılacak
parçalar duruma göre değişebilir.Belirli koşullarda Kumanda, bazı durumlarda
da Ekran olmayacaksa bu tür durumlar koşul ifadeleri ile birlikte
noktalı çizgilerle belirtilir.Bu konuyu daha sonraki makalelerimizde detaylı
bir şekilde ele alacağız. Bu durumda takılacak parçalar "constraint(koşul)"
ile belirtilir. |
Bir "COMPOSITE"
ilişkisi aşağıdaki şekilde gösterilir.
|
Gerçek bir BEDEN nesnesi oluştuğunda mutlaka ve mutlaka 1 KAFA, 1 GÖVDE
ve 4 EL_AYAK nesnesi yaratılacaktır.Gördüğünüz gibi sıkı bir parça-bütün
ilişkisi mevcuttur. |
ARAYÜZ(INTERFACE)
Bazı durumlarda bir sınıf sadece belirli işlemleri yapmak için kullanılır. Herhangi
bir sınıfla ilişkisi olmayan ve standart bazı işlemleri yerine getiren sınıfa
benzer yapılara arayüz(interface) denir.Arayüzlerin özellikleri yoktur. Yalnızca
bir takım işleri yerine getirmek için başka sınıflar tarafından kullanılırlar.
Mesela, bir "TuşaBasma" arayüzü yaparak ister onu "KUMANDA"
sınıfında istersek de aşağıdaki şekilde görüldüğü gibi "KLAVYE"
sınıfında kullanabiliriz. Sınıf ile arayüz arasındaki ilişkiyi kesik çizgilerle ve
çizginin ucunda boş üçgen olacak şekilde gösteririz. Sınıf ile arayüz arasındaki bu
ilişkiye gerçekleme(realization) denir. Sınıfla, arayüz arasında UML gösterimi
açısından fazla bir fark yoktur.Tek fark arayüzde özellik(attribute) yoktur.Diğer bir
fark ise arayüz adlarını yazarken adın üstüne yazısını
eklemektir.Aşağıda bir arayüz-sınıf ilişkisi mevcuttur.
|
KLAVYE sınıfı YAZICI arayüzündeki TusBasma() işlevini kullanır.Bu ilişkiye
gerçekleme(realization) denildiğini unutmayın. |
GÖRÜNÜRLÜK(VISIBILITY)
Görünürlük işlemi bir sınıfın
işlevlerine ve özelliklerine ilişkin kullanım alanını belirler.Görünürlük belirtmek için
işlevin ya da özelliğin başına görünürlük seviyesi ile ilgili simge
yazılır. 3 çeşit görünürlük seviyesi vardır.
Public Seviyesi : Bütün sınıflara açık seviye.
İşareti : +
Protected Seviyesi : Sadece ilgili sınıfa ve kendisinden türeyen
sınıfların kullanımına açık seviye.İşareti : #
Private
Seviyesi :
Sadece ilgili sınıfın (orjinal sınıf) erişebileceği seviye. İşareti : -
Mesela bir bilgisayar dosyası ilgili sınıfın özellikleri
ve işlevleri ile ilgili görünülürlük özelliği aşağıdaki gibi gösterilebilir.
|
Class
diyagramlarıyla ilgili söyleyeceklerimiz bunlar.Bir sonraki yazımızda UML
'in diğer önemli yapısı olan "USE CASE" diyagramlarını ele alacağız. |
Yazan : Sefer Algan
([email protected])
Makale:
Türetme, Genelleme ve Arayüz Kavramları UML ve Sistem Analizi Sefer Algan
|
|
|
-
-
Eklenen Son 10
-
Bu Konuda Geçmiş 10
Bu Konuda Yazılmış Yazılmış 10 Makale Yükleniyor
Son Eklenen 10 Makale Yükleniyor
Bu Konuda Yazılmış Geçmiş Makaleler Yükleniyor
|
|