YouTube

Got a YouTube account?

New: enable viewer-created translations and captions on your YouTube channel!

Indonesian subtitles

← Inheriting Behavior

Get Embed Code
13 Languages

Showing Revision 1 created 10/15/2015 by Darren Bridenbeck (Amara Staff).

  1. Mari kita kembali
    ke aplikasi JustJava untuk sesaat.
  2. Mari kita lihat di kelas MainActivity
    metode displayMessage.
  3. Semuanya mulai sedikit tegang di sini.
  4. Kita sudah mengenali
    bahwa kita menciptakan variabel
  5. yang disebut orderSummaryTextView.
  6. Tipe data variabel ini adalah TextView.
  7. Kita masih belum memahami bagian ini.
  8. Pada baris berikutnya, kita sebut
    metode pada tampilan objek teks ini.
  9. Kita menggunakan nama variabel
    yang sama seeprti dinyatakan di sini.
  10. Jadi kita sebut
    orderSummaryTextView.setText.
  11. Kemudian kita melewati string
    sebagai masukan untuk metode ini.
  12. Pesan string ini awalnya
    datang sebagai parameter masukan
  13. untuk metode menampilkan pesan.
  14. Sekarang kita masuk ke bagian kode,
    yang masih belum kita mengerti.
  15. Sepertinya findViewById
    adalah panggilan metode.
  16. Karena memiliki tanda kurung ini
  17. yang tampak seperti
    sebuah argumen masukan.
  18. Tapi anehnya metode ini tidak
    didefinisikan di mana saja di kelas ini.
  19. Jika saya klik dua kali pada nama ini
    dan kemudian tekan perintah F,
  20. atau kontrol F jika kau memakai Windows,
  21. maka kita dapat mencoba
    melakukan pencarian di berkas ini.
  22. Saya hanya melihat
    dua kejadian findViewById,
  23. dan mereka digunakan
    dengan cara yang sama.
  24. Tapi saya tidak melihat
    metode yang disebut findViewById.
  25. Omong-omong,
    sebelumnya di kelas MainActivity,
  26. Kita bisa melihat setContentView,
  27. tapi jika kau mencari ini di berkas,
  28. hal ini juga tidak didefinisikan
    dalam MainActivity.
  29. Jadi, di mana metode ini didefinisikan?
  30. MainActivity sebenarnya
    berkas yang cukup singkat.
  31. Dan hanya terdiri dari sekitar 90 baris,
  32. tapi ada sebenarnya
    kelas ini yang penting.
  33. Kode mengatakan,
    perluas AppCompatActivity.
  34. Ini berarti bahwa MainActivity
    adalah perpanjangan
  35. dari fungsi di kelas AppCompatActivity.
  36. Pada komputermu jika kau melihat
    kegiatan bar di sini, tidak apa-apa,
  37. itu hanya versi lama progaram ini.
  38. Versi terbaru yang harus kau
    gunakan adalah AppCompatActivity.
  39. Dan AppCompatActivity
    memberi kita dukungan kompatibilitas
  40. Pada perangkat Android yang lebih tua.
  41. AppCompatActivity adalah bagian
    perpustakaan dukungan Android.
  42. Hal ini memungkinkan kita untuk
    menggunakan fitur UI terbaru pada Android,
  43. Sementara masih bekerja pada
    perangkat Android yang lebih tua.
  44. Dengan memperluas kelas AppCompatActivity,
  45. Kita mendapatkan semua fungsi tersebut,
  46. semua bagian dan metode dari sini,
    dalam MainActivity secara gratis.
  47. Kita tidak perlu salin dan
    menempelkan kode apa pun dari sini.
  48. Kita hanya perlu memperpanjang kelas itu.
  49. Jika kau tertarik,
  50. kau dapat mengetahui informasi
    lebih lanjut tentang AppCompatActivity
  51. dengan mencarinya di Google.
  52. Berikut ini adalah dokumen referensi
    untuk kelas AppCompatActivity.
  53. Karena saya memiliki
    ekstensi Chrome yang diinstal,
  54. Saya bisa melihat sumbernya juga.
  55. Dan ini adalah kode di mana
    kelas AppCompatActivity didefinisikan.
  56. Kau dapat melihat
    ada banyak fungsi di sini,
  57. tapi pesan utamanya kau tak perlu
    memahami bagaimana ini diterapkan.
  58. Kau hanya perlu tahu saat
    kau memperpanjang AppCompatActivity,
  59. kau mendapatkan
    semua fungsi ini secara gratis.
  60. Pada tingkat tinggi,
    kau dapat memvisualisasikan seperti ini.
  61. Ini adalah definisi kelas
    untuk MainActivity.
  62. Dan kau punya beberapa
    metode yang didefinisikan di sini.
  63. Saat kau memperpanjang AppCompatActivity,
    maka kita dapat mengakses bagian ini
  64. dan metodenya dari AppCompatActivity.
  65. Secara fisik mereka tidak
    ditambahkan ke kelas MainActivity,
  66. tapi kau bisa bayangkan mereka ada,
  67. karena kau masih dapat
    mereferensi bagian dan metodenya.
  68. Dan seperti itu bagaimana
    kode kita dapat merujuk
  69. pada hal-hal seperti
    setContentView atau FindViewById.
  70. Karena kita warisi metode-metode tersebut,
  71. yang kita tak definisikan di MainActivity.
  72. MainActivity akan ditampilkan
    sebagai layar pada perangkat tapi
  73. kita tidak menulis kodenya
    di MainActivity, kita mewarisinya juga.
  74. Kita tidak punya bagian dan metode
    langsung dari AppCompatActivity di kelas
  75. tapi sekarang kita tahu mereka ada
    dan bisa merujuk pada mereka.
  76. Berbicara tentang mewarisi hal,
    ada hal baik dan buruk tentang itu.
  77. Terkadang kita ingin mewarisi perilaku,
  78. tapi lain kali kita mungkin ingin
    memodifikasinya sedikit.
  79. Jika kau ingin mengubah beberapa
    perilaku dari kelas warisan ini,
  80. kau dapat mengganti
    metode-metode tertentu.
  81. Kau dapat menambahkan teks
    @Override di metodenya agar komputer tahu
  82. bahwa kau tidak ingin versi
    metode dari AppCompatActivity.
  83. Tapi sebaliknya, kau ingin versi
    yang telah kau definisikan di sini.
  84. Ini topik yang rumit,
    dan membutuhkan banyak latihan.
  85. Tapi kita telah melihat salah satu
    contoh menulis ulang metode
  86. dari kelas AppCompatActivity.
  87. Dan metode itu ada di metode menciptakan.
  88. Dengan mengesampingkan metode yang ada
  89. di dalam MainActivity,
    kita menentukan implementasi sendiri
  90. untuk apa yang harus terjadi
    saat metode itu dipanggil.
  91. Jangan khawatir jika kau tidak mengerti.
  92. Saya baru saja
    memberikanmu gambaran singkat
  93. mengenai sekelompok konsep
    objek pemrograman berorientasi.
  94. Sangat diharapkan bahwa
    kau masih mempunyai pertanyaan.
  95. Dan masih perlu membaca lebih lanjut
    topik ini untuk lebih memahaminya.
  96. Cara lain memvisualisasikan hubungan
    antara MainActivity dan AppCompatActivity
  97. dengan cara menggambar
    Diagram Hierarki Kelas.
  98. Ini berbeda dengan
    Diagram Hirearki Tampilan
  99. karena Diagram Hirearki Tampilan
    menunjukkan tampilan pohon
  100. yang ditampilkan pada layar.
  101. Diagram Hierarki Kelas
    menunjukkan hubungan
  102. antara kelas Java yang berbeda.
  103. Kami memiliki AppCompatActivity
    sebagai kelas super.
  104. Sejak MainActivity meluas
    dari AppCompatActivity,
  105. maka ini dikenal sebagai bagian kelas.
  106. Jadi, setiap kali kau
    melihat definisi kelas ini,
  107. apa pun yang kau perpanjang
    dikenal kelas super.
  108. Ini akan menjadi bagian kelas.
  109. Jika kau membuat aktivitas lain
    yang disebut kegiatan rinci
  110. dan kau memperpanjang AppCompatActivity,
  111. ini akan menjadi bagian kelas,
    dan ini akan menjadi kelas supernya.
  112. Berikut ini contoh lain
    dari warisan kelas Java.
  113. Jika kau berpikir tentang hal itu,
    tampilan teks, gambar, dan tombol,
  114. semuanya memiliki beberapa
    aspek umum kepada mereka.
  115. Semua tampilan ini memiliki
    lebar dan tinggi pada layar.
  116. Kita belum mempelajarinya, tapi
    mereka juga memiliki bagian visibilitas.
  117. Jadi mereka semua bisa dibuat
    tidak terlihat atau terlihat.
  118. Ada juga beberapa sifat lainnya,
    yang umum di antara mereka.
  119. Alih-alih menulis kode untuk
    properti ini dalam kelas tampilan teks
  120. dan kemudian menyalinnya
    ke tampilan gambar lalu kelas tombol.
  121. Kita bisa lakukan sesuatu
    yang sedikit lebih pintar.
  122. Kita dapat membuat tampilan kelas.
  123. Kita dapat mengekstrak
    sifat umum di antara tampilan ini,
  124. lalu masukkan mereka
    dalam tampilan kelas ini,
  125. dengan cara itu kode tersebut
    hanya harus ditulis sekali.
  126. Tapi bagaimana kita
    membuat hubungan antara
  127. kelas tampilan teks dan tampilan kelas?
  128. Jika kau berpikir warisan, kau benar.
  129. Dalam berkas java TextView kita
    akan menentukan kelas tampilan teks.
  130. Dengan begitu kita akan mewarisi
    semua data dan metode dari tampilan kelas.
  131. Kemudian kita tidak perlu memiliki
    banyak kode seperti di kelas TextView
  132. karena bagian dari fungsi tersebut
    sudah ditulis di kelas tampilan.
  133. Hal yang sama akan berlaku untuk
    yang kelas ImageView dan tombol,
  134. kita tidak harus menulis kode yang banyak.
  135. Dalam berkas ini, kita hanya perlu
    menulis tentang apa yang berbeda
  136. mengenai ImageView
    dibandingkan dengan kelas tampilan.
  137. Saya menganggap ini
    sebagai menentukan delta,
  138. jadi kelas ImageView
    hanya harus menentukan
  139. apa yang berbeda tentang ImageView
    dibandingkan dengan kelas tampilan.
  140. Jika kita tidak ingin mewarisi
    perilaku tertentu dari kelas tampilan,
  141. Kita dapat menentukan
    perilaku yang telah diperbarui
  142. di dalam kelas ImageView
    atau kelas mana pun yang ada di sini.
  143. Untuk mengingatkanmu tentang terminologi,
  144. dalam hal ini TextView akan menjadi
    bagian kelas dan tampilan kelas supernya.
  145. Jika kita kembali ke dokumentasi
    untuk kelas TextView,
  146. kita akan memahami bagian ini sekarang.
  147. Dikatakan TextView memperluas tampilan.
  148. Sekarang kita tahu sudah mewarisi
  149. bagian dan metode dari ViewClass.
  150. Dan di sini adalah diagram hierarki kelas.
  151. Ini menunjukkan bahwa kelas
    TextView mewarisi dari ViewClass.
  152. Dan pada gilirannya,
    kelas tampilan mewarisi dari kelas objek.
  153. Jika kau mencarinya lagi,
    kau akan menemukan kelas-kelas lain,
  154. Seperti kelas EditText, yang
    sebenarnya pemanjangan kelas TextView.
  155. Jadi dibutuhkan perilaku
    membentuk kelas TextView dan
  156. kemudian menambahkan
    sedikit fungsi khusus untuk itu.
  157. Jadi EditText pemajangan dari TextView.
  158. Dan TextView pemanangan tampilan,
    dan tampilan pemanjangan dari objek.
  159. Dan ini adalah diagram hirearki kelas.
  160. Ada banyak hal yang terjadi, dan
    kau bisa melihatnya selama berjam-jam.
  161. Tapi izinkan saya menunjukkan satu hal
    di halaman dokumentasi TextView.
  162. Saya ingin menunjukkan
    metode untuk SetVisibility.
  163. Berikut ini adalah metode Java
    untuk SetVisibility dalam kelas TextView.
  164. Ini mengubah apakah
    tampilannya terlihat atau tidak.
  165. Jika saya klik pada metode ini,
    ini akan membawa saya ke kelas tampilan.
  166. Dan kemudian menjelaskan soal metode ini.
  167. Jadi kau dapat melihat bahwa objek
    TextView memiliki metode set visibilitas.
  168. Tapi itu sebenarnya mewarisi
    dari kelas tampilan.
  169. Jadi kita punya fungsi ini secara gratis,
    dari kelas tampilan.
  170. Oke, kita baru saja menemukan
    banyak konsep baru.
  171. Biasanya ini akan dipelajari selama
    satu semester dari jurusan ilmu komputer.
  172. Kami akan melakukan
    sedikit latihan sekarang
  173. dan mudah-mudahan itu
    akan membuatmu sedikit memahaminya.
  174. Tapi hal itu membutuhkan
    lebih banyak waktu dan latihan
  175. sampai kau sepenuhnya
    memahami konsep-konsep tersebut.
  176. Oke, latihan pertama, saya ingin kau
    membuat aplikasi Android lain yang baru
  177. karena kita tidak ingin
    mengacaukan aplikasi JustJava.
  178. Setelah kau membuat proyek,
    kemudian jalankan aplikasinya.
  179. Setelah kau membuat aplikasimu,
    kau akan melihat berkas MainActivity.
  180. Berkas MainActivity tersebut akan
    memperpanjang dari AppCompatActivity.
  181. Dalam versi Android Studio milikmu,
  182. jika MainActivity
    memperpanjang dari ActionBarActivity
  183. itu bukan sebuah masalah.
  184. Itu hanya versi lama
    dari AppCompatActivity.
  185. Dengan menghapus metode ini,
    kita akan mundur kembali
  186. di mana metode OnCreate
    muncul di kelas AppCompatActivity.
  187. Kehadiran metode ini mengatakan,
  188. kami ingin perilaku yang berbeda
    di MainActivity untuk metode OnCreate.
  189. Jadi dengan menghapusnya
  190. membawa kita kembali ke perilaku aslinya
    di dalam Kelas AppCompatActivity.
  191. Saat kau menjalankan aplikasi,
  192. apa yang kauperhatikan berbeda
  193. dibandingkan saat pertama kali
    kau menjalankan aplikasinya?
  194. Tulis jawabanmu dalam kotak teks ini.