Ads Home1

C# Tutorial - Apa itu Polimorfisme (polymorphism) ?

http://www.xcodeplus.net/2017/12/csharp-tutorial-apa-itu-polimorfisme.html


Polimorfisme

Umumnya polimorfisme memiliki arti “banyak-bentuk”. Dalam konsep paradigma Bahasa pemrograman berorientasi objek, polimorfisme dapat diartikan sebagai kemampuan suatu objek (referensi) untuk mengungkap banyak hal melalui satu cara yang sama seragam. Dasar polimorfisme adalah metode virtual (atau metode abstrak).

Polimorfisme mengizinkan kita untuk mendeklarasikan satu referensi ke kelas dasar yang dapat menunjuk ke semua objek dari kelas turunan. Dalam contoh kasus ini, kita dapat mendeklarasikan referensi (misal: r) yang merupakan referensi objek dari kelas Mobil. Selanjutnya, referensi tersebut dapat digunakan untuk menunjuk objek dari kelas Ferrari, Lamborghini dan Camaro.

Melalui cara seperti ini, pemanggilan metode TingkatKecepatan() dari masing-masing objek dapat dilakukan menggunakan cara yang seragam. Meskipun caranya seragam, tapi hasil yang diberikan akan berbeda tergantung dari tipe objek yang sedang ditunjuk oleh referensi r. Kode berikut di bawah ini akan menunjukan konsep di atas.

CONTOH:
// Mendeklarasikan referensi dengan tipe Mobil
Mobil r;

