Latihan - Memanggil metode Kelas .NET

Selesai

Apakah Anda menyadarinya atau tidak, Anda telah memanggil metode C# sejak aplikasi "Halo, Dunia!" pertama Anda. Aplikasi tersebut WriteLine() menggunakan metode Console kelas untuk menampilkan pesan "Halo, Dunia!".

Namun, tidak semua kelas dan metode diimplementasikan dengan cara yang sama. Unit ini mencakup beberapa varian paling umum yang perlu Anda pahami saat menggunakan metode dari Pustaka Kelas .NET. Lebih penting lagi, Anda akan belajar bagaimana menemukan dan menggunakan dokumentasi untuk lebih memahami lebih lanjut tentang setiap metode.

Cara memanggil metode di Pustaka Kelas .NET

Dari pengalaman Anda sebelumnya dengan metode Console.WriteLine(), Anda seharusnya sudah mengetahui dasar-dasarnya:

  • Mulailah dengan mengetik nama kelas. Dalam hal ini, nama kelasnya adalah Console.
  • Tambahkan operator akses anggota, . simbol .
  • Tambahkan nama metode. Dalam hal ini, nama metodenya adalah WriteLine.
  • Tambahkan operator pemanggilan metode, yang merupakan sekumpulan tanda kurung ().
  • Terakhir, tentukan argumen yang diteruskan ke metode , jika ada, antara tanda kurung operator pemanggilan metode. Dalam hal ini, Anda menentukan teks yang Anda inginkan Console.WriteLine() untuk menulis metode ke konsol (misalnya, "Hello World!").

Opsional, tergantung pada bagaimana pengembang merancang dan menerapkan metode yang diberikan, Anda mungkin juga perlu:

  • Teruskan nilai tambahan sebagai parameter input.
  • Terima nilai pengembalian.

Di unit berikutnya, Anda akan memeriksa cara meneruskan nilai input ke metode, dan bagaimana metode dapat digunakan untuk mengembalikan nilai ke rutinitas panggilan.

Meskipun beberapa metode dapat disebut dengan cara yang sama seperti yang Anda sebut Console.WriteLine(), ada metode lain di Pustaka Kelas .NET yang memerlukan pendekatan yang berbeda.

Menyiapkan lingkungan pengodian Anda

Modul ini mencakup aktivitas pengkodean yang memandu Anda melalui proses membangun dan menjalankan kode sampel. Anda didorong untuk menyelesaikan aktivitas ini menggunakan Visual Studio Code sebagai lingkungan pengembangan Anda. Menggunakan Visual Studio Code untuk aktivitas ini akan membantu Anda menjadi lebih nyaman menulis dan menjalankan kode di lingkungan pengembang yang digunakan oleh para profesional di seluruh dunia.

  1. Buka Visual Studio Code.

    Anda dapat menggunakan Windows menu Mulai (atau sumber daya yang setara untuk OS lain) untuk membuka Visual Studio Code.

  2. Pada menu File Visual Studio Code, pilih Buka Folder.

  3. Dalam dialog Buka Folder, navigasikan ke folder Windows Desktop.

    Jika Anda memiliki lokasi folder yang berbeda di mana Anda menyimpan proyek kode, Anda dapat menggunakan lokasi folder tersebut sebagai gantinya. Untuk pelatihan ini, yang penting adalah memiliki lokasi yang mudah ditemukan dan diingat.

  4. Dalam dialog Buka Folder, pilih Pilih Folder.

    Jika Anda melihat dialog keamanan yang menanyakan apakah Anda mempercayai penulis, pilih Ya.

  5. Pada menu Terminal Visual Studio Code, pilih Terminal Baru.

    Perhatikan bahwa perintah di panel Terminal menampilkan jalur folder untuk folder saat ini. Contoh:

    C:\Users\someuser\Desktop>
    

    Catatan

    Jika Anda bekerja pada PC Anda sendiri daripada di kotak pasir atau lingkungan yang dihosting dan Anda telah menyelesaikan modul Microsoft Learn lainnya dalam seri C# ini, Anda mungkin telah membuat folder proyek untuk sampel kode. Jika demikian, Anda dapat melewati langkah berikutnya, yang digunakan untuk membuat aplikasi konsol di folder TestProject.

  6. Pada prompt perintah Terminal, untuk membuat aplikasi konsol baru di folder tertentu, ketik dotnet konsol baru -o ./CsharpProjects/TestProject lalu tekan Enter.

    Perintah .NET CLI ini menggunakan templat program .NET untuk membuat proyek aplikasi konsol C# baru di lokasi folder yang ditentukan. Perintah membuat folder CsharpProjects dan TestProject untuk Anda, dan menggunakan TestProject sebagai nama file Anda .csproj .

  7. Di panel EXPLORER, perluas folder CsharpProjects .

    Anda akan melihat folder TestProject dan dua file, file program C# bernama Program.cs dan file proyek C# bernama TestProject.csproj.

  8. Di panel EXPLORER, untuk melihat file kode Anda di panel Editor, pilih Program.cs.

  9. Hapus baris kode yang ada.

    Anda akan menggunakan proyek konsol C# ini untuk membuat, membangun, dan menjalankan sampel kode selama modul ini.

  10. Tutup panel Terminal.

