lostyazilim
tr.link

Fonksiyonlar ne işe yarar ve nerelerde kullanılır ?

19 Mesajlar 13.009 Okunma
lstbozum
tr.link

YazilimMimari YazilimMimari Eski adi: Turgay Can Kullanıcı
  • Ü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)
wmaraci
reklam

CoLLeR CoLLeR WM Aracı Kullanıcı
  • Ü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

YazilimMimari YazilimMimari Eski adi: Turgay Can Kullanıcı
  • Ü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)

Nefes Nefes Öğrenci Kullanıcı
  • Ü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)

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.

Hocam malum kaynaklar ingilizce haliyle türkçeye çevirince peki bir anlam kazanmıyor yani anlamsız kelimeler diyebilirim bana daha doğrusu bize OOP yi aptalların anlıyacağı düzeyde anlatır mısınız örnek vererek ?
 

 

wmaraci
wmaraci

CoLLeR CoLLeR WM Aracı Kullanıcı
  • Ü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

Nefes Nefes Öğrenci Kullanıcı
  • Ü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 :)
 

 

YazilimMimari YazilimMimari Eski adi: Turgay Can Kullanıcı
  • Ü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ım


Bunu 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)

Nefes Nefes Öğrenci Kullanıcı
  • Ü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)

Turgay Can adlı üyeden alıntı

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ım


Bunu somut ornekler ile öğrenmek isterseniz. Somut örnekte daha önce farklı bir konu altında paylaşmıştım.

Hocam sizden şunu öğrenmek istiyorum
hani bir marketiniz vardır ismi domain malların olduğu yerde host işte bunun gibi basite indirgermisiiniz yani oop şudur aslında şuna benzer aptalım anlatın bana lütfen :)
 

 

YazilimMimari YazilimMimari Eski adi: Turgay Can Kullanıcı
  • Ü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)
Farklı bir yazıda aynı konuya yönelik yazdığım örnek ;

http://wmaraci.com/forum/c-c-c/c-char-isnumber-texti-nasil-kontrol-ettiririm-135545.html

Market, Domain ve host için basit bir yazılım mimarisi çıkarılabilir, lakin bunu sonra yapalım şuan mesaideyim ;)
 

 

https://www.linkedin.com/in/turgaycan/
Kaliteli kod yazılır.. (Günlük/Saatlik ücreti ile)
wmaraci
wmaraci
Konuyu toplam 1 kişi okuyor. (0 kullanıcı ve 1 misafir)
Site Ayarları
  • Tema Seçeneği
  • Site Sesleri
  • Bildirimler
  • Özel Mesaj Al