if184982 pengantar logika dan pemrograman pertemuan ke-6 · •method/function →menjalankan suatu...

22
IF184982 Pengantar Logika dan Pemrograman Pertemuan ke - 6 Misbakhul Munir IRFAN SUBAKTI 司馬伊凡 Мисбакхул Мунир Ирфан Субакти

Upload: trinhdan

Post on 12-Mar-2019

241 views

Category:

Documents


6 download

TRANSCRIPT

Page 1: IF184982 Pengantar Logika dan Pemrograman Pertemuan ke-6 · •Method/function →menjalankan suatu tugas/fungsi dengan mengeksekusi kode Java •constructor→tidak boleh berupa

IF184982Pengantar Logika dan Pemrograman

Pertemuan ke-6Misbakhul Munir IRFAN SUBAKTI

司馬伊凡Мисбакхул Мунир Ирфан Субакти

Page 2: IF184982 Pengantar Logika dan Pemrograman Pertemuan ke-6 · •Method/function →menjalankan suatu tugas/fungsi dengan mengeksekusi kode Java •constructor→tidak boleh berupa

constructor

• Blok kode yang mengawali obyek yang baru saja dibuat

• Mirip dengan instance method (function) tetapi bukan merupakanmethod/function karena ia tidak mempunyai kembalian tipe.

• Tipe khusus dari method/function

• Memiliki nama yang sama dengan nama class

public class ClassKu {

// Ini adalah constructor

ClassKu() {

}

}

2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman -MM Irfan Subakti

2

Page 3: IF184982 Pengantar Logika dan Pemrograman Pertemuan ke-6 · •Method/function →menjalankan suatu tugas/fungsi dengan mengeksekusi kode Java •constructor→tidak boleh berupa

constructor (lanjutan)

• Untuk membuat obyek baru dari class ClassKu dengan caramemanggil new

public class ClassKu {

// Ini adalah constructor

ClassKu() {

}

}

ClassKu classKu = new ClassKu();

2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman -MM Irfan Subakti

3

Page 4: IF184982 Pengantar Logika dan Pemrograman Pertemuan ke-6 · •Method/function →menjalankan suatu tugas/fungsi dengan mengeksekusi kode Java •constructor→tidak boleh berupa

constructor: Contoh

public class ClassKu {

String nama;

// Ini adalah constructor

ClassKu() {

this.nama = “Nama yang dibuat di constructor”;

}

public static void main(String args[]) {

ClassKu classKu = new ClassKu();

System.out.println(classKu.nama);

}

}

Output:Nama yang dibuat di constructor

2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman -MM Irfan Subakti

4

Page 5: IF184982 Pengantar Logika dan Pemrograman Pertemuan ke-6 · •Method/function →menjalankan suatu tugas/fungsi dengan mengeksekusi kode Java •constructor→tidak boleh berupa

Tipe constructor

• Ada 3 jenis tipe constructor:• Default

• Tidak mempunyai argument (no-arg constructor)

• Berparameter (mempunyai parameter: parameterized)

2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman -MM Irfan Subakti

5

Page 6: IF184982 Pengantar Logika dan Pemrograman Pertemuan ke-6 · •Method/function →menjalankan suatu tugas/fungsi dengan mengeksekusi kode Java •constructor→tidak boleh berupa

constructor: Default

• Jika kita tidak mengimplementasikan sembarang constructor → Java compiler menyisipkan default constructor mewakili kita

• Tak dapat dijumpai di file Java (.java) kita→ disisipkan ke dalam kode waktu proses kompilasi dan akan muncul di file .class :

public class ClassKu {

public static void main(String args[]) {

ClassKu classKu = new ClassKu();

}

}

public class ClassKu {

ClassKu() {

}

public static void main(String args[]) {

ClassKu classKu = new ClassKu();

}

}

2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman -MM Irfan Subakti

6

Compiler

Page 7: IF184982 Pengantar Logika dan Pemrograman Pertemuan ke-6 · •Method/function →menjalankan suatu tugas/fungsi dengan mengeksekusi kode Java •constructor→tidak boleh berupa

no-arg constructor

• Jika kita mengimplementasikan sembarang constructor maka kita tidak lagi menerimadefault constructor dari Java compiler

• constructor yang tidak memiliki argument disebut dengan no-arg constructor

