Tanggal :28 Oktober 2020
Typescript-OOP-Interface.png

TypeScript OOP – Interface

Artikel ini bagian ke 5 dari 5 seri dalam artikel berseri "TypeScript OOP"

Assalamualaikum Warahmatullahi Wabarakatuh.

Halo teman – temanku yang aku cintai dan aku banggakan? Gimana artikel sebelumnya, apakah kesulitan? Tentu tidak dong haha. Pada artikel kali ini kita akan membahas tentang inteface. Bagi kawan – kawan yang belum membaca artikel sebelumnya dapat membuka artikel ini, TypeScript OOP – Polymorphism.

Pada pembahasan kali ini kita akan berkenalan sedikit tentang interface dan menerapkannya ke dalam program yang telah kita buat. yaudah yuk langung aja kita masuk ke pembahasan.

Mengenal OOP

Pada bagian ini kita akan mengenal istilah yang ada pada TypeScript OOP. istilah yang akan kita perlajari kali ini ialah interface.

Interface atau antarmuka merupakan sebuah prototype untuk sebuah concrete class. Hampir mirip seperti Abstract Class, namun Interface tidak memiliki method yang dapat diimplementasikan.

Bingung? Pasti Bingung. Gak mungkin kalo tidak bingung. Karena penulisnya pun juga bingung hehe.

Pembuatan Program

Untuk program yang dibangun kita akan menambahi sedikit dari program yang telah kita buat sebelumnya. Untuk mengecek pengerjaan program sebelumnya, kalian dapat mengaksesnya melalui Github.

Jika pada program sebelumnya kita telah menyelesaikan studi kasus yang ada, sekarang kita akan menambahkan kasus baru. Kita akan membuat sebuah brand baru untuk disertakan dalam kompetisi. Brand ini ialah Lamborghini. Tetapi Lamborghini ini hanyalah sekedar interface yang nantinya akan diimplementasikan kepada class Aventador.

Yaudah yuk langsung saja kita membuat interface nya terlebih dahulu.

interface Lamborghini extends Car {
    model: string;
}

Hanya begitu? Penulisan kode pada interface memang lebih simpel. Selanjutnya kita akan membuat class Aventador dan mengimplemenatasikan interface tersebut.

class Aventador implements Lamborghini {
    brand: string = 'Lamborghini';
    model: string;
    speed: number;
    price: number;

    constructor(model: string, speed: number, price: number) {
        this.model = model;
        this.speed = speed;
        this.price = price;
    }

    setBrand(brand: string): void {
        this.brand = brand;
    };

    getBrand(brand: string): string {
        return this.brand;
    };

    setSpeed(speed: number): void {
        this.speed = speed;
    };

    getSpeed(): number {
        return this.speed;
    }

    setPrice(price: number): void {
        this.price = price;
    };

    getPrice(): string {
        return `$${ this.price }`;
    }

    move(): void {
        console.log(`${ this.getName() } berjalan dengan kecepatan ${ this.getSpeed() } mph`);
    }

    getName(): string {
        return `${ this.brand } ${ this.model }`;
    }
}

Mungkin kalian bertanya, mengapa setiap kode yang ada pada class Car ditulis kembali? Karena pada dasarnya attribute dan juga method pada interface tersebut diwariskan namun tidak diimplementasikan. Kalian bisa menganggap cara kerjanya hampir sama dengan abstract method. Apabila kalian tidak menuliskan kembali attribute atau method-nya maka akan muncul error.

Error yang mungkin muncul selain tidak menuliskan kembali method dari interface tersebut ialah penggunaan modifier. Seperti yang kita ketahui bahwa attribute pada class Car yang kita buat menggunakan modifier private dan protected. Kita dianjurkan menghapuskan modifier ini karena class Aventador akan kesulitan membaca attribute yang harus dituliskan kembali.

brand: string;
speed: number;
price: number;

Sekarang kita sudah dapat menggunakan class Aventador dengan mengimplementasikan interface Lamborghini. Sekarang kita akan menginstansi class Aventador dan memasukannya ke dalam kompetisi.

const aventador = new Aventador('Aventador SVJ Roadster', 218, 650000);
let cars: Car[] = [venom, agera, chiron, speedtail, aventador]

const competition = new Competition(cars, 1200);

Dengan ini kita telah menerapkan interface ke dalam program kita. Tapi interface juga memiliki fungsi – fungsi lain. Salah satu fungsi lain interface ialah dengan menggunakan interface kita dapat menerapkan yang namanya multiple inheritance. Berikut contohnya

class Aventador implements Lamborghini, InterfaceLain {
    ...
}

Kita dapat menerapkan lebih dari satu interface ke dalam class kita, yang berarti beberapa class dapat diwariskan kepada satu class. Inilah maksud dari multiple inheritance.

Oh iya ada beberapa bentuk kode yang berubah pada artikel kali ini yang tidak dibahas. Jika kalian ingin mengeceknya, kalian dapat mengakses program melalui Github. Jika kalian tertarik untuk lebih mengenal tentang interface, kalian dapat membuka artikel ini, TypeScript: Handbook – Interfaces.

Mungkin cukup sekian pembahasan tentang interface-nya. Semoga bermanfaat bagi para pembacanya. Jika terdapat kesalahan maupun kekurangan dalam penulisan arikel ini, penulis memohon maaf yang sebesar – besarnya. Terimakasiiihhh!!!

Wassalamualaikum Warahmatullahi Wabarakatuh.

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *