C#nedir?com
 
YAZAR HAKKINDA
Sefer Algan
Sefer Algan
http://www.seferalgan.com
İletişme geçmek için tıklayın.
71 Makalesi yayınlanmakta.
Yazar hakkında detaylı bilgi için tıklayın.
Yayınlanan diğer makaleleri için tıklayın.
İlgili etiketler:  UML / Analiz Sefer Algan
 
YAZI HAKKINDA
Türü : Makale
Serbest Köşede C#nedir?com üyelerinin hazırladıkları yazılar yayınlanır. Bu yazılar editör incelemesine girmeden yayınlanır.
Seviyesi : Başlangıç
Kategori : UML / Analiz
Yayınlanma Tarihi : 8.10.2002
Okunma Sayısı : 44746
Yorum Sayısı : 5     yorum yaz
Site İçi AramaSİTE İÇİ ARAMA
Üye Girişini AçÜye GİRİŞİ
Üye girişi için tıklayın.
Kullanıcı Adı
Şifre
 
Beni her zaman hatırla
Bir hafta boyunca kullanıcı bilgilerinizi kullanıcı çıkışı yapana kadar hatırlar. (Paylaşılan bilgisayarlarda önerilmez.)
 
Şifremi / Kullanıcı Adımı unuttum.
 
.net TV RSS Serbest KÖŞE (?)
Serbest Köşede C#nedir?com üyelerinin hazırladıkları yazılar yayınlanır. Bu yazılar editör incelemesine girmeden yayınlanır.
emre TAŞ
XML - Deniz Kılınç
emre TAŞ
yazının devamı >
emre TAŞ
Decompiling and Reverse Engineering .Net Radyo
emre TAŞ
yazının devamı >
emre TAŞ
Masaüstü mü ? İnternet Mi? .Net Radyo
emre TAŞ
yazının devamı >
emre TAŞ
.Net Kavramları - .Net Radyo
emre TAŞ
yazının devamı >
emre TAŞ
Yeni Başlayanlar için - .Net Radyo
emre TAŞ
yazının devamı >
Makale Gönder Bende Yazmak İstiyorum
.net TV RSSBlogroll
Burak Selim Şenyurt
Asp.Net Core'da Bir WebSocket Macerası 21.10.2017
Burak Selim Şenyurt
.NET Core 2.0 ile Basit Bir Web API Geliştirmek 21.10.2017
Turhal Temizer 'in Blogu
ChatBot UI Sample 21.10.2017
Turhal Temizer 'in Blogu
C# – IRR Function 21.10.2017
  Diğer Herşey
Sponsorlar
BT Akademi
Medya Portakal
Video Hosting Sponsoru
Csharpnedir.com bir Ineta üyesidir
Uzman Abi
Her Yönüyle C# - Sefer Algan
Türetme, Genelleme ve Arayüz Kavramları
 
Kapat
Sayfayı Yazdır Sık Kullanılanlara Ekle Arkadaşıma Gönder MySpace Del.Ico.Us Digg Facebook Google Mixx Reddit StumbleUpon
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 (algans@itu.edu.tr)

Makale:
Türetme, Genelleme ve Arayüz Kavramları UML ve Sistem Analizi Sefer Algan
  • Yazılan Yorumlar
  • Yorum Yaz
EYL
19
2005
hocam makaleleriniz bana programlamaya karşı çok daha farklı bakış açıları kazandırıyor.. teşekkürler...
HAZ
9
2004
evet bu çevrimler bana ait,ancak zaten ben karşılıkların genel olarak kullanıldığını düşünüyorum. Bir kaç kişiden daha duyduğumu söyleyebilirim. Delegation konusunu başka bir makale için düşünmüştük. Zira bu kavram diğerleri kadar sık karşılaşılan bir olgu değil.
HAZ
9
2004
aggregation = icerme, inheritance = turetme cevirimlerini kendimiz mi yaptiniz? Genel olarak kabul edilen bir OO terminolojisi ne yazikki yok henuz. Ama www.tbd.org.tr nin sozlugunu onereblirim. makale cok ise yarar bi makale, fakat "delegation" kavrami makalede ele alinmamis. iyi günler.
MAR
23
2004
bende yorumunuz için teşekkür ederim..
MAR
23
2004
Elimde UML hakkında o kadar kaynak var ama böyle açık net anlaşılır anlatanı yok . Ne kadar teşekkür etsem az .
Sayfalar : 1 
Yorum yazabilmek için üye girişi yapmalısınız. Üye girişi için tıklayın.
Üye değilseniz Üyel Ol linkine tıklayarak üyeliğinizi hemen başlatabilirisniz.
 
  • Bu Konuda Son 10
  • 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