// Membuat objek dari kelas Ferrari
r = new Ferrari();
r.TingkatKecepatan("340km/jam (210mph)";

// Membuat objek dari kelas Lamborghini
r = new Lamborghini();
r.TingkatKecepatan("350km/jam (217mph)";

// Membuat objek dari kelas Camaro 
r = new Camaro();
r.TingkatKecepatan("330km/jam (203mph)";


Dalam contoh ini, referensi r dikatan bersifat polimorfik karena referensi tersebut dapat berperan sebagai objek Ferrari, Lamborghini dan juga Camaro. Anda dapat menganalogikan referensi r di atas seperti hewan chameleon.

Chameleon memiliki kemampuan unik yang tidak dimiliki oleh hewan sejenisnya yaitu kemampuan untuk mengubah warna untuk setiap objek yang sedang dihinggapinya hal ini disebut dengan sifat polimorfik.

Jika kemampuan mengubah warna tersebut dianggap sebagai metode ChangeColor(), maka chameleon.ChangeColor() akan memberikan banyak hasil yang yang berbeda tergantung dari jenis objek yang sedang dihinggapinya. Sebagai contoh, ketika chameleon hinggap ke dedaunan hijau, maka metode chameleon.ChangeColor() akan menghasilkan warna hijau. Intinya satu cara yang sama, tapi hasil yang akan diberikan berbeda-beda tergantung dengan kondisinya. Inilah disebut dengan polymorphism.

Berikut di bawah ini akan menunjukan penggunaan konsep dari polimorfisme (polymorphism).


PROGRAM 1.1
using System;

// kelas abstrak
abstract class Bangun2D {
  // metode abstrak
  public abstract double HitungLuas();

  // metode non-abstrak
  public void CetakLuas(string namabangun) {
    Console.WriteLine("Luas " + namabangun + " \t= " +
      HitungLuas());
  }
}

// kelas Segiempat, turunan dari Bangun2D
class Segiempat: Bangun2D {
  private double panjang;
  private double lebar;

  // konstruktor persegi panjang
  public Segiempat(double p, double l) {
    panjang = p;  
    lebar = l;
  }

  // konstruktor bujursangkar
  public Segiempat(double sisi) {
    panjang = lebar = sisi;
  }

  // implementasi Bangun2D.HitungLuas()
  public override double HitungLuas() {
    return panjang * lebar;
  }
}

// kelas Segitiga, turunan dari Bangun2D
class Segitiga: Bangun2D {
  private double alas;
  private double tinggi;

  public Segitiga(double a, double t) {
    alas = a;  
    tinggi = t;
  }

  // implementasi Bangun2D.HitungLuas()
  public override double HitungLuas() {
    return (alas * tinggi) / 2;
  }
}

// kelas Lingkaran, turunan dari Bangun2D
class Lingkaran: Bangun2D {
  private double jarijari;

  public Lingkaran(double r) {
    jarijari = r;  
  }

  // implementasi Bangun2D.HitungLuas()
  public override double HitungLuas() {
    return Math.PI * jarijari * jarijari;
  }
}

class DemoPolimorfisme {
  static void Main() {
    Bangun2D r;

    // membuat objek dari kelas Segiempat
    r = new Segiempat(10,5);
    r.CetakLuas("persegi panjang");

    // membuat objek dari kelas Segiempat
    r = new Segiempat(8);
    r.CetakLuas("bujursangkar");

    // membuat objek dari kelas Segitiga
    r = new Segitiga(4,3);
    r.CetakLuas("segitiga");

    // membuat objek dari kelas Lingkaran
    r = new Lingkaran(3);
    r.CetakLuas("lingkaran");
  }
}


HASIL PROGRAM 1.1
Luas persegi panjang    = 50
Luas bujursangkar       = 64
Luas segitiga   = 6
Luas lingkaran  = 28,2743338823081



Agar Anda dapat lebih memahami penggunaan polimorfisme program di bawah ini juga akan menunjukan penggunaan konsep tersebut sebagai berikut:

PROGRAM 1.2
using System;
using System.Collections.Generic;

public class Shape
{
    // Beberapa contoh anggota member
    public int X { get; private set; }
    public int Y { get; private set; }
    public int Height { get; set; }
    public int Width { get; set; }
   
    // Metode virtual
    public virtual void Draw()
    {
        Console.WriteLine("Performing base class drawing tasks");
    }
}

// Kelas turunan
class Circle : Shape
{
    public override void Draw()
    {
        // Kode untu draw circle...
        Console.WriteLine("Drawing a circle");
        base.Draw();
    }
}

// Kelas turunan
class Rectangle : Shape
{
    public override void Draw()
    {
        // Kode untuk draw rectangle...
        Console.WriteLine("Drawing a rectangle");
        base.Draw();
    }
}

// Kelas turunan
class Triangle : Shape
{
    public override void Draw()
    {
        // Kode untuk draw triangle...
        Console.WriteLine("Drawing a triangle");
        base.Draw();
    }
}

class Program
{
    static void Main(string[] args)
    {
        // Polymorphism bekerja pada #1: Rectangle, Triangle dan Circle
        
        
        var shapes = new List<Shape>
        {
            new Rectangle(),
            new Triangle(),
            new Circle()
        };

        // Polymorphism bekerja pada #2: metode virtual Draw yang
        // invoked pada tiap-tiap kelas turunannya, bukan pada kelas induknya.
        foreach (var shape in shapes)
        {
            shape.Draw();
        }

        .
        Console.WriteLine("Press any key to exit.");
        Console.ReadKey();
    }

}


HASIL PROGRAM 1.2
Drawing a rectangle
Performing base class drawing tasks
Drawing a triangle
Performing base class drawing tasks
Drawing a circle
Performing base class drawing tasks



C# (dibaca: C Sharp) merupakan bahasa pemrograman generasi baru yang mewah, kaya akan fitur, dan dapat digunakan untuk membuat beraneka raga program/aplikasi di berbagai bidang. C# mendukung beberapa paradigma pemrograman: imperatif, deklaratif, fungsional, serta pemrograman berorientasi objek. C# termasuk dalam keluarga C, dan fitur-fiturnya banyak diadopsi dari Java dan C++. C# menggunakan pustaka (library) yang terdapat dalam .NET Framework, kelengkapan di dalam pustaka .NET Framework menjadikan proses pengembangan program/aplikasi menggunakan C# relatif lebih mudah dan cepat jika dibandingkan dengan C++ dan Java.


No comments:

Kami menerima masukan dari anda jika memang ada pembahasan yang keliru dan kami sangat senang jika anda dapat berkontribusi untuk menyempurnakan postingan kami. Anda dapat mengirimkan email ke : hari18.muhammad@gmail.com

Jika postingan ini bermanfaat jangan lupa share postingan ini. Kami sangat merekomendasikan untuk anda yang membutuhkan informasi tentang computer stuff silakan subscribe blog kami dapatkan informasi terupdate dari kami secara gratiss. Terimakasih!

Powered by Blogger.