Anda di halaman 1dari 16

LAPORAN PRAKTIKUM

IMPLEMENTASI PERANGKAT LUNAK

MODUL 4
Design Pattern & Object Composing

DISUSUN OLEH :
Moh Iqbal Kharisma S 3411211106

PROGRAM STUDI INFORMATIKA


FAKULTAS SAINS DAN INFORMATIKA
UNIVERSITAS JENDERAL ACHMAD YANI
TAHUN 2023
DAFTAR ISI

DAFTAR ISI ......................................................................................................................... i

BAB I. HASIL PRAKTIKUM ......................................................................................... 1

I.1 Judul Latihan/Pekerjaan .......................................................................................... 1

I.1.A. Langkah Kerja/Source Code............................................................................. 1

I.1.B. Screenshot ....................................................................................................... 1

I.1.C. Analisis ............................................................................................................ 2

BAB II. TUGAS PRAKTIKUM ....................................................................................... 6

II.1 Judul Tugas/Pekerjaan ............................................................................................ 6

II.1.A. Langkah Kerja/Source Code ......................................................................... 6

II.1.B. Screenshot .................................................................................................... 6

II.1.C. Analisis ........................................................................................................ 7

BAB III. KESIMPULAN ................................................................................................. 13

i
BAB I. HASIL PRAKTIKUM

I.1 Latihan
Dalam praktikum ini, akan dilakukan menggunakan Java. Contoh kasus yang

digunakan adalah Class Student.

I.1.A. Langkah Kerja/Source Code


Mode : Student.java