Memanggil berbagai jenis metode di Pustaka Kelas .NET

  1. Di Editor Visual Studio Code, untuk membuat sampel kode yang mengimplementasikan metode System.Random kelas dan System.Console , masukkan kode berikut:

    Random dice = new Random();
    int roll = dice.Next(1, 7);
    Console.WriteLine(roll);
    
    

    Kode ini mensimulasikan roll dadu menggunakan Random.Next() metode untuk menghasilkan angka, dan Console.WriteLine() metode untuk menampilkan nilai.

    Catatan

    Anda akan memeriksa kode secara rinci nanti di unit ini.

  2. Pada menu File Visual Studio Code, klik Simpan.

  3. Di panel EXPLORER, untuk membuka Terminal di lokasi folder TestProject Anda, klik kanan TestProject, lalu pilih Buka di Terminal Terintegrasi.

    Perhatikan bahwa panel Terminal menyertakan perintah yang menampilkan jalur folder. Contohnya:

    C:\Users\someuser\Desktop\CsharpProjects\TestProject>

    Ketika Anda menggunakan Terminal untuk menjalankan perintah .NET CLI, lokasi folder ini adalah tempat perintah akan berjalan. Pastikan folder kode Anda cocok dengan jalur folder yang ditampilkan di prompt perintah sebelum Anda membuat atau menjalankan kode Anda.

  4. Pada perintah Terminal, untuk menjalankan kode Anda, ketik dotnet run lalu tekan Enter.

    Perhatikan bahwa angka dari 1 hingga 6 ditampilkan dalam output konsol (jumlah titik pada dadu). Jika Anda menjalankan kode cukup kali, Anda akhirnya akan melihat setiap angka yang ditampilkan.

  5. Luangkan waktu satu menit untuk memeriksa sintaks yang digunakan untuk mengakses Next() metode dan WriteLine() .

    Perhatikan bahwa Anda menggunakan teknik yang berbeda untuk mengakses metode.

    Random dice = new Random();
    int roll = dice.Next(1, 7);
    Console.WriteLine(roll);
    
    

    Pada baris kode ketiga, Anda menyertakan referensi ke Console kelas dan memanggil metode secara Console.WriteLine() langsung. Namun, Anda menggunakan teknik yang berbeda untuk memanggil Random.Next() metode . Alasan mengapa Anda menggunakan dua teknik yang berbeda adalah karena beberapa metode bersifat stateful dan yang lain tanpa status. Langkah Anda selanjutnya adalah memeriksa perbedaan antara metode stateful dan stateless.

Metode stateful versus stateless

Dalam proyek pengembangan perangkat lunak, status istilah digunakan untuk menggambarkan kondisi lingkungan eksekusi pada saat tertentu pada waktunya. Saat kode Anda dieksekusi baris demi baris, nilai disimpan dalam variabel. Setiap saat selama eksekusi, status aplikasi saat ini adalah kumpulan semua nilai yang disimpan dalam memori.

Beberapa metode tidak bergantung pada status aplikasi saat ini agar berfungsi dengan baik. Dengan kata lain, metode stateless diimplementasikan sehingga dapat bekerja tanpa merujuk atau mengubah nilai apa pun yang sudah tersimpan di memori. Metode stateless juga dikenal sebagai metode statis.

Misalnya, metode Console.WriteLine() tidak bergantung pada nilai apa pun yang disimpan dalam memori. Metode melakukan fungsinya dan menyelesaikannya tanpa memengaruhi status aplikasi dengan cara apa pun.

Namun, metode lain harus memiliki akses ke status aplikasi agar berfungsi dengan baik. Dengan kata lain, metode stateful dibangun singgah sehingga mengandalkan nilai yang disimpan dalam memori oleh baris kode sebelumnya yang telah dijalankan. Atau mereka memodifikasi status aplikasi dengan memperbarui nilai atau menyimpan nilai baru di memori. Mereka juga dikenal sebagai metode instans.

Metode stateful (instans) melacak statusnya di bidang, yang merupakan variabel yang ditentukan di kelas. Setiap instans baru dari kelas mendapatkan salinannya sendiri dari bidang-bidang itu untuk menyimpan status.

Satu kelas dapat mendukung metode stateful dan stateless. Namun, saat Anda perlu memanggil metode stateful, Anda harus membuat instans kelas terlebih dahulu agar metode tersebut dapat mengakses status.

Membuat instans dari kelas

Instans kelas disebut objek. Untuk membuat instans baru dari sebuah kelas, gunakan operator new. Perhatikan baris kode berikut yang membuat instans baru dari kelas Random untuk membuat objek baru bernama dice:

Random dice = new Random();

Operator new melakukan beberapa hal penting:

  • Operator pertama-tama meminta alamat di memori komputer yang cukup besar untuk menyimpan objek baru berdasarkan kelas Random.
  • Operator menciptakan objek baru, dan menyimpannya di alamat memori.
  • Ini menampilkan alamat memori sehingga dapat disimpan dalam variabel dice.

