C# object oriented(nesne yönelimli) bir dildir. Object oriented'ın temelini öğrenmeden, direkt kod yazmaya başlarsan. Bir süre sonra yazdığın kod, çöp koda dönüşür.

Tavsiyem öncelikle object oriented prensiplerini öğrenmen yönündedir. Inheritance(kalıtım), Polymorphism(Çok şekillik), Encapsulation(kapsülleme) ve encapsulation altındaki public, private, protected gibi terimlere aşina olmak gerek.

Sonra fonksiyonlar üzerine kod yazmayı ve kodu sınıflara ayırmaya başladığınızda bu terimlerin mükemmel faydasını görürsünüz.

Gerçek hayatta düşündüğünüz her nesneyi, programlama diline çevirirken yazdığınız kod hem okunabilir hemde oldukça anlamlı olacaktır.

Basit bir örnek vereyim;

Kalem bizim nesnemiz olsun.

Nesne = Class(Sınıf) yani Kalem diye bir sınıf yaratalım.

Kalem'i(kurşun kalem) oluşturan özellikler nelerdir. grafit (karbonla karıştırılmış kil) ve ahşap.

Kalem ne işe yarar : yazmak için kullanılır.

//Yazacağım kodlar java kodudur, c#'ada çok benzer maksat, düşünme ve aktarım gücüne katkıda bulunmak

Kalem sınıfımız.

public class Kalem(){

private String grafit;
private String ahsap;

public Kalem(String grafit, String ahsap){
this.grafit = grafit;
this.ahsap = ahsap;
}

public String getGrafit(){
return grafit;
}

public void setGrafit(String grafit){
this. grafit = grafit;
}

public String getAhsap(){
return ahsap;
}

public void setAhsap(String ahsap){
this.ahsap = ahsap;
}


}


Şuanda kalem sınıfımızı oluşturdur. Geçelim ikinci kısıma ne tür davranış gösterecek kalemimiz. yazmak eylemini gerçekleştirecek.

yazmak Kalem sınıfı için bir metod(fonksiyon)'dur.

public void yazmak(){
System.out.println("Kalem yazı yazıyor..");
}


Şimdi metodumuzu sınıfımızın içine ekleyelim.

public class Kalem(){

private String grafit;
private String ahsap;

public Kalem(String grafit, String ahsap){
this.grafit = grafit;
this.ahsap = ahsap;
}

public String getGrafit(){
return grafit;
}

public void setGrafit(String grafit){
this. grafit = grafit;
}

public String getAhsap(){
return ahsap;
}

public void setAhsap(String ahsap){
this.ahsap = ahsap;
}

public void yazmak(){
System.out.println("Kalem yazı yazıyor..");
}

}


Kodumuzu çalıştırmak için bir main sınıf yazalım.

public class TestApp(){

public static main void (String[] args){
//new operatörü varolan cansız bir sınıfı, canlı hale getirir. Programlamada buna instance denir. Yani bir obje yaratmış oluyorsunuz. Bi aşağıdaki kodda Kalem sınıfını yaratmış olduk.
//Kalem sınıfının constructor'ı iki parametre alıyor String, o yüzden constructor'ına iki String değer verdim
Kalem kalem = new Kalem("grafit maddesi", "ahsap maddesi");
//yazmak metodunu çağırarak, kalem sınıfının yazma becerisini kullandım.
kalem.yazmak();
}


Olayı dahada açarsak ;

Mesela senin dolma kalemin, kurşun kalemin ve tükenmez kalemin olsun. Sen bu kalemler için bir yazılım yapcaksın. buradada object oriented prensiplerinden kalıtım ve çok şekillikten yararlanman gerekecek. Onuda daha müsait bir zaman diliminde yazarım.


Programlamada esas olan bu kavramları sindirmektir. Yazıyı al, ona, çevir, çarp, böl çıkar işin keyifli tarafıdır ;)




}

Ek Olarak:

PorFavorDama adlı üyeden alıntı

Teşekkür ederim bunuda hocalarımın tavsıyesı uzerıne almıştım .

Fakat şöyle söyleyebilirim bana göre kitaplar çok bilimsel gidiyor hocam.
Yani en başından bile bir sürü terim kullanılıyor ki bunları yenı baslayan bır ınsanın tek seferde anlayıp aklında tutması ımkansız .

(bkz:ben) :D

Ve şunu sorucam hocam peki ya girilen değer de hem yazı hem sayı varsa ? Regex için bahsediyorum.


Regex'i ona göre düzenlersin. Benim yazdığım sadece sayılar içindi mesela ;

Sen "1234a" yazarsan Regex sana false değer dönecektir. "1234" yazarsan true değer dönecektir.

http://www.regular-expressions.info/dotnet.html

Burada .net framework'üne ait, regex tanımlamaları mevcut lakin ingilizce bu meslekte şart bilgin olsun. Olmadı translatorlar kullan. Bilmen avantajınadır ;)