Menu
CoddyTech

Overloading Method

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

Overloading method memungkinkan kamu mendefinisikan beberapa method dengan nama yang sama, tetapi daftar parameter yang berbeda. Compiler menentukan versi mana yang akan dipanggil berdasarkan argumen yang kamu berikan.

Setiap method yang di-overload harus memiliki signature yang unik, yaitu jumlah parameter yang berbeda atau tipe parameter yang berbeda:

public static void Print(string message)
{
    Console.WriteLine(message);
}

public static void Print(string message, int times)
{
    for (int i = 0; i < times; i++)
        Console.WriteLine(message);
}

public static void Print(int number)
{
    Console.WriteLine(number);
}
// Compiler memilih versi yang tepat
Print("Hello");           // Memanggil Print(string)
Print("Hi", 3);           // Memanggil Print(string, int)
Print(42);                // Memanggil Print(int)

Overloading berbeda dari parameter opsional dalam satu hal penting. Dengan parameter opsional, kamu memiliki satu method yang menangani beberapa skenario. Dengan overloading, kamu memiliki method terpisah yang dapat berisi logika yang sepenuhnya berbeda untuk setiap kasus.

Perhatikan bahwa tipe nilai yang dikembalikan saja tidak membuat method menjadi unik. Kamu tidak dapat memiliki dua method yang hanya berbeda pada nilai yang dikembalikannya. Daftar parameter harus berbeda. Method overloading adalah bentuk polimorfisme saat kompilasi, yaitu keputusan tentang method mana yang akan dipanggil dibuat saat kode dikompilasi, bukan saat kode dijalankan.

challenge icon

Tantangan

Mudah

Mari kita buat class kalkulator serbaguna yang menunjukkan keunggulan method overloading. Kamu akan membuat beberapa versi method perhitungan yang menangani berbagai situasi, mulai dari operasi sederhana dengan dua angka hingga perhitungan yang lebih kompleks, semuanya menggunakan nama method yang sama dan intuitif.

Kamu akan mengatur kodemu dalam dua file:

  • Calculator.cs: Buat class Calculator di namespace MathTools dengan method overload yang memiliki nama sama, tetapi menerima parameter berbeda:
    • Multiply: Buat tiga versi overload:
      • Satu versi yang menerima dua parameter int dan mengembalikan hasil kalinya sebagai int
      • Satu versi yang menerima tiga parameter int dan mengembalikan hasil kalinya sebagai int
      • Satu versi yang menerima dua parameter double dan mengembalikan hasil kalinya sebagai double
    • Describe: Buat dua versi overload:
      • Satu versi yang menerima int dan mengembalikan "Integer: {value}"
      • Satu versi yang menerima double dan mengembalikan "Double: {value}"
  • Program.cs: Di file utamamu, buat instance Calculator dan tunjukkan cara compiler secara otomatis memilih method overload yang tepat berdasarkan argumen yang kamu berikan.

Kamu akan menerima empat input:

  • Bilangan bulat pertama (misalnya, 5)
  • Bilangan bulat kedua (misalnya, 4)
  • Bilangan bulat ketiga (misalnya, 3)
  • Sebuah bilangan desimal (misalnya, 2.5)

Dengan kalkulatormu, lakukan operasi berikut dan cetak setiap hasil pada barisnya sendiri:

  1. Kalikan dua bilangan bulat pertama (menggunakan versi dua-int)
  2. Kalikan ketiga bilangan bulat (menggunakan versi tiga-int)
  3. Kalikan bilangan bulat pertama dengan bilangan desimal (menggunakan versi dua-double)
  4. Jelaskan bilangan bulat pertama (menggunakan versi int)
  5. Jelaskan bilangan desimal (menggunakan versi double)

Misalnya, jika inputnya adalah 5, 4, 3, dan 2.5, outputnya seharusnya:

20
60
12.5
Integer: 5
Double: 2.5

Perhatikan bagaimana kamu memanggil Multiply dan Describe dengan tipe dan jumlah argumen yang berbeda, tetapi compiler selalu tahu persis versi mana yang harus digunakan. Inilah polimorfisme saat kompilasi, keputusan dibuat ketika kodemu dikompilasi, bukan saat dijalankan!

Coba sendiri

using System;
using MathTools;

class Program
{
    public static void Main(string[] args)
    {
        // Baca input
        int firstInt = Convert.ToInt32(Console.ReadLine());
        int secondInt = Convert.ToInt32(Console.ReadLine());
        int thirdInt = Convert.ToInt32(Console.ReadLine());
        double decimalNum = Convert.ToDouble(Console.ReadLine());

        // TODO: Buat instance Calculator

        // TODO: Panggil Multiply dengan dua bilangan bulat dan cetak hasilnya

        // TODO: Panggil Multiply dengan tiga bilangan bulat dan cetak hasilnya

        // TODO: Panggil Multiply dengan bilangan bulat pertama dan bilangan desimal, lalu cetak hasilnya

        // TODO: Panggil Describe dengan bilangan bulat pertama dan cetak hasilnya

        // TODO: Panggil Describe dengan bilangan desimal dan cetak hasilnya
    }
}
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