Sejak saat itu, ketika variabel dice direferensikan, .NET Runtime melakukan pencarian di belakang layar untuk memberikan ilusi bahwa Anda bekerja secara langsung dengan objek itu sendiri.

Versi terbaru .NET Runtime memungkinkan Anda membuat instans objek tanpa harus mengulangi nama jenis (pemanggilan konstruktor yang diketik target). Misalnya, kode berikut akan membuat instans Random baru kelas:

Random dice = new();

Tujuannya adalah untuk menyederhanakan keterbacaan kode. Anda selalu menggunakan tanda kurung saat menulis ekspresi berjenis new target.

Mengapa metode Next() stateful?

Anda mungkin bertanya-tanya mengapa metode Next() diimplementasikan sebagai metode stateful? Tidak bisakah desainer Pustaka Kelas .NET menemukan cara untuk menghasilkan angka acak tanpa memerlukan status? Dan apa sebenarnya yang disimpan atau dirujuk oleh metode Next()?

Ini adalah pertanyaan yang wajar. Pada tingkat tinggi, komputer pandai mengikuti instruksi khusus untuk menciptakan hasil yang andal dan berulang. Untuk menciptakan ilusi keacakan, pengembang metode Next() memutuskan untuk menangkap tanggal dan waktu hingga sepersekian milidetik dan menggunakannya untuk menyemai algoritme yang menghasilkan angka berbeda setiap kali. Meskipun tidak sepenuhnya acak, itu sudah cukup untuk sebagian besar aplikasi. Status yang ditangkap dan dipertahankan selama masa dice pakai objek adalah nilai benih. Setiap panggilan berikutnya ke metode Next() menjalankan kembali algoritme, tetapi memastikan bahwa benih berubah sehingga nilai yang sama tidak (harus) ditampilkan.

Namun, untuk menggunakan metode Random.Next(), Anda tidak perlu memahami cara kerjanya. Hal penting yang perlu diketahui adalah bahwa beberapa metode mengharuskan Anda membuat instans kelas sebelum Anda memanggilnya, sementara yang lain tidak.

Bagaimana Anda bisa menentukan apakah Anda perlu membuat instans kelas sebelum memanggil metodenya?

Salah satu pendekatan untuk menentukan apakah metode bersifat stateful atau stateless adalah dengan berkonsultasi dengan dokumentasi. Dokumentasi mencakup contoh yang menunjukkan apakah metode harus dipanggil dari instans objek atau langsung dari kelas .

Catatan

Anda mungkin perlu menggulir ke bawah pada halaman dokumentasi untuk menemukan contoh kode.

Sebagai alternatif untuk mencari melalui dokumentasi produk, Anda dapat mencoba mengakses metode langsung dari kelas itu sendiri. Jika berhasil, Anda tahu bahwa itu adalah metode stateless. Hal terburuk yang bisa terjadi adalah Anda akan mendapatkan kesalahan kompilasi.

Coba akses metode secara Random.Next() langsung dan lihat apa yang terjadi.

  1. Masukkan baris kode berikut ke editor Visual Studio Code:

    int result = Random.Next();
    
    

    Anda sudah tahu bahwa Next() adalah metode stateful, namun contoh ini menunjukkan bagaimana Visual Studio Code Editor bereaksi ketika Anda mencoba mengakses metode dengan tidak benar.

  2. Perhatikan bahwa garis berlekuk merah muncul di bawah Random.Next, menunjukkan bahwa Anda memiliki kesalahan kompilasi.

    Jika metode yang Anda minati untuk digunakan adalah stateless, tidak ada garis berlekuk merah yang akan muncul.

  3. Arahkan kursor ke atas garis berlekuk merah.

    Jendela popup akan muncul dengan pesan berikut:

    (1,14): error CS0120: An object reference is required for the non-static field, method, or property 'Random.Next()'
    
    

    Seperti yang Anda lihat dalam kode di awal unit, Anda dapat memperbaiki kesalahan ini dengan membuat instans Random kelas sebelum mengakses Next() metode . Contohnya:

    Random dice = new Random();
    int roll = dice.Next();
    
    

    Dalam hal ini, metode ini Next() dipanggil tanpa parameter input.

Rekap

  • Untuk memanggil metode kelas di Perpustakaan Kelas .NET, gunakan format ClassName.MethodName(), di mana simbol . adalah operator akses anggota untuk mengakses metode yang ditentukan pada kelas, dan simbol () adalah operator pemanggilan metode.
  • Saat memanggil metode stateless, Anda tidak perlu membuat instans baru dari kelasnya terlebih dahulu.
  • Saat memanggil metode stateful, Anda perlu membuat instans kelas, dan mengakses metode pada objek.
  • Gunakan operator new untuk membuat instans baru dari sebuah kelas.
  • Instans kelas disebut objek.

Uji pengetahuan Anda

1.

Manakah dari berikut ini yang mewakili cara yang benar untuk membuat instans kelas?

2.

Pengembang membuat instans Random kelas bernama coins. Manakah dari baris kode berikut yang dapat mereka gunakan untuk memanggil Next() metode ?