public class Student {

private String rollNo;

private String name;

public String getRollNo() {

return rollNo;

public void setRollNo(String rollNo) {

this.rollNo = rollNo;

public String getName() {

return name;

public void setName(String name) {

this.name = name;

(Screenshot hasil)

1
Gambar 1. Hasil Compile

I.1.B. Analisis
Program ini adalah contoh dari prinsip enkapsulasi dalam pemrograman berorientasi
objek, di mana data (atribut) disimpan sebagai pribadi dan diakses melalui metode publik. Ini
membantu dalam menjaga integritas data dan memungkinkan kontrol atas bagaimana data
diakses dan diubah.

2
View : StudentView.java

public class StudentView {

public void printStudentDetails(String studentName, String

studentRollNo){

System.out.println("Student: ");

System.out.println("Name: " + studentName);

System.out.println("Roll No: " + studentRollNo);

I.1.C. Analisis
Program ini dapat digunakan sebagai bagian dari aplikasi yang lebih besar yang
menggunakan pola desain MVC, di mana kelas ini digunakan untuk menampilkan informasi
siswa kepada pengguna.

Controller : StudentController.java
private Student model;
private StudentView view;
public StudentController(Student model, StudentView view){
this.model = model;
this.view = view;
}
public void setStudentName(String name){
model.setName(name);
}
public String getStudentName(){
return model.getName();
}
public void setStudentRollNo(String rollNo){
model.setRollNo(rollNo);

3
}
public String getStudentRollNo(){
return model.getRollNo();
}
public void updateView(){
view.printStudentDetails(model.getName(), model.getRollNo());
}
}

I.1.D. Analisis
Program ini mengimplementasikan pola desain MVC dengan jelas. Kelas
StudentController bertindak sebagai penghubung antara model (Student) dan tampilan
(StudentView), dan juga memberikan metode untuk mengatur dan mengambil data siswa serta
memperbarui tampilan ketika data berubah. Ini membantu memisahkan logika aplikasi, data,
dan tampilan, sehingga membuat aplikasi lebih modular dan mudah di-maintain.

Demonstrasi MVC Pattern : MVCPatternDemo.java


public class MVCPatternDemo {
public static void main(String[] args) {
Student model = retriveStudentFromDatabase();
StudentView view = new StudentView();
StudentController controller = new StudentController(model, view);
controller.updateView();
controller.setStudentName("John");
controller.updateView();
}
private static Student retriveStudentFromDatabase(){
Student student = new Student();
student.setName("Robert");
student.setRollNo("10");
return student;
}
4
}

I.1.E. Analisis
Program ini adalah contoh bagaimana pola desain MVC digunakan dalam aplikasi Java.
Model (Student), tampilan (StudentView), dan pengendali (StudentController) dipisahkan
dengan jelas, memungkinkan pengelolaan data dan tampilan secara terpisah.

5
BAB II. TUGAS PRAKTIKUM

II.1 Tugas
Deskripsi atau Instruksi dari Tugas/Pekerjaan

II.1.A. Langkah Kerja/Source Code


Course Details:

Name: Java

Course ID: 01

Course Category: Programming

Tmpilan Setelah diupdate

Course Details:

Name: Python

Course ID: 01

Course Category: Programming

public class Course {


private String name;
private String courseID;
private String courseCategory;

public Course(String name, String courseID, String courseCategory) {


this.name = name;
this.courseID = courseID;
this.courseCategory = courseCategory;
}

public void setName(String name) {


this.name = name;
}

6
public void setCourseCategory(String courseCategory) {
this.courseCategory = courseCategory;
}

public void displayCourseDetails() {


System.out.println("Course Details:");
System.out.println("Name: " + name);
System.out.println("Course ID: " + courseID);
System.out.println("Course Category: " + courseCategory);
}

public static void main(String[] args) {


Course javaCourse = new Course("Java", "01", "Programming");
javaCourse.displayCourseDetails();

// Update course details


javaCourse.setName("Python");
javaCourse.displayCourseDetails();
}
}

II.1.B. Analisis
Program ini adalah contoh sederhana penggunaan kelas dalam Java untuk
merepresentasikan dan mengelola data kursus, serta memungkinkan pembaruan data
menggunakan metode-metode setter.

public class MVCPatternDemo {


public static void main(String[] args) {
//fetch student record based on his roll no from the database
Course model = retriveCourseFromDatabase();

7
//Create a view : to write course details on console
CourseView view = new CourseView();
CourseController controller = new CourseController(model, view);
controller.updateView();
//update model data
controller.setCourseName("Python");
System.out.println("nAfter updating, Course Details are as
follows");
controller.updateView();
}
private static Course retriveCourseFromDatabase() {
Course course = new Course();
course.setName("Java");
course.setId("01");
course.setCategory("Programming");
return course;
}
}

II.1.C. Analisa
Program ini adalah contoh bagaimana pola desain MVC digunakan dalam aplikasi Java
untuk mengelola data kursus. Model (Course), tampilan (CourseView), dan pengendali
(CourseController) dipisahkan dengan jelas, memungkinkan pemisahan tanggung jawab antara
logika aplikasi, tampilan, dan data. Dalam program ini, nama kursus diubah dari "Java"
menjadi "Python", dan tampilan diperbarui secara otomatis setelah perubahan tersebut.

public class Course {


private String CourseName;
private String CourseId;
private String CourseCategory;
public String getId() {
//mengembalikan nilai id Course
}
8
public void setId(String id) {
//set id Course
}
public String getName() {
//Mengembalikan Nama Course
}
public void setName(String name) {
//set Nama Course
}
public String getCategory() {
//Mengembalikan kategori Course
}
public void setCategory(String category) {
//set Kategori Course
}
}

II.1.D. Analisis
Sebaiknya implementasikan metode-metode tersebut dengan menambahkan pernyataan
return atau pernyataan yang mengatur nilai atribut sesuai dengan argumen yang diberikan. Ini
akan memungkinkan kelas Course untuk mengambil dan mengatur data kursus dengan benar.

public class CourseView {


public void printCourseDetails(String CourseName, String CourseId,
String CourseCategory) {
System.out.println("Course Details: ");
System.out.println("Name: " + CourseName);
System.out.println("Course ID: " + CourseId);
System.out.println("Course Category: " + CourseCategory);
}
}

9
II.1.E. Analisis
Program ini adalah contoh implementasi tampilan dalam sebuah aplikasi. Tampilan ini
menerima data dari model (dalam hal ini, kursus) dan menampilkan data tersebut kepada
pengguna dalam format yang sesuai.

public class CourseController {


private . . . model;
private . . . view;
public CourseController(. . . model, . . . view) {
this.model = model;
this.view = view;
}
public void setCourseName(String name) {
model.setName(name);
}
public String getCourseName() {
return model.getName();
}
public void setCourseId(String id) {
model.setId(id);
}
public String getCourseId() {
return model.getId();
}
public void setCourseCategory(String category) {
model.setCategory(category);
}
public String getCourseCategory() {
return model.getCategory();
}
public void updateView() {
view.printCourseDetails(model.getName(), model.getId(),
model.getCategory());
10
}
}

II.1.F. Analisis
Program ini mengimplementasikan pola desain MVC dengan jelas. Kelas
CourseController bertindak sebagai penghubung antara model (Course) dan tampilan
(CourseView) serta memberikan metode untuk mengatur dan mengambil data kursus serta
memperbarui tampilan ketika data berubah. Ini membantu memisahkan logika aplikasi, data,
dan tampilan, sehingga membuat aplikasi lebih modular dan mudah di-maintain.

import java.util.Scanner;
public class Kasir {
public static void main(String[] args) {
String nama;
int harga;
int stok;
Scanner in = new Scanner(System.in);
// Inisiasi
nama = "GeForce GTX 1060Ti";
harga = 3000;
stok = 10;
// Tampilan info
System.out.println("Nama Barang : "+nama);
System.out.println("Harga Barang : "+harga);
System.out.println("Stok Barang : "+stok);
// Transaksi pembelian
int qty;
System.out.println("Transaksi Pembelian");
System.out.print("Jumlah barang : ");
qty=in.nextInt();
stok = stok-qty;
// Print Pembayaran
System.out.println("Jumlah Bayar : "+qty*harga);
11
// Tampilan info
System.out.println("Nama Barang : "+nama);
System.out.println("Harga Barang : "+harga);
System.out.println("Stok Barang : "+stok);
}
}

II.1.G. Analisis
Program ini adalah contoh sederhana dari aplikasi kasir yang memungkinkan pengguna
untuk membeli barang tertentu dengan mengurangi stok dari barang tersebut setelah pembelian.
Namun, dalam kehidupan nyata, aplikasi kasir seringkali melibatkan lebih banyak barang,
pelanggan, dan operasi yang lebih kompleks, seperti menghitung pajak dan mengelola
pembayaran yang lebih luas.

12
BAB III. KESIMPULAN

1. Pentingnya Pola Desain (Design Patterns): Desain perangkat lunak adalah bagian
integral dari pengembangan perangkat lunak yang efektif dan skalabel. Pola desain
adalah solusi umum untuk masalah desain perangkat lunak yang sering muncul.
Mempelajari dan menerapkan pola desain membantu pengembang untuk menghasilkan
kode yang lebih terstruktur, mudah dimengerti, dan mudah dikelola.
2. Berbagai Jenis Pola Desain: Ada berbagai macam pola desain yang masing-masing
memiliki tujuan dan konteks penggunaan yang berbeda. Contoh-contoh pola desain
meliputi Pola Singleton, Pola Factory, Pola Observer, Pola Builder, Pola Strategy, Pola
MVC (Model-View-Controller), dan banyak lagi.
3. MVC (Model-View-Controller): Pola desain MVC adalah salah satu pola desain yang
sangat umum digunakan dalam pengembangan perangkat lunak berbasis GUI. Ini
memisahkan komponen model (data), tampilan (presentasi), dan pengendali (logika
aplikasi) untuk mempermudah pemeliharaan, skalabilitas, dan pengembangan aplikasi
yang lebih terstruktur.
4. Komposisi Objek: Objek dalam pemrograman seringkali berinteraksi satu sama lain
untuk mencapai tujuan yang lebih besar. Pengembangan perangkat lunak yang efektif
sering melibatkan komposisi objek, yaitu penggabungan dan pemaduan objek-objek
yang berbeda untuk mencapai fungsi dan fitur yang kompleks.
5. Desain yang Dapat Diperluas (Extensible Design): Saat merancang perangkat lunak,
sangat penting untuk mempertimbangkan kemampuan untuk memperluas dan
memodifikasi fungsionalitas di masa depan tanpa mengganggu struktur yang sudah ada.
Pola desain dan komposisi objek yang baik dapat membantu mencapai desain yang
dapat diperluas.
6. Kesesuaian dengan Konteks: Pemilihan pola desain dan pendekatan komposisi objek
harus selaras dengan kebutuhan dan konteks aplikasi yang sedang dikembangkan.
Tidak semua pola desain cocok untuk setiap situasi, jadi penting untuk memahami
kapan dan bagaimana menerapkan pola yang sesuai.
7. Praktik Terbaik dalam Pengembangan Perangkat Lunak: Memahami pola desain dan
penggunaan yang baik dalam komposisi objek adalah praktik terbaik dalam

13
pengembangan perangkat lunak yang membantu menghasilkan kode yang lebih efisien,
mudah dimengerti, dan mudah dikelola.
Dengan memahami dan menerapkan konsep-konsep di atas, pengembang dapat merancang
dan mengembangkan perangkat lunak yang lebih baik, lebih terstruktur, dan lebih mudah
dikelola dalam berbagai konteks pengembangan.

14

Anda mungkin juga menyukai