Konsep Dasar OOP (Pemrograman Berorientasi Objek) Java

post sampul7

Halo Sahabat Codenesia, Kita akan belajar bareng mengenai konsep dasar OOP atau Pemrograman Berorientasi Objek. Pemrograman berorientasi objek adalah sebuah teknik pemrograman yang memusatkan desain pada object dan class berdasarkan pada skenario dunia nyata. Hal ini menegaskan keadaan(state), behaviour dan interaksi dari object. Selain itu juga menyediakan manfaat akan kebebasan pengembangan, meningkatkan kualitas, mempermudah pemeliharaan, mempertinggi kemampuan dalam modifikasi dan meningkatkan penggunaan kembali software. Dalam pemrograman berorientasi objek, ada beberapa hal yang harus diketahui yaitu diantara lain :

  1. Class
    Class mengizinkan Anda dalam mendeklarasikan tipe data baru. Ia dijalankan sebagai blueprint, dimana model dari object yang Anda buat berdasarkan pada tipe data baru ini.
  2. Object
    Sebuah object adalah sebuah entiti yang memiliki keadaan, behaviour dan identitas yang tugasnya dirumuskan dalam suatu lingkup masalah dengan baik. Inilah instance sebenarnya dari sebuah class. Ini juga dikenal sebagai instance. Instance dibuat sewaktu Anda meng-instantiate class menggunakan kata kunci new. Dalam sistem registrasi siswa, contoh dari sebuah object yaitu entiti Student.
  3. Atribut
    Atribut menunjuk pada elemen data dari sebuah object. Atribut menyimpan informasi tentang object. Dikenal juga sebagai member data, variabel instance, properti atau sebuah field data. Kembali lagi ke contoh sistem registrasi siswa, atribut dari sebuah siswa adalah nomor siswa.
  4. Method
    Sebuah method menjelaskan behaviour dari sebuah object. Method juga dikenal sebagai fungsi atau prosedur. Sebagai contoh, method yang mungkin tersedia untuk entiti siswa adalah method register.
  5. Constructor
    Constructor adalah sebuah tipe khusus dari method yang digunakan untuk membuat dan menginisialisasi sebuah object baru. Ingat bahwa constructor bukan member (yaitu atribut, method atau inner class dari sebuah object).
  6. Package
    Package menunjuk pada pengelompokkan class dan/atau subpackages. Strukturnya dapat disamakan dengan direktorinya.
  7. Enkapsulasi
    Enkapsulasi menunjuk pada prinsip dari menyembunyikan desain atau mengimplementasikan informasi yang tidak sesuai pada object yang ada.
  8. Abstraksi
    Sementara enkapsulasi menyembunyikan detail, abstraksi mengabaikan aspek dari subyek yang tidak sesuai dengan tujuan yang ada supaya lebih banyak mengkonsentrasikan yang ada.
  9. Pewarisan
    Pewarisan adalah hubungan antara class dimana dalam satu class ada superclass atau class induk dari class yang lain. Pewarisan menunjuk pada properti dan behaviour yang diterima dari nenek moyang dari class. Ini dikenal juga sebagai hubungan “is-a”. Perhatikan pada hirarki berikut.

post7

SuperHero adalah superclass dari class FlyingSuperHero dan UnderwaterSuperHero. Catatan bahwa FlyingSuperHero “is-a” SuperHero. Sebagaimana juga UnderwaterSuperHero “is-a” SuperHero.

  1. Polimorfisme
    Polimorfisme adalah kemampuan dari sebuah object untuk membolehkan mengambil beberapa bentuk yang berbeda. Secara harfiah, “poli” berarti banyak sementara “morph” berarti bentuk. Menunjuk pada contoh sebelumnya pada pewarisan, kita lihat bahwa object SuperHero dapat juga menjadi object FlyingSuperHero atau object UnderwaterSuperHero.
  2. Interface
    Sebuah interface adalah sebuah contract dalam bentuk kumpulan method dan deklarasi konstanta. Ketika sebuah class implements sebuah interface, ini mengimplementasikan semua method yang dideklarasikan dalam interface.

Struktur Program Java

