Mengenal OOP (Object Oriented Programming) Javascript


Javascript adalah salah satu bahasa Object Oriented Programming. Sebuah bahasa pemrograman bisa digunakan secara object-oriented jika developer dapat menguasai kemampuan berikut ini

  1. Encapsulation : Kemampuan untuk menyimpan terkait informasi, apakah data atau method secara bersama-sama dalam sebuah objek. Pemahaman lainnya adalah sebuah mekanisme untuk membungkus sebuah data maupun function sehingga menyembunyikan alur secara lengkapnya dan hanya menampilkan property tertentu yang dapat digunakan. Berikut contoh sederhana encapsulation.
    var manusia = function () { //mulai membuat suatu object manusia
     
      var namaLengkap = "Joni Esmon"; 
      var reg = new RegExp(/\d+/);
      //definisi lokal variabel dan pemberian nilai
    
      return {
        "setNamaLengkap" : function (newValue) {
          if( reg.test(newValue) ) {
            alert("Nilainya salah");
          }
          else {
            namaLengkap = newValue;
          }
        }, //function ini digunakan untuk memberikan nilai pada lokal variabel namalengkap
    
        "getNamaLengkap" : function () {
         return namaLengkap;
        } //function ini digunakan untuk menampilkan atau memanggil nilai pada lokal variabel namalengkap
      }; 
    }(); 
     
    alert(manusia.getNamaLengkap());   // Joni Esmon
    manusia.setNamaLengkap( "Jim Backlin" );
    alert(manusia.getNamaLengkap());  // Jim Backlin
    manusia.setNamaLengkap( 42 ); // Nilainya salah; nama tidak berubah.
    manusia.namaLengkap = 42;     // tidak ada efek apapun karena tidak dapat merubah lokal variabel.
    alert(manusia.geNamaLengkap());  // Jim Backlin muncul kembali.
    
  2. Aggregation : Kemampuan menyimpan suatu objek di dalam objek lain

    var aggregate = function (objects) {
        var map = {}; // map untuk menyimpan data
        var a = [];   // array pemyimpan sementara 
        objects.forEach(function (d) {
            var key = d.a > d.c ? String(d.c) + d.a : String(d.a) + d.c;
            //digunakan untuk pemilihan key, jika a > c maka isi key = ca selainnya ac
            map[key] = (map[key] || 0) + d.count;
            //menyimpan kedalam variabel map berdasarkan key dan value
        })
        // misal, key === "bd"
            for (var key in map) {
            var k = key.toString().split("");
            // membelah key menjadi array ["b", "d"]
            a.push({ a: k[0], c: k[1], count: map[key] });
            // menyimpan penyimpan array sementara sebagai appropriate object
        }
        return a;
    }
    
    var objects = [{a:'b',c:'d',count:1},{a:'b',c:'d',count:2},{a:'y',c:'d',count:4}];
    console.log(aggregate(objects));
    
  3. Inheritance : Metode pewarisan dimana suatu class akan memiliki sifat yang serupa dengan class yang diturunkan
    //======================= Definisi ClassA ========================
    var ClassA = function() {
        this.name = "class A";
    }
    //membuat function utama dengan nama ClassA
    
    ClassA.prototype.print = function() {
        console.log(this.name);
    }
    
    var a = new ClassA();
    //inisiasi function ClassA
    
    a.print();
    //menjalankan function print pada ClassA
    //======================= Definisi ClassB ========================
    var inheritsFrom = function (child, parent) {
        child.prototype = Object.create(parent.prototype);
    };
    //function ini digunakan untuk menurunkan prototype atau sifat metode
    //yang terdapat pada kelas lebih tinggi
    
    var ClassB = function() {
        this.name = "class B";
        this.surname = "I'm the child";
    }
    //membuat function ClassB beserta nilai dari property
    
    inheritsFrom(ClassB, ClassA);
    //harus memanggil function diatas untuk mendapatkan sifat dari ClassA
    
    var b = new ClassB();
    //inisiasi variabel berdasarkan ClassB
    
    b.print();
    //menjalankan function print pada ClassB, function print tetap dapat dipanggil meski ClassB tidak membuat function print karena ClassB telah mendapatkan pewarisan sifat / property dari ClassA
    
    ClassB.prototype.print = function() {
        ClassA.prototype.print.call(this); 
    //memanggil function print yang terdapat ClassA
        console.log(this.surname);
    }
    //melakukan override atau menambahkan sifat asli / property dari Class yang sudah diwarisi
    
    b.print(); 
    //menjalankan function print setelah dilakuakn override
    
  4. Polymorphism : adalah kemampuan untuk membuat sebuah variabel, fungsi, atau sebuah benda yang memiliki lebih dari satu bentuk.
    Penggunaan utama dari Polymorphism dalam Object-Oriented Programming adalah kemampuan objek yang milik berbagai jenis respon untuk menanggapi metode, bidang, atau memanggil properti dengan nama yang sama, masing-masing sesuai dengan perilaku tipe tertentu yang sesuai.

    function Person(age, weight) {
        this.age=age;
        this.weight=weight;
        this.getInfo=function() {
          return "I am " + this.age + " years old " +
            "and weighs " + this.weight +" kilo.";
        }
      }
      //mmebuat function person 
      function Employee(age, weight, salary){
        this.salary=salary;
        this.age=age;
        this.weight=weight;
        this.getInfo=function() {
          return "I am " + this.age + " years old " +
            "and weighs " + this.weight +" kilo " +
            "and earns " + this.salary + " dollar.";
        }
      }
      //membuat function employee
      
      Employee.prototype= new Person();
      //function employee memiliki sifat yang menyerupai function Person
      Employee.prototype.constructor=Employee;
    
      function showInfo(obj) {
        document.write(obj.getInfo()+"
    ");
      }
    //argumen 'obj' bisa berisi  apapun
    //function getInfo akan dijalankan bergantung dengan isi objek
    
      var person = new Person(50,90);
      //memberikan nilai pada function person (age, weight)
      var employee = new Employee(43,80,50000);
      //memberikan nilai pada function employee(age, weight, salary)
      
      showInfo(person);
      showInfo(employee);
      //menampilan objek
    

Setelah memahami beberapa hal metode yang digunakan dalam OOP, masih terdapat beberapa hal yang diketahui salah satunya adalah langkah membuat Object pada javascript :

  1. Object() Constructor,  adalah fungsi yang menciptakan dan menginisialisasi sebuah objek. JavaScript menyediakan fungsi konstruktor khusus yang disebut Object () untuk membangun objek. return value dari Object () Constructor dimasukkan ke variabel.
    var book = new Object();   // Membuat object berdasarkan Object() Contrustor
    book.subject = "Perl"; // Membuat properti dan memasukkan nilai
    book.author  = "Mohtashim";
    
  2. User-defined objects, Membuat object dengan mendefinisikan kedalam sebuah function
     function book(title, author){
                this.title = title; 
                this.author  = author;
     } //function untuk menjadikan objek
    var myBook = new book("Perl", "Mohtashim"); 
    //menggunakan dan mendefinisikan nilai 
    

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s