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:
- Polymorphism pada waktu kompilasi (Compile-Time)
- Dicapai melalui method overloading.
- 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.
ConversionConversion EmoticonEmoticon