Turkish subtitles

← 12-17 Define and Call a Method - Solution

Get Embed Code
13 Languages

Showing Revision 2 created 12/04/2015 by Fran Ontanaya.

  1. MainActivity'e yeni metot eklemenin
    ilk adımını hep birlikte yapalım.
  2. Bir başka metotun parantezleri
    dışında olduğu sürece,
  3. metotunuzu eklemek için dosyanın içinden
    herhangi bir yeri seçebilirsiniz.
  4. Tanımladığımız calculatePrice olan
    diğer metotun hemen
  5. altına ekleyeceğim.
  6. Erişim denetleyicilerini "private"
    olarak belirleyeceğim, çünkü
  7. bu metota erişmesi gereken her şey
    MainActivity'nin içinde.
  8. Sonrada geri dönüş türü olarak
    "String" yazacağım,
  9. çünkü createOrderSummary metotunun
    bir stringe dönmesi gerekiyor.
  10. Ve sonrasında isim olarak;
    createOrderSummary yazacağım.
  11. Sonra da girişi, rakam olan,
    fiyat olarak kabul etmeli.
  12. Pekala, metot imzası kısmını
    hallettik, fakat
  13. şimdi de buradaki mesaja dönüşecek
    metotu yerleştirmemiz gerekiyor.
  14. Mesaj isimle başlıyor, miktar, toplam
    ve sonra da teşekkürler!
  15. Öyleyse ben de burayı kopyalayacağım ve
  16. createOrderSummary metotunun
    içine yapıştıracağım.
  17. Şimdi, bazı temel kodlarla başlayabiliriz.
  18. Aradaki fark ise,
  19. komut özet bilgisi isim ile başlamalı,
    toplam fiyatla değil.
  20. Bu yüzden ben de bunu bir alt satıra
    kaydırıp sonrası için saklayacağım.
  21. priceMessage'a "Name: Kaptain Kunal"
  22. değerini atayacağım.
  23. Ve sonra da, bir sonraki satırda,
    priceMessage'ı güncelleyeceğim.
  24. Varolan mesaja ekleme yapacağım, yani
  25. priceMessage + yeni metin, ve
  26. sonrasında quantity (miktar) ve
    değişken quantity eklemek istiyorum.
  27. Sonuçta quantity global
    değişken olduğun için
  28. metotun içinde erişebilmeliyiz.
  29. Pekala, şu an için bir isim ve
    miktar belirledik.
  30. Bir sonraki satırda tekrardan
    priceMessage'ı güncelleyeceğim ve
  31. biraz daha metin ekleyeceğim.
  32. Aslında bu metinin toplam fiyat
    olması gerekiyor, o yüzden
  33. daha önceden yaptığımızın
    aynısı kullanabilirim.
  34. Peki, sonrasında tekrardan
    priceMessage'ı güncelliyoruz.
  35. O stringin mevcut değerini alıp
    sonrasında "Thank you" ekliyorum.
  36. Hepsi iyi gözüküyor, fakat
    hala burada bir hata var.
  37. Ve dönüş komutunun
    olmadığını söylüyor.
  38. Sonuçta summary stringine dönüş
    yapmamız gerektiğine göre
  39. return (dönüş) yazan
    yeni bir sıra ve
  40. sonrasında bir return değeri
    eklemem gerekiyor.
  41. Bu durumda return değeri priceMessage.
  42. Ben de sonuna bir
    noktalı virgül ekliyorum.
  43. Peki, şimdi hata gitti.
  44. Kodumuz iyi gözüküyor, bu yüzden
    ben de onu çalıştırıp test edeceğim.
  45. Peki, şimdi miktarı üç olarak değiştirip
  46. "Order" düğmesine bastığımda,
    işe yaramıyor.
  47. Bakalım yanlış olan neymiş.
  48. Koda daha yakından bakınca
    sorunun ne olduğu belli oldu.
  49. Burada "private metot 'createOrderSummary'
    hiç kullanılmadı"
  50. yazan bir uyarı var.
  51. Çağırmayı unuttum.
  52. Sınav slaytına geri dönelim.
  53. Tamam, başarıyla ilk görev yaptık
    fakat şimdi de
  54. submitOrder metotundan
    createOrderSummary metotunu çağırmalıyım.
  55. Android Studio'ya geri dönerek
    submitOrder metotunu düzeltmeliyim.
  56. Fiyatı hesapladım ve doğru gözüküyor.
  57. Fakat şimdi de bunu createOrderSummary
    metotunun içine atamam gerek.
  58. Onu da şimdi burada yapacağım.
    Değişken fiyata sahip olan bir
  59. "createOrderSummary".
  60. Bu metotun dönüş değeri
    priceMessage değişkeninin
  61. içinde saklanacak.
  62. Artık bu kod satırına ihtiyacım yok
    çünkü "Thank you"
  63. zaten buradaki metinde yer alıyor.
  64. O yüzden onu silebilirim.
  65. Sonrasında, ekranı güncellemek için tek
    yapmam gereken önceden olduğu gibi
  66. priceMessage değişkeni ile birlikte
    displayMessage'ı çağırmak
  67. Şimdi tekrardan uygulamayı çalıştıralım.
  68. Eğer miktarı üç olarak değiştirip
  69. Order butonuna bastığımda,
    hala çalışmıyor.
  70. Yazıların çoğu bir kaç satırda olması
    gerekirken tek bir satırda yer alıyor.
  71. O halde geri dönüp kodumuzu düzeltelim.
  72. Koda baktığımda yeni bir karakter
    satırını unuttuğumu fark ettim.
  73. Sadece "Thank you" için uygun
    bir tane ekledim, diğerleri için değil.
  74. Şimdi de diğer satırlara ekleyeceğim.
  75. Pekala, tekrardan çalıştırmayı deneyelim.
  76. Ve çalışıyor.
  77. Harika.
  78. Artık, Kaptain Kunal
    üç bardak kahvesini alabilir.
  79. Kodunuza uygulayacağınız bazı
    iyileştirmeleri göstermek istiyorum size.
  80. Fark edeceğiniz gibi giriş parametresi
    olarak eklemek yerine createOrderSummary
  81. metotunun içinden calculatePrice
    metotunu çağırabilirdik.
  82. Yani calculatePrice'ı
    buraya yazabilirdik.
  83. Bu da işe yarardı.
  84. Fakat size bir metotun çıktısını alıp
  85. diğer bir metota giriş olarak
    eklemeyi göstermek istedim.
  86. Böylece önceden olduğu
    gibi bırakacağız.
  87. CreateOrderSummary metotu içinde,
  88. yapabileceğim bir başka şey de
    "+= operator" kullanmak olabilirdi.
  89. Bu kısaltmadır ve
  90. anlamı da;
    priceMessage=priceMessage+bunların hepsi.
  91. Yani bunların hepsini "+ =" olarak
    değiştirirsem aynısı olacaktır.
  92. Daha az tuşlama olduğu için
    kodunuz da daha kısa olur.
  93. CalculatePrice metotunda,
  94. yapabileceğim bir başka şey de
    değeri bir lokal değişkenin içinde
  95. tutup sonra döndürmektense
    değeri hemen döndürmek.
  96. Bu da kodun daha kısa olmasını sağlıyor.
  97. Ve sonra burada, submitOrder metotunda,
    orderSummary oluşturarak değişkende
  98. saklayıp sonrasında kullanmak yerine
    sadece
  99. createOrderSummary'ı çağırıp, ardından
    displayMessage'ı çağırabilirdim.
  100. Bu da aynı sonucu veriyor.
  101. CreateOrderSummary metotunun
    dönüş değeri bir string,
  102. ve o da bir giriş değişkeni olarak
    DisplayMessage metotuna yazılır.
  103. Eğer okuması daha kolay geliyorsa,
    bu şekilde bırakabilirsiniz.
  104. Bütün bu ipuçları ve püf noktaları
    aynı mantığa çıkıyor zaten.
  105. Ayrıca unutmadan, bu metotun
    üstündeki Javadoc yorum kısmına
  106. işlemin ne yapması gerektiğini anlatan
    bir açıklama eklemeyi ihmal etmeyin.
  107. Teknik olarak, private metot için bir
    Javadoc yorumuna ihtiyacınız yok, fakat
  108. Sadece, kodunuzu inceleyen diğer
    insanların ne yapmaya çalıştığınızı
  109. anlaması için metotunuza
    bir açıklama yazmanız
  110. güzel bir alışkanlık olacaktır.
  111. Bu metotun açıklaması şu şekilde;
    bir komut özeti oluşturma
  112. fiyat komutu olarak giriş parametresi,
    ve sonrada metin özetine dönüş.