Lewati ke konten utama

Kelas dan Objek Scala

Dalam tutorial ini, Anda akan mempelajari konsep dasar pemrograman berorientasi objek di Scala: Kelas dan Objek.
· 8 mnt Baca

Jelajahi bersama AI

DataCamp baru saja meluncurkan kursus Scala pertama mereka: Introduction to Scala. Cek sekarang!

Selain itu, lihat juga tutorial berikut:

Pendahuluan

diagram konsep OOP
Sumber

Secara umum, Pemrograman Berorientasi Objek (OOP) terdiri dari kelas dan objek serta bertujuan untuk mengimplementasikan entitas dunia nyata seperti polimorfisme dan pewarisan.

OOP membuat pengembangan jauh lebih cepat dan murah dengan pemeliharaan perangkat lunak yang lebih baik. Alasan utamanya adalah banyaknya fitur yang didukung; Anda memiliki kelas & objek yang dapat dengan mudah digunakan kembali di masa mendatang sesuai kebutuhan, berbeda dengan program yang tidak memiliki kelas & objek. Ini pada akhirnya menghasilkan perangkat lunak berkualitas lebih tinggi, yang juga dapat diperluas dengan metode dan atribut baru.

Misalnya, Anda memiliki showroom mobil; setiap beberapa bulan, ada mobil baru yang diluncurkan, dan untuk memberi tahu audiens tentang nama serta fitur-fiturnya, Anda harus mendefinisikan metode dan atribut baru dari awal. Namun, jika Anda memiliki program berorientasi objek yang memiliki kelas car, yang perlu Anda tambahkan hanyalah sebuah objek untuk mobil baru tersebut, yang akan memanggil metode & atribut kelas dengan informasi kendaraan.

Kelas dapat dianggap sebagai representasi atau rancangan untuk objek. Kelas biasanya memiliki metode (perilaku) dan atribut sendiri.

Atribut adalah entitas individual yang membedakan setiap objek satu sama lain dan menentukan berbagai kualitas objek. Metode, di sisi lain, mirip dengan cara fungsi biasanya beroperasi dalam pemrograman. Metode menentukan bagaimana instance dari kelas bekerja. Largely karena adanya metode (perilaku), objek dapat dikenai tindakan tertentu.

Sumber

Gambar di atas memberi Anda lebih banyak intuisi tentang alur pemrograman berorientasi objek atau, lebih spesifiknya, seperti apa sebuah kelas. Pada gambar tersebut, terdapat class car yang memiliki attributes: fuel, max speed, dan dapat memiliki lebih banyak atribut seperti model, make, dan sebagainya. Ia memiliki berbagai set methods seperti refuel(), getFuel(), setSpeed(), dan beberapa metode tambahan bisa berupa change gear, start the engine, stop the engine, dll.

Jadi, saat Anda membicarakan sebuah mobil tertentu, Anda akan memiliki sebuah objek, yaitu instansiasi dari sebuah kelas.

Sekarang, mari kita bahas pemrograman berorientasi objek di Scala.

Kelas dan Objek di Scala

Mirip seperti C++ dan Java, pemrograman berorientasi objek di Scala mengikuti konvensi yang kurang lebih sama. Ia memiliki konsep mendefinisikan classes dan objects serta constructors di dalam kelas, dan itulah inti OOP di Scala.

Deklarasi Kelas

class Class_name{
// methods and attributes
}

Kelas di Scala didefinisikan dengan kata kunci class diikuti dengan nama kelas, dan umumnya nama kelas diawali huruf kapital. Ada beberapa kata kunci yang opsional namun dapat digunakan dalam deklarasi kelas Scala seperti: class-name, harus dimulai dengan huruf kapital: superclass, nama kelas induk yang didahului kata kunci extend: traits, daftar yang dipisahkan koma yang diimplementasikan oleh kelas dan didahului kata kunci extend.

Sebuah kelas di Scala hanya dapat mewarisi satu kelas induk, yang berarti Scala tidak mendukung pewarisan berganda. Namun, ini dapat dicapai dengan menggunakan Traits.

Terakhir, tubuh sebuah kelas di Scala diapit oleh kurung kurawal {}.

// Name of the class is Car
class Car
{

    // Class variables
    var make: String = "BMW"
    var model: String = "X7"
    var fuel: Int = 40

    // Class method
    def Display()
    {
        println("Make of the Car : " + make);
        println("Model of the Car : " + model);
        println("Fuel capacity of the Car : " + fuel);
    }
}
object Main  
{

    // Main method
    def main(args: Array[String])  
    {

        // Class object
        var obj = new Car();
        obj.Display();
    }
}

Anda dapat menyimpan kode di atas dengan nama class.scala dan menjalankannya di terminal dengan scala class.scala, dan Anda akan melihat keluaran seperti di bawah ini.

output

Nah, kode di atas belum sepenuhnya memanfaatkan keistimewaan yang mampu dilakukan program berorientasi objek. Karena keluaran kode di atas akan sama berapa kali pun Anda menjalankannya. Anda mendefinisikan variabel statis di dalam kelas, dan nilai variabel-variabel tersebut akan tetap konstan, bahkan jika Anda membuat objek baru tak terbatas. Kesimpulannya, Anda tidak bisa berharap kode tersebut memberi detail untuk mobil Mercedes Benz atau Ferrari.

Konstruktor di Scala

Konstruktor terutama digunakan untuk menginisialisasi keadaan objek. Inisialisasi objek ini terjadi pada saat pembuatan objek, dan dipanggil hanya sekali.

