UAS Praktikum OOP Kelas IF4B

Source Code I – Bahasa C++

class A{
   float a;
   int b;

public:
   A(int bb){};
   ~A(){};
   void setA(float a){};
   int getB(){};
};
  1. Dari kutipan Source Code I, pernyataan berikut yang benar adalah?
    a. Benar jika pada baris 4 diberikan perintah A().
    b. Atribut a dan b mempunyai visibilitas private.
    c. Pada kelas A, geter cukup dibuat sebagai prosedur tanpa nilai balikan dan tanpa parameter.

    Jawaban :
    B. Pada bahasa C++, jika kita tidak menuliskan visibilitas suatu atribut, maka otomatis atribut tersebut memiliki visibilitas private.
    Pilihan A salah, karena konstruktor
    A() harus memiliki visibilitas public.
    Pilihan C salah, karena geter dibuat sebagai fungsi dan memiliki nilai balikan.

  2. Dari kutipan source code I, pernyataan berikut yang benar adalah?
    a. setA() berkaitan dengan siklus hidup objek yaitu fase inisialisasi.
    b. ~A() berkaitan dengan proses pengalokasian objek di memori komputer.
    c. Semua jawaban salah.

    Jawaban :
    C. Semua jawaban salah karena :
    Pada pilihan A,
    setA() berkaitan dengan siklus hidup objek fase manipulasi, bukan inisialisasi, dan
    pilihan B,
    ~A() berkaitan dengan proses dealokasi objek, bukan pengalokasian.

  3. Dari kutipan source code I, pernyataan berikut yang benar adalah?
    a. Jika ditambahkan method A(){} maka terjadi fenomena overriding.
    b. Untuk memberi nilai atribut float a, pada method setA() kita dapat menambahkan perintah this->a = a;.
    c. Tidak bisa dilakukan overloading karena tidak ada inheritance.

    Jawaban :
    B, sudah jelas.
    Pilihan A, jika ditambahkan method
    A(){} maka yang terjadi adalah fenomena overloading.
    Pilihan C, overloading tetap bisa dilakukan.

Source Code II – Bahasa C++

class X{
protected:
   int x1;
public:
   int x2;
   X(){ cout<<”X hidup ”; };
   ~X(){ cout<<”X mati ”; };
};
class Y:public X{
public:
   Y(){ cout<<”Y hidup ”; };
   ~Y(){ cout<<”Y mati ”;};
   void tampilX1(){ cout<<x1; };
   void tampilX2(){ cout<<x2; };
};
int main(){

   Y *myY1;
   myY1 = new Y;
   delete myY1;
   return 0;
}
  1. Perhatikan Source Code II. Pernyataan berikut yang benar adalah?
    1. Jika perintah baris 2 diganti private, maka baris 13 dan 14 keduanya error.
    2. Jika pada baris 17 ditambahkan perintah X myX;, maka mengaktifkan Y() dahulu baru kemudian X().
    3. Perintah pada baris 19 menghasilkan output : “X hidup Y hidup “.

    Jawaban :
    C. Ketika konstruktor anak dijalankan, konstruktor induk akan diaktifkan terlebih dahulu.
    Pilihan A, hanya baris 13 yang error.
    Pilihan B terbalik karena konstruktor induk
    X() yang aktif terlebih dahulu..

  2. Perhatikan Source Code II. Pernyataan berikut yang benar adalah?
    1. Penghancuran objek anak tidak berakibat destruktor kelas induk aktif.
    2. Perintah baris 20 akan menghasilkan output : “X mati Y mati “.
    3. Semua jawaban salah.

    Jawaban :
    C. Semua jawaban salah karena :
    Pilihan A, jika objek anak dihancurkan, destruktor kelas induk akan ikut aktif.
    Pilihan B, outputnya adalah : “
    Y mati X mati “. Dimana destruktor anak yang aktif terlebih dahulu.

Source Code III – Bahasa Java

class Aku{
   int x;
   static int y;
   static void galau(){};
};
abstract class Kamu{

};
public class Dia{
   static void main(String args[]){
     Aku akuRapopo = new Aku();

   }
}
  1. Perhatikan Source Code III, maka pernyataan yang salah adalah?
    1. Pada baris 12 dapat ditambahkan perintah akuRapopo.galau();.
    2. Penambahan perintah akuRapopo.x = 1; pada baris 12 tidak akan menyalahi aturan OOP di bahasa Java.
    3. Semua jawaban benar.

    Jawaban :
    Mari kita tinjau jawabannya satu per satu.
    Pilihan A benar. Pada baris 12 dapat ditambahkan perintah
    akuRapopo.galau();.
    Pilihan B benar. Penambahan perintah
    akuRapopo.x = 1; pada baris 12 tidak akan menyalahi aturan OOP di bahasa Java. Referensi : http://docs.oracle.com/javase/tutorial/java/javaOO/accesscontrol.html

    Pilihan C benar, karena semua jawaban benar.
    Jadi nomor 6 bonus 🙂

  2. Perhatikan Source Code III, maka pernyataan yang benar adalah?
    1. Source code tersebut harus disimpan dengan nama file Aku.java.
    2. Pada bahasa Java terdapat Garbage Collection sehingga bahasa Java tidak mengenal konstruktor.
    3. Kamu tidak dapat digunakan untuk instansiasi objek.

    Jawaban :
    C. Kamu adalah kelas Abstract dan tidak dapat diinstansiasi.
    Pilihan A salah, karena seharusnya disimpan dengan nama file Dia.java
    Pilihan C salah, karena Garbage Collection menggantikan fungsi destruktor.

  3. Perhatikan Source Code III, maka pernyataan yang benar adalah?
    1. Pada baris 7, penambahan abstract void cobaKamu(){ System.out.print
      (“Oke”); };
      adalah benar.
    2. Pada baris 13 dapat ditambahkan perintah Kamu kamuJahat = new Kamu();
    3. Semua jawaban salah.

    Jawaban :
    C
    . Semua jawaban saah karena :
    Pilihan A salah, karena method abstract haruslah kosong tanpa definisi.
    Pilihan B salah, karena kelas abstract
    Kamu tidak dapat diinstansiasi.

Source Code IV – Bahasa Java

public class Main{
   static void main(String args[]){
     int i = 0;
     int j = 0;
     int x = 0;
     for(i=0; i<10; i++){
         for(j=i; j<10; j++){
           x++;
         }
         x--;
     }
     System.out.println(x);
   }
}
  1. Output dari Source Code IV adalah _45_. Sudah jelas 🙂

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s