Install Web App

Belajar Typescript #45 | Konsep OOP Polymorphism

profil-penulis

Muhammad Rafitulloh Nur Ramadhani

28 Februari 2023

Polimorfisme adalah salah satu konsep utama dalam pemrograman berorientasi objek (OOP) yang memungkinkan objek dari class yang berbeda untuk merespons metode yang sama dengan cara yang sesuai dengan class mereka. Dengan kata lain, polimorfisme memungkinkan objek untuk berperilaku dengan cara yang bervariasi sesuai dengan jenis objeknya. Artikel ini akan menjelaskan konsep polimorfisme dalam OOP, bagaimana cara menerapkannya dalam TypeScript, dan mengapa itu penting dalam pengembangan aplikasi.

Apa Itu Polimorfisme?

Polimorfisme berasal dari bahasa Yunani yang berarti "banyak bentuk." Dalam konteks pemrograman berorientasi objek, polimorfisme mengacu pada kemampuan objek dari class yang berbeda untuk merespons metode dengan nama yang sama. Ini memungkinkan pemrosesan objek secara umum tanpa perlu mengetahui class sebenarnya dari objek tersebut.

Polimorfisme dapat diterapkan melalui dua cara utama:

  1. Polimorfisme Compile-Time (Polimorfisme Statis): Polimorfisme yang terjadi selama kompilasi. Ini terkait dengan overloading dan interface dalam TypeScript.

  2. Polimorfisme Runtime (Polimorfisme Dinamis): Polimorfisme yang terjadi saat runtime. Ini terkait dengan inheritance dan override dalam TypeScript.

Menerapkan Polimorfisme dalam TypeScript

1. Polimorfisme Compile-Time (Polimorfisme Statis)
Menggunakan Overloading

Polimorfisme compile-time dapat dicapai melalui overloading metode. Ini memungkinkan Anda untuk mendefinisikan beberapa versi dari suatu metode dengan berbagai jenis parameter.

class Calculator {
  add(a: number, b: number): number;
  add(a: string, b: string): string;
  add(a: any, b: any): any {
    return a + b;
  }
}

const calculator = new Calculator();
console.log(calculator.add(5, 10));         // Output: 15
console.log(calculator.add("Hello, ", "World!")); // Output: Hello, World!

Dalam contoh di atas, metode add di-overload untuk menerima parameter dengan tipe yang berbeda. Pemanggilan calculator.add akan menghasilkan hasil yang sesuai dengan jenis parameter yang diberikan.

Menggunakan Interface

Polimorfisme compile-time juga dapat dicapai melalui interface. Interface memungkinkan Anda untuk mendefinisikan kontrak metode yang harus diimplementasikan oleh class-class yang mengimplementasikan interface tersebut.

interface Shape {
  calculateArea(): number;
}

class Circle implements Shape {
  radius: number;

  constructor(radius: number) {
    this.radius = radius;
  }

  calculateArea(): number {
    return Math.PI * this.radius * this.radius;
  }
}

class Square implements Shape {
  side: number;

  constructor(side: number) {
    this.side = side;
  }

  calculateArea(): number {
    return this.side * this.side;
  }
}

Dalam contoh di atas, Shape adalah interface yang mengharuskan class-class yang mengimplementasikannya untuk memiliki metode calculateArea(). Polimorfisme compile-time memungkinkan kita untuk memproses objek-objek dari class yang berbeda dengan cara yang sama.

2. Polimorfisme Runtime (Polimorfisme Dinamis)
Menggunakan Inheritance

Polimorfisme runtime terkait dengan pewarisan dan override dalam OOP. Ini memungkinkan objek dari class turunan untuk digunakan dengan cara yang serupa seperti objek dari class dasar.

class Animal {
  speak(): void {
    console.log("Animal speaks");
  }
}

class Dog extends Animal {
  speak(): void {
    console.log("Dog barks");
  }
}

const myAnimal: Animal = new Dog();
myAnimal.speak(); // Output: Dog barks

Dalam contoh di atas, myAnimal adalah objek dari class Dog, tetapi ia digunakan dalam variabel bertipe Animal. Meskipun begitu, metode yang dipanggil adalah versi yang dioverride dalam class Dog.