Ada dua jenis konstruktor di Scala: Primary dan Auxiliary. Untuk tutorial ini, Anda akan mempelajari konstruktor utama (Sumber: O'Reilly).

class Class_name(Parameter_list){
// methods, attributes
}

Konstruktor utama berisi tubuh yang sama dengan kelas, dan dibuat secara implisit bersama definisi kelas. Ia dimulai pada definisi kelas dan mencakup seluruh tubuh kelas. Juga, ketika hanya ada satu konstruktor dalam program Scala, itu disebut konstruktor utama. Konstruktor utama dapat didefinisikan dengan nol, satu, atau lebih parameter.

Jadi, mari ambil contoh sebelumnya, tetapi kali ini tambahkan fitur konstruktor utama ke dalamnya dan amati efeknya.

Di sini Anda juga akan mempelajari fitur baru dari sebuah kelas, yakni sebuah kelas dapat memiliki banyak objek atau instance tetapi keduanya saling independen.

// Name of the class is Car
class Car(make: String, model: String, fuel: Int)
{

    // Class method
    def Display()
    {
        println("Make of the Car : " + make);
        println("Model of the Car : " + model);
        println("Fuel capacity of the Car : " + fuel);
    }
}

object Main

{

    // Main method
    def main(args: Array[String])  
    {

        // Multiple Class object
        var obj1 = new Car("BMW", "X7", 40);
        var obj2 = new Car("Mercedes Benz", "S350D", 50);
        obj1.Display();
        obj2.Display();
    }
}

Mari kita lihat cepat keluarannya:

output

Bagus, bukan? Dengan bantuan konstruktor, Anda dapat menghasilkan hasil yang lebih efektif.

Mendeklarasikan Objek di Scala

Mendeklarasikan objek di Scala juga dapat disebut menginstansiasi kelas atau memanggil kelas. Mirip dengan kelas, objek juga merupakan unit fundamental dari pemrograman berorientasi objek.

Sebuah objek dapat terdiri dari tiga fitur (Sumber: GeeksforGeeks:

  • State: Atribut dari sebuah objek merepresentasikannya. Ini juga mencerminkan properti dari objek.
  • Behavior: Metode dari sebuah objek merepresentasikannya. Ini juga mencerminkan respons objek terhadap objek lain.
  • Identity: Memberi nama unik pada objek dan memungkinkan satu objek berinteraksi dengan objek lain.

Anggap Anjing sebagai sebuah objek dan lihat diagram di bawah untuk identitas, keadaan, dan perilakunya.

diagram
(Sumber)

Semua instance atau objek berbagi atribut dan metode kelas. Satu kelas dapat memiliki banyak objek, seperti yang Anda pelajari di sini. Namun, keadaan atau nilai setiap objek adalah unik.

Terakhir, Anda akan menulis kode yang akan memiliki konstruktor utama, variabel kelas, atribut, dan metode yang digabungkan dalam satu kode.

Di bawah ini adalah representasi visual dari komponen yang disatukan dalam kelas Motorcycle.

komponen kelas

Kode di bawah ini cukup jelas; secara garis besar, ia memeriksa apakah mesin sepeda motor dalam keadaan on atau off. Awalnya, mesin berada pada keadaan off, dan ia akan memberi tahu Anda keadaannya lalu menyalakannya.

class Motorcycle(make:String,color:String) {


       var engineState: Boolean = false;

       def startEngine() {
          if (engineState == true){
            println("The engine is already on.");
          }
          else {
            engineState = true
            println("The engine is now on.");
         }
       }

       def showAtts() {
         println("This motorcycle is a "+ color + " " + make);
         if (engineState == true){
           println("The engine is on.");
         }
         else{
            println("The engine is off.");
         }
      }

}
object Main
{
    def main (args: Array[String])
    {
        var m = new Motorcycle("BMW K 1600 GTL","White");
        println("Calling showAtts...");
        m.showAtts();
        println("------");
        println("Starting engine...");
        m.startEngine();
        println("------");
        println("Calling showAtts...");
        m.showAtts();
        println("------");
        println("Starting engine...");
        m.startEngine();
    }
}
diagram

Selamat!

Selamat telah menyelesaikan tutorial ini.

Sekarang Anda tahu cara mendeklarasikan kelas dan metode, menginstansiasi objek, menetapkan atributnya, dan memanggil metode instance di Scala. Konsep-konsep ini akan berguna tidak hanya di Scala tetapi juga di bahasa pemrograman lain.

Konsep pemrograman berorientasi objek menarik dan sekaligus sangat kuat. Ia menambahkan dimensi baru pada kode Anda, membuatnya dapat digunakan kembali. Seiring program Anda membesar, kode Anda akan meningkat kompleksitasnya. Ada banyak hal penting dalam konsep OOP seperti pewarisan, polimorfisme, metode instance. Fitur kuat lainnya adalah Singleton. Prinsip-prinsip desain membantu menjaga kode Anda lebih terstruktur dan mudah dibaca. Untuk mempelajari pola desain lebih lanjut, pertimbangkan untuk membaca buku ini.

Jangan ragu untuk menanyakan pertanyaan apa pun terkait tutorial ini di kolom komentar di bawah.

Terakhir, jangan lupa untuk mengikuti kursus Scala baru di DataCamp, Introduction to Scala.

Topik

Terkait

blogs

Tutorial Korelasi di R

blogs

40 Pertanyaan Wawancara DBMS Teratas di 2026

blogs

Spaghetti Plot dan Jalur Badai