Professional Documents
Culture Documents
Nesne Tabanl? Programlamada Metotlar
Nesne Tabanl? Programlamada Metotlar
BLM TEKNOLOJLER
Ankara, 2011
Bu modl, mesleki ve teknik eitim okul/kurumlarnda uygulanan ereve retim Programlarnda yer alan yeterlikleri kazandrmaya ynelik olarak rencilere rehberlik etmek amacyla hazrlanm bireysel renme materyalidir. Mill Eitim Bakanlnca cretsiz olarak verilmitir. PARA LE SATILMAZ.
NDEKLER
AIKLAMALAR ....................................................................................................................ii GR ....................................................................................................................................... 1 RENME FAALYET1 .................................................................................................... 3 1. METOTLAR ........................................................................................................................ 3 1.1. Metot Tanmlama ......................................................................................................... 3 1.2. return fadeleri Yazma .............................................................................................. 4 1.3. Metot arma ............................................................................................................. 4 UYGULAMA FAALYET................................................................................................ 6 LME VE DEERLENDRME...................................................................................... 8 RENME FAALYET2 .................................................................................................... 9 2. KAPSAM ............................................................................................................................. 9 2.1. Kapsam Uygulama ....................................................................................................... 9 2.1.1. Yerel Kapsam Tanmlama .................................................................................. 9 2.1.2. Snf Kapsamn Tanmlama .............................................................................. 10 2.2. Metotlar Ar Ykleme ............................................................................................ 11 UYGULAMA FAALYET.............................................................................................. 17 LME VE DEERLENDRME.................................................................................... 19 MODL DEERLENDRME .............................................................................................. 20 CEVAP ANAHTARLARI ..................................................................................................... 22 KAYNAKA ......................................................................................................................... 23
AIKLAMALAR AIKLAMALAR
KOD ALAN DAL/MESLEK MODLN ADI MODLN TANIMI SRE N KOUL YETERLK 482BK0162 Biliim Teknolojileri Veritaban Programcl Nesne Tabanl Programlamada Metotlar Nesne tabanl programlamada metotlarn kullanmn anlatan bir renme materyalidir. 40/32 Nesne Tabanl Programlamaya Giri modln tamamlam olmak Nesne tabanl programlamada metotlar yazmak ve kapsam uygulamak Genel Ama: Nesne tabanl programlama ortamn kullanarak metot yazabilecek ve kapsam uygulayabileceksiniz. Amalar: 1. Metot tanmlayabilecek ve bu metotlar kullanabileceksiniz. 2. Kapsam uygulayabilecek ve overload yntemini kullanabileceksiniz. Ortam: Nesne tabanl programlama yazlm Donanm: Bilgisayar Modl iinde yer alan her renme faaliyetinden sonra verilen lme aralar ile kendinizi deerlendireceksiniz. retmen modl sonunda lme arac (oktan semeli test, doru-yanl testi, boluk doldurma, eletirme vb.) kullanarak modl uygulamalar ile kazandnz bilgi ve becerileri lerek sizi deerlendirecektir.
MODLN AMACI
LME VE DEERLENDRME
ii
GR GR
Sevgili renci, u ana kadar yaptmz rneklerde nceden hazrlanm ReadLine(), WriteLine() vb. gibi metotlar kullandk. Bu modl bitirdiimizde artk kendi metotlarmz yapabiliriz. Aslnda btn rneklerimizde birer metot yaratmtk. O da alabilir her programda bulunmas gereken Main metoduydu. Artk Main metodu gibi baka metotlar yaratp programmzn iinde kullanabileceiz. Metotlar oluturarak programmz paralara bler ve programmzn karmakln azaltrz. Ayrca baz kodlar bir metot iine alp ayn kodlara ihtiyacmz olduunda bu metodu arabiliriz. Bu sayede de kod hamall yapmaktan kurtuluruz.
1. METOTLAR
1.1. Metot Tanmlama
Metotlar, bir ilem yapmak zere tasarlanm kodlar topluluudur. Program yazarken belli bir ilevi olan kod blounu birka kez kullanmak gerekebilir. Bu durumlarda ayn kodlar program ierisinde srekli yazmak yerine bu, bir metot olarak hazrlanabilir ve ihtiya duyulduunda kullanlabilir. Temel metot yazm ekli aadaki gibidir: dn_tr metot_ad (parametre listesi) dn_tr, bir veri tr addr ve metodun yapt ilem sonucunda dndrecei veri trn belirler. Bu int ya da string tr bir veri olabilir. Herhangi bir sonu dndrmeyen bir metot yazlyorsa dn_tr yerine void anahtar szc kullanlmaldr. metot_ad, metodu armak iin kullanlan addr. Metot adlar belirlenirken deiken adlar tanmlanrken uygulanan kurallara uyulmaldr. rnein, Dort_islem geerli bir metot ad olabilirken Dort$islem tanmlamas yanltr. parametre listesi: stee baldr, metoda dardan gnderilecek veri adlarn ve trlerini tanmlar. Parametreler nce tr ad, daha sonra parametre ad olacak ekilde parantez ierisinde deiken tanmlanyormu gibi yazlr.
rnek:
int alanHesaplama(int kisaKenar, int uzunKenar) { //kodla }
Yukardaki metot tanmnda alanHesaplama metodun adn, metot adnn bandaki int ifadesi metodun dndrecei veri trn, parantez ierisinde tanmlanan deikenler parametre listesini gstermektedir. Eer tanmlanan metot dardan deer alacak fakat deer dndrmeyecekse
void alanHesaplama(int kisaKenar, int uzunKenar) { //kodlar }
eklinde tanmlanmaldr.
return ifadesi, metodun sonlandrlmasna neden olduundan genellikle sonda yer alr. return ifadesinden sonra yazlan herhangi bir ifade altrlmaz (return szcnden sonra herhangi bir ifade yazlrsa derleyici uyarr.).
NOT: Console.ReadLine ifadesi kullancdan deer alarak bir deikene atamak iin kullanlr. fadenin dndrecei deer string olaca iin Convert.ToInt32 yntemiyle int trne dntrlmtr. Program ksa ve uzun kenar deerleri kullanc tarafndan girilen bir dikdrtgenin alann hesaplamaktadr. Tanmlanan alan adl metoda ksa ve uzun kenar deerleri gnderilmekte, metot ierisinde gerekli hesaplamalar yaplp sonu deeri return ifadesiyle geri dndrlmektedir. Aada grld gibi alan adl metot, farkl ekillerde arlrsa farkl hatalarla karlalabilir. alan; alan(); alan(kisa_kenar); alan(kisa_kenar,uzun_kenar); //derleme zaman hatas, parantez yok //derleme zaman hatas, yetersiz bamsz deiken //derleme zaman hatas, yetersiz bamsz deiken //derleme zaman hatas, yanl trler
KONTROL LSTES
Bu faaliyet kapsamnda aada listelenen davranlardan kazandnz beceriler iin Evet, kazanamadklarnz iin Hayr kutucuklarna ( X ) iareti koyarak rendiklerinizi kontrol ediniz. Deerlendirme ltleri Yeni bir proje oluturdunuz mu? WPF uygulamasn setiniz mi? Programlama dilini setiniz mi? Formunuza Label, Button ve textBox nesnelerini eklediniz mi? Button nesnesinin Click zelliini kullandnz m? Metot tanmlamas yaptnz m? Tanmladnz metodu ardnz m? Evet Hayr
1. 2. 3. 4. 5. 6. 7.
DEERLENDRME
Deerlendirme sonunda Hayr eklindeki cevaplarnz bir daha gzden geiriniz. Kendinizi yeterli grmyorsanz renme faaliyetini tekrar ediniz. Btn cevaplarnz Evet ise lme ve Deerlendirmeye geiniz.
2.
3.
4. 5.
Aadakilerden hangisi yanltr? A) Metodun ald parametre string trndeyse dndrd deerde ayn trde olmaldr. B) Metot tanmlar Main metodu dnda yaplmaldr. C) Metot ierisinde deiken kullanmak zorunlu deildir. D) Metot isimleri tanmlanrken deiken tanmlama kurallarna uyulmaldr. Tanmlanan islem adl bir metoda, parametre gnderilmeden kullanlacaksa aadaki yazm ekillerinden hangisi dorudur? A) islem(null); B) islem; C) islem() D) islem();
6.
DEERLENDRME
Cevaplarnz cevap anahtaryla karlatrnz. Yanl cevap verdiiniz ya da cevap verirken tereddt ettiiniz sorularla ilgili konular faaliyete geri dnerek tekrarlaynz. Cevaplarnzn tm doru ise bir sonraki renme faaliyetine geiniz.
ARATIRMA
Nesne tabanl programlamada snf kavramn aratrnz. Local ve global deiken kavramlarn aratrnz.
2. KAPSAM
2.1. Kapsam Uygulama
Program ierisinde deikenlerin nasl tanmland grld. Deikenler tanmladklar yerde oluturulur ve daha sonra istenilen ekilde kullanlabilir yani tanmlandklar yer program gvdesi ya da herhangi bir metodun ierisi olabilir. Program ya da metot sonlandnda ise deiken artk kullanlamaz. Bir deiken belirli bir yerde kullanlabiliyorsa deiken o konumda kapsam (scope) ierisindedir. Farkl bir biimde ifade etmek gerekirse bir deikenin kapsam, deikenin o program ierisinde kullanld blgedir. Bu kural deikenler iin olduu gibi tanmlanan metotlar iin de geerlidir.
Resim 2.1de grld gibi bolme ve carpma adl iki metot tanmlanmtr. bolme adl metot ierisinde ise int trnde a ve b deikenleri tanmldr. Ayn deikenler carpma adl metot ierisinde tanmlanmadan kullanlamaz. nk deikenler bolme metodu kapsamnda tanmlanmtr. carpma metodunun ierisinde kullanlmaya alldnda yazlan kodlarn derlenmesi baarszlkla sonulanr ve program hata verir. Hata ile karlamamak iin carpma metodunda deikenler yeniden tanmlanmaldr.
10
Resim 2.2de grld gibi a ve b deikenleri herhangi bir metot iinde deil Window1 adl snf iinde tanmlanmtr. Dolaysyla ayn deikenler, bolme ve carpma adl metotlar ierisinde tekrar tanmlanmakszn kullanlabilmektedir. Snf iindeki dier metotlar da a ve b deikenlerini ayn ekilde kullanabilir. nk bu deikenler, snf kapsamndadr. Dier bir nemli nokta ise a ve b deikenlerinin metotlardan sonra tanmlanmalarna ramen metotlar ierisinde kullanlabilmeleridir. Bir metotta kullanmadan nce deikeni tanmlamak gerekir. Snf kapsamndaki deikenler (alanlar) biraz farkldr. Bir metot, alan tanmlayan ifadeden nce, o alan kullanabilir. Bu noktada derleyici devreye girer ve bu durumu sizin iin dzenler.
11
deitirmek ie yaramaz. Bu derleyici iin kabul edilebilir bir durum deildir. Program hata verir. rnek: Bir konsol uygulamas oluturarak ekrana Merhaba mesajn yazan program kodlar yazlsn.
Resim 2.3te yaz adl bir metot tanmlanarak Merhaba mesajnn ekrana yazlmas salanmtr. Metot string trnde bir parametre almakta ama geriye deer dndrmemektedir. Ekran kts Resim 2.4teki gibidir.
Ayn isimde bir metot yazarak overload (ar ykleme) yntemiyle mesajn ekrana byk ya da kk harflerle nasl yazld grlsn.
12
Resim 2.5te grld gibi yaz isimli iki metot tanmlanmtr. Sonradan tanmlanan metot birincisinden farkl olarak bool trnde tercih adl fazladan bir parametre daha almaktadr. Bu parametre program ana gvdesinden false olarak gnderilmitir. Bylelikle ikinci metodun ar yklenerek farkl bir ilevi yerine getirmesi salanmtr. Kullanlan if yaps daha sonraki modllerde renilecek. Ekran kts Resim 2.6daki gibidir.
Resim 2.6da grld gibi metnin tamam, kk harflerle yazlmtr. Program gvdesinden gnderilen tercih deeri true olsayd mesajn tamam byk harflerle yazlacakt. Program yava biim de altrmak iin Nesne tabanl programlama yazlm hata ayklaycsn kullanlsn. Her bir metodun ne zaman arld (stepping into the method-
13
ynetimin iine girmek), her bir return ifadesinin denetiminin nasl aktarld (stepping out of the method-ynetimin dna kmak) grlecektir. Metotlarn iine girerken ve metotlardan karken Debug mens veya Standart ara ubuu kullanlacaktr. Buna program adm adm altrmak da denebilir. Debug Step Into Adm adm uygulamas: Fareyle program satrnn bana tklanr. Ara ubuundaki Step Into butonuna tklanr. Main metodunun ilk satrndaki kme parantezinin zemininin sar renkle boyand grlecektir. Bu arada konsol ekrannda almaya balad grlecektir.Resim 2.7de gsterilmitir. Step Over Step Out
14
Tekrar Step Intoya tklanr, metot adnn yazl olduu sonraki satra ilerledii grlecektir. Resim 2.8de grlebilir.
Step Intoya tklanr, seili alann metodun ierisine getii grlecektir. Resim 2.9da grlebilir.
15
Step Over butonu kullanlrsa hata ayklama yapmadan (metodun iine girmeden) bir sonraki ifadeye geildii grlecektir. Step Out butonuna tklanrsa geerli metodun kesintiye uramakszn yani adm adm deil de sonuna kadar almasna neden olduu grlecektir. Programn sonuna gelindiinde uygulama tamamlanr ve almas sonlandrlr. Bu arada ekran kts da adm adm takip edilebilir.
16
int kareal(int x) { } return x*x; double kareal(double x) { } return x*x; int kareal(string x) { } return (int32.Parse(x)*int32.Parse(x));
F5 ksayol tuunu kullanabilirsiniz. Ara ubuklar zerindeki Step Into, Step Nesne tabanl programlama yazlm Over, Step Out ksayol tularn hata ayklaycsn kullanarak kullanabilirsiniz veya Debug mensnden altrma admlarn tekrarlaynz. yararlanabilirsiniz.
17
KONTROL LSTES
Bu faaliyet kapsamnda aada listelenen davranlardan kazandnz beceriler iin Evet, kazanamadklarnz iin Hayr kutucuklarna ( X ) iareti koyarak rendiklerinizi kontrol ediniz. 1. 2. 3. 4. 5. 6. 7. 8. Deerlendirme ltleri Konsol uygulamas oluturdunuz mu? Gerekli metotlar program gvdesine yazdnz m? Metotlar tanmladnz m? Return ifadelerini yazdnz m? Step Into ara ubuunu kullandnz m? Step Over ara ubuunu kullandnz m? Step Out ara ubuunu kullandnz m? Ekran ktsn adm adm incelediniz mi? Evet Hayr
DEERLENDRME
Deerlendirme sonunda Hayr eklindeki cevaplarnz bir daha gzden geiriniz. Kendinizi yeterli grmyorsanz renme faaliyetini tekrar ediniz. Btn cevaplarnz Evet ise lme ve Deerlendirmeye geiniz.
18
6.
7.
8. 9.
10.
DEERLENDRME
Cevaplarnz cevap anahtaryla karlatrnz. Yanl cevap verdiiniz ya da cevap verirken tereddt ettiiniz sorularla ilgili konular faaliyete geri dnerek tekrarlaynz. Cevaplarnzn tm doru ise Modl Deerlendirmeye geiniz.
19
2.
3.
4.
5.
6.
7.
20
8.
ki tanmlayc ayn isme sahipse ve ayn kapsam iinde bildirilirlerse aadakilerden hangisi sylenemez? A) Parametre saylar farkl olmaldr. B) Parametre trleri farkl olmaldr. C) Geri dn tr farkl olmaldr. D) Overload yaplm olabilir. Bir snf kapsamnda tanmlanm deikenlere ne ad verilir? A) Field B) Variable C) Metot D) Debug Return ifadesiyle ilgili olarak aadakilerden hangisi yanltr? A) return ifadesinin dndrd veri tr ile metodun dndrd veri tr ayn olmaldr. B) return ifadesi metodun sonunda bulunmak zorundadr. C) return ifadesinden sonra noktal virgl konulmaldr. D) Her metoda return ifadesi bulunmak zorundadr.
9.
10.
DEERLENDRME
Cevaplarnz cevap anahtaryla karlatrnz. Yanl cevap verdiiniz ya da cevap verirken tereddt ettiiniz sorularla ilgili konular faaliyete geri dnerek tekrarlaynz. Cevaplarnzn tm doru ise bir sonraki modle gemek iin retmeninize bavurunuz.
21
22
KAYNAKA KAYNAKA
Sharp John(eviri:mit TEZCAN), Adm Adm Microsoft Visual C# 2008, Arkada Yaynevi, Ankara, 2008.
23