if184982 pengantar logika dan pemrograman pertemuan ke-6 · •method/function →menjalankan suatu...
TRANSCRIPT
IF184982Pengantar Logika dan Pemrograman
Pertemuan ke-6Misbakhul Munir IRFAN SUBAKTI
司馬伊凡Мисбакхул Мунир Ирфан Субакти
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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