Quick actions

cmd+k|ctrl+k

Navigation

Languages

Class & Constructor

Snippet info

Language

JavaScript

Visibility

public

Author

tulangrusuk.ku

Created

2020-08-02T11:31:19Z

Updated

2020-08-03T14:13:21Z

/* Dalam paradigma Object-Oriented Programming (OOP), 
class merupakan sebuah blueprint yang dapat dikembangkan 
untuk membuat sebuah objek. Blueprint ini merupakan sebuah template yang 
di dalamnya menjelaskan seperti apa perilaku dari objek itu (berupa properti 
ataupun method). */

// A Class Before ES6
/* Sebelum ES6, Hal yang paling mendekati dengan class yaitu membuat 
sebuah objek menggunakan constructor function dan keyword new, 
lalu untuk menambahkan method kita gunakan konsep prototype. */
function Car(manufacture, color) {
    this.manufacture = manufacture;
    this.color = color;
    this.enginesActive = false;
}

Car.prototype.startEngines = function () {
    console.log('Mobil dinyalakan...');
    this.enginesActive = true;
};

Car.prototype.info = function () {
    console.log("Manufacture: " + this.manufacture);
    console.log("Color: " + this.color);
    console.log("Engines: " + (this.enginesActive ? "Active" : "Inactive"));
}

var johnCar = new Car("Honda", "Red");
johnCar.startEngines();
johnCar.info();

/* Pada kode di atas Car merupakan constructor function yang akan membuat 
instance Car baru setiap kali kode new Car() dieksekusi. 
Melalui Car.prototype, method startEngines() dan carInfo()  diwarisi 
pada setiap instance Car yang dibuat, 
sehingga johnCar (sebagai instance Car) dapat mengakses kedua method tersebut.*/

// A Class After ES6
/* Pembuatan class pada ES6 menggunakan keyword class itu sendiri 
kemudian diikuti dengan nama class-nya.  */
class Plane {
    
    // Sama seperti function constructor
    constructor(manufacture, maskapai){
        this.manufacture = manufacture;
        this.maskapai = maskapai;
        this.enginesActive = false;
    }
    
    // Sama seperti Car.prototype.startEngine
    startEngines(){
        console.log(`Pesawat siap lepas landas`);
        this.enginesActive = true;
    }
    
    // Sama seperti car.prototype.info
    info() {
        console.log(`Manufacture: ${this.manufacture}`);
        console.log(`Maskapai: ${this.maskapai}`);
        console.log(`Engines: ${this.enginesActive ? "Active" : "Inactive"}`);
    }
    
}


function br(){
    console.log("");
}


const myPlane = new Plane("Boeing", "Garuda Indonesia");
br();
myPlane.startEngines();
myPlane.info();


/* “Ketika kita hendak membuat sebuah constructor function ataupun class. 
Secara code convention (aturan penulisan), gunakan PascalCase dalam 
penamaannya. Contohnya Car daripada car, SportCar daripada sportCar 
atau Sportcar” */

//=========================================================================

/* Constructor
Deklarasi class menggunakan ES6 memiliki sifat yang sama seperti pembuatan 
class menggunakan function constructor (seperti contoh sebelumnya). 
Namun alih-alih menggunakan function constructor dalam menginisialisasi 
propertinya, class ini memisahkan constructornya dan ditempatkan pada body 
class menggunakan method spesial yang dinamakan constructor*/

class Motorcycle {
    constructor(manufacture, color, types) {
        this.manufacture = manufacture;
        this.types = types;
        this.color = color;
        this.enginesActive = false;
    }
    
    //menambahkan method starEngines()
    // Sama seperti Car.prototype.startEngine
    startEngines(){
        console.log(`Motor Keluaran Terbaru!!`);
        this.enginesActive = true;
    }
    
    //menambahkan method info()
    // Sama seperti car.prototype.info
    info() {
        console.log(`Manufacture: ${this.manufacture}`);
        console.log(`Types: ${this.types}`);
        console.log(`Color: ${this.color}`)
        console.log(`Engines: ${this.enginesActive ? "Active" : "Inactive"}`);
    }
}

const myMotorcycle = new Motorcycle("Yamaha", "Sport Bikes", "Black");

br();
myMotorcycle.startEngines();
myMotorcycle.info();

INFO