Pertemuan 1 (PBO, Enkapsulasi, Pewarisan)

  PEMROGRAMAN BERBASIS OBJEK TEKNIK

INFORMATIKA POLITEKNIK KEDIRI

BAB 1 PENGANTAR PEMROGRAMAN BERBASIS OBJEK

  1.1 PENGERTIAN PEMROGRAMAN BERBASIS OBJEK (PBO)

  PBO adalah sebuah konsep pemrograman yang membuat kode program lebih terstruktur dan terkelompok berdasarkan objek sehingga bagian-bagiannya dapat digunakan lagi untuk pembuatan aplikasi lain. PBO membagi kode program menjadi kumpulan bungkusan benda/objek.

  1.2 PERBEDAAN DENGAN PEMROGRAMAN PROSEDURAN (PP)

  Konsep Pemrograman Prosedural (PP), yaitu pemrograman yang dilakukan berdasarkan

  pembagian proses yang dibutuhkan. PP telah dipelajari pada mata kuliah sebelumnya yakni Algoritma dan Pemrograman.

  1.3 ILUSTRASI

  1.4 SYARAT UMUM BAHASA PEMROGRAMAN BERBASIS OBJEK

  Konsep PBO dapat dinyatakan dalam tiga sub kategori, yakni: enkapsulasi, pewarisan, dan polimorfisme.

1. Enkapsulasi

  Bertujuan agar kode program dapat membungkus atribut dan method dalam sebuah kelas sehingga dapat mencegah pengaksesan langsung atribut dan method yang ingin dilindungi dalam sebuah kelas, misalkan membungkus (mengkapsulasi) method- method.

  2. Pewarisan Bertujuan agar kode program dimungkinkan memiliki pendefinisian kelas baru yang memiliki sifat-sifat turunan dari kelas lain.

  3. Polimorfisme Bertujuan agar kode program dimungkinkan mampu membuat pengaksesan metode- metode dengan nama yang sama namun berbeda parameter masukan atau berbeda kelas.

1.5 KELAS

  Kelas di dunia nyata dapat dianalogikan sebagai kelas yang sebenarnya atau ruangan. Kelas

  digunakan untuk mengelompokkan komponen-komponen dengan kriteria tertentu yang

  hampir sama dimiliki semua anggota kelas. Contohnya, kelas 1 diperuntukkan untuk anak usia 6-7 tahun sedangkan kelas 6 diperuntukkan untuk anak usia 11-12 tahun. Kelas di dunia pemrograman digunakan untuk mengelompokkan sekumpulan benda/ proses. Sebuah file dapat terdiri dari beberapa kelas, namun umumnya pada java, satu file terdiri dari satu kelas. Perbedaan kelas dengan sebuah struktur pada pemrograman prosedural adalah: 1.

  Sebuah kelas dapat berdiri sendiri dan dapat dipergunakan untuk berbagai keperluan lain

  2. Sebuah struktur tidak dapat berdiri sendiri sehingga tidak dapat dipergunakan untuk keperluan lain

  3. Sebuah kelas lebih fleksibel untuk digunakan oleh kelas lain tanpa harus membongkar kode program utama (main). Hal ini bertolak belakang dengan pemrograman struktrual dimana diharuskan membongkar dan menyalin bagian struktural untuk digunakan di program utama lain.

  Berikut ini gambaran perbedaan kelas dan struktur:

  1.6 PERBEDAAN KELAS DAN OBJEK NO KELAS OBJEK

  1 adalah tulisan kode program kelas objek adalah kelas yang telah dieksekusi yang ditulis oleh programmer dan dijalankan menjadi program komputer yang sudah siap digunakan 2 sebagai sebuah file yang berisi kode objek tidak dapat dilihat bentuknya karena program objek dijalankan di dalam proses komputer 3 masih dalam bentuk kode, namun Objek adalah elemen pada saat runtime saat kode dieksekusi disebut yang akan diciptakan, dimanipulasi, dan dengan objek. dihancurkan

  1.7 IMPLEMENTASI KELAS DAN OBJEK

  Berikut ini adalah contoh kode pembuatan kelas Hello: class Hello { public static void main(String[] args) {

  String kata; kata = "Hello World"; System.out.println(kata);

  } } Kode tersebut bertujuan untuk membuat kelas Hello dengan atribut kata. Setelah dieksekusi, terbentuklah objek Hello.

  1.8 LATIHAN BAB 1 1.

  Buatlah sebuah kelas bernama makan dengan atribut siang dengan nilai ayam goreng.

2. Buatlah sebuah kelas bernama informatika dengan atribut kelas dengan nilai 1A

1.9 REFERENSI

  Rosa dan Shalahudin, 2010, Modul Pembelajaran Pemrograman Berorientasi Objek, Modula: Bandung

BAB 2 ENKAPSULASI

  2.1 DEFINISI

  Enkapsulasi dapat dianggap sebagai sebuah bungkusan. Enkapsulasi inilah yang diimplementasikan dalam sebuah kelas di mana didalamnya terdiri dari atribut dan method yang dibungkus. Enkapsulasi pada sebuah kelas bertujuan untuk melindungi atribut dan method yang ada di dalam kelas agar tidak sembarang diakses.

  2.2 KONSTRUKTOR

  Sebuah kelas harus memiliki sebuah method yang disebut sebagai konstruktor. Nama sebuah konstruktor harus sama dengan nama dari sebuah kelas. Konstruktor harus bersifat public karena akan diakses oleh kelas lain. Sebuah konstruktor dapat menerima masukan dapat pula berisi inisialisasi atau tidak berisi apa-apa. Suatu kelas dapat memiliki konstruktor lebih dari satu. Pada saat eksekusi, compiler akan mencari konstruktor mana yang sesuai dengan konstruktor yang dipanggil. Contoh konstruktor:

  public class Buku { …… Buku() {

  //konstruktor } Buku(String j, String p) {

  //konstruktor dengan parameter masukan …… }

  }

  2.3 METHOD

  Method pada PBO sama dengan method pada pemrograman prosedural yakni terdiri dari fungsi dan prosedur. Pada sebuah method dalam kelas juga memiliki izin akses antara lain Private, Public, Protected. Sebuah kelas boleh memiliki lebih dari satu method dengan nama

  yang sama (overloading) asalkan memiliki parameter masukan yang berbeda. Pada

  pemrograman Java, dalam sebuah kelas terdapat method statis yang memiliki kata kunci “static”. Artinya, method ini dapat diakses tanpa harus membuat objek terlebih dahulu (tidak perlu ada proses new). Akan tetapi method statis hanya dapat mengakses atribut atau method lain di dalam kelas yang membungkusnya yang juga bersifat statis.

  2.4 ATRIBUT

  Atribut merupakan variabel global yang dimiliki oleh sebuah kelas. Contoh:

  public class Buku { public String judul; private String pengarang; Buku() { } }

  Dari contoh diatas, judul dan pengarang adalah atribut yang bertipe string. Izin akses pada atribut dapat berbeda, macam-macam izin akses atribut antara lain: private, public, dan protected.

  1. Private Izin akses private pada sebuah atribut digunakan oleh kelas untuk melindungi atribut- atributnya diakses kelas lain. Sebuah atribut dinyatakan private hanya dapat diakses secara langsung oleh kelas yang membungkusnya. Sedangkan kelas lainnya tidak dapat mengakses atribut ini secara langsung, sehingga diperlukan method untuk mengembalikan nilai. Contoh:

  public class Buku {

private String judul = “Modul Pemrograman Berorientasi Objek”;

private String pengarang = “Tim Dosen Politeknik Kediri”; Buku() { } String getJudul() { // method untuk mengembalikan nilai return this.judul; }

  String getPengarang() { // method untuk mengembalikan nilai return this.Pengarang; } }

  Pada kode tersebut, atribut judul dan pengarang hanya bisa diakses pada kelas buku. Sehingga jika kelas lain ingin mengakses atribut tersebut diperlukan method untuk mengembalikan nilai judul dan pengarang. Sehingga di kelas yang akan mengaksesnya ditulis kode sebagai berikut:

  Buku b = new Buku (); String jdl = b.getJudul(); String pgrg = b.getPengarang(); 2.

  Public Izin akses public pada sebuah atribut digunakan oleh kelas jika atribut-atributnya boleh diakses kelas lain. Sebuah atribut public bisa diakses secara langsung oleh kelas yang membungkusnya maupun kelas yang lainnya. Contoh:

  public class Buku { public String judul = “Modul Pemrograman Berorientasi Objek”; String pengarang = “Tim Dosen Politeknik Kediri”; Buku() { } }

  Pada kode tersebut, atribut judul dan pengarang bersifat public. Atribut yang tidak dicantumkan izin akses maka dianggap berizin public. Sehingga jika kelas lain ingin mengakses atribut tersebut dapat ditulis kode sebagai berikut: ...

  Buku b = new Buku(); String jdl = b.judul; String pgrg = b.pengarang; ...

  3. Protected Izin akses protected pada sebuah atribut digunakan oleh kelas jika atribut-atributnya boleh diakses langsung oleh kelas lain yang merupakan turunannya. Sebuah atribut dinyatakan protected hanya dapat diakses secara langsung oleh kelas turunannya (inheritance). Sedangkan kelas lainnya tidak dapat mengakses atribut ini secara langsung.

  Contoh:

  public class Buku { protected String judul = “Modul Pemrograman Berorientasi Objek”;

protected String pengarang = “Tim Dosen Politeknik Kediri”;

Buku() { } }

  Pada kode tersebut, atribut judul dan pengarang bersifat protected sehingga yang dapat mengakses adalah kelas turunan dari kelas Buku. Mengenai kelas turunan akan dijelaskan lebih lanjut pada bab selanjutnya.

2.5 IMPLEMENTASI

  Berikut ini contoh implementasi enkapsulasi dengan atribut private dan public untuk kasus titik koordinat 2D: public class Titik { private int x; private int y; int z; Titik() { x = 0; y = 0; z = 2; } Titik(int xp, int yp) { x = xp; y = yp; } public void setX(int xp) { x = xp;

  } public int getX() { return x;

  } public void setY(int yp) {

  y = yp; } public int getY() { return y; } } public class Main { public static void main(String[] args) {

  Titik t1 = new Titik(); t1.setX(18); t1.setY(28); System.out.println(t1.getX()); System.out.println(t1.getY());

  Titik t2 = new Titik(11, 9); System.out.println(t2.getX()); System.out.println(t2.getY()); System.out.println(t2.z);

  } }

  2.6 TUGAS BAB 2

  Carilah contoh studi kasus lain yang dapat diselesaikan menggunakan fungsi enkapsulasi!

  2.7 REFERENSI

  Rosa dan Shalahudin, 2010, Modul Pembelajaran Pemrograman Berorientasi Objek, Modula: Bandung

BAB 3 PEWARISAN KELAS MANUSIA.JAVA

  3.1 DEFINISI PEWARISAN

  Pewarisan atau inheritance merupakan sebuah hubungan dua buah kelas atau lebih dimana ada kelas yang memiliki atribut dan method yang sama dengan yang lain disertai atribut dan method tambahan dari sifat khusus kelas yang menjadi turunannya.

  3.2 KETENTUAN PEWARISAN 1.

  Kelas yang menjadi dasar penurunan adalah kelas orang tua atau disebut super class.

  2. Kelas yang menjadi turunannya adalah kelas anak atau disebut dengan sub class.

  3. Biasanya kelas anak adalah kelas yang lebih khusus dari kelas orang tua.

  Contoh: Setiap manusia memiliki atribut berupa nama, alamat, noktp, notelp. Beberapa manusia ada yang menjadi karyawan, dimana karyawan memiliki atribut tambahan seperti nopegawai, jabatan, dan departemen tempat ia bekerja. Berikut ini contoh ilustrasi pewarisan kelas manusia dan karyawan: Maka secara hirarki dapat digambarkan sebagai berikut:

3.3 IMPLEMENTASI PEWARISAN Contoh 1: Implementasi pewarisan pada kelas Manusia dan kelas Karyawan.

  public class Manusia { private String nama; private String alamat; private String noktp; private String notelp;

  Manusia(){ } public void setNama(String nama){ this.nama=nama; } public void setAlamat(String alamat){ this.alamat=alamat; } public void setNoKTP(String noktp){ this.noktp=noktp; } public void setNoTelp(String notelp){ this.notelp=notelp; } public String getNama(){ return this.nama; } public String getAlamat(){ return this.alamat; } public String getNoKTP(){ return this.noktp; } public String getNoTelp(){ return this.notelp; }

  } KELAS KARYAWAN.JAVA public class Karyawan extends Manusia{ private String nopegawai; private String jabatan; private String departemen; Karyawan(){ } public void setNoPegawai(String nomor){ this.nopegawai=nomor;

  } public void setJabatan(String jabatan){ this.jabatan=jabatan;

  } public void setDepartemen(String dept){ this.departemen=dept;

  } public String getNoPegawai(){ return this.nopegawai;

  } public String getJabatan(){ return this.jabatan; } public String getDepartemen(){ return this.departemen;

  } }

  KELAS MAIN.JAVA public class Main { public static void main(String[] args) {

  Manusia kmanusia = new Manusia(); kmanusia.setNama("Gina"); kmanusia.setAlamat("Bandung"); kmanusia.setNoKTP("3571"); kmanusia.setNoTelp("0354"); System.out.println(kmanusia.getNama()); System.out.println(kmanusia.getAlamat()); System.out.println(kmanusia.getNoKTP()); System.out.println(kmanusia.getNoTelp()); Karyawan kkaryawan = new Karyawan(); kkaryawan.setNama("Gina"); kkaryawan.setAlamat("Bandung"); kkaryawan.setNoKTP("3571"); kkaryawan.setNoTelp("0354"); kkaryawan.setNoPegawai("001"); kkaryawan.setJabatan("-"); kkaryawan.setDepartemen("-"); System.out.println(kkaryawan.getNama()); System.out.println(kkaryawan.getAlamat()); System.out.println(kkaryawan.getNoKTP()); System.out.println(kkaryawan.getNoTelp()); System.out.println(kkaryawan.getNoPegawai()); System.out.println(kkaryawan.getJabatan()); System.out.println(kkaryawan.getDepartemen());

  }} ============================================================================

  Contoh 2: Implementasi pewarisan pada kelas Titik dan kelas Titik3D. Jika kelas Titik memiliki koordinat x dan y, maka kelas Titik3D memiliki koordinat x, y, dan z. Secara ilustrasi keterkaitan antar kelas Titik dan kelas Titik3D adalah sebagai berikut: Dalam pewarisan, kelas dasar (Titik) akan mewariskan semua atribut dan methodnya kecuali konstruktor kepada kelas turunannya. Dengan demikian, kelas turunan dapat mengimplementasikan method yang ada pada kelas dasar. Contoh: Jika pada kelas Titik terdapat method getX(), getY(), dan walaupun pada kelas Titik3D (yang merupakan turunan dari kelas Titik) hanya terdapat method getZ(), maka ketika kita memanggil kelas Titik3D semua method tersebut akan dapat diakses. Berikut ini kode lengkap implementasi pewarisan pada kelas Titik dan kelas Titik3D: public class Titik { private int x; private int y; Titik() { //konstruktor inisialisasi x = 0;y = 0; } Titik(int xp, int yp) { //konstruktor masukan x = xp; y = yp; } public void setX(int xp) { //method set nilai x x = xp;

  } public int getX() { //method panggil nilai x return x;

  } public void setY(int yp) { //method set nilai y y = yp; } public int getY() { //method panggil nilai y return y;}

  } KELAS TITIK.JAVA

  KELAS TITIK3D.JAVA public class Titik3D extends Titik{ private int z; Titik3D(){ //konstruktor inisialisasi z=0; } Titik3D(int xp, int yp, int zp){ //konstruktor masukan setX(xp); //set nilai x dengan method setX dari kelas Titik setY(yp); //set nilai y dengan method setY dari kelas Titik z=zp; //set nilai z

  } public void setZ(int zp){ //method set nilai z z=zp;

  } public int getZ(){ //method panggil nilai z return z;

  } }

  KELAS MAIN.JAVA public class Main { public static void main(String[] args) {

  Titik3D t1 = new Titik3D(); //panggil konstruktor inisialisasi t1.setX(18); //memanggil Method di kelas Titik t1.setY(28); //memanggil Method di kelas Titik t1.setZ(-9); //memanggil Method di kelas Titik3D System.out.println(t1.getX()); //memanggil Method di kelas Titik System.out.println(t1.getY()); //memanggil Method di kelas Titik System.out.println(t1.getZ()); //memanggil Method di kelas Titik3D Titik3D t2 = new Titik3D(2,-3,7); //panggil konstruktor masukan System.out.println(t2.getX()); //memanggil Method di kelas Titik System.out.println(t2.getY()); //memanggil Method di kelas Titik System.out.println(t2.getZ()); //memanggil Method di kelas Titik3D

  } }

  3.4 TUGAS MODUL 3

  Terapkan konsep pewarisan ini untuk studi kasus yang lainnya!

  3.5 REFERENSI

  Rosa dan Shalahudin, 2010, Modul Pembelajaran Pemrograman Berorientasi Objek, Modula: Bandung