STUDI KASUS
Thalita dan Amelia adalah 2 orang mahasiswa FILKOM yang selama mereka berkuliah mereka
membentuk perusahaan startup TA Innovation yang bergerak pada bidang pengembangan aplikasi
web. Saat ini mereka sedang bekerja sama dengan BEM FILKOM untuk mengembangkan sebuah
website yang nantinya dapat digunakan untuk membantu proses pembuatan dan evaluasi program
kerja pada salah satu kementerian pada BEM FILKOM. Dari proses observasi dan analisis kebutuhan
yang mereka lakukan, mereka mendapatkan spesifikasi kebutuhan sebagai berikut.
Proses pengembangan aplikasi web ini dilakukan dengan bahasa PHP. Sistem ini dikembangkan
dengan dibagi melalui 2 tahap, yang pertama adalah tahap pengembangan arsitektur sistem dan
yang kedua adalah tahap pengembangan fungsionalitas sistem.
LATIHAN 1
A. Soal
Buatlah pemodelan class diagram dan entity relationship diagram sesuai dengan analisis dan
perancangan sistem yang sudah dibuat.
B. Screenshoot
C. Penjelasan
Untuk class diagram telah dibuat 2 tabel, yaitu tabel ‘pengurusBEM’ yang memiliki atribut
‘NIM’ sebagai primary key, ‘Nama’, ‘Angkatan’, ‘Jabatan’, dan ‘Foto’. Selanjutnya ada tabel
‘proker’ yang memiliki atribut ‘nomorProgram’ sebagai primary key, ‘namaProgram’, dan
‘suratKeterangan’.
Untuk entity relationship diagram telah dibuat 2 entitas. Entitas yang pertama adalah
‘pengurusBEM’ yang memiliki atribut ‘NIM’ sebagai primary key, ‘Nama’, ‘Angkatan’,
‘Jabatan’, dan ‘Foto’. Selanjutnya ada entitas ‘Proker’ yang memiliki atribut ‘nomorProgram’
sebagai primary key, ‘namaProgram’, dan ‘suratKeterangan’. Kedua entitas memiliki relasi one to
many ‘dimiliki’ yang berarti sebuah program kerja bisa dimiliki oleh banyak pengurus BEM.
LATIHAN 2
A. Soal
Buatlah folder baru dalam folder ‘htdocs’ dan beri nama ‘OOP’, seluruh kode Latihan 2 ini
disimpan dalam folder ‘OOP’. Membuat pemodelan struktur pengguna sistem dengan menuliskan
kode di bawah ini dan simpan dalam file ‘pengurusBEM.php’.
<?php
class pengurusBEM {
public $nama;
public $nim;
public $angkatan;
private $jabatan;
private $foto;
include ”pengurusBEM.php”
a. Apa maksud dari penulisan public dan private pada class ‘pengurusBEM’?
b. Modifikasilah kode tersebut sehingga kita dapat melakukan manipulasi atribut dari pengurus
BEM dengan lengkap.
c. Apa hubungan antara method ‘setJabatan’ pada class ‘pengurusBEM’ dan class ‘Menteri’?
Apakah method yang sama karena konsep turunan?
d. Apa yang terjadi saat dalam pembuatan class kita tidak menuliskan tingkat visibility? Apakah
method atau atribut dengan semua tingkat visibility itu diturunkan?
B. Screenshoot
C. Syntax
class pengurusBEM {
public $nama;
public $nim;
public $angkatan;
private $jabatan;
private $foto;
public function __construct($nama, $nim, $angkatan,
$jabatan, $foto) {
$this->nama = $nama;
$this->nim = $nim;
$this->angkatan = $angkatan;
$this->jabatan = $jabatan;
$this->foto = $foto;
}
//menteri.php
<?php
include "pengurusBEM.php";
D. Penjelasan
a. Penulisan public berarti atribut dari class tersebut bisa diakses dari class mana saja, baik dari
dalam maupun luar class melalui objek class tersebut. Untuk penulisan private berarti atribut
dari class tersebut hanya bisa diakses di dalam class yang sama.
b. Untuk pemodifikasian pada file ‘pengurusBEM.php’, ditambahkan sebuah constructor untuk
menginisialisasi sebuah properti objek pada saat pembuatan objek. Kemudian, memasang
getter untuk seluruh atribut yang berada di class ‘pengurusBEM’.
Untuk pemodifikasian pada file ‘menteri.php’, digunakan kata extends untuk menandakan
bahwa class ‘menteri’ merupakan inheritance dari class ‘pengurusBEM’. Ditambahkan juga
sebuah constructor yang sama dengan constructor dari class ‘pengurusBEM’ karena
merupakan turunan dari class tersebut. Kemudian, ditambahkan method ‘informasi’ yang
berisi data tentang objek yang akan diinisialisasikan. Di luar class ‘menteri’, diinisialisasikan
sebuah objek ‘menteri’ dengan memasangkan data-data yang ingin dimasukkan. Setelah itu,
objek ‘menteri’ memanggil method ‘informasi’ supaya mengeluarkan output data-data yang
telah dimasukkan.
c. Hubungan antara method ‘setJabatan’ dari class ‘pengurusBEM’ dan ‘menteri’ hanya
memiliki nama yang sama. Namun, keduanya berbeda dalam konteks dan tipe
aksesibilitasnya karena berada di dua class yang berbeda. Method ‘setJabatan’ dari class
‘pengurusBEM’ bersifat private yang berarti hanya bisa diakses oleh class yang mewarisi
class ‘pengurusBEM’. Method ‘setJabatan’ dari class ‘menteri’ bersifat public yang berarti
dapat diakses dari luar class ‘menteri’.
d. Jika tidak menuliskan tingkat visibility maka program akan menganggap sifat dari method
tersebut adalah public. Dengan semua tingkat visibility dapat diturunkan sesuai dengan sifat
dari method.
LATIHAN 3
A. Soal
Buatlah tabel proker dalam database untuk menyimpan data program kerja dengan struktur
sebagai berikut.
Buatlah folder baru dalam folder ‘htdocs’ dan beri nama ‘mvc’. Seluruh kode Latihan 3 ini
disimpan dalam folder ‘mvc’.
<?php
// sesuaikan username dan password
$mysqli = new mysqli(’localhost’, ’username’, ’password’,
’praktikumWeb’);
?>
<?php
require "koneksiMVC.php";
class m_programKerja {
private $nomorProgram;
private $namaProgram;
private $suratKeterangan;
public $hasil = array();
while($row = $rs->fetch_assoc()) {
$rows[] = $row;
}
$this->hasil[] = $rows;
return $this->hasil;
}
?>
<?php
include_once("m_programKerja");
class c_programKerja {
public $model;
}
?>
<html>
<head></head>
<body>
<h2>Daftar Program Kerja BEM</h2>
<table>
<tbody>
<tr>
<td>No</td>
<td>Nama Program Kerja</td>
<td>Surat Keterangan</td>
</tr>
</tbody>
<?php
echo ‘<table><tr>’,
‘<td>$proker[nomorProgram]</td>’,
‘<td>$proker[namaProgram]</td>’,
‘<td>$proker[suratKeterangan]</td>’,
‘</tr></table>’;
?>
</body>
</html>
<?php
include_once("c_programKerja.php");
a. Jalankan file ‘index.php’ dan amati yang terjadi. Apa hubungannya dengan sequence diagram
di bawah ini.
b. Apa maksud dari pembuatan kode ‘m_programKerja.php’?
c. Apa maksud dari pembuatan kode ‘c_programKerja.php’?
d. Apa maksud dari pembuatan kode ‘v_programKerja.php’?
e. Apa maksud dari pembuatan kode ‘index.php’?
B. Screenshoot
C. Syntax
1 koneksiMVC.php
<?php
class koneksiMVC {
public $mysqli;
m_programKerja.php
<?php
require "koneksiMVC.php";
class m_programkerja {
private $database;
protected $tablename = "proker";
c_programKerja.php
<?php
include_once("m_programKerja.php");
class c_programKerja {
public $model;
v_programKerja.php
<html>
<head>
<style> table, th, td {border: 1px solid black;}</style>
</head>
<body>
<h2>Daftar Program Kerja BEM</h2>
<table>
<tbody>
<tr>
<td>No</td>
<td>Nama Program Kerja</td>
<td>Surat Keterangan</td>
</tr>
</tbody>
<?php
index.php
<?php
include_once("c_programKerja.php");
D. Penjelasan
a. Dalam file ‘index.php’, yang terjadi adalah menampilkan tabel daftar program kerja BEM
yang datanya telah dimasukkan ke dalam database. Hubungannya adalah client melakukan
HTTP request dengan menjalankan file ‘index.php’. Kemudian, file ‘index.php’ akan
melakukan request data ke file ‘c_programKerja.php’ sebagai controller dan meneruskan
request data ke file ‘m_programKerja.php’ sebagai model. File ‘m_programKerja.php’ akan
mengirim datanya kembali ke file ‘c_programKerja.php’ dan dapat dilihat bentuknya ke
dalam file ‘v_programKerja.php’ sebagai view. Setelah itu, hasil dari HTTP request akan
dikirim ke client dalam bentuk HTTP response.
b. Tujuan pembuatan file ‘m_programKerja.php’ adalah untuk mengelola data, interaksi dengan
database, dan menyimpan data.
c. Tujuan pembuatan file ‘c_programKerja.php’ adalah untuk mengelola aliran aplikasi,
mengelola input pengguna, dan berperan sebagai perantara antara Model dan View.
d. Tujuan pembuatan file ‘v_programKerja.php’ adalah untuk menampilkan data-data yang telah
dimasukkan oleh pengguna ke dalam database dalam bentuk tabel.
e. Tujuan pembuatan file ‘index.php’ adalah sebagai langkah utama aplikasi berjalan. File ini
mengarahkan permintaan HTTP ke fungsi yang berjalan dalam aplikasi. File ini juga menjadi
tempat awal inisialisasi untuk mengatur koneksi database.
LATIHAN 4
A. Soal
Modifikasilah Latihan 3 sehingga dapat dibuat program dengan kemampuan CRUD secara
lengkap!
B. Screenshoot
Jika ingin tambah program kerja.
1 koneksiMVC.php
<?php
class koneksiMVC {
public $mysqli;
m_programKerja.php
<?php
require "koneksiMVC.php";
class m_programkerja {
private $database;
protected $tablename = "proker";
c_programKerja.php
<?php
include_once("m_programKerja.php");
class c_programKerja {
public $model;
}
?>
v_programKerja.php
<html>
<head>
<style> table, th, td {border: 1px solid black;}</style>
</head>
<body>
<form action="index.php" method="post">
<input type="text" name="nomorProgram"
placeholder="Nomor Program">
<input type="text" name="namaProgram" placeholder="Nama
Program Kerja">
<input type="text" name="suratKeterangan"
placeholder="Surat Keterangan">
<input type="submit" name="create" value="Tambah
Program Kerja">
</form>
echo "</table>";
?>
</body>
</html>
index.php
<?php
include_once("c_programKerja.php");
if (isset($_POST['create'])) {
$nomorProgram = $_POST['nomorProgram'];
$namaProgram = $_POST['namaProgram'];
$suratKeterangan = $_POST['suratKeterangan'];
$controller->add($nomorProgram, $namaProgram,
$suratKeterangan);
} else if (isset($_POST['update'])) {
$nomorProgram = $_POST['nomorProgram'];
$namaProgram = $_POST['namaProgram'];
$suratKeterangan = $_POST['suratKeterangan'];
$controller->update($nomorProgram, $namaProgram,
$suratKeterangan);
} else if (isset($_POST['delete'])) {
$nomorProgram = $_POST['nomorProgram'];
$controller->delete($nomorProgram);
}
?>
D. Penjelasan
Pada file ‘koneksiMVC.php’, tidak dilakukan modifikasi dan sama seperti sebelumnya.
Pada file ‘m_programKerja.php’, dilakukan penambahan method untuk update dan delete.
Method ‘updateProgramKerja’ digunakan untuk melakukan perubahan data yang sebelumnya
telah dimasukkan, sedangkan method ‘deleteProgramKerja’ digunakan untuk melakukan
penghapusan data yang sebelumnya telah dimasukkan.
Pada file ‘v_programKerja.php’, dilakukan penambahan pada tag ‘<body>’, yaitu sebuah
form untuk mengisi nomor proker, nama proker, dan surat kegiatan. Terdapat 3 form untuk
masing-masing aktivitas, seperti create, update, dan delete. Metode form yang digunakan adalah
post supaya tersimpan dengan aman.
Pada file ‘index.php’, dilakukan penambahan dengan seleksi kondisi if-else dengan kondisi
pertama yaitu jika pengguna ingin melakukan penambahan data maka program akan menjalankan
kondisi ‘isset($_POST[‘create’]’. Jika pengguna ingin melakukan perubahan data maka program
akan menjalankan kondisi ‘isset($_POST[‘update’]’. Jika pengguna ingin melakukan penambahan
data, maka program akan menjalankan kondisi ‘isset($_POST[‘delete’]’. Setiap kondisi akan
memanggil data yang telah disimpan menggunakan metode post dan memanggil method ‘add’,
‘update’, dan ‘delete’ dari file ‘c_programKerja.php’.
LATIHAN 5
A. Soal
Modifikasi sesuai kebutuhan terlebih dahulu, lengkapi dengan halaman login dan halaman
administrasi dan gabungkan Latihan 2 dan Latihan 3 sehingga didapat skenario Menteri hanya
dapat melihat daftar program kerja saja, sedangkan Kepala Departemen dapat melakukan proses
manajemen program kerja (CRUD). Lakukan modifikasi pada database dan struktur class model,
controller, dan view jika diperlukan untuk mengakomodasi skenario tersebut.
B. Screenshoot
C. Syntax
1 login.php
<!DOCTYPE html>
<html>
<head>
<title>Halaman Login</title>
</head>
<body>
<h2>Silakan Login</h2>
<form action="loginProses.php" method="post">
<p>Username : <input type="text"
name="username"></p>
<p>Password : <input type="password"
name="password"></p>
<p>Jabatan : <input type="text" name="jabatan"></p>
<input type="submit" value="Login" name="login">
</form>
</body>
</html>
user.php
<?php
require "koneksiMVC.php";
class user {
private $database;
protected $tablename = "user";
loginProses.php
<?php
session_start();
require "user.php";
if ($result) {
$_SESSION['username'] = $_POST['username'];
$_SESSION['password'] = $result['password'];
$_SESSION['jabatan'] = $result['jabatan'];
header("Location: index.php");
} else {
session_destroy();
unset($_COOKIE);
header("Location: login.php");
}
?>
index.php
<?php
session_start();
include_once("c_programKerja.php");
if (isset($_POST['create'])) {
$nomorProgram = $_POST['nomorProgram'];
$namaProgram = $_POST['namaProgram'];
$suratKeterangan = $_POST['suratKeterangan'];
$controller->add($nomorProgram, $namaProgram,
$suratKeterangan);
} else if (isset($_POST['update'])) {
$nomorProgram = $_POST['nomorProgram'];
$namaProgram = $_POST['namaProgram'];
$suratKeterangan = $_POST['suratKeterangan'];
$controller->update($nomorProgram, $namaProgram,
$suratKeterangan);
} else if (isset($_POST['delete'])) {
$nomorProgram = $_POST['nomorProgram'];
$controller->delete($nomorProgram);
}
} else if ($_SESSION['jabatan'] == 'menteri') {
$controller = new c_programKerja();
$controller->baru();
}
?>
c_programKerja.php
<?php
include_once("m_programKerja.php");
class c_programKerja {
public $model;
}
?>
tabelMenteri.php
<html>
<head>
<style> table, th, td {border: 1px solid
black;}</style>
</head>
<body>
<h2>Daftar Program Kerja BEM</h2>
<table>
<tbody>
<tr>
<td>No</td>
<td>Nama Program Kerja</td>
<td>Surat Keterangan</td>
</tr>
</tbody>
<?php
echo "</table>";
?>
</body>
</html>
D. Penjelasan
Untuk modifikasinya ditambahkan beberapa file, yaitu ‘login.php’, ‘user.php’,
‘loginProses.php’, ‘tabelMenteri.php’ dan sedikit perubahan dari file ‘index.php’ dan
‘c_program.php’.
Ditambahkan file ‘login.php’ untuk pengguna memasukkan username, password, dan jabatan.
File ini dibuat dalam bentuk HTML dengan menggunakan form yang bersifat method post dengan
mengakses file ‘loginProses.php’. Setelah itu, ditambahkan file ‘loginProses.php’ untuk
melakukan autentikasi untuk melihat data dari username, password, dan jabatan. Jika data yang
dimasukkan benar maka akan dialihkan ke file ‘index.php’, sedangkan jika ada yang salah maka
akan masih di halaman login. Di file ‘index.php’ akan mengecek data yang dimasukkan oleh
pengguna antara menteri dan kepala departemen. Jika memasukkan jabatan Menteri maka hanya
akan menampilkan tabel yang telah dimasukkan dari file ‘tabelMenteri.php’, sedangkan jika
memasukkan jabatan Kepala Departemen maka bisa melakukan aktivitas CRUD untuk
menambahkan, menghapus, atau mengubah data yang sebelumnya telah dimasukkan.