-
Üyelik
25.06.2012
-
Yaş/Cinsiyet
38 / E
-
Meslek
Engineering Director
-
Konum
İstanbul Avrupa
-
Ad Soyad
T** C**
-
Mesajlar
771
-
Beğeniler
2 / 260
-
Ticaret
0, (%0)
Fonksiyon : Bir sınıf içindeki birbirine bağlı yada bağımsız yapılan işlem parçalarının birbirinden ayrılması olarak atfedilebilir.
Basit bir örnek ile anlatacak olursak ;
Sizin bir Email sınıfınız olsun ve bu sınıfın görevlerinden birisi email göndermek, diğeri ise inbox'ınıza gelen email'leri göstermek olsun.
Email.class
sendEmail();
receiveEmail();
Yukarıdaki görev ayrımı sınıfın bakış açısından basit bir mantıksal ayrım çünkü bu sınıf üzerindeki iki metodun görevleri yani fonksiyoneliteleri farklı.
Yani bu mantıksal ayrımı siz tek bir metod içindede yapabilirdiniz. Mesela;
Email.class
sendReceiveEmail(deger){
if(deger == ISLEMTIPI.GONDER)
//TODO : Gönderme işlemleri
}else if (deger == ISLEMTIPI.AL){
//TODO : Mail Alım işlemleri
}
Fakat bu örnek hem kodun okunabilirliğini hemde yazılım prensipleri için kötü bir kullanım olur.
Sınıf bazlı bakış açısından fonksiyonun içinden bakış açısına geçelim.
Mesela sendEmail(); metodumuz. BU metodumuzun görevi mail göndermek ama bu metod amiane tabirler "hayvan" gibi bir metod olur. Biz bu metodu, kendi içindeki fonksiyonelitesine göre fonksiyonlara parçalamalıyız.
Mesela;
void sendEmail(){
if(checkInternetConnection()){ //Internet bağlantısını kontrol et
setHeader();//Mailin başlıklarını oluştur
prepareContent();//Mailin içeriğini oluştur
send();//Maili gönder
}else{
//TODO : hata fırlat
}
}
private boolean checkInternetConnection(){
}
private void setHeader(){
}
private void prepareContent(){
}
void send(){
}
Bu şekilde bir yaklaşım, sizin bu mail gönderimi işlemi yaparken, ne tür işlemler yaptığınızı ve oluşabilecek her hata için hangi noktada hata yaptığınızın tesğitinde ve kodun okunabilirliği/unit testlerinin yapılabilirliğinide artırmış olur.
https://www.linkedin.com/in/turgaycan/
Kaliteli kod yazılır.. (Günlük/Saatlik ücreti ile)
-
Üyelik
31.01.2014
-
Yaş/Cinsiyet
37 / E
-
Meslek
Webmaster
-
Konum
Kayseri
-
Ad Soyad
M** A**
-
Mesajlar
69
-
Beğeniler
5 / 21
-
Ticaret
0, (%0)
Turgay Can adlı üyeden alıntı
Fonksiyon : Bir sınıf içindeki birbirine bağlı yada bağımsız yapılan işlem parçalarının birbirinden ayrılması olarak atfedilebilir.
Basit bir örnek ile anlatacak olursak ;
Sizin bir Email sınıfınız olsun ve bu sınıfın görevlerinden birisi email göndermek, diğeri ise inbox'ınıza gelen email'leri göstermek olsun.
Yukarıdaki görev ayrımı sınıfın bakış açısından basit bir mantıksal ayrım çünkü bu sınıf üzerindeki iki metodun görevleri yani fonksiyoneliteleri farklı.
Yani bu mantıksal ayrımı siz tek bir metod içindede yapabilirdiniz. Mesela;
Fakat bu örnek hem kodun okunabilirliğini hemde yazılım prensipleri için kötü bir kullanım olur.
Sınıf bazlı bakış açısından fonksiyonun içinden bakış açısına geçelim.
Mesela sendEmail(); metodumuz. BU metodumuzun görevi mail göndermek ama bu metod amiane tabirler "hayvan" gibi bir metod olur. Biz bu metodu, kendi içindeki fonksiyonelitesine göre fonksiyonlara parçalamalıyız.
Mesela;
Bu şekilde bir yaklaşım, sizin bu mail gönderimi işlemi yaparken, ne tür işlemler yaptığınızı ve oluşabilecek her hata için hangi noktada hata yaptığınızın tesğitinde ve kodun okunabilirliği/unit testlerinin yapılabilirliğinide artırmış olur.
Arkadaş daha başlangıçta OOP biraz ağır olur korkutma adamı :)
PHP, Python, Javascript, C#, React-Native
-
Üyelik
25.06.2012
-
Yaş/Cinsiyet
38 / E
-
Meslek
Engineering Director
-
Konum
İstanbul Avrupa
-
Ad Soyad
T** C**
-
Mesajlar
771
-
Beğeniler
2 / 260
-
Ticaret
0, (%0)
OOP'yi öğrenmeden balıklama programlamaya girenler, sonrasında OOP yazılım icra etmeye çalıştığında handikap edinir. Bu handikapın üstesinden gelinmesi ise ileride dahda zordur, çünkü kötü alışkanlıklar edindiğinizde vazgeçmeside zor olur. Yanlış bir düşünce üzerinede, doğru bir şeyin koyulması zordur. Ek olarak zaman kaybınız ileride daha da çok olur. Bu handikapı en başta öğrenir ve sağlam bir şekilde üstesinden gelirse, neden new operatoru ile instance yaratıyor, ben objemi neden private,public yada protected tanımlarım gibi temel bilgileri edinmiş olur.
OOP'yi hazmetmeden iki satır kod dahi yazmayın.
https://www.linkedin.com/in/turgaycan/
Kaliteli kod yazılır.. (Günlük/Saatlik ücreti ile)
-
Üyelik
31.01.2014
-
Yaş/Cinsiyet
37 / E
-
Meslek
Webmaster
-
Konum
Kayseri
-
Ad Soyad
M** A**
-
Mesajlar
69
-
Beğeniler
5 / 21
-
Ticaret
0, (%0)
Turgay Can adlı üyeden alıntı
OOP'yi öğrenmeden balıklama programlamaya girenler, sonrasında OOP yazılım icra etmeye çalıştığında handikap edinir. Bu handikapın üstesinden gelinmesi ise ileride dahda zordur, çünkü kötü alışkanlıklar edindiğinizde vazgeçmeside zor olur. Yanlış bir düşünce üzerinede, doğru bir şeyin koyulması zordur. Ek olarak zaman kaybınız ileride daha da çok olur. Bu handikapı en başta öğrenir ve sağlam bir şekilde üstesinden gelirse, neden new operatoru ile instance yaratıyor, ben objemi neden private,public yada protected tanımlarım gibi temel bilgileri edinmiş olur.
OOP'yi hazmetmeden iki satır kod dahi yazmayın.
Direk OPP girmesi bencede doğru ama kaynak bulması zor olacaktır.Bence basitten başlasın OOP öğrenmesi kolay olur. :)
PHP, Python, Javascript, C#, React-Native
-
Üyelik
17.10.2013
-
Yaş/Cinsiyet
28 / E
-
Meslek
Öğrenci
-
Konum
İzmir
-
Ad Soyad
B** E**
-
Mesajlar
556
-
Beğeniler
45 / 32
-
Ticaret
1, (%100)
Hocam şu an öğrenmeye başladımda bir de uygulama olsa tadından yenmez diğer türlü cümlelerden anlaşılmıyor :)
-
Üyelik
25.06.2012
-
Yaş/Cinsiyet
38 / E
-
Meslek
Engineering Director
-
Konum
İstanbul Avrupa
-
Ad Soyad
T** C**
-
Mesajlar
771
-
Beğeniler
2 / 260
-
Ticaret
0, (%0)
Kaynak zorluğumu?
Java, C#, Python ... envayi çeşit dil öğreten kitapların ilk girdiği konu OOP'dir ama yazılım öğrenmeye meraklı kişi hemen kod yazayım dediği için es geçilen ve asıl olan kısımda kalır.
Her dil kitabında o dile özgü ortak tek kavram anlatılır o da OOP'dir. Lütfen kaynak zorluğu sadece bir bahanedir.
OOP'nin en basitleştirilmiş hali için yazdığı küçük bir yazı.
Blog yazımBunu somut ornekler ile öğrenmek isterseniz. Somut örnekte daha önce farklı bir konu altında paylaşmıştım.
https://www.linkedin.com/in/turgaycan/
Kaliteli kod yazılır.. (Günlük/Saatlik ücreti ile)
https://www.linkedin.com/in/turgaycan/
Kaliteli kod yazılır.. (Günlük/Saatlik ücreti ile)