Polymorphism di ASP.NET MVC: Konsep dan Implementasi dengan Contoh Kasus Reservation

Polymorphism adalah salah satu pilar utama dalam pemrograman berorientasi objek (OOP). Dalam C#, polymorphism memungkinkan satu antarmuka untuk menangani berbagai jenis objek. Polymorphism memungkinkan kita untuk menggunakan metode yang sama dengan cara yang berbeda tergantung pada objek yang memanggilnya. Dalam artikel ini, kita akan mengeksplorasi konsep polymorphism dalam ASP.NET MVC menggunakan contoh kasus Reservation.


Apa itu Polymorphism?

Polymorphism berasal dari bahasa Yunani yang berarti "banyak bentuk." Dalam konteks OOP, polymorphism memungkinkan Anda mendefinisikan metode di kelas dasar yang dapat diimplementasikan secara berbeda oleh kelas turunan. Polymorphism memiliki dua jenis utama:

  1. Polymorphism pada waktu kompilasi (Compile-Time) - Dicapai melalui method overloading.
  2. Polymorphism pada waktu eksekusi (Run-Time) - Dicapai melalui method overriding menggunakan keyword virtual dan override.

Contoh Kasus: Reservation

Studi Kasus

Misalkan kita memiliki sistem reservasi transportasi. Ada beberapa jenis reservasi seperti FlightReservation, HotelReservation, dan CarRentalReservation. Setiap jenis reservasi memiliki logika pemrosesan yang sedikit berbeda.

Implementasi

1. Membuat Kelas Dasar

Kelas dasar Reservation akan mendefinisikan metode virtual ProcessReservation.


public class Reservation
{
    public int ReservationId { get; set; }
    public string CustomerName { get; set; }
    
    // Metode virtual yang akan di-override oleh kelas turunan
    public virtual void ProcessReservation()
    {
        Console.WriteLine($"Processing generic reservation for {CustomerName}.");
    }
}

2. Membuat Kelas Turunan

Kelas turunan seperti FlightReservation, HotelReservation, dan CarRentalReservation akan mengoverride metode ProcessReservation untuk memberikan implementasi khusus.



public class FlightReservation : Reservation
{
    public string FlightNumber { get; set; }

    public override void ProcessReservation()
    {
        Console.WriteLine($"Processing flight reservation {FlightNumber} for {CustomerName}.");
    }
}

public class HotelReservation : Reservation
{
    public string HotelName { get; set; }

    public override void ProcessReservation()
    {
        Console.WriteLine($"Processing hotel reservation at {HotelName} for {CustomerName}.");
    }
}

public class CarRentalReservation : Reservation
{
    public string CarModel { get; set; }

    public override void ProcessReservation()
    {
        Console.WriteLine($"Processing car rental reservation for {CarModel}, Customer: {CustomerName}.");
    }
}


3. Menggunakan Polymorphism

Kita dapat menggunakan polymorphism untuk memanggil metode ProcessReservation tanpa mengetahui jenis spesifik dari objek reservasi.


public class ReservationController : Controller
{
    public ActionResult ProcessAllReservations()
    {
        List reservations = new List
        {
            new FlightReservation { ReservationId = 1, CustomerName = "John Doe", FlightNumber = "FL123" },
            new HotelReservation { ReservationId = 2, CustomerName = "Jane Smith", HotelName = "Grand Hotel" },
            new CarRentalReservation { ReservationId = 3, CustomerName = "Alice Johnson", CarModel = "Toyota Corolla" }
        };

        foreach (var reservation in reservations)
        {
            reservation.ProcessReservation();
        }

        return Content("All reservations processed.");
    }
}

Output

Ketika metode ProcessAllReservations dipanggil, outputnya akan:

Processing flight reservation FL123 for John Doe.

Processing hotel reservation at Grand Hotel for Jane Smith.

Processing car rental reservation for Toyota Corolla, Customer: Alice Johnson.


Kesimpulan

Dengan polymorphism, Anda dapat:

  • Menghindari kode berulang dengan memanfaatkan kelas dasar.
  • Menangani berbagai jenis objek menggunakan antarmuka yang seragam.

Konsep ini sangat berguna dalam aplikasi ASP.NET MVC, terutama ketika Anda menangani berbagai jenis operasi atau objek dalam skenario yang kompleks. Dengan contoh kasus Reservation, kita telah menunjukkan bagaimana polymorphism dapat membantu membuat kode lebih fleksibel, dapat diperluas, dan mudah dipelihara.

 


Previous
Next Post »