Pada bagian ini berisi beberapa syntax dasar yang digunakan dalam pembuatan aplikasi Java. Berikut ini beberapa konsep dasar dari pemrograman Java

  1. Mendeklarasikan class Java
    <classDeclaration> ::=<modifier> class <name> {<attributeDeclaration>*<constructorDeclaration>*<methodDeclaration>*}dimana <modifier> adalah sebuah access modifier, yang mana boleh dikombinasikan dengan tipe yang lain dari modifier.Petunjuk Penulisan Program:* = berarti bahwa boleh ada 0 atau lebih kejadian dari deret tersebut yang menggunakannya juga.<description> = menunjukkan bahwa Anda harus mengganti nilai sebenarnya untuk bagian ini daripada menguranginya penulisannya.Ingat bahwa untuk class teratas, acces modifier yang valid hanyalah public dan package(yakni jika tidak ada acces modifier mengawali kata kunci class).

    Contoh berikut ini mendeklarasikan class SuperHero.

    Class SuperHero {
      String superPowers[];
      void setSuperPowers(String superPowers[]) {
      this.superPowers = superPowers;
    }
    void printSuperPowers() {
      for (int i = 0; i < superPowers.length; i++) {
           System.out.println(superPowers[i]);
           }
        }
    }.
  2. Mendeklarasikan Atribut
    <attributeDeclaration> ::=<modifier> <type> <name> [= <default_value>];<type> ::=byte | short | int | long | char | float | double | boolean | <class>Petunjuk Penulisan Program:[] = Menunjukkan bahwa bagian ini hanya sebagai pilihan. Inilah contohnya.

    public class AttributeDemo {
       private String studNum;
       public boolean graduating = false;
       protected float unitsTaken = 0.0f;
       String college;
    }

     

  3. Mendeklarasikan Method
    <methodDeclaration> ::=<modifier> <returnType> <name>(<parameter>*) {<statement>*}<parameter> ::=<parameter_type> <parameter_name>[,]Sebagai contoh:

    class MethodDemo {
      int data;
      int getData() {
      return data;
    }
    void setData(int data) {
      this.data = data;
    }
    void setMaxData(int data1, int data2) {
      data = (data1>data2)? data1 : data2;
      }
    }
  4. Mendeklarasikan sebuah Constructor
    <constructorDeclaration> ::=<modifier> <className> (<parameter>*) {<statement>*}Jika tidak ada constructor yang disediakan secara jelas, constructor default secara otomatis membuatkannya untuk Anda. Constructor default tidak membawa argumen dan tidak berisi pernyataan pada tubuh class.Petunjuk Penulisan Program:- Nama constructor harus sama dengan nama class.- <modifier> yang valid untuk constructor adalah public, protected, dan private.- Constructor tidak memiliki nilai return.Perhatikan contoh berikut.

    class ConstructorDemo {
      private int data;
      public ConstructorDemo() {
      data = 100;
    }
    ConstructorDemo(int data) {
      this.data = data;
      }
    }
    

     

  5. Meng-instantiate sebuah class
    Untuk meng-instantiate sebuah class, dengan sederhana kita gunakan kata kunci new diikuti dengan pemanggilan sebuah constructor. Mari lihat langsung ke contohnya.

    class ConstructObj {
      int data;
    ConstructObj() {
    /* menginisialisasi data */
    }
    public static void main(String args[]) {
      ConstructObj obj = new ConstructObj(); //di-instantiate
      }
    }

     

  6. Mengakses Anggota object
    Untuk mengakses anggota dari sebuah object, kita gunakan notasi “dot”. Penggunaanya seperti berikut:<object>.<member>Contoh selanjutnya berdasar pada sebelumnya dengan pernyataan tambahan untuk mengakses anggota dan method tambahan.

    class ConstructObj {
      int data;
      ConstructObj() {
      /* inisialisasi data */
      }
    void setData(int data) {
      this.data = data;
    }
    public static void main(String args[]) {
      ConstructObj obj = new ConstructObj(); //instantiation
      obj.setData = 10; //access setData()
      System.out.println(obj.data); //access data
      }
    }

     

  7. Package
    Untuk menunjukkan bahwa file asal termasuk package khusus, kita gunakan syntax berikut:<packageDeclaration> ::=package <packageName>;Untuk mengimpor package lain, kita gunakan syntax berikut:<importDeclaration> ::=import <packageName.elementAccessed>;Dengan ini, source code Anda harus memiliki format berikut:[<packageDeclaration>]<importDeclaration>*<classDeclaration>+

    Petunjuk Penulisan Program:
    + menunjukkan bahwa boleh ada 1 atau lebih kejadian pada baris ini dalam pengaplikasiannya.

    Sebagai contoh :

    package registration.reports;
    import registration.processing.*;
    import java.util.List;
    import java.lang.*; //imported by default
    class MyClass {
     /* rincian dari MyClass */
    }
  8. Enkapsulasi
    Menyembunyikan elemen dari penggunaan sebuah class dapat dilakukan dengan pembuatan anggota yang ingin Anda sembunyikan secara private. Contoh berikut menyembunyikan field secret. Catatan bahwa field ini tidak langsung diakses oleh program lain menggunakan method getter dan setter.

    class Encapsulation {
      private int secret; //field tersembunyi
      public boolean setSecret(int secret) {
      if (secret < 1 || secret > 100) {
        return false;
    }
      this.secret = secret;
      return true;
    }
    public getSecret() {
      return secret;
      }
    }
    
  9. Pewarisan
    Untuk membuat class anak atau subclass berdasarkan class yang telah ada, kita gunakan kata kunci extend dalam mendeklarasikan class. Sebuah class hanya dapat meng-extend satu class induk. Sebagai contoh, class Point di bawah ini adalah superclass dari class ColoredPoint.

    import java.awt.*;
      class Point {
      int x;
      int y;
    }
    class ColoredPoint extends Point {
      Color color;
    }
  10. Method Overriding
    Method subclass override terhadap method superclass ketika subclass mendeklarasikan method yang signaturenya serupa ke method dalam superclass. Signature dari method hanyalah informasi yang ditemukan dalam definisi method bagian atas. Signature mengikutkan tipe return, nama dan daftar parameter method tetapi itu tidak termasuk acces modifier dan tipe yang lain dari kata kunci seperti final dan static. Inilah perbedaan dari method overloading. Method overloading secara singkat didiskusikan dalam sub bagian pada kata kunci this.

    class Superclass {
      void display(int n) {
      System.out.println("super: " + n);
      }
    }
    class Subclass extends Superclass {
      void display(int k) { //method overriding
      System.out.println("sub: " + k);
      }
    }
    class OverrideDemo {
      public static void main(String args[]) {
      Subclass SubObj = new Subclass();
      Superclass SuperObj = SubObj;
      SubObj.display(3);
      ((Superclass)SubObj).display(4);
      }
    }

    Ini akan menghasilkan keluaran sebagai berikut.

    sub: 3

    sub: 4

    Pemanggilan method ditentukan oleh tipe data sebenarnya dari object yang diminta method. Acces modifier untuk method yang dibutuhkan tidak harus sama. Bagaimanapun, acces modifier dari method overridding mengharuskan salah satunya punya acces modifier yang sama seperti itu dari method overridden atau acces modifier yang kurang dibatasi.

    Perhatikan contoh selanjutnya. Periksa yang mana dari method overridding berikut akan menyebabkan waktu meng-compile akan menyebabkan error.

    class Superclass {
    
     void overriddenMethod() {
    
       }
    
    }
    
    class Subclass1 extends Superclass {
    
      public void overriddenMethod() {
    
      }
    
    }
    
    class Subclass2 extends Superclass {
    
      void overriddenMethod() {
    
      }
    
    }
    
    class Subclass3 extends Superclass {
    
      protected void overriddenMethod() {
    
      }
    
    }
    
    class Subclass4 extends Superclass {
    
      private void overriddenMethod() {
    
      }
    
    }

     

  11. Class Abstract dan Method
    Bentuk umum dari sebuah method abstract adalah sebagai berikut:abstract <modifier> <returnType> <name>(<parameter>*);Sebuah class yang berisi method abstract harus dideklarasikan sebagai sebuah class abstract.abstract <modifier> <returnType> <name>(<parameter>*);abstract class<name> {/* constructors, fields and methods */}Kata kunci tidak dapat digunakan pada constructor atau method static. Ini juga penting untuk diingat bahwa class abstract tidak dapat di-instantiate. Class yang meng-extends sebuah class abstract harus mengimplementasikan semua method abstract. Jika tidak subclass sendiri dapat dideklarasikan sebagai abstract.Petunjuk Penulisan Program:
    catatan bahwa mendeklarasikan sebuah method abstract hampir mirip dalam mendeklarasikan class normal kecuali itu suatu method abstract yang tidak memiliki tubuh dan kepala sehingga dengan segera diakhiri dengan semicolon(;).Sebagai Contoh :

    abstract class SuperHero {
      String superPowers[];
      void setSuperPowers(String superPowers[]) {
      this.superPowers = superPowers;
    }
    void printSuperPowers() {
      for (int i = 0; i < superPowers.length; i++) {
        System.out.println(superPowers[i]);
      }
    }
     abstract void displayPower();
    }
    class UnderwaterSuperHero extends SuperHero {
      void displayPower() {
      System.out.println("Communicate with sea creatures...");
      System.out.println("Fast swimming ability...");
      }
    }
    class FlyingSuperHero extends SuperHero {
      void displayPower() {
      System.out.println("Fly...");
      }
    }

 

Sumber Artikel Diambil dari E-Book dari Jeni


Silahkan dukung developer indonesia dengan mendownload aplikasi buatan anak bangsa. Silahkan klik https://play.google.com/store/apps/details?id=com.codenesia.mathgames

Aplikasi codenesia

Leave a Reply

Your email address will not be published. Required fields are marked *