Anda di halaman 1dari 13

Pemrograman

Lanjut
UTS Daring – Pilihan Ganda
Dosen : Bayu Rahayudi
Waktu : 75 menit
Sifat : Tutup Buku & Gadget
[ SOAL ]

1. Hubungan antar kelas yang paling kuat dari relasi berikut adalah:
a. Komposisi
b. Asosiasi
c. Agregasi
d. Enkapsulasi
e. Abstraksi

2. Berikut ini pernyataan yang paling benar mengenai abstraksi adalah


a. Menyembunyikan atribut yang diperlukan tergantung dari kasusnya
b. Menyembunyikan kerumitan dari suatu proses dan berorientasi pada hal-hal yang diperlukan
c. Menyembunyikan data supaya tidak bisa diakses secara sewenang-wenang
d. Membuat supaya suatu class tidak dapat diinstantiasi (abstract)
e. Membuat supaya suatu class dapat menjadi berbagai bentuk class

3. Perhatikan kode berikut:

1 class Circle {
2 private double jarijari;
3 private final static double PI = 3.1415;
4 public Circle() { ... }
5 public Circle(int diameter) { ... }
6 public Circle(double jarijari) { ... }
7 public double getLuas() {
8 return (PI * jarijari * jarijari);
9 }
10 }

Class Circle memiliki 3 macam konstruktor yaitu, konstruktor tanpa parameter, konstruktor dengan
satu parameter integer, dan konstruktor dengan satu parameter double. Tentukan dari pilihan yang
ada, manakah syntax kode konstruktor yang paling tepat untuk masing-masing konstruktor tersebut.
Isi konstruktor yang tepat dengan 1 parameter integer yang dianggap sebagai diameter dari
lingkaran adalah:
a. public Circle(int diameter) {this.jarijari = 10;}
b. public Circle(int diameter){ jarijari = diameter * 2;}
c. public Circle(int diameter)
{this.jarijari = diameter;}

1
d. public Circle(int jarijari)
{this.jarijari = jarijari;}
e. public Circle(int diameter)
{jarijari = diameter / 2.0;}

4. Perhatikan kode nomor 3 diatas!


isi Konstruktor tanpa parameter nilai default dari jarijari adalah 10:

a. public Circle()
{this.jarijari = 0;}
b. public Circle()
{this.jarijari = j;}
c. public Circle()
{this.jarijari = 10;}
d. public Circle()
{this(diameter);}
e. public Circle()
{this(jarijari);}

5. Perhatikan kode nomor 3 diatas!


Konstruktor dengan 1 parameter double yang dianggap sebagai jari-jari dari lingkaran:

a. public Circle(double jarijari)


{this.jarijari = 10;}
b. public Circle(double jarijari)
{this.jarijari = jarijari * 2;}
c. public Circle(double jarijari)
{this.jarijari = jarijari;}
d. public Circle(double jarijari)
{this.jarijari = (int) jarijari / 2;}
e. public Circle(double jarijari)
{this.jarijari = jarijari / 2.0;}

6. Perhatikan kode berikut ini:


1 public class Titik {
2 private int x;
3 private int y;
4
5 public Titik() {
6 x = 1;
7 y = 1;
8 }

2
9
10 public setXY(int x1, int y1) {
11 x = x1;
12 y = y1;
13 }
14
15 public int getX() {
16 return x;
17 }
18
19
public int getY() {
20
return y;
21
}
}

Deklarasi untuk array of objects untuk menyimpan sejumlah titik yang benar adalah...
a. Titik [] arrTitik = new Titik;
b. Titik [] arrTitik = new Titik[3];
c. Titik arrTitik[] = new Titik();
d. Titik arrTitik[] = new Titik(3);
e. Titik arrTitik[] = new Titik arrTitik();

3
7. Perhatikan kode di bawah ini:

1 class PersegiPanjang {
2 private int panjang;
3 private int lebar;
4
5 public PersegiPanjang(int panjang, int lebar) {
6 this.panjang = panjang;p
7 this.lebar = lebar;
8 }
9
10 public int hitungLuas() {
11
return panjang*lebar;
12
}
13
}

Berdasarkan kode di atas, cara yang benar untuk instansiasi objek dari kelas tersebut melalui variabel
pp adalah...
a. PersegiPanjang pp;
b. PersegiPanjang pp = new PersegiPanjang();
c. PersegiPanjang pp = new PersegiPanjang(2,3);
d. PersegiPanjang pp = new PersegiPanjang(2);
e. Jawaban b dan c benar

8. Perhatikan kode program berikut:

