Kalau lagi nongkrong di bengkel sambil ngoprek mobil, kita sering ngomongin keadaan (status) kendaraan, misalnya: mesin menyala, mobil berjalan, rem diinjak, atau parkir. Di dunia pemrograman, konsep “state” atau status ini juga penting banget, terutama saat kita bikin aplikasi yang membutuhkan gambaran jelas tentang apa yang sedang terjadi pada sebuah objek.
Pada artikel kali ini, kita bakal kupas tuntas gimana konsep **state** dan **state machine** bekerja di JavaScript, dengan contoh yang relate banget sama otomotif, terutama status kendaraan. Buat kamu yang sudah mulai menapak ke level intermediate, siap-siap ya, biar makin paham bagaimana algoritma ini diaplikasikan.
—
Status Kendaraan: Mengenal Konsep State di Otomotif
Bayangin kamu lagi nyetir mobil, beberapa keadaan mobil itu jelas berubah-ubah: mesin bisa ON atau OFF, transmisi bisa di posisi parkir, netral, atau jalan, lampu juga kedap-kedip atau mati. Masing-masing kondisi ini disebut **state**.
State ini ibarat speedometer yang nunjukkin seberapa cepat mobil melaju; tapi bukan cuma angka, tapi juga kondisi di balik layar. Contohnya:
– Mesin **OFF** artinya mobil gak siap jalan.
– Mesin **ON** tapi rem masih diinjak, mobil belum tentu maju.
– Mobil dalam mode **jalan** berarti gear sudah pas dan gas diinjak.
Kalau kita punya data real-time kendaraan, aplikasi bisa membaca dan memproses state ini untuk pengambilan keputusan, misalnya aktifkan alarm kalau mobil dicuri, atau matikan mesin jika idle terlalu lama demi efisiensi bbm.
Nah, kalau state ini sudah banyak dan saling berhubungan, kita butuh sistem yang terstruktur untuk mengelolanya: di sinilah konsep **state machine** hadir.
—
Terminologi: Apa Itu State Machine?
State machine (mesin status) adalah alat atau pola yang membantu kita mengatur bagaimana sebuah sistem berpindah dari satu state ke state lain dengan aturan yang jelas. Bayangkan seperti sebuah lampu lalu lintas yang punya urutan: merah → hijau → kuning → merah lagi. Tidak asal berubah, tapi harus sesuai aturan.
Secara sederhana, state machine terdiri dari:
– **States**: semua kemungkinan kondisi yang ada (misal: OFF, ON, IDLE, RUNNING)
– **Transitions**: aturan dan kondisi yang memungkinkan pindah dari satu state ke state lain
– **Events**: sesuatu yang memicu transisi (misal: menekan tombol starter, injak gas)
Di dunia otomotif masa depan, state machine ini sangat penting untuk kendaraan autonomous (self-driving) yang harus tahu kapan berhenti, jalan, menghindar, dan lain-lain secara otomatis.
—
Contoh Kode JavaScript: Finite State Machine untuk Status Kendaraan
Supaya makin jelas, mari kita bikin contoh finite state machine (mesin status terbatas) sederhana pakai JavaScript untuk kasus status kendaraan:
// State machine sederhana untuk status kendaraan
class VehicleStateMachine {
constructor() {
this.state = "OFF"; // state awal
}
// Method untuk handling transisi state dengan event
transition(event) {
switch (this.state) {
case "OFF":
if (event === "startEngine") {
this.state = "IDLE";
}
break;
case "IDLE":
if (event === "pressGas") {
this.state = "RUNNING";
} else if (event === "turnOff") {
this.state = "OFF";
}
break;
case "RUNNING":
if (event === "releaseGas") {
this.state = "IDLE";
} else if (event === "turnOff") {
this.state = "OFF";
}
break;
default:
console.log("State tidak dikenali");
}
}
getState() {
return this.state;
}
}
// Contoh penggunaan
const myCar = new VehicleStateMachine();
console.log(myCar.getState()); // OFF
myCar.transition("startEngine");
console.log(myCar.getState()); // IDLE
myCar.transition("pressGas");
console.log(myCar.getState()); // RUNNING
myCar.transition("releaseGas");
console.log(myCar.getState()); // IDLE
myCar.transition("turnOff");
console.log(myCar.getState()); // OFF
Kode di atas bikin mesin status yang simpel, mirip “ignition” mobil yang mengatur kapan mesin bisa dijalankan, berjalan, dan dimatikan.
Untuk pengembangan, kita bisa bikin state machine dengan kondisi yang lebih kompleks dan event yang lebih beragam.
—
Variasi Implementasi: State Machine dengan Transitions Lebih Dinamis
Kalau penasaran, kita bisa bikin state machine yang fleksibel dan modular supaya gampang dikembangin dan dipakai reuse. Contohnya, pakai objek untuk mendefinisikan transisi:
const vehicleStates = {
OFF: {
startEngine: "IDLE",
},
IDLE: {
pressGas: "RUNNING",
turnOff: "OFF",
},
RUNNING: {
releaseGas: "IDLE",
turnOff: "OFF",
},
};
class VehicleFSM {
constructor() {
this.state = "OFF";
}
transition(event) {
const nextState = vehicleStates[this.state][event];
if (nextState) {
this.state = nextState;
} else {
console.log(`Transisi tidak valid: ${this.state} → ${event}`);
}
}
getState() {
return this.state;
}
}
// Testing
const car = new VehicleFSM();
console.log(car.getState()); // OFF
car.transition("startEngine");
console.log(car.getState()); // IDLE
car.transition("pressGas");
console.log(car.getState()); // RUNNING
car.transition("turnOff");
console.log(car.getState()); // OFF
car.transition("pressGas"); // invalid transition
Dengan cara ini, kita bisa menambahkan state dan event baru tinggal update objek `vehicleStates`, tanpa harus buka tutup `switch` statement seusai kebutuhan.
—
Masa Depan: Dari Garasi ke Algoritma
Gimana masa depan teknologi otomotif di Indonesia? Dengan semakin meningkatnya kendaraan electric dan autonomous, state machine jadi fondasi utama algoritma kendaraan pintar.
Di garasi nanti, bukan cuma nunggu mekanik pegang alat obeng, tapi juga insinyur ngulik kode dan state machine untuk optimasi performa, keselamatan, dan efisiensi bahan bakar. Contohnya, kendaraan otonom yang harus pintar menentukan apakah berhenti di zebra cross, mematuhi rambu, atau menghindar dari tabrakan, semua diatur oleh algoritma state machine yang kompleks.
Jadi, buat kamu yang mulai tertarik dengan pemrograman dan otomotif, menguasai state dan state machine di JavaScript ini adalah satu langkah penting agar bisa terjun ke pengembangan teknologi kendaraan masa kini dan masa depan.
—
Masa depan memang terjadi di garasi, namun menggunakan algoritma sebagai kunci untuk membuka pintu inovasi. Sudah siap utak-atik kode dan bawa kendaraanmu ke level berikutnya? Yuk, lanjut belajar dan eksplorasi JavaScript Algorithm Series di Otokreasi.com!



