Menu
CoddyTech

Parameter Opsional

Termasuk bagian Pemrograman Berorientasi Objek dalam perjalanan C# di Coddy. Pelajaran 48 dari 70.

Parameter opsional memungkinkan kamu menentukan nilai default untuk parameter method. Jika pemanggil tidak memberikan nilai untuk parameter tersebut, nilai default akan digunakan secara otomatis.

Kamu membuat parameter opsional dengan menetapkan nilai default dalam signature method:

public static void Greet(string name, string greeting = "Hello")
{
    Console.WriteLine(greeting + ", " + name + "!");
}

// Kedua pemanggilan berfungsi
Greet("Alice");              // Halo, Alice!
Greet("Bob", "Welcome");     // Selamat datang, Bob!

Parameter opsional harus muncul setelah semua parameter wajib. Kamu bisa memiliki beberapa parameter opsional, dan pemanggil bisa menghilangkan parameter mana pun dari bagian kanan:

public static void CreateUser(string name, int age = 0, bool isActive = true)
{
    Console.WriteLine($"{name}, Age: {age}, Active: {isActive}");
}

CreateUser("Emma");                    // Emma, Usia: 0, Aktif: True
CreateUser("James", 25);               // James, Usia: 25, Aktif: True
CreateUser("Sarah", 30, false);        // Sarah, Usia: 30, Aktif: False

Nilai default harus berupa konstanta waktu kompilasi, yaitu literal, nilai const, atau ekspresi default. Kamu tidak dapat menggunakan variabel atau pemanggilan method sebagai nilai default. Karena itu, parameter opsional cocok untuk pengaturan konfigurasi dan method yang sebagian besar pemanggilnya menggunakan nilai umum.

challenge icon

Tantangan

Mudah

Mari buat sistem notifikasi yang menggunakan parameter opsional untuk menyediakan pemformatan pesan yang fleksibel. Kamu akan membuat class utilitas yang dapat mengirim notifikasi dengan pengaturan yang bisa disesuaikan, sementara sebagian besar pemanggil akan menggunakan nilai default yang sesuai.

Kamu akan mengatur kodemu dalam dua file:

  • NotificationService.cs: Buat class NotificationService dalam namespace Notifications dengan method yang menunjukkan penggunaan parameter opsional:
    • SendNotification(string message, string priority = "Normal", bool addTimestamp = true) - Method ini harus mengembalikan string notifikasi yang sudah diformat. Saat addTimestamp bernilai true, tambahkan [TIMESTAMP] di awal pesan. Formatnya adalah [Priority] Message atau [TIMESTAMP] [Priority] Message, bergantung pada pengaturan timestamp.
  • Program.cs: Dalam file utama, tunjukkan cara kerja parameter opsional dengan memanggil SendNotification dalam tiga cara berbeda, menggunakan semua nilai default, mengubah satu parameter, dan mengubah kedua parameter opsional.

Kamu akan menerima tiga input:

  • Pesan pertama (akan menggunakan semua nilai default)
  • Pesan kedua (akan menggunakan prioritas "Urgent" dengan timestamp default)
  • Pesan ketiga (akan menggunakan prioritas "Low" tanpa timestamp)

Panggil SendNotification tiga kali dan cetak setiap hasilnya:

  1. Pemanggilan pertama: berikan hanya pesan pertama (menggunakan nilai default: prioritas "Normal", timestamp aktif)
  2. Pemanggilan kedua: berikan pesan kedua dengan prioritas "Urgent" (timestamp tetap menggunakan nilai default true)
  3. Pemanggilan ketiga: berikan pesan ketiga dengan prioritas "Low" dan false untuk timestamp

Contohnya, jika inputnya adalah System started, Server overload, dan Cache cleared, outputnya seharusnya:

[TIMESTAMP] [Normal] System started
[TIMESTAMP] [Urgent] Server overload
[Low] Cache cleared

Perhatikan bagaimana method yang sama menangani ketiga skenario dengan mudah. Pemanggil hanya perlu menentukan hal yang ingin diubah dari nilai default!

Coba sendiri

using System;
using Notifications;

class Program
{
    public static void Main(string[] args)
    {
        // Baca ketiga pesan
        string message1 = Console.ReadLine();
        string message2 = Console.ReadLine();
        string message3 = Console.ReadLine();

        // Buat instance dari NotificationService
        NotificationService service = new NotificationService();

        // TODO: Panggil SendNotification tiga kali dan cetak setiap hasilnya:
        // 1. Panggilan pertama: masukkan hanya message1 (menggunakan semua nilai bawaan)
        // 2. Panggilan kedua: masukkan message2 dengan prioritas "Urgent" (nilai bawaan timestamp adalah true)
        // 3. Panggilan ketiga: masukkan message3 dengan prioritas "Low" dan false untuk timestamp

    }
}
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Pemrograman Berorientasi Objek

Latihan sendiri: Compiler C# online