• Ciri-cirinya adalah sama dengan default constructor→ di dalamnya bisa terdapatsembarang kode, tidak seperti default constructor yang tidak mempunyai kode apa-apa

public class ClassKu {

public ClassKu() {

System.out.println(“Ini adalah no-arg constructor”;

}

public static void main(String args[]) {

new ClassKu();

}

}

Output:Ini adalah no-arg constructor

2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman -MM Irfan Subakti

7

Page 8: IF184982 Pengantar Logika dan Pemrograman Pertemuan ke-6 · •Method/function →menjalankan suatu tugas/fungsi dengan mengeksekusi kode Java •constructor→tidak boleh berupa

parameterized constructor (1)

• constructor dengan argument(s) (yang juga bisa disebut dengan parameter) → parameterized constructor

public class Mahasiswa {

int mhsNRP;

String mhsNama;

public Mahasiswa(int mhsNRP, String mhsNama) {

this.mhsNRP = mhsNRP;

this.mhsNama = mhsNama;

}

public info() {

System.out.println(“NRP: “ + mhsNRP + “ Nama: “ + mhsNama);

}

public static void main(String args[]) {

Mahasiswa mhs1 = new Mahasiswa(1007, “Mukidi”);

Mahasiswa mhs2 = new Mahasiswa(1008, “Bunali”);

mhs1.info();

mhs2.info();

}

}

Output:

NRP: 1007 Nama: Mukidi

NRP: 1008 Nama: Bunali

2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman -MM Irfan Subakti

8

Page 9: IF184982 Pengantar Logika dan Pemrograman Pertemuan ke-6 · •Method/function →menjalankan suatu tugas/fungsi dengan mengeksekusi kode Java •constructor→tidak boleh berupa

parameterized constructor (2)• Kita punya 2 constructor: default dan parameterized constructor. Saat kita tidak melewatkan satu pun parameter di kala membuat obyek baru (dengan memanggil new) → default

constructor yang dipanggil. Namun saat kita melewatkan parameter maka parameterized constructor yang bersesuaian dengan parameter yang dilewatkan tadi yang akan dipanggil.

public class Mahasiswa {

private int mhsNRP;

private String mhsNama;

public Mahasiswa() {

this.mhsNRP = 1000;

this.mhsNama = “Mukiyo”;

}

public Mahasiswa(int mhsNRP) {

this.mhsNRP = mhsNRP;

this.mhsNama = “Bunali”;

}

public Mahasiswa(int mhsNRP, String mhsNama) {

this.mhsNRP = mhsNRP;

this.mhsNama = mhsNama;

}

public info() {

System.out.println(“NRP: “ + mhsNRP + “ Nama: “ + mhsNama);

}

public static void main(String args[]) {

Mahasiswa mhs1 = new Mahasiswa();

Mahasiswa mhs2 = new Mahasiswa(1006);

Mahasiswa mhs3 = new Mahasiswa(1007, “Mukidi”);

mhs1.info();

mhs2.info();

mhs3.info();

}

}

Output:

NRP: 1000 Nama: Mukiyo

NRP: 1006 Nama: Bunali

NRP: 1007 Nama: Mukidi 2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman -MM Irfan Subakti

9

Page 10: IF184982 Pengantar Logika dan Pemrograman Pertemuan ke-6 · •Method/function →menjalankan suatu tugas/fungsi dengan mengeksekusi kode Java •constructor→tidak boleh berupa

parameterized constructor (3)

• Output kode di bawah ini adalah compilation error (kesalahan kompilasi) → kode Mahasiswa mhs = new Mahasiswa()memanggil default constructor yang tidak kita punyai dalam program.

• Saat kita tidak mengimplementasikan sconstructor apa pun di dalam class→ compiler akan menyisipkan default constructor dalamkode kita. Namun saat kita mengimplementasikan sembarang constructor→ kita tidak akan lagi menerima default constructor daricompiler ke kode kita

public class Mahasiswa {

private int mhsNRP;

private String mhsNama;

public Mahasiswa(int mhsNRP, String mhsNama) {

this.mhsNRP = mhsNRP;

this.mhsNama = mhsNama;

}

public info() {

System.out.println(“NRP: “ + mhsNRP + “ Nama: “ + mhsNama);

}

public static void main(String args[]) {

Mahasiswa mhs = new Mahasiswa();

mhs.info();

}

}

2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman -MM Irfan Subakti

10

Page 11: IF184982 Pengantar Logika dan Pemrograman Pertemuan ke-6 · •Method/function →menjalankan suatu tugas/fungsi dengan mengeksekusi kode Java •constructor→tidak boleh berupa

Rantai constructor

• Saat sebuah constructormemanggil constructor yang lain dalam class yang sama→ rantai constructor

public class Mahasiswa {

...

Mahasiswa() {

this(“Mukidi”);

}

Mahasiswa(String nama) {

this(nama, 1007);

}

Mahasiswa(String nama, int nrp) {

this.nama = nama;

this.nrp = nrp;

}

public static void main(String args[]) {

Mahasiswa mhs = new Mahasiswa();

...

}

}

2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman -MM Irfan Subakti

11

Page 12: IF184982 Pengantar Logika dan Pemrograman Pertemuan ke-6 · •Method/function →menjalankan suatu tugas/fungsi dengan mengeksekusi kode Java •constructor→tidak boleh berupa

super()

• Saat sebuah constructor child class (klas anak) dipanggil → secara implisit constructor parent class (klas induk) juga akandipanggil. Ini artinya secara compiler akan menyisipkan super(); pada awal constructor child class

class Orang {

Orang() {

System.out.println(“Constructor Orang”);

}

}

class Mahasiswa extends Orang {

Mahasiswa() {

// Compiler menyisipkan “super();” disini

System.out.println(“Constructor Mahasiswa”);

}

public static void main(String args[]) {

new Mahasiswa();

}

}

Output:

Constructor Orang

Constructor Mahasiswa

2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman -MM Irfan Subakti

12

Page 13: IF184982 Pengantar Logika dan Pemrograman Pertemuan ke-6 · •Method/function →menjalankan suatu tugas/fungsi dengan mengeksekusi kode Java •constructor→tidak boleh berupa

constructor Overloading

• Konsep di mana satu constructor bisa memiliki daftar parameter yang berbeda→ sehingga setiap constructormenjalankan tugasyang berbeda

• Di bawah ini terdapat 3 overloaded constructor →mereka harus memiliki daftar parameter yang berbeda

public class Mahasiswa {

...

Mahasiswa() {

...

}

Mahasiswa(String nama) {

...

}

Mahasiswa(String nama, int nrp) {

...

}

...

}

2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman -MM Irfan Subakti

13

Page 14: IF184982 Pengantar Logika dan Pemrograman Pertemuan ke-6 · •Method/function →menjalankan suatu tugas/fungsi dengan mengeksekusi kode Java •constructor→tidak boleh berupa

Java copy constructor

• Menyalin nilai dari satu obyek ke obyek yang lain

public class Mahasiswa {

String nama;

Mahasiswa(String nama) {

this.nama = nama;

}

// Ini adalah Copy Constructor -> menyalin nilai dari satu obyek ke obyek yg lain

// (obyek yg memanggil constructor ini)

Mahasiswa(Mahasiswa mahasiswa) {

nama = mahasiswa.nama;

}

void cetakNama() {

System.out.println(“Nama: ” + nama);

}

public static void main(String args[]) {

Mahasiswa mhs1 = new Mahasiswa(“Mukidi”);

// Lewatkan obyek sebagai argument ke constructor -> Ini akan memanggil Copy Constructor

Mahasiswa mhs2 = new Mahasiswa(mhs1);

mhs1.cetakNama();

mhs2.cetakNama();

}

}

Output:

Nama: Mukidi

Nama: Mukidi

2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman -MM Irfan Subakti

14

Page 15: IF184982 Pengantar Logika dan Pemrograman Pertemuan ke-6 · •Method/function →menjalankan suatu tugas/fungsi dengan mengeksekusi kode Java •constructor→tidak boleh berupa

Method/function vs constructor

• Tujuan• constructor→ inisialisasi obyek dari suatu class• Method/function→menjalankan suatu tugas/fungsi dengan mengeksekusi

kode Java

• constructor→ tidak boleh berupa abstract, final, static dan synchronized

• Method/function → boleh berupa abstract, final, static dan synchronized

• constructor→ tidak memiliki return type (tipe pengembalian)

• Method/function →memiliki return type

2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman -MM Irfan Subakti

15

Page 16: IF184982 Pengantar Logika dan Pemrograman Pertemuan ke-6 · •Method/function →menjalankan suatu tugas/fungsi dengan mengeksekusi kode Java •constructor→tidak boleh berupa

Latihan 1: Genap

• Cetaklah bilangan genap dari 0 sampai bilangan yang dimasukkan user

• Contoh hasil:

Masukkan bilangan: 10

0

2

4

6

8

10

2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman -MM Irfan Subakti

16

Page 17: IF184982 Pengantar Logika dan Pemrograman Pertemuan ke-6 · •Method/function →menjalankan suatu tugas/fungsi dengan mengeksekusi kode Java •constructor→tidak boleh berupa

Latihan 2: Terkecil

• Buatlah program yang menerima input/masukan bilangan bulat dari user

• Bila user memasukkan bilangan negatif, tampilkan bilangan terkecil darisemua bilangan yang dimasukkan user.

• Contoh hasil:

Masukkan bilangan: 10

Masukkan bilangan: 15

Masukkan bilangan: 3

Masukkan bilangan: -7

Bilangan terkecil: 3

2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman -MM Irfan Subakti

17

Page 18: IF184982 Pengantar Logika dan Pemrograman Pertemuan ke-6 · •Method/function →menjalankan suatu tugas/fungsi dengan mengeksekusi kode Java •constructor→tidak boleh berupa

Latihan 2: Terkecil (program)

• Buatlah program yang menerima input/masukanbilangan bulat dari user

• Bila user memasukkan bilangan negatif, tampilkanbilangan terkecil dari semua bilangan yang dimasukkan user.

• Contoh hasil:

Masukkan bilangan: 10

Masukkan bilangan: 15

Masukkan bilangan: 3

Masukkan bilangan: -7

Bilangan terkecil: 3

2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman -MM Irfan Subakti

18

Page 19: IF184982 Pengantar Logika dan Pemrograman Pertemuan ke-6 · •Method/function →menjalankan suatu tugas/fungsi dengan mengeksekusi kode Java •constructor→tidak boleh berupa

Latihan 3: Bintang

• Program yang menerima masukan bilangan bulat n dari user. Tampilkankarakter * (bintang) sebanyak n di baris pertama. Lalu tampilkan karakter * sebanyak n-1 di baris ke-2, n-2 di baris ke-3, n-3 di baris ke-4, dst.

• Contoh hasil:Masukkan bilangan: 6

******

*****

****

***

**

*

2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman -MM Irfan Subakti

19

Page 20: IF184982 Pengantar Logika dan Pemrograman Pertemuan ke-6 · •Method/function →menjalankan suatu tugas/fungsi dengan mengeksekusi kode Java •constructor→tidak boleh berupa

Latihan 4: Kebalikan

• Program yang menerima masukan/input sebuah kata dari user. Tampilkan kebalikan kata darimasukan/input user tadi.

• Contoh hasil 1:

Masukkan kata: katak

katak kebalikannya: katak

katak adalah palindrome

• Contoh hasil 2:

Masukkan kata: plastik

plastik kebalikannya: kitsalp

plastik bukan palindrome

2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman -MM Irfan Subakti

20

Page 21: IF184982 Pengantar Logika dan Pemrograman Pertemuan ke-6 · •Method/function →menjalankan suatu tugas/fungsi dengan mengeksekusi kode Java •constructor→tidak boleh berupa

Latihan 5: Pertama di Alfabet

• Program yang menerima masukan/input sebuah kata dari user. Tampilkan karakter alfabet pertama dari kata itu.

• Contoh hasil 1:

Masukkan kata: katak

Karakter pertama alfabetnya: a

• Contoh hasil 2:

Masukkan kata: heboh

Karakter pertama alfabetnya: b

2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman -MM Irfan Subakti

21

Page 22: IF184982 Pengantar Logika dan Pemrograman Pertemuan ke-6 · •Method/function →menjalankan suatu tugas/fungsi dengan mengeksekusi kode Java •constructor→tidak boleh berupa

Latihan 6: Urutan Alfabet

• Program yang menerima masukan/input sebuah kata dari user. Tampilkan karakter dari kata itu sesuaidengan urutan alfabetnya. Dari Java API untuk String, gunakan fungsi substring()→mendapatkan sub (bagian) dari sebuah kata, juga fungsi indexOf() →mendapatkan indeks dari suatukarakter di suatu kata.

• Contoh hasil:

Masukkan kata: monyet

Urutan alfabetnya:

e

m

n

o

t

y

2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman -MM Irfan Subakti

22