Keuntungan Polimorfisme

Polimorfisme memungkinkan fleksibilitas dalam pemrograman berorientasi objek:

  • Anda dapat bekerja dengan objek dari class yang berbeda tanpa harus tahu class sebenarnya dari objek tersebut.
  • Anda dapat menangani objek-objek yang mengimplementasikan interface tertentu dengan cara yang serupa.
  • Dalam pewarisan, Anda dapat menggunakan objek dari class turunan dalam situasi yang mengharapkan objek dari class dasar.

Polimorfisme memungkinkan Anda untuk memodelkan hubungan antara objek dengan lebih baik dan mengurangi kebutuhan untuk kode yang berulang. Itu adalah salah satu pilar utama dalam pemrograman berorientasi objek yang membantu dalam membangun aplikasi yang lebih fleksibel dan mudah dikelola.

Artikel Lainnya Dengan Kategori Terkait :


1. Belajar Typescript #01 | Memahami apa itu Typescript

2. Belajar Typescript #02 | Setup project Typescript

3. Belajar Typescript #03 | Konfigurasi compiler Typescript

4. Belajar Typescript #04 | Membuat code dan menjalankan Typescript

5. Belajar Typescript #05 | Basic types pada Typescript

6. Belajar Typescript #06 | Type data Boolean pada Typescript

7. Belajar Typescript #07 | Type data Number pada Typescript

8. Belajar Typescript #08 | Type data String pada Typescript

9. Belajar Typescript #09 | Type data Null dan Undefined pada Typescript

10. Belajar Typescript #10 | Type data Any pada Typescript

11. Belajar Typescript #11 | Type data Void pada Typescript

12. Belajar Typescript #12 | Object types pada Typescript

13. Belajar Typescript #13 | Object Literal pada Typescript

14. Belajar Typescript #14 | Type data Void pada Typescript

15. Belajar Typescript #15 Object types pada Typescript

16. Belajar Typescript #16 | Memahami dan menerapkan type aliases

17. Belajar Typescript #17 | Memahami dan menerapkan union types

18. Belajar Typescript #18 | Memahami dan menerapkan intersection types

19. Belajar Typescript #19 | Basic types lanjutan - Array

20. Belajar Typescript #20 | Basic types lanjutan - Tuples

21. Belajar Typescript #21 | Basic types lanjutan - Null

22. Belajar Typescript #22 | Basic types lanjutan - Undefined

23. Belajar Typescript #23 | Basic types lanjutan - Void

24. Belajar Typescript #24 | Basic types lanjutan - Never

25. Belajar Typescript #25 | Mengenal teknik lanjutan pada Typescript

26. Belajar Typescript #26 | Optional Parameter

27. Belajar Typescript #27 | Default Parameter

28. Belajar Typescript #28 | Return Type

29. Belajar Typescript #29 | Mendeklarasikan Fungsi - Tanpa Parameter

30. Belajar Typescript #30 | Mendeklarasikan Fungsi - Dengan Parameter

31. Belajar Typescript #31 | Mendeklarasikan Fungsi - Dengan Return Type

32. Belajar Typescript #32 | Mendeklarasikan Fungsi - Sebagai Variabel

33. Belajar Typescript #33 | Mendeklarasikan Fungsi - Sebagai Tipe Data

34. Belajar Typescript #34 | Function Call Signature

35. Belajar Typescript #35 | Menerapkan Types ke dalam class

36. Belajar Typescript #36 | Class declaration

37. Belajar Typescript #37 | Properties dan Methods

38. Belajar Typescript #38 | Object dan Properti dari sebuah class

39. Belajar Typescript #39 | Constructor

40. Belajar Typescript #40 | Konsep OOP - Inheritance

41. Belajar Typescript #41 | Konsep OOP - Abstraction

42. Belajar Typescript #42 | Konsep OOP - Encapsulation

43. Belajar Typescript #43 | Accessors

44. Belajar Typescript #44 | Member visibility / Access modifier

45. Belajar Typescript #45 | Konsep OOP Polymorphism

46. Interfaces TypeScript

Masuk Terlebih dahulu untuk berkomentar

Paling baru
Lihat Lainnya