1 class Circle {
2 private double jarijari;
3 private final static double PI = 3.1415;
4 public Circle() { ... }
5 public Circle(int diameter) { ... }
6 public Circle(double jarijari) { ... }
7 public double getLuas() {
8 return (PI * jarijari * jarijari);
9 }
10 }
11
12
class CobaCircle {
13
Circle C1 = new Circle();
14
System.out.println("Luas = " + C1.getLuas());
15
Circle C2 = new Circle(10);
16

4
17 System.out.println("Luas = " + C2.getLuas());
18 Circle C3 = new Circle(10.00);
19 System.out.println("Luas = " + C3.getLuas());
}

(Perhatikan Class CobaCircle)


Perkiraan output dari perintah keluaran pada baris 18 adalah:
a. Luas = 10
b. Luas = 78.5375
c. Luas = 10.00
d. Luas = 628.150
e. Luas = 314.150

9. Perhatikan kode di bawah ini:

1 public class Titik {


2 private int x;
3 private int y;
4
5 public Titik() {
6 x = 1;
7 y = 1;
8 }
9
10 public setXY(int x1, int y1) {
11
x = x1;
12
y = y1;
13
}
14
15
public int getX() {
16
return x;
17
18 }
19
20 public int getY(){
21 return y;
22 }
}

Sebuah kotak dapat dibuat hanya dengan mengetahui dua buah titik yaitu titik kiri atas dan kanan
bawah. Apabila p1 dan p2 diasumsikan sebagai koordinat kiri atas dan kanan bawah sebuah kotak,
maka method kotak dapat dideklarasikan sebagai berikut...

5
a. public kotak(Titik p1, Titik p2)
b. public void kotak(Titik p1, Titik p2, Titik p3)
c. public void kotak(Titik p1, Titik p2)
d. public void kotak(int p1, int p2)
e. public void kotak(Titik p1, int p2)

dalam soal dibilang kita perlu dua buah titik. Dalam titik terdapat int x yang adalah sumbu x dan int y
yang adalah sumbu y.

10. Berikut pernyataan yang benar mengenai konstruktor, kecuali...


a. Sebuah konstruktor yang tidak memiliki parameter disebut dengan no-arg
constructor
b. Konstruktor tidak harus memiliki nama yang sama dengan nama kelasnya
c. Konstruktor tidak memiliki nilai balik begitu juga void
d. Konstruktor digunakan untuk menginisialisasi objek
e. Kata kunci new digunakan untuk memanggil konstruktor

11. Perhatikan kode di bawah ini:

1 public class Circle {


2 private int radius;
3 private static int jml=0;
4
5 public Circle(int r){
6 radius = r;
7 jml++; }
8
9 public int getRadius(){
10 return radius;
11
}
12
13
public int getJml(){
14
return jml;}
15
}
16
17
18 class Test {
19 public static void main(String args[]) {
20 Circle c1 = new Circle(5);
21 Circle c2 = new Circle(10);
22 System.out.print(c1.getRadius()+" ");
23 System.out.print(c2.getRadius()+" ");
24 System.out.print(c1.getJml()+" ");
System.out.print(c2.getJml()+" ");}
}

6
Jika deklarasi static pada baris 3 dihilangkan, apa yang akan ditampilkan dari hasil eksekusi baris 20
– 23?
a. 5511
b. 5 10 1 1
c. 5 10 2 2
d. 5 10 1 2
e. 10 10 2 2

Jika variabel static pada jumlah dihilangkan, maka nilai jml dari setiap objek (c1 dan c2) akan selalu
satu, tidak bertambah.

12. Perhatikan kode berikut ini:

1 class PersegiPanjang{
2 private int panjang;
3 private int lebar;
4
5 public PersegiPanjang(int panjang, int lebar) {
6 this.panjang = panjang;
7 this.lebar = lebar;
8 }
9
10 public int hitungLuas() {
11
return panjang*lebar;
12
}
13
}

Berdasarkan kode di atas, diasumsikan terdapat sebuah objek yang dibuat dan diacu melalui variabel
referensi bernama pp1. Variabel pp1 tersebut berada di luar kelas dari kelas PersegiPanjang. Maka
source code berikut yang benar untuk dapat mengakses atribut atau metode dari objek tersebut
adalah...
a. System.out.println(“Panjang: ” + pp1.panjang);
b. System.out.println(“Luas: ” + pp1.hitungLuas());
c. System.out.println(“Panjang: ” + pp1.lebar);
d. System.out.println(“Luas: ” + pp1.panjang * pp1.lebar);
e. System.out.println(“Keliling: ” + 2*( pp1.panjang + pp1.lebar));
Panjang dan lebar memiliki modifier private, tidak bisa langsung dipanggil

13. Perhatikan kode di bawah ini:

7
1 package p1;
2
3 public class C1 {
4 public int x;
5 private int y;
6
7 public void m1(){}
8 private void m2(){}
9 }

Dengan mempertimbangkan kode di atas, maka yang terjadi pada kode di bawah ini adalah:

1 package p1;
2
3 public class C3 {
4 public static void main(String args[]) {
5 C1 benda1 = new C1();
6 benda1.y = 4;
7 benda1.x = 10;
8 System.out.print(benda1.x);
9 }
10 }

a. Error pada baris 6


b. Error pada baris 7
c. Keluar tulisan 10 di layar
d. Keluar tulisan 4 di layar
e. Tidak keluar apa-apa di layar

8
14. Perhatikan kode di bawah ini:

1 class Circle {
2 private double jarijari;
3 private final static double PI = 3.1415;
4 public Circle() { ... }
5 public Circle(int diameter) {
6 this.jarijari = diameter/2d;
7 }
8 public Circle(double jarijari) { ... }
9 public double getLuas() {
10 return (PI * jarijari * jarijari);
11
}
12
}
13
14
class CobaCircle {
15
public static void main(String[] args) {
16
Circle C1 = new Circle();
17
18 System.out.println("Luas = " + C1.getLuas());
19 Circle C2 = new Circle(10);
20 System.out.println("Luas = " + C2.getLuas());
21 Circle C3 = new Circle(10.00);
22 System.out.println("Luas = " + C3.getLuas());
23 }
}

(Perhatikan class CobaCircle)


Jika constructor yang dipanggil saat baris 16 dieksekusi memberikan nilai default jarijari=10, maka
perkiraan output dari perintah keluaran pada baris 17 adalah:
a. Luas = 0
b. Luas = 78.5375
c. Luas = 10
d. Program Error
e. Luas = 314.150

15. Pada kode nomor 14, output dari baris ke-19 adalah:
a. Luas = 10
b. Luas = 78.5375
c. Luas = 3.1415
d. Luas = 628.150
e. Luas = 314.150
16. Perhatikan ilustrasi dibawah ini:

9
Ilustrasi di atas disebut sebagai hubungan:
a. Komposisi
b. Asosiasi
c. Agregasi
d. Enkapsulasi
e. Semua salah

10
17. Perhatikan kode di bawah ini:
1 public class Circle {
2 private static int radius;
3 private static int jml=0;
4
5 public Circle(int r){
6 radius = r;
7 jml++;
8 }
9
10 public int getRadius(){
11
return radius;
12
}
13
14
public int getJml(){
15
return jml;
16
}
17
18 }
19
20 class Test {
21 public static void main(String args[]) {
22 Circle c1 = new Circle(5);
23 Circle c2 = new Circle(10);
24 System.out.print(c1.getRadius()+" ");
25 System.out.print(c2.getRadius()+" ");
26 System.out.print(c1.getJml()+" ");
27 System.out.print(c2.getJml()+" ");}
28 }
}

Jika pada baris 2 ditambahkan deklarasi static, apa yang akan ditampilkan dari hasil eksekusi baris 20
– 23?
a. 5511
b. 5 10 1 1
c. 5 10 2 2
d. 5 10 1 2
e. 10 10 2 2

11
18. Apakah nilai yang tersimpan dalam sebuah field bernama obj berikut?
Kotak obj;
a. String kosong
b. Null
c. Sembarang alamat memori
d. Tidak diketahui
e. Alamat memori yang dari objek kelas Kotak

19. Variabel atau atribut yang mempunyai akses modifier default...


a. Nilainya tidak bisa diakses oleh kelas manapun
b. Bisa diakses oleh kelas lain yang berada dalam package yang sama
c. Bisa diakses oleh kelas lain
d. Dapat diakses secara langsung dengan memanggil nama kelasnya dengan diikuti tanda titik
e. Bisa diakses oleh aplikasi lain

20. Berikut adalah keuntungan prinsip enkapsulasi dalam Pemrograman Berorientasi Objek, kecuali:
a. Keamanan
b. Konsistensi data
c. Data Hiding
d. Akses data lebih luas dan terbuka
e. Pembatasan akses data

21. Pernyataan yang SALAH mengenai static di Java adalah...


a. Digunakan untuk membuat method atau field milik class, bukan milik object
b. Bisa dipanggil tanpa perlu membuat object
c. Variabel yang static dapat diakses oleh method yang non-static
d. Method yang static dapat mengakses method yang non-static
e. Memanggil fields atau method yang static dengan menyebutkan nama class-nya terlebih
dahulu

12

Anda mungkin juga menyukai