yzm 2118 yazılım mimarisi ve tasarımı · •nesneye yönelik programlama yaklaımı ile...
TRANSCRIPT
![Page 1: YZM 2118 Yazılım Mimarisi ve Tasarımı · •Nesneye Yönelik programlama yaklaımı ile düündüğünüzde, her ey bir nesne ve her nesne bir sınıfın somutlaúmı bir örneğidir](https://reader030.vdocuments.pub/reader030/viewer/2022040220/5e234eab4eb36f38e666cd47/html5/thumbnails/1.jpg)
YZM 2118
Yazılım Mimarisi ve Tasarımı
Yrd. Doç. Dr. Deniz KILINÇ Celal Bayar Üniversitesi
Hasan Ferdi Turgutlu Teknoloji Fakültesi
Yazılım Mühendisliği
1 Celal Bayar Üniversitesi - YZM 2118 Yazılım
Mimarisi ve Tasarımı
![Page 2: YZM 2118 Yazılım Mimarisi ve Tasarımı · •Nesneye Yönelik programlama yaklaımı ile düündüğünüzde, her ey bir nesne ve her nesne bir sınıfın somutlaúmı bir örneğidir](https://reader030.vdocuments.pub/reader030/viewer/2022040220/5e234eab4eb36f38e666cd47/html5/thumbnails/2.jpg)
BÖLÜM - 1
OOP Hatırlatma
2
Bu bölümde Nesneye Yönelik Programlama ile
ilgili genel hatırlatma yapılacaktır.
Sınıf (Class)
Nesneler (Object)
Kapsülleme ve Arayüz (Encapsulation &
Interface)
Kalıtım (Inheritance)
Çok Biçimlilik (Polymorphism)
Celal Bayar Üniversitesi - YZM 2118 Yazılım Mimarisi ve Tasarımı
![Page 3: YZM 2118 Yazılım Mimarisi ve Tasarımı · •Nesneye Yönelik programlama yaklaımı ile düündüğünüzde, her ey bir nesne ve her nesne bir sınıfın somutlaúmı bir örneğidir](https://reader030.vdocuments.pub/reader030/viewer/2022040220/5e234eab4eb36f38e666cd47/html5/thumbnails/3.jpg)
• Nesne yönelimli programlama (OOP), (Object
Oriented Programming) nesneyi merkezine alan
bir bilgisayar programlama yaklaşımıdır.
• Nesneye-yönelik programlamanın temel
kavramları;
– büyük programlar yazmayı kolaylaştıran soyutlama,
– programları değiştirmeyi ve korumayı kolaylaştıran
saklama ve
– programları kolayca genişletilebilir kılan sınıf
hiyerarşisi’dir.
3
Nesneye Yönelik Programlamaya Giriş
Celal Bayar Üniversitesi - YZM 2118 Yazılım Mimarisi ve Tasarımı
![Page 4: YZM 2118 Yazılım Mimarisi ve Tasarımı · •Nesneye Yönelik programlama yaklaımı ile düündüğünüzde, her ey bir nesne ve her nesne bir sınıfın somutlaúmı bir örneğidir](https://reader030.vdocuments.pub/reader030/viewer/2022040220/5e234eab4eb36f38e666cd47/html5/thumbnails/4.jpg)
Önemli özelliklere odaklanabilmek için
ayrıntıları göz ardı etme sürecidir.
4
Soyutlama
Celal Bayar Üniversitesi - YZM 2118 Yazılım Mimarisi ve Tasarımı
![Page 5: YZM 2118 Yazılım Mimarisi ve Tasarımı · •Nesneye Yönelik programlama yaklaımı ile düündüğünüzde, her ey bir nesne ve her nesne bir sınıfın somutlaúmı bir örneğidir](https://reader030.vdocuments.pub/reader030/viewer/2022040220/5e234eab4eb36f38e666cd47/html5/thumbnails/5.jpg)
• Soyutlama temel olarak veri ve kontrol
soyutlaması olarak yapılır.
– Bir veri tipinin nasıl yapılandığının ayrıntılarını
göz ardı etmemize izin veren soyutlama tarzına
“veri soyutlaması” denir.
– Kontrol soyutlaması ise yapısal programlama
ile gelen altprogram, fonksiyon gibi kavramlar
üzerinde yapılan soyutlamadır.
5
Soyutlama (devam...)
Celal Bayar Üniversitesi - YZM 2118 Yazılım Mimarisi ve Tasarımı
![Page 6: YZM 2118 Yazılım Mimarisi ve Tasarımı · •Nesneye Yönelik programlama yaklaımı ile düündüğünüzde, her ey bir nesne ve her nesne bir sınıfın somutlaúmı bir örneğidir](https://reader030.vdocuments.pub/reader030/viewer/2022040220/5e234eab4eb36f38e666cd47/html5/thumbnails/6.jpg)
• Nesne , niteliklere ve davranışlara sahip
somut bir varlıktır(entity).
– Bir nesnenin niteliği onun sahip olduğu
özelliklerdir.
– Nesnenin bir niteliğinin değeri o nesnenin
durumunu oluşturur.
– Bir nesnenin davranışları onun/onunla
yapabildiği/yapılabilen şeylerdir.
6
Nesne Kavramı
Celal Bayar Üniversitesi - YZM 2118 Yazılım Mimarisi ve Tasarımı
![Page 7: YZM 2118 Yazılım Mimarisi ve Tasarımı · •Nesneye Yönelik programlama yaklaımı ile düündüğünüzde, her ey bir nesne ve her nesne bir sınıfın somutlaúmı bir örneğidir](https://reader030.vdocuments.pub/reader030/viewer/2022040220/5e234eab4eb36f38e666cd47/html5/thumbnails/7.jpg)
Bir programlama dilinin Nesneye Yönelik Programlama dili
olması için şu özelliklere sahip olması gereklidir:
1. Sınıf (Class)
2. Nesneler (Object)
3. Kapsülleme ve Arayüz ( Encapsulation & Interface )
4. Kalıtım (Inheritance)
5. Çok Biçimlilik (Polymorphism)
7
Nesneye Yönelik Programlama
Celal Bayar Üniversitesi - YZM 2118 Yazılım Mimarisi ve Tasarımı
![Page 8: YZM 2118 Yazılım Mimarisi ve Tasarımı · •Nesneye Yönelik programlama yaklaımı ile düündüğünüzde, her ey bir nesne ve her nesne bir sınıfın somutlaúmı bir örneğidir](https://reader030.vdocuments.pub/reader030/viewer/2022040220/5e234eab4eb36f38e666cd47/html5/thumbnails/8.jpg)
Sınıf Kavramını Anlamak (devam…)
• Nesneye Yönelik programlama yaklaşımı ile
düşündüğünüzde, her şey bir nesne ve her
nesne bir sınıfın somutlaşmış bir örneğidir.
• Bir sınıf her nesne için farklı olan veri
bileşeni, yani üye değişkenler barındırır.
• Ayrıca nesnelerin özellikleri, sınıf
içerisinde kullanılan diğer değişkenler ile
karışmaması için field olarak adlandırılır.
8 Celal Bayar Üniversitesi - YZM 2118 Yazılım Mimarisi ve Tasarımı
![Page 9: YZM 2118 Yazılım Mimarisi ve Tasarımı · •Nesneye Yönelik programlama yaklaımı ile düündüğünüzde, her ey bir nesne ve her nesne bir sınıfın somutlaúmı bir örneğidir](https://reader030.vdocuments.pub/reader030/viewer/2022040220/5e234eab4eb36f38e666cd47/html5/thumbnails/9.jpg)
Sınıf Kavramını Anlamak (devam…)
• Nesnenin örnek değişkenlerinin içerikleri, o
nesnenin durumunu belirler.
• Önceden yaratılmış bir sınıftan nesne türeten bir
program ya da bir sınıfa class client(istemci sınıf)
denir.
9 Celal Bayar Üniversitesi - YZM 2118 Yazılım Mimarisi ve Tasarımı
![Page 10: YZM 2118 Yazılım Mimarisi ve Tasarımı · •Nesneye Yönelik programlama yaklaımı ile düündüğünüzde, her ey bir nesne ve her nesne bir sınıfın somutlaúmı bir örneğidir](https://reader030.vdocuments.pub/reader030/viewer/2022040220/5e234eab4eb36f38e666cd47/html5/thumbnails/10.jpg)
Sınıflardan Nesne Yaratmak
• Sınıfları tanımlarken öncelikle bir sınıf
başlığı/tanımı yaratılmalıdır. Sınıf başlığı üç
parçadan oluşur:
1. İsteğe bağlı bir erişim belirleyici,
2. class anahtar kelimesi,
3. Sınıfın adı [erişim belirleyici] class [sınıfAdı]
Örneğin; public class Isci
Sınıf adları nesnelerin tipini tanımladığı için
genellikle tek bir addan oluşur.
10 Celal Bayar Üniversitesi - YZM 2118 Yazılım Mimarisi ve Tasarımı
![Page 11: YZM 2118 Yazılım Mimarisi ve Tasarımı · •Nesneye Yönelik programlama yaklaımı ile düündüğünüzde, her ey bir nesne ve her nesne bir sınıfın somutlaúmı bir örneğidir](https://reader030.vdocuments.pub/reader030/viewer/2022040220/5e234eab4eb36f38e666cd47/html5/thumbnails/11.jpg)
Sınıflardan Nesne Yaratmak (devam…)
11
Sınıf Erişim Belirleyicisi Açıklama
Public Sınıfa erişim sınırsızdır
Protected Sınıfa erişim bulunduğu sınıf ve bu sınıftan türetilen
sınıflar ile sınırlıdır.
Internal Sınıfa erişim ait olduğu assembly ile sınırlıdır.
Private Sınıfa erişim ait olduğu sınıf ile sınırlıdır.
Celal Bayar Üniversitesi - YZM 2118 Yazılım Mimarisi ve Tasarımı
![Page 12: YZM 2118 Yazılım Mimarisi ve Tasarımı · •Nesneye Yönelik programlama yaklaımı ile düündüğünüzde, her ey bir nesne ve her nesne bir sınıfın somutlaúmı bir örneğidir](https://reader030.vdocuments.pub/reader030/viewer/2022040220/5e234eab4eb36f38e666cd47/html5/thumbnails/12.jpg)
Üye Değişkenleri ve Üye Metotları
• Sınıfların içerisinde private field’ların kullanımı,
nesneye yönelik dillerin bir özelliği olan
information hiding örneğidir.
• Gerçek hayatta information hiding yöntemiyle
sıkça karşılaşırız.
• Örneğin arabanın deposuna ne kadar yakıt
kaldığını öğrenmek için depoya baktığımızda
göremeyiz.
• Bunun yerine gerekli bilgiyi bize aracın gösterge
panelindeki yakıt göstergesi vermektedir.
12 Celal Bayar Üniversitesi - YZM 2118 Yazılım Mimarisi ve Tasarımı
![Page 13: YZM 2118 Yazılım Mimarisi ve Tasarımı · •Nesneye Yönelik programlama yaklaımı ile düündüğünüzde, her ey bir nesne ve her nesne bir sınıfın somutlaúmı bir örneğidir](https://reader030.vdocuments.pub/reader030/viewer/2022040220/5e234eab4eb36f38e666cd47/html5/thumbnails/13.jpg)
Üye Değişkenleri ve Üye Metotları (devam…)
• Benzer şekilde Nesneye Yönelik
Programlama yaklaşımında veri field’ları
sıkça private olarak kullanılır fakat
içerdikleri değerlere public metotlar
aracılığıyla erişilir.
13 Celal Bayar Üniversitesi - YZM 2118 Yazılım Mimarisi ve Tasarımı
![Page 14: YZM 2118 Yazılım Mimarisi ve Tasarımı · •Nesneye Yönelik programlama yaklaımı ile düündüğünüzde, her ey bir nesne ve her nesne bir sınıfın somutlaúmı bir örneğidir](https://reader030.vdocuments.pub/reader030/viewer/2022040220/5e234eab4eb36f38e666cd47/html5/thumbnails/14.jpg)
14
Nesne Yaratma (devam…)
Isci benimAsistanim = new Isci();
ifadesindeki new operatöründen sonra gelen
Isci() bölümü bir metot gibi gözükmektedir.
• Aslında bu Isci nesnesinin constructor’ı
başka bir deyişle kurucu metodudur.
Sınıfınız için bir constructor
oluşturmadığınızda otomatik olarak
varsayılan kurucu metot sağlanmaktadır.
Celal Bayar Üniversitesi - YZM 2118 Yazılım Mimarisi ve Tasarımı
![Page 15: YZM 2118 Yazılım Mimarisi ve Tasarımı · •Nesneye Yönelik programlama yaklaımı ile düündüğünüzde, her ey bir nesne ve her nesne bir sınıfın somutlaúmı bir örneğidir](https://reader030.vdocuments.pub/reader030/viewer/2022040220/5e234eab4eb36f38e666cd47/html5/thumbnails/15.jpg)
15
Properties
• Sıklıkla, bir nesne ile çağırılan metotlar, o nesnenin
fieldlarının durumunu değiştirmek için kullanılır.
• Daha sonra Isci sınıfından benimAsistanim adında bir
nesne yarattığınızda bu metodu aşağıdaki gibi
çağırabilirsiniz:
benimAsistanim.kimlikNoAyarla(21);
• Bu teknik farklı dillerde de bu şekilde kullanılabilir
Java’da programlarken benzer işlemler için
properties’ler kullanılır.
Celal Bayar Üniversitesi - YZM 2118 Yazılım Mimarisi ve Tasarımı
![Page 16: YZM 2118 Yazılım Mimarisi ve Tasarımı · •Nesneye Yönelik programlama yaklaımı ile düündüğünüzde, her ey bir nesne ve her nesne bir sınıfın somutlaúmı bir örneğidir](https://reader030.vdocuments.pub/reader030/viewer/2022040220/5e234eab4eb36f38e666cd47/html5/thumbnails/16.jpg)
16
Properties (devam…)
• Property, sınıfın bir fieldına erişim sağlayan bir sınıf
üyesidir. Propertyler field’ların nasıl ayarlanacağını
ve erişimin nasıl olacağını tanımlar.
• Properties, private field’ları ile public metotlar
arasındaki en iyi özellikleri bir arada barındırır.
– Public metotlar gibi private verileri dışarıdan
müdahalelere karşı korur,
– Field’lar gibi adları basit değişken adlarının
kullanıldığı gibi kullanılır. Properties yarattığınızda,
kullandığınız sözdizimi daha kolay anlaşılabilir ve
doğal olur.
Celal Bayar Üniversitesi - YZM 2118 Yazılım Mimarisi ve Tasarımı
![Page 17: YZM 2118 Yazılım Mimarisi ve Tasarımı · •Nesneye Yönelik programlama yaklaımı ile düündüğünüzde, her ey bir nesne ve her nesne bir sınıfın somutlaúmı bir örneğidir](https://reader030.vdocuments.pub/reader030/viewer/2022040220/5e234eab4eb36f38e666cd47/html5/thumbnails/17.jpg)
17
Properties (devam…)
• Bir property, set erişimcisine sahipse yazılabilir, get
erişimcisine sahipse okunabilir olmaktadır. Bir
property sadece get erişimcisine sahipse bu property
sadece okunabilir (ing.: read-only) olur.
• Eğer kullanılan field private yerine public olarak
tanımlansaydı property kullanmamıza gerek
kalmazdı. Fakat bu yöntem (Sınıfın fieldlarını
private, onlara erişmeyi sağlayan metotları public
tanımlanması), nesneye yönelik programlamanın
tutarlı olması için genel olarak kullanılmaktadır.
Celal Bayar Üniversitesi - YZM 2118 Yazılım Mimarisi ve Tasarımı
![Page 18: YZM 2118 Yazılım Mimarisi ve Tasarımı · •Nesneye Yönelik programlama yaklaımı ile düündüğünüzde, her ey bir nesne ve her nesne bir sınıfın somutlaúmı bir örneğidir](https://reader030.vdocuments.pub/reader030/viewer/2022040220/5e234eab4eb36f38e666cd47/html5/thumbnails/18.jpg)
18
Const Fieldlar
• Bir değişkeni const olarak tanımladığınızda,
tanımlayıcısında static belirleyici anahtar kelimesi
geçmese bile static olarak tanımlanır.
• Diğer bir deyişle bu field, bu sınıftan yaratılmış
tek bir nesneye değil de, tamamıyla sınıfa aittir.
Static bir field yarattığınızda, bu sınıftan ne kadar
sayıda nesne türetilirse türetilsin, static field’ın bir
kopyası sınıfın tümü için saklanır.
• Bu field’a o sınıftan nesne yaratmadan da
ulaşılabilir.
Celal Bayar Üniversitesi - YZM 2118 Yazılım Mimarisi ve Tasarımı
![Page 19: YZM 2118 Yazılım Mimarisi ve Tasarımı · •Nesneye Yönelik programlama yaklaımı ile düündüğünüzde, her ey bir nesne ve her nesne bir sınıfın somutlaúmı bir örneğidir](https://reader030.vdocuments.pub/reader030/viewer/2022040220/5e234eab4eb36f38e666cd47/html5/thumbnails/19.jpg)
19
this Referansı
• Bir sınıf yaratıldığında, sınıfın kaynak kodunun
bir kopyası bilgisayarın hafızasında
saklanmaktadır.
• Bununla birlikte, er ya da geç bu sınıftan defalarca
nesne üretilecektir.
• Her yeni bir nesne ürettiğinizde, nesnenin her üye
değişkeni için bellekte saklama alanı sağlanır.
• this referansı ile sınıfın o anki instance’ına veya
nesnesine ulaşabilirsiniz.
Celal Bayar Üniversitesi - YZM 2118 Yazılım Mimarisi ve Tasarımı
![Page 20: YZM 2118 Yazılım Mimarisi ve Tasarımı · •Nesneye Yönelik programlama yaklaımı ile düündüğünüzde, her ey bir nesne ve her nesne bir sınıfın somutlaúmı bir örneğidir](https://reader030.vdocuments.pub/reader030/viewer/2022040220/5e234eab4eb36f38e666cd47/html5/thumbnails/20.jpg)
20
this Referansı
• Sadece nonstatic metotlar this referansını kabul
etmektedir. Nonstatic metotlar üye metotları
oldukları için her bir nesnede farklı
çalışmaktadırlar ve bu this referansının
kullanımını mantıklı kılmaktadır.
• this referansı kodda karışıklığı engellemek için
kullanılabilir.
Celal Bayar Üniversitesi - YZM 2118 Yazılım Mimarisi ve Tasarımı
![Page 21: YZM 2118 Yazılım Mimarisi ve Tasarımı · •Nesneye Yönelik programlama yaklaımı ile düündüğünüzde, her ey bir nesne ve her nesne bir sınıfın somutlaúmı bir örneğidir](https://reader030.vdocuments.pub/reader030/viewer/2022040220/5e234eab4eb36f38e666cd47/html5/thumbnails/21.jpg)
21
Kurucu Metotlar
• Herhangi bir sınıftan bir nesne yarattığınızda aşağıdaki
gibi bir ifade kullanılır:
Isci yeniIsci = new Isci();
• Kurucu metotlar(constructor) bir nesnenin oluşmasını
sağlayan metotlardır. Bir sınıf için yazmamış olsanız bile,
yarattığınız sınıflar için otomatik olarak parametre
almayan public bir kurucu metot sağlanır.
• Parametresi olmayan kurucu metotlara sınıfın varsayılan
kurucu metodu (default constructor) denir.
Celal Bayar Üniversitesi - YZM 2118 Yazılım Mimarisi ve Tasarımı
![Page 22: YZM 2118 Yazılım Mimarisi ve Tasarımı · •Nesneye Yönelik programlama yaklaımı ile düündüğünüzde, her ey bir nesne ve her nesne bir sınıfın somutlaúmı bir örneğidir](https://reader030.vdocuments.pub/reader030/viewer/2022040220/5e234eab4eb36f38e666cd47/html5/thumbnails/22.jpg)
22
Kurucu Metotlar (devam…)
• Isci nesnesinin fieldlarının başlangıç değerlerinin
varsayılan değerler olması istenmediğinde veya Isci
sınıfından bir nesne yaratılırken ek işlemler yapmak
istediğinizde varsayılan kurucu metot yerine kendi
kurucu metodunuzu oluşturabilirsiniz.
• Sınıfın kurucu metotları sınıf ile aynı isme sahip
olmak zorundadır.
• Kurucu metotların geri dönüş türleri yoktur. (int , float
veya void olarak tanımlanmazlar)
Celal Bayar Üniversitesi - YZM 2118 Yazılım Mimarisi ve Tasarımı
![Page 23: YZM 2118 Yazılım Mimarisi ve Tasarımı · •Nesneye Yönelik programlama yaklaımı ile düündüğünüzde, her ey bir nesne ve her nesne bir sınıfın somutlaúmı bir örneğidir](https://reader030.vdocuments.pub/reader030/viewer/2022040220/5e234eab4eb36f38e666cd47/html5/thumbnails/23.jpg)
23
Kurucu Metotlar (devam…)
• Kurucu metotlara aktarılan parametrelerin değerlerini
kullanarak yaratılan nesnenin propertylerinin ya da
fieldlarının değerlerini her bir nesne için ayarlamak
mümkündür.
• Sınıf için yeni bir kurucu metot yarattığınızda otomatik
olarak yaratılan kurucu metot erişilemez olur.
• Kurucu metotlar aşırı yüklenebilir.(ing.: overloading: Aynı
adda birden fazla metot tanımlanması).
• Sınıflara birden fazla kurucu metot tanımlamak, bu sınıfı
kullanacak olan kullanıcılar için esneklik sağlamaktadır.
Celal Bayar Üniversitesi - YZM 2118 Yazılım Mimarisi ve Tasarımı
![Page 24: YZM 2118 Yazılım Mimarisi ve Tasarımı · •Nesneye Yönelik programlama yaklaımı ile düündüğünüzde, her ey bir nesne ve her nesne bir sınıfın somutlaúmı bir örneğidir](https://reader030.vdocuments.pub/reader030/viewer/2022040220/5e234eab4eb36f38e666cd47/html5/thumbnails/24.jpg)
24
Kurucu Metot Başlatıcıları
• Kurucu metotlar içerisindeki kod tekrarlarına
alternatif olarak, kurucu metot başlatıcılarını
(constructor initializers) kullanılabilir.
• Kurucu metot başlatıcıları kurucu metotların
gövdelerinden önce yazılan ve içerisindeki
ifadenin gövdedeki ifadelerden önce
uygulanan bir deyimdir.
Celal Bayar Üniversitesi - YZM 2118 Yazılım Mimarisi ve Tasarımı
![Page 25: YZM 2118 Yazılım Mimarisi ve Tasarımı · •Nesneye Yönelik programlama yaklaımı ile düündüğünüzde, her ey bir nesne ve her nesne bir sınıfın somutlaúmı bir örneğidir](https://reader030.vdocuments.pub/reader030/viewer/2022040220/5e234eab4eb36f38e666cd47/html5/thumbnails/25.jpg)
25
Nesne Başlatıcılarını Kullanmak
• Nesne başlatıcısı, bir sınıftan nesne yaratırken o
nesnenin yaratılması sırasında erişilebilir
üyelerine veya property’lerine değer atanmasına
izin verir.
Örnek: Parametresiz bir kurucu metot içeren ve
ve KimlikNumarasi adında public bir property
içeren bir sınıfta, aşağıdaki ifadede olduğu gibi
nesne başlatıcısı(object initializers) kullanılabilir:
Isci yeniIsc = new Isci { KimlikNo = 104 };
Celal Bayar Üniversitesi - YZM 2118 Yazılım Mimarisi ve Tasarımı
![Page 26: YZM 2118 Yazılım Mimarisi ve Tasarımı · •Nesneye Yönelik programlama yaklaımı ile düündüğünüzde, her ey bir nesne ve her nesne bir sınıfın somutlaúmı bir örneğidir](https://reader030.vdocuments.pub/reader030/viewer/2022040220/5e234eab4eb36f38e666cd47/html5/thumbnails/26.jpg)
26
Nesne Başlatıcılarını Kullanmak
• Bu ifade çalıştırıldığında, ilk olarak sınıfın
varsayılan kurucu metodu çalışır ve sonrasında ise
nesne başlatıcısı ile KimlikNo propertysine değer
ataması yapılır.
• Çoklu değer atamalar nesne başlatıcısı ile aralarına
virgül ‘,’ konularak aşağıdaki ifadedeki gibi
yapılabilir:
Isci yeniIsc = new Isci { KimlikNo = 104, Maas = 970};
Celal Bayar Üniversitesi - YZM 2118 Yazılım Mimarisi ve Tasarımı
![Page 27: YZM 2118 Yazılım Mimarisi ve Tasarımı · •Nesneye Yönelik programlama yaklaımı ile düündüğünüzde, her ey bir nesne ve her nesne bir sınıfın somutlaúmı bir örneğidir](https://reader030.vdocuments.pub/reader030/viewer/2022040220/5e234eab4eb36f38e666cd47/html5/thumbnails/27.jpg)
27
Nesne Başlatıcılarını Kullanmak
• Nesne başlatıcılarının kullanımı, farklı başlangıç
değerlerine sahip çoklu nesne yaratılmasına izin
vermektedir. Bunu yaparken çoklu kurucu
metotların kullanılmasını gereksizleştirmiştir.
• Ek olarak nesne başlatıcılarının kullanımı farklı
propertyleri için farklı başlangıç değerleri
atanmasına izin verir.
Celal Bayar Üniversitesi - YZM 2118 Yazılım Mimarisi ve Tasarımı
![Page 28: YZM 2118 Yazılım Mimarisi ve Tasarımı · •Nesneye Yönelik programlama yaklaımı ile düündüğünüzde, her ey bir nesne ve her nesne bir sınıfın somutlaúmı bir örneğidir](https://reader030.vdocuments.pub/reader030/viewer/2022040220/5e234eab4eb36f38e666cd47/html5/thumbnails/28.jpg)
28
Yıkıcı Metotlar
• Yıkıcı metot, o sınıftan yaratılmış bir nesne
yok edildiğinde yapılacak olan eylemleri
içeren metotlara denir.
• Genellikle sınıftan yaratılmış olan nesne
kapsam dışında kaldığında yok edilmektedir.
• Kurucu metotlarda olduğu gibi, sınıf için bir
yıkıcı metot tanımlanmadığında otomatik
olarak bir yıkıcı metot sağlanmaktadır.
Celal Bayar Üniversitesi - YZM 2118 Yazılım Mimarisi ve Tasarımı
![Page 29: YZM 2118 Yazılım Mimarisi ve Tasarımı · •Nesneye Yönelik programlama yaklaımı ile düündüğünüzde, her ey bir nesne ve her nesne bir sınıfın somutlaúmı bir örneğidir](https://reader030.vdocuments.pub/reader030/viewer/2022040220/5e234eab4eb36f38e666cd47/html5/thumbnails/29.jpg)
29
Yıkıcı Metotlar (devam...)
• Yıkıcı metot tanımlamak için, “ ~ ” (Tilda)
işareti ile sınıfın adı olarak tanımlanır. ~ [sınıfınAdı] ()
{
}
• Yıkıcı metotlara herhangi bir parametre
geçirilemez.
• Yıkıcı metotlar aşırı yüklenemezler(overload).
• Geri dönüş değerine sahip olmazlar.
Celal Bayar Üniversitesi - YZM 2118 Yazılım Mimarisi ve Tasarımı
![Page 30: YZM 2118 Yazılım Mimarisi ve Tasarımı · •Nesneye Yönelik programlama yaklaımı ile düündüğünüzde, her ey bir nesne ve her nesne bir sınıfın somutlaúmı bir örneğidir](https://reader030.vdocuments.pub/reader030/viewer/2022040220/5e234eab4eb36f38e666cd47/html5/thumbnails/30.jpg)
30
Yıkıcı Metotlar (devam...)
• Yıkıcı metotlar çağırılmaya gerek kalmadan
otomatik olarak uygulanırlar. En son yaratılan
nesne ilk olarak yok edilir.
• Sınıftan yaratılmış bir nesne, kodda onunla
yapılacak bir işi olmadığında yok edilmeye
uygun hale gelir.
• Yıkıcı metotlar program kapatılırken yapmak
istediklerimizi (bağlantı kapatma, geçici dosya
silme vb.) yapmamızı sağlarlar.
Celal Bayar Üniversitesi - YZM 2118 Yazılım Mimarisi ve Tasarımı
![Page 31: YZM 2118 Yazılım Mimarisi ve Tasarımı · •Nesneye Yönelik programlama yaklaımı ile düündüğünüzde, her ey bir nesne ve her nesne bir sınıfın somutlaúmı bir örneğidir](https://reader030.vdocuments.pub/reader030/viewer/2022040220/5e234eab4eb36f38e666cd47/html5/thumbnails/31.jpg)
• Sınıfları anlamak gerçek hayatta nesneleri
düzenlemenize yardımcı olur. Kalıtımı
anlamak onları daha net bir şekilde organize
etmenizi sağlar.
• Tüm "object-oriented" programlama dilleri
kalıtımlardan aynı sebep için faydalanmaktadır:
– Programlarda kullanılan nesneleri düzenlemek,
– Kalıtımla bildiklerinizi kullanarak yeni nesneleri
yaratmak.
31
Kalıtım (Inheritance) Kavramı
Celal Bayar Üniversitesi - YZM 2118 Yazılım Mimarisi ve Tasarımı
![Page 32: YZM 2118 Yazılım Mimarisi ve Tasarımı · •Nesneye Yönelik programlama yaklaımı ile düündüğünüzde, her ey bir nesne ve her nesne bir sınıfın somutlaúmı bir örneğidir](https://reader030.vdocuments.pub/reader030/viewer/2022040220/5e234eab4eb36f38e666cd47/html5/thumbnails/32.jpg)
• Kalıtım, sizin genel bir kategori hakkındaki
bildiklerinizi daha spesifik bir kategoriye
uygulamanıza olanak sağlayan prensiptir.
class [childSinifAdi] extends [parentSinifAdi]
{
}
32
Kalıtım (Inheritance) Kavramı (devam...)
Celal Bayar Üniversitesi - YZM 2118 Yazılım Mimarisi ve Tasarımı
![Page 33: YZM 2118 Yazılım Mimarisi ve Tasarımı · •Nesneye Yönelik programlama yaklaımı ile düündüğünüzde, her ey bir nesne ve her nesne bir sınıfın somutlaúmı bir örneğidir](https://reader030.vdocuments.pub/reader030/viewer/2022040220/5e234eab4eb36f38e666cd47/html5/thumbnails/33.jpg)
• Nesneye Yönelik programlama dillerinde
yaratılan sınıflar, verisini ve metotlarını daha
önceden var olan bir sınıftan kalıtabilir.
• Farklı bir sınıftan kalıtarak bir sınıf
yaratıldığında, yeni sınıfın metotları ve veri
fieldları sağlanmış olur.
• Böylece önceden yazılmış ve test edilmiş
metotlar ve fieldlar kullanılabilir.
33
Kalıtım (Inheritance) Kavramı (devam...)
Celal Bayar Üniversitesi - YZM 2118 Yazılım Mimarisi ve Tasarımı
![Page 34: YZM 2118 Yazılım Mimarisi ve Tasarımı · •Nesneye Yönelik programlama yaklaımı ile düündüğünüzde, her ey bir nesne ve her nesne bir sınıfın somutlaúmı bir örneğidir](https://reader030.vdocuments.pub/reader030/viewer/2022040220/5e234eab4eb36f38e666cd47/html5/thumbnails/34.jpg)
• Sınıf diyagramlarında sırasıyla 3 ayrı
bölüm bulunur: Sınıf ismi, Sınıfın verisi
ve metotları.
• Sınıfların arasındaki yukarıyı gösteren
ok alttaki sınıfın üstteki sınıftan
kalıtılarak oluşturulduğunu belirtir. Oku
bu şekliyle düzenleme Unified
Modelling Language (UML)
diyagramlarında kullanılır. UML
analistlerin ve programcıların sistemi
açıklamak için kullandığı grafiksel
araçtır.
34
Kalıtım (Inheritance) Kavramı (devam...)
Celal Bayar Üniversitesi - YZM 2118 Yazılım Mimarisi ve Tasarımı
![Page 35: YZM 2118 Yazılım Mimarisi ve Tasarımı · •Nesneye Yönelik programlama yaklaımı ile düündüğünüzde, her ey bir nesne ve her nesne bir sınıfın somutlaúmı bir örneğidir](https://reader030.vdocuments.pub/reader030/viewer/2022040220/5e234eab4eb36f38e666cd47/html5/thumbnails/35.jpg)
Bir sınıfı bir diğer sınıftan kalıtarak yaratılması aşağıdaki
faydalar sağlar:
– Zaman tasarrufu: Aynı sınıfı tekrar yaratmadan onun
property ve metotlarını kullanarak yeni bir sınıf
oluşturulduğunda zamandan tasarruf edilir.
– Hata payında azalma: Child sınıf önceden kullanılmış
ve test edilmiş bir sınıf olan Parent sınıftan kalıtılmıştır.
– İşleri kolaylaştırması: Parent sınıfı önceden kullanmış
herhangi birisi için Child sınıfı anlamak ve kullanmak
kolay olmakta ve böylece sadece sınıfın yeni
özelliklerine odaklanabilmektedir.
35
Kalıtım (Inheritance) Kavramı (devam...)
Celal Bayar Üniversitesi - YZM 2118 Yazılım Mimarisi ve Tasarımı
![Page 36: YZM 2118 Yazılım Mimarisi ve Tasarımı · •Nesneye Yönelik programlama yaklaımı ile düündüğünüzde, her ey bir nesne ve her nesne bir sınıfın somutlaúmı bir örneğidir](https://reader030.vdocuments.pub/reader030/viewer/2022040220/5e234eab4eb36f38e666cd47/html5/thumbnails/36.jpg)
• Kısaca kalıtımı kullanabilme kabiliyeti, programı
daha kolay yazma, anlama ve daha az hata ile
karşılaşmayı sağlar. Kalıtımı kullanarak, düzgün
bir şekilde, hızlıca yeni sınıflar yaratılabilir.
• Kalıtılmış bir sınıf daha fazla genişletilebilir.
Diğer bir deyişle, yavru sınıflar kendi içerisinde
yavru sınıflara sahip olabilirler.
• Kalıtım tek yönlü çalışmaktadır: Yavru sınıf, ana
sınıftan kalıtılarak oluşturulur, ters yönde
oluşturulamaz.
36
Kalıtım (Inheritance) Kavramı (devam...)
Celal Bayar Üniversitesi - YZM 2118 Yazılım Mimarisi ve Tasarımı
![Page 37: YZM 2118 Yazılım Mimarisi ve Tasarımı · •Nesneye Yönelik programlama yaklaımı ile düündüğünüzde, her ey bir nesne ve her nesne bir sınıfın somutlaúmı bir örneğidir](https://reader030.vdocuments.pub/reader030/viewer/2022040220/5e234eab4eb36f38e666cd47/html5/thumbnails/37.jpg)
Sekil
Dortgen
Dikdortgen
Kare
Ucgen Daire
37
Sınıfların Genişletilmesi (devam...) GENELLEŞTİR
ME
ÖZELLEŞTİR
ME
• Parent
• SuperClass
• BaseClass
• Child
• SubClass
• DerivedClass
Daha Özel Sınıflar…
Daha Genel Sınıflar…
Celal Bayar Üniversitesi - YZM 2118 Yazılım Mimarisi ve Tasarımı
![Page 38: YZM 2118 Yazılım Mimarisi ve Tasarımı · •Nesneye Yönelik programlama yaklaımı ile düündüğünüzde, her ey bir nesne ve her nesne bir sınıfın somutlaúmı bir örneğidir](https://reader030.vdocuments.pub/reader030/viewer/2022040220/5e234eab4eb36f38e666cd47/html5/thumbnails/38.jpg)
Temel Sınıfın
Metotlarını Ezme (Override)
ve
Çok Biçimlilik (Polymorphism)
38 Celal Bayar Üniversitesi - YZM 2118 Yazılım Mimarisi ve Tasarımı
![Page 39: YZM 2118 Yazılım Mimarisi ve Tasarımı · •Nesneye Yönelik programlama yaklaımı ile düündüğünüzde, her ey bir nesne ve her nesne bir sınıfın somutlaúmı bir örneğidir](https://reader030.vdocuments.pub/reader030/viewer/2022040220/5e234eab4eb36f38e666cd47/html5/thumbnails/39.jpg)
• Önceden var olan bir sınıftan kalıtarak,
genişletilmiş yeni bir sınıf oluşturduğunuzda,
yeni sınıf içerisinde temel sınıfın tüm özellik ve
metotları tanımlanmış olur.
• Bazen parent sınıfın fieldları, propertyleri ve
metotları tam olarak child sınıftan yaratılan
nesneler için uygun olmayabilir.
• Farklı işlemler yapan fakat aynı isimdeki özellik
veya metotların kullanımına çokbiçimlilik
(polymorphism) denmektedir
39
Temel Sınıfın Metotlarını Ezme
Celal Bayar Üniversitesi - YZM 2118 Yazılım Mimarisi ve Tasarımı
![Page 40: YZM 2118 Yazılım Mimarisi ve Tasarımı · •Nesneye Yönelik programlama yaklaımı ile düündüğünüzde, her ey bir nesne ve her nesne bir sınıfın somutlaúmı bir örneğidir](https://reader030.vdocuments.pub/reader030/viewer/2022040220/5e234eab4eb36f38e666cd47/html5/thumbnails/40.jpg)
• Çokbiçimlilik, “birçok form içeren”
anlamına gelmektedir.
• Aynı adda olmalarına rağmen farklı
işlemlerin yer aldığı metotlar için kullanılır.
• Override anahtar kelimesi kullanılarak parent
sınıfın metotları ezilebilir.
40
Temel Sınıfın Metotlarını Ezme (devam...)
Celal Bayar Üniversitesi - YZM 2118 Yazılım Mimarisi ve Tasarımı
![Page 41: YZM 2118 Yazılım Mimarisi ve Tasarımı · •Nesneye Yönelik programlama yaklaımı ile düündüğünüzde, her ey bir nesne ve her nesne bir sınıfın somutlaúmı bir örneğidir](https://reader030.vdocuments.pub/reader030/viewer/2022040220/5e234eab4eb36f38e666cd47/html5/thumbnails/41.jpg)
• Kalıtılarak yaratılmış olan sınıfta sanal
bir metodu(virtual metot) ezmek zorunlu
değildir; Kalıtılarak oluşturulmuş bu sınıf,
temel sınıfın versiyonunu da kullanabilir.
• Yavru sınıf, temel sınıfın metotlarına
(Java’da) super anahtar sözcüğü ile
erişebilir.
41
Temel Sınıfın Metotlarını Ezme (devam...)
Celal Bayar Üniversitesi - YZM 2118 Yazılım Mimarisi ve Tasarımı
![Page 42: YZM 2118 Yazılım Mimarisi ve Tasarımı · •Nesneye Yönelik programlama yaklaımı ile düündüğünüzde, her ey bir nesne ve her nesne bir sınıfın somutlaúmı bir örneğidir](https://reader030.vdocuments.pub/reader030/viewer/2022040220/5e234eab4eb36f38e666cd47/html5/thumbnails/42.jpg)
Soyut Sınıflar
(Abstract Class)
42 Celal Bayar Üniversitesi - YZM 2118 Yazılım Mimarisi ve Tasarımı
![Page 43: YZM 2118 Yazılım Mimarisi ve Tasarımı · •Nesneye Yönelik programlama yaklaımı ile düündüğünüzde, her ey bir nesne ve her nesne bir sınıfın somutlaúmı bir örneğidir](https://reader030.vdocuments.pub/reader030/viewer/2022040220/5e234eab4eb36f38e666cd47/html5/thumbnails/43.jpg)
• Kalıtım kavramını anladıktan sonra, sınıfların
yaratılması daha da kolaylaşmaktadır.
• Superclassları düşünmenin bir diğer yolu ise,
subcasslarının ortak özelliklerinin tümünü
düşünmek olabilir.
• Kalıtılmış sınıf incelendiğinde, ebeveyn sınıfının
daha da genel olduğu gözlenir.
43
Soyut Sınıflar
Celal Bayar Üniversitesi - YZM 2118 Yazılım Mimarisi ve Tasarımı
![Page 44: YZM 2118 Yazılım Mimarisi ve Tasarımı · •Nesneye Yönelik programlama yaklaımı ile düündüğünüzde, her ey bir nesne ve her nesne bir sınıfın somutlaúmı bir örneğidir](https://reader030.vdocuments.pub/reader030/viewer/2022040220/5e234eab4eb36f38e666cd47/html5/thumbnails/44.jpg)
• Bazen child sınıfların daha genel bir örneğini
oluşturmak için ebeveyn sınıf oluşturulur.
– Örneğin, önceden bir Sanatci yaratmamış olabilirsiniz;
herbir Sanatci bir Ressam’ın , Sair’in ya da Muzisyen’in
daha özel halidir.
44
Soyut Sınıflar (devam...)
Celal Bayar Üniversitesi - YZM 2118 Yazılım Mimarisi ve Tasarımı
![Page 45: YZM 2118 Yazılım Mimarisi ve Tasarımı · •Nesneye Yönelik programlama yaklaımı ile düündüğünüzde, her ey bir nesne ve her nesne bir sınıfın somutlaúmı bir örneğidir](https://reader030.vdocuments.pub/reader030/viewer/2022040220/5e234eab4eb36f38e666cd47/html5/thumbnails/45.jpg)
Sonradan genişletilmek üzere yaratılan fakat kendisinden nesne
oluşturulmayan sınıflara soyut sınıf (abstract class ) denir.
• Soyut sınıfları tanımlarken abstract anahtar kelimesi kullanılır.
• Soyut sınıflar da normal sınıflar gibi fiedlar ve metotlar içermektedir.
• Normal sınıflardan farklı olarak bu sınıflardan new operatörünü
kullanarak nesne yaratılamaz. Bunun yerine, soyut sınıflar basitçe
farklı nesnelerin kalıtımla yaratılması için bir ana sınıf sağlar.
• Metotlar gerekli olmasa da soyut sınıflar genellikle soyut
metotlar(abstract methods) içerirler.
• Soyut bir metot hiçbir metot ifadesi içermez; bu sınıftan türetilen
sınıflar da bu metotlara uygun bir şekilde uyarlanmalıdır. Diğer bir
deyişle kalıtılmış sınıfta bu metotlar ezilmelidir.
45
Soyut Sınıflar (devam...)
Celal Bayar Üniversitesi - YZM 2118 Yazılım Mimarisi ve Tasarımı
![Page 46: YZM 2118 Yazılım Mimarisi ve Tasarımı · •Nesneye Yönelik programlama yaklaımı ile düündüğünüzde, her ey bir nesne ve her nesne bir sınıfın somutlaúmı bir örneğidir](https://reader030.vdocuments.pub/reader030/viewer/2022040220/5e234eab4eb36f38e666cd47/html5/thumbnails/46.jpg)
• Soyut bir metodun başlığında, isteğe bağlı erişim
belirleyicisi, abstract anahtar kelimesi, istenilen
metodun tipi ve adı bulunur:
public abstract string Analiz();
• Soyut metotlara kıvırcık parantez sağlamasına gerek
yoktur. Bu metotların gövdeleri kalıtılan sınıfta tanımlanır.
• Soyut bir sınıftan kalıtılarak yeni bir sınıf yaratıldığında,
yeni sınıfta override anahtar kelimesini kullanarak
soyut metotların gövdeleri oluşturulmalıdır.
46
Soyut Sınıflar (devam...)
Celal Bayar Üniversitesi - YZM 2118 Yazılım Mimarisi ve Tasarımı
![Page 47: YZM 2118 Yazılım Mimarisi ve Tasarımı · •Nesneye Yönelik programlama yaklaımı ile düündüğünüzde, her ey bir nesne ve her nesne bir sınıfın somutlaúmı bir örneğidir](https://reader030.vdocuments.pub/reader030/viewer/2022040220/5e234eab4eb36f38e666cd47/html5/thumbnails/47.jpg)
• virtual anahtar kelimesi ile tanımlanan
metot child sınıfta ezilmesi zorunlu
değildir. Fakat abstract tanımlanmış
metot ezilmek zorundadır.
47
Soyut Sınıflar (devam...)
Celal Bayar Üniversitesi - YZM 2118 Yazılım Mimarisi ve Tasarımı
![Page 48: YZM 2118 Yazılım Mimarisi ve Tasarımı · •Nesneye Yönelik programlama yaklaımı ile düündüğünüzde, her ey bir nesne ve her nesne bir sınıfın somutlaúmı bir örneğidir](https://reader030.vdocuments.pub/reader030/viewer/2022040220/5e234eab4eb36f38e666cd47/html5/thumbnails/48.jpg)
• Soyut sınıflar, birden fazla child sınıf için ortak
özelliklerin ve/veya metotların ihtiyaç olduğu
durumlarda ortak kısımları toparlama amacı ile
kullanılabilirler.
• Soyut sınıf kullanımları önemlidir, ancak zorunlu
değildir.
• Soyut sınıftan nesne türetilemez.
• Soyut sınıflar private olamazlar.
• Soyut sınıflar sealed olamazlar.
48
Soyut Sınıflar (devam...)
Celal Bayar Üniversitesi - YZM 2118 Yazılım Mimarisi ve Tasarımı
![Page 49: YZM 2118 Yazılım Mimarisi ve Tasarımı · •Nesneye Yönelik programlama yaklaımı ile düündüğünüzde, her ey bir nesne ve her nesne bir sınıfın somutlaúmı bir örneğidir](https://reader030.vdocuments.pub/reader030/viewer/2022040220/5e234eab4eb36f38e666cd47/html5/thumbnails/49.jpg)
Arayüzler
(Interfaces)
49 Celal Bayar Üniversitesi - YZM 2118 Yazılım Mimarisi ve Tasarımı
![Page 50: YZM 2118 Yazılım Mimarisi ve Tasarımı · •Nesneye Yönelik programlama yaklaımı ile düündüğünüzde, her ey bir nesne ve her nesne bir sınıfın somutlaúmı bir örneğidir](https://reader030.vdocuments.pub/reader030/viewer/2022040220/5e234eab4eb36f38e666cd47/html5/thumbnails/50.jpg)
• Soyut sınıflar gibi arayüzler, herhangi bir sınıfın
üyelerinin ya da metotlarının koleksiyonudur.
• Bu metotlar herhangi bir sınıf tarafından, arayüzün
soyut metotlarının tanımı sağlandığı sürece (override
edildiği sürece) kullanılabilirler.
• Soyut sınıfların içerisinde bazı metotlar soyut
olmayabilirdi. Fakat bir arayüzün içerisindeki tüm
metotlar soyut olmalıdır.
50
Arayüzler (devam...)
Celal Bayar Üniversitesi - YZM 2118 Yazılım Mimarisi ve Tasarımı
![Page 51: YZM 2118 Yazılım Mimarisi ve Tasarımı · •Nesneye Yönelik programlama yaklaımı ile düündüğünüzde, her ey bir nesne ve her nesne bir sınıfın somutlaúmı bir örneğidir](https://reader030.vdocuments.pub/reader030/viewer/2022040220/5e234eab4eb36f38e666cd47/html5/thumbnails/51.jpg)
• Bir arayüz tanımlanırken interface anahtar kelimesi
kullanılır.
• Arayüz adlandırmaları, başına ‘I’ harfi eklenerek
adlandırılır.
interface IHareketEdebilen
{
int HareketEt();
}
• Herhangi bir sınıf IHareketEdebilen arayüzünü
implemente ettiğinde, ayrıca geriye int ifadesi döndüren
HareketEt() metodunu da içermiş olur.
51
Arayüzler (devam...)
Celal Bayar Üniversitesi - YZM 2118 Yazılım Mimarisi ve Tasarımı
![Page 52: YZM 2118 Yazılım Mimarisi ve Tasarımı · •Nesneye Yönelik programlama yaklaımı ile düündüğünüzde, her ey bir nesne ve her nesne bir sınıfın somutlaúmı bir örneğidir](https://reader030.vdocuments.pub/reader030/viewer/2022040220/5e234eab4eb36f38e666cd47/html5/thumbnails/52.jpg)
• Arayüzlerden nesne yaratılamamaktadır.
• Soyut sınıfların arayüzlerden farkı ise soyut
olmayan metotlar barındırabilmeleridir.
• Arayüzlerin barındırdığı tüm metotlar soyut
olmalıdır.
52
Arayüzler (devam...)
Celal Bayar Üniversitesi - YZM 2118 Yazılım Mimarisi ve Tasarımı
![Page 53: YZM 2118 Yazılım Mimarisi ve Tasarımı · •Nesneye Yönelik programlama yaklaımı ile düündüğünüzde, her ey bir nesne ve her nesne bir sınıfın somutlaúmı bir örneğidir](https://reader030.vdocuments.pub/reader030/viewer/2022040220/5e234eab4eb36f38e666cd47/html5/thumbnails/53.jpg)
Bir sınıf sadece bir sınıftan türetilebilir fakat birden fazla
arayüzü implemente edebilir.
– Örneğin Cocuk sınıfını ele aldığımızda, Yetiskin sınıfından
türetilerek oluşturulmuştur. Aynı zamanda iki arayüzü de
implemente etmektedir: ICalisabilen ve IOynayabilen.
class Cocuk implements Yetiskin, ICalisabilen, IOynayabilen
• Diğer uygulamalarda bulunan bir metodu barındıran bir
sınıf yaratmak için önceden var olan bir arayüz
implemente edilir.
53
Arayüzler (devam...)
Celal Bayar Üniversitesi - YZM 2118 Yazılım Mimarisi ve Tasarımı
![Page 54: YZM 2118 Yazılım Mimarisi ve Tasarımı · •Nesneye Yönelik programlama yaklaımı ile düündüğünüzde, her ey bir nesne ve her nesne bir sınıfın somutlaúmı bir örneğidir](https://reader030.vdocuments.pub/reader030/viewer/2022040220/5e234eab4eb36f38e666cd47/html5/thumbnails/54.jpg)
• Arayüzler bir sözleşme olarak düşünülebilir. Bir sınıf bu
arayüzü implemente ediyorsa sözleşmeye uymak
zorundadır.
54
Arayüzler (devam...)
Celal Bayar Üniversitesi - YZM 2118 Yazılım Mimarisi ve Tasarımı
![Page 55: YZM 2118 Yazılım Mimarisi ve Tasarımı · •Nesneye Yönelik programlama yaklaımı ile düündüğünüzde, her ey bir nesne ve her nesne bir sınıfın somutlaúmı bir örneğidir](https://reader030.vdocuments.pub/reader030/viewer/2022040220/5e234eab4eb36f38e666cd47/html5/thumbnails/55.jpg)
Başlangıçta ne zaman arayüz (Interface) ne zaman soyut
sınıf (Abstract Class) kullanılacağına karar vermek
zordur. Abstract bir sınıfın bütün metodlarını abstract
yaparak onu da aynı bir interface gibide kullanabiliriz.
• Tipik olarak, child sınıflara bazı verilerin ve
metotların aktarılması isteniyor ve bunlardan
bazılarının ezilmesi gerekiyorsa soyut sınıflar
kullanılır.
• Her bir metot ezilmek istenilirse arayüz oluşturulur.
55
Arayüzler (devam...)
Celal Bayar Üniversitesi - YZM 2118 Yazılım Mimarisi ve Tasarımı
![Page 56: YZM 2118 Yazılım Mimarisi ve Tasarımı · •Nesneye Yönelik programlama yaklaımı ile düündüğünüzde, her ey bir nesne ve her nesne bir sınıfın somutlaúmı bir örneğidir](https://reader030.vdocuments.pub/reader030/viewer/2022040220/5e234eab4eb36f38e666cd47/html5/thumbnails/56.jpg)
Nesnelerin daha spesifik bir örneğini oluşturmak istiyorsak
soyut sınıflar, davranışlarının benzemesini istiyorsak
arayüzler yaratılır.
• Abstract sınıfların genellikle IS-A (dır,dir) ilişkilerinde,
kalıtım(inheritance) özelliğini kullanarak kod tekrarını
azaltmak için kullanılır.
• Interface sınıfların ise daha çok CAN-DO (yapabilir..)
tarzı ilişkilerde değişen kavramları uygulamadan
soyutlamak için kullanılır.
56
Arayüzler (devam...)
Celal Bayar Üniversitesi - YZM 2118 Yazılım Mimarisi ve Tasarımı
![Page 57: YZM 2118 Yazılım Mimarisi ve Tasarımı · •Nesneye Yönelik programlama yaklaımı ile düündüğünüzde, her ey bir nesne ve her nesne bir sınıfın somutlaúmı bir örneğidir](https://reader030.vdocuments.pub/reader030/viewer/2022040220/5e234eab4eb36f38e666cd47/html5/thumbnails/57.jpg)
Yararlanılan Kaynaklar
57
• Aykut Taşdelen, C++, Java ve C# ile UML ve Dizayn
Paternleri, Pusula Yayıncılık, İstanbul, 2014
• Eric Freeman, Head First Design Patterns, O'Reilly
Media,2004
• Stephen Stelting & Olav Maassen, Applied Java™
Patterns, Prentice Hall PTR ,2001
• http://www.AlgoritmaveProgramlama.com
• http://www.tutorialspoint.com/
Celal Bayar Üniversitesi - YZM 2118 Yazılım Mimarisi ve Tasarımı
![Page 58: YZM 2118 Yazılım Mimarisi ve Tasarımı · •Nesneye Yönelik programlama yaklaımı ile düündüğünüzde, her ey bir nesne ve her nesne bir sınıfın somutlaúmı bir örneğidir](https://reader030.vdocuments.pub/reader030/viewer/2022040220/5e234eab4eb36f38e666cd47/html5/thumbnails/58.jpg)
58
İYİ ÇALIŞMALAR…
Yrd. Doç. Dr. Deniz KILINÇ
Celal Bayar Üniversitesi - YZM 2118 Yazılım Mimarisi ve Tasarımı