IKG2I4 / Software Project I Mahmud Imrona, M.T. Izzatul Ummah, M.T. Kelompok Keahlian Algoritma dan Komputasi
LECTURE NOTE WEEK 2
1
3/11/2015
WEEK 2 Class Driver Constructor Public vs private Get dan set Implementasi Class Diagram ke bahasa Java.
2
3/11/2015
IKG2I4 – Software Project I
CLASS DRIVER Class Driver adalah class yang hanya berisi main() dan berfungsi untuk menguji class-class lainnya apakah sudah betul algoritmanya. Kegunaannya sama seperti file main.c
3
3/11/2015
IKG2I4 – Software Project I
C vs JAVA Buka kembali header dari ADT POINT pada kuliah Praktikum Pemrograman Terstruktur II. Fungsi makePoint pada C sama fungsinya sebagai constructor pada Java. Fungsi-fungsi lainnya menjadi method di OOP/Java: – bacaPoint – tulisPoint – pTambah – pTranslasi, dan sebagainya 4
3/11/2015
IKG2I4 – Software Project I
CONSTRUCTOR Constructor adalah method khusus yang nantinya akan digunakan untuk menginstansiasi atau melahirkan sebuah object. – Ingat kembali ADT (kuliah Pemrograman Terstruktur II), ada fungsi makeJam, makePoint, makeDate, makeGaris. Constructor pada intinya sama dengan fungsi-fungsi tsb. – Lihat kembali class Manusia, di situ ada fungsi lahir(). Fungsi inilah yang berfungsi sebagai constructor.
Argumen pada constructor bisa kosong, bisa juga berisi nilai. 5
3/11/2015
IKG2I4 – Software Project I
CONSTRUCTOR Contoh constructor kosong: public Segiempat(){} Contoh constructor dengan argumen/parameter: Segiempat (int p, int l) {panjang=p; lebar=l;} Constructor tidak mereturn type apapun, jadi Anda tidak boleh menuliskan: public void Segiempat(), atau public int Segiempat() Biasakan utk membuat constructor pada class yg Anda coding. Bila tidak dibuat, Java akan otomatis membuatkan tapi parameternya kosong. 6
3/11/2015
IKG2I4 – Software Project I
CONSTRUCTOR Contoh pemanggilan constructor: Segiempat se1 = new Segiempat() Segiempat se2 = new Segiempat(7,4) Constructor dipanggil setelah kata new.
7
3/11/2015
IKG2I4 – Software Project I
INSTANSIASI OBJECT Agar program Anda dapat berjalan, harus ada objek yang diinstansiasi/dilahirkan terlebih dahulu di main() yang biasanya dibuat di dalam Driver. – Segiempat se = new Segiempat(5,3);
8
3/11/2015
IKG2I4 – Software Project I
MENGOLAH DATA ATRIBUT & METHOD Misalkan kita punya class Segiempat sbb:
class Segiempat { int panjang; int lebar; }
9
3/11/2015
IKG2I4 – Software Project I
MENGOLAH DATA ATRIBUT & METHOD Maka cara mengolah data atribut & methodnya: public static void main(String args[]) { Segiempat se = new Segiempat(7,4); se.panjang = 9; se.lebar = 3; System.out.println(se.panjang); System.out.println(se.lebar); System.out.println(se.hitungLuas()); System.out.println(se.hitungKeliling()); se.printInfo(); } 10
3/11/2015
IKG2I4 – Software Project I
ACCESS MODIFIER (ACCESS SPECIFIER) Java membedakan level akses untuk atribut dan method yaitu: private, protected, public. – Dituliskan di depan attribute atau method yg diinginkan. – Private: artinya attribute/method tersebut tidak akan dapat diakses/dipanggil oleh kelas lain Bila di class Segiempat dituliskan: private int panjang Maka di class lain, baris berikut akan error: se.panjang
– Public: artinya attribute/method tersebut dapat diakses/dipanggil oleh kelas lain Bila di class Segiempat dituliskan: public int panjang Maka di class lain, baris berikut akan bisa dicompile: se.panjang 11
3/11/2015
IKG2I4 – Software Project I
ACCESS MODIFIER (ACCESS SPECIFIER) Kita ubah sedikit class Segiempat-nya: class Segiempat { private int panjang; private int lebar; }
12
3/11/2015
IKG2I4 – Software Project I
ACCESS MODIFIER (ACCESS SPECIFIER) Maka bagian ini akan error karena atribut private artinya tidak boleh langsung dipanggil di class lain: class Driver{ public static void main(String args[]) { Segiempat se = new Segiempat(7,4); se.panjang = 9; // error se.lebar = 3; // error System.out.println(se.panjang); // error System.out.println(se.lebar); // error } } 13
3/11/2015
IKG2I4 – Software Project I
ACCESS MODIFIER (ACCESS SPECIFIER) Sama juga, bila sebuah method diberi awalan private maka method tersebut tidak bisa dipanggil di class lain. Atribut biasanya private. Method biasanya public. Pada notasi UML Class Diagram, private diberi tanda - sedangkan public diberi tanda + Untuk access protected akan dijelaskan setelah materi inheritance.
14
3/11/2015
IKG2I4 – Software Project I
METHOD GET & SET Karena atribut dibuat menjadi private, bagaimana cara menampilkan dan mengubah datanya? Jawab: bikin method baru yaitu get dan set. class Segiempat{ public int getPanjang(){ return panjang; } public void setPanjang(int p){ panjang = p; } } 3/11/2015 15 IKG2I4 – Software Project I
METHOD GET & SET Cara menampilkan dan mengubah datanya yaitu: class Driver{ public static void main(String args[]) { Segiempat se = new Segiempat(7,4); System.out.println(se.getPanjang()); System.out.println(se.getLebar()); System.out.println(se.setPanjang(8)); System.out.println(se.setLebar(5)); } } 16
3/11/2015
IKG2I4 – Software Project I
METHOD GET & SET Get dan set dibuat untuk masing-masing atribut (atau sesuai kebutuhan). Get digunakan untuk mereturn nilai atribut. Tipe return harus sesuai dengan tipe atribut. Argumen atau parameternya kosong. Contoh bila panjang bertipe float maka getPanjang() mereturn float. Set digunakan untuk mengubah nilai. Tipe returnnya void, dan menerima input argumen sesuai tipe atribut. Contoh bila panjang bertipe float maka: void setPanjang(float p) {……} 17
3/11/2015
IKG2I4 – Software Project I
METHOD GET & SET Method get dan set juga berguna bila kita perlu membuat constraint khusus pada atribut. Misalnya kita buat aturan untuk atribut panjang dan lebar tidak boleh bernilai negatif, maka: public void setPanjang(int p){ if (p>0) {panjang = p;} }
18
3/11/2015
IKG2I4 – Software Project I
METHOD PRINT-INFO Untuk menampilkan atribut class, kita dapat membuat fungsi printInfo() contohnya seperti ini: class Segiempat{ public void printInfo(){ System.out.println(panjang); System.out.println(lebar); } } 19
3/11/2015
KONSTANTA (FINAL ATTRIBUTE) Untuk membuat atribut konstanta di dalam class, gunakan keyword final. Contoh: class Lingkaran { double radius; final double pi=3.14; }
20
3/11/2015
IKG2I4 – Software Project I
IMPLEMENTASI CLASS DIAGRAM Soal-soal latihan dan tugas mingguan akan diberikan dalam bentuk Class Diagram. Mahasiswa harus membuat implementasi coding dari class diagram tersebut ke dalam bahasa Java. Untuk implementasi class diagram, pelajari contoh-contoh sourcecode yang diberikan mulai dari Week 1 hingga Week 14. Penjelasan lebih lanjut akan dijelaskan oleh dosen di kelas.
21
3/11/2015
IKG2I4 – Software Project I
IMPLEMENTASI CLASS DIAGRAM Dalam satu file bisa terdiri dari satu class saja, atau bisa juga terdiri dari beberapa class. Best practicenya adalah satu file hanya terdiri dari satu class, di mana nama file sama dengan nama class. Umumnya fungsi main hanya ada di dalam class Driver.
22
3/11/2015
IKG2I4 – Software Project I
STRUKTUR CLASS PADA FILE JAVA
23
3/11/2015
IKG2I4 – Software Project I
IMPLEMENTASI CLASS Ketika membuat coding class di Java, buatlah dalam urutan berikut: – Attribute/property: variabel (umumnya private) – Method: fungsi/prosedur (umumnya public), dibuat terurut sbb: Constructor: meliputi constructor kosong dan constructor berparameter Get & set: berpasangan untuk tiap atribut printInfo(): untuk mencetak semua nilai atribut Method-method lainnya: dimulai dari yang paling sederhana hingga yang paling rumit
24
3/11/2015
IKG2I4 – Software Project I
TUGAS PEKAN INI (TUGAS INDIVIDU): Mengimplementasikan semua Class Diagram berikut ini yang diberikan ke dalam coding Java (lihat contoh program yang diberikan): – Segiempat, Segitiga, Lingkaran – Titik, Titik3D – Time, Date.
Sebagai catatan class Date di sini adalah class buatan sendiri (bukan import dari java.util.Date).
25
3/11/2015
IKG2I4 – Software Project I
TUGAS PEKAN INI (TUGAS INDIVIDU):
26
3/11/2015
IKG2I4 – Software Project I
TUGAS PEKAN INI (TUGAS INDIVIDU):
27
3/11/2015
IKG2I4 – Software Project I
TUGAS PEKAN INI (TUGAS INDIVIDU):
28
3/11/2015
IKG2I4 – Software Project I
STANDAR DISIPLIN PEMROGRAMAN Nama class dan nama file diawali huruf kapital. Indentasi sangat penting agar sourcecode Anda rapi dan mudah dibaca. Sourcecode yang tidak rapi bisa mengakibatkan pengurangan nilai. Bila mengetik kurung buka, langsung ketik kurung tutupnya (content di dalam tanda kurung itu bisa diketik belakangan). Nama atribut dan method diawali huruf kecil. Bila terdiri dari dua kata atau lebih, dipisahkan dengan huruf kapital. Contoh: hitungLuasAlasTabung()
29
3/11/2015
IKG2I4 – Software Project I
TIPS & TRICKS Selalu buat indentasi yang rapi! Setiap bikin kurang buka langsung bikin kurung tutupnya, isinya bisa belakangan! Ketika membuat program, ketiklah dulu semua judul methodnya, tapi isinya bisa dikosongkan – Misalnya ada method hitungLuasParabola() tapi kita belum tahu apa rumusnya, maka tuliskan saja return 0 atau return -1 atau return 999. Dengan demikian program Anda tetap bisa dicompile tanpa error.
30
3/11/2015
IKG2I4 – Software Project I
JAVA PROGRAMMING LANGUAGE Syntax bahasa Java sangat mirip bahasa C. Silakan pelajari sendiri – Variable dan tipe data: http://www.tutorialspoint.com/java/java_basic_datatypes. htm – Percabangan: http://www.tutorialspoint.com/java/java_decision_making .htm – Perulangan: http://www.tutorialspoint.com/java/java_loop_control.htm
31
3/11/2015
IKG2I4 – Software Project I
JAVA PROGRAMMING LANGUAGE Contoh: – Variabel, tipe data (boolean, char, String, int, float), dsb – Operator aritmetika: tambah kurang kali bagi, dsb – Operator logika: AND &&, OR ||, NOT ! – Array: contoh di Java, int arrInt[] = new int[5]; – I/O: write (printf), read (nanti dipelajari lebih lanjut) – Conditional: IF-THEN-ELSE, SWITCH-CASE – Perulangan/Loop: FOR, WHILE-DO, DO-WHILE
32
3/11/2015
IKG2I4 – Software Project I
JAVA INPUT/OUTPUT WRITE: Menuliskan sesuatu ke layar (C/C++: printf/cout) – System.out.print(), System.out.println()
READ: Membaca sesuatu dari input keyboard (scanf) – System.in.read(), System.in.readln()
Selama 6 pekan ke depan, kita hanya akan memakai syntax WRITE dan menunda penggunaan syntax READ. – Di Java, utk scanf String/Integer cukup rumit syntaxnya
Kita akan fokus dulu di materi inti OOP (class dan object). – Setelah semua latihan OOP selesai, baru bikin input dari keyboard 33
3/11/2015
IKG2I4 – Software Project I
CARA COMPILE & RUN Bila hanya 1 file (berisi 1 kelas): contoh Helloworld – Compile: javac Helloworld.java – Run: java Helloworld
Bila banyak file (masing2 berisi 1 kelas atau lebih) – Compile: javac
dst… atau: javac *.java – Run: java Catatan: yang bisa di-run hanya kelas yang di dalamnya ada main . Biasanya ada satu kelas khusus Driver berisi main saja, sementara kelas-kelas lain tidak punya main 34
3/11/2015
KEYWORD Pelajari kembali keyword berikut ini: – constructor – private – public – get & set – Konstanta final
35
3/11/2015
IKG2I4 – Software Project I
THANK YOU