🔰Job Sheet 1: Objek

Tujuan Praktikum

Setelah melakukan praktikum ini, mahasiswa diharapkan mampu,

  • Memahami kembali konsep objek dan class.

  • Mengimplementasikan objek dan kelas berdasarkan studi kasus.

Kasus 1 - Kelas "Ball"

Sebuah kelas bernama Ball merupakan representasi dari bola yang memantul yang didesain dengan menggunakan class diagram dibawah ini. Dia memiliki radius, posisi x dan posisi y. Bola tersebut dapat bergerak ke arah x dan y sebesar Δx dan Δy. Nilai dapat berupa nilai positif maupun negatif. Fungsi reflectHorizontal() dan reflectVertical() merupakan fungsi yang digunakan untuk menggambarkan pantulan bola ketika membentur benda yang lain.

Tugas 1

  1. Implementasikan class Ball sesuai dengan class diagram yang telah dibuat. Gunakan test case yang digunakan untuk menguji apakah implementasi yang Anda lakukan sesuai dengan desain yang diberikan.

  2. Modifikasi class Ball agar memiliki konstruktor tanpa parameter.

  3. Modifikasi seluruh atribut class Ball sehingga memiliki access modifier berjenis private.

  4. Modifikasi seluruh method class Ball sehingga dapat diakses oleh class yang lain.

  5. Modifikasi konstruktor pada class Ball sehingga memiliki parameter speed dan direction menggantikan Δx dan Δy untuk menggambarkan arah bola.

Test Case Tugas 1

/*
* Author: Chua Hock-Chuan
*/
public class TestMain {
   public static void main(String[] args) {
      // Test constructor and toString()
      Ball ball = new Ball(1.1f, 2.2f, 10, 3.3f, 4.4f);
      System.out.println(ball);  // toString()

      // Test Setters and Getters
      ball.setX(80.0f);
      ball.setY(35.0f);
      ball.setRadius(5);
      ball.setXDelta(4.0f);
      ball.setYDelta(6.0f);
      System.out.println(ball);  // toString()
      System.out.println("x is: " + ball.getX());
      System.out.println("y is: " + ball.getY());
      System.out.println("radius is: " + ball.getRadius());
      System.out.println("xDelta is: " + ball.getXDelta());
      System.out.println("yDelta is: " + ball.getYDelta());

      // Bounce the ball within the boundary
      float xMin = 0.0f;
      float xMax = 100.0f;
      float yMin = 0.0f;
      float yMax = 50.0f;
      for (int i = 0; i < 15; i++) {
         ball.move();
         System.out.println(ball);
         float xNew = ball.getX();
         float yNew = ball.getY();
         int radius = ball.getRadius();
         // Check boundary value to bounce back
         if ((xNew + radius) > xMax || (xNew - radius) < xMin) {
            ball.reflectHorizontal();
         }
         if ((yNew + radius) > yMax || (yNew - radius) < yMin) {
            ball.reflectVertical();
         }
      }
   }
}

Kasus 2 - Kelas "Author" dan "Book"

Sebulah kelas bernama Author merupakan representasi dari pengarang sebuah buku yang didesain seperti class diagram dibawah ini. Kelas Book merupakan representasi dari buku yang dikarang oleh instance dari Author seperti yang terlihat pada variabel didalam kelas Book.

Tugas 2

  1. Implementasikan kelas Author dan Book sesuai dengan desain yang telah diberikan.

  2. Verifikasi hasil kelas yang Anda buat dengan menggunakan test case yang telah disediakan.

  3. Tambahkan konstruktor pada kelas Book sehingga instance dapat dibuat tanpa harus memasukkan parameter.

Test Case Tugas 2

/*
* Author: Chua Hock-Chuan
*/
public class TestMain {
   public static void main(String[] args) {
      // Test Author class
      Author a1 = new Author("Tan Ah Teck", "ahteck@nowhere.com");
      System.out.println(a1);

      a1.setEmail("ahteck@somewhere.com");
      System.out.println(a1);
      System.out.println("name is: " + a1.getName());
      System.out.println("email is: " + a1.getEmail());

      // Test Book class
      Book b1 = new Book("12345", "Java for dummies", a1, 8.8, 88);
      System.out.println(b1);

      b1.setPrice(9.9);
      b1.setQty(99);
      System.out.println(b1);
      System.out.println("isbn is: " + b1.getIsbn());
      System.out.println("name is: " + b1.getName());
      System.out.println("price is: " + b1.getPrice());
      System.out.println("qty is: " + b1.getQty());
      System.out.println("author is: " + b1.getAuthor());  // Author's toString()
      System.out.println("author's name: " + b1.getAuthorName());
      System.out.println("author's name: " + b1.getAuthor().getName());
      System.out.println("author's email: " + b1.getAuthor().getEmail());
   }
}

Pengumpulan Tugas

Kumpulkan tugas praktikum melalui LMS dengan ketentuan,

  1. Gunakan template yang telah ditentukan.

  2. Format nama file: [JS01]NoAbsen_Nama Lengkap.pdf

  3. Kompres file java menjadi satu (pisahkan packager atau folder untuk setiap tugas) dengan format nama file: [JS01-CODE]NoAbsen_Nama Lengkap.zip

Last updated