RPL Class Diagram
RPL Class Diagram
Bagian ini membahas tentang penarapan Class Diagram dalam pengembangan perangkat lunak.
Pada bagian ini Anda akan mempelajari tentang:
Class pada class diagram merupakan sebuah kategori yang merepresentasikan objek. Objek
merupakan segala sesuatu yang terlihat atau nyata dan bentuknya relatif stabil. Setiap objek
memiliki sifat dan perilaku. Misalnya objek bernama 'kucing'. Objek tersebut memiliki atribut
warna, berat, jenis, dll yang mungkin saja berbeda antara kucing satu dengan lainnya. Objek
kucing juga memiliki perilaku yang berbeda.
'Kucing' pada contoh diatas adalah nama class. Warna, berat, dan jenis merupakan attribut class
sedangkan melompat dan berlari merupakan method atau operation dalam class.
Ilustrasi pada gambar diatas menunjukkan gambaran yang lebih jelas mengenai class dan objek.
Base Class merupakan sebuah 'wadah' yang dapat diisi dengan objek yang memiliki komposisi
atribut dan metode yang sama. Berdasarkan base class yang dibuat Anda dapat membuat lebih
dari satu objek yang masuk dalam class 'Dog'.
Class pada class diagram dinotasikan menggunakan blok yang terdiri dari beberapa bagian yaitu
nama class, atribut, dan metode. Gambar dibawah merupakan sebuah class dalam class diagram.
Class tersebut bernama Cats dan memiliki atribut color, weight, dan type serta memiliki metode
getColor() dan getWeight() .
code/js/class_example_1.js
class Rectangle{
width;
heigth;
calculateArea()
{
return this.width*this.heigth;
}
}
let myRect = new Rectangle();
myRect.width = 10;
myRect.heigth = 9;
console.log(myRect.calculateArea()); //output: 90
code/php/class_example_1.php
<?php
class Rectangle{
public $width;
public $height;
Kode program di atas merupakan contoh implementasi OOP menggunakan Javascript dan PHP
yang mengacu pada desain class diagram 'Rectangle'. Variabel myRect merupakan objek yang
dibuat berdasarkan class model yang dibuat pada class diagram 'Rectangle'.
Dalam pengembangan sistem informasi, class diagram dapat dijadikan panduan untuk
membangun API termasuk membuat struktur database.
id_product integer
name varchar
id_category integer
price integer
id_category integer
name varchar
Prerequested:
NodeJS
Mysql
Get Started
2. Jalankan perintah npm init melalui console atau terminal pada folder nodejs_api.
3. Jalankan perintah npm install mysql melalui console atau terminal pada folder nodejs_api.
Struktur File
+ config
- database.js
+ model
- products.js
+ node_modules
- app_test.js
- package.json
- package-lock.json
Folder node_modules, file package.json, dan package-lock.json adalah file yang dibuat secara
otomatis saat menjalankan perintah npm init .
database.js
module.exports = con
products.js
//Class: Products
const con = require('../config/database');
module.exports = {
id_product: null,
name: null,
id_category: 0,
price: 0,
getAll : function()
{
const dt = new Promise((resolve, reject)=>{
con.query("SELECT * FROM products", (err, result, fields) => {
if (err) throw err;
resolve(result);
});
});
return dt;
},
getByCategory: function()
{
const dt = new Promise((resolve, reject)=>{
con.query("SELECT * FROM products WHERE id_category =
'"+this.id_category+"'", (err, result, fields) => {
if (err) throw err;
resolve(result);
});
});
return dt;
},
getOne : function(id) {
const dt = new Promise((resolve, reject)=>{
con.query("SELECT * FROM products WHERE id_product = '"+id+"'", (err,
result, fields) => {
if (err) throw err;
resolve(result[0]);
});
});
return dt;
},
add: function(){
let name = "'"+this.name+"'";
let id_category = this.id_category;
let price = this.price;
let values = [name, id_category, price];
const dt = new Promise((resolve, reject)=>{
con.query("INSERT INTO products (name, id_category, price) VALUES
("+values.join(",")+")", (err, result, fields) => {
if (err) throw err;
resolve(result);
});
});
return dt;
},
update : function(){
const dt = new Promise((resolve, reject)=>{
con.query("UPDATE products SET name = '"+this.name+"',
id_category="+this.id_category+", price = "+this.price+" WHERE id_product =
"+this.id_product+"", (err, result, fields) => {
if (err) throw err;
resolve(result);
});
});
return dt;
},
delete : function(){
const dt = new Promise((resolve, reject)=>{
con.query("DELETE products WHERE id_product="+this.id_product+"",
(err, result, fields) => {
if (err) throw err;
resolve(result);
});
});
return dt;
}
}
app_test.js
//getAll
function getAll()
{
products.getAll().then(val=>{
console.log(val);
});
}
//get by category
function getByCategory()
{
products.id_category = 2;
products.getAll().then(val=>{
console.log(val);
});
}
//add data
function add()
{
products.name = postDataTest.name;
products.id_category = postDataTest.id_category;
products.price = postDataTest.price;
products.add().then(val=>{
console.log(val);
});
}
//edit data
function update()
{
products.id_product = 2;
products.name = postDataTest.name;
products.id_category = postDataTest.id_category;
products.price = postDataTest.price;
products.update().then(val=>{
console.log(val);
});
}
Eksekusi Program
node app_test.js
Perintah tersebut memanggil fungsi getAll() dan akan menghasilkan output data yang
tersimpan pada database app_shop tabel products . Untuk mencoba fungsi lain, ganti
pemanggilan fungsi pada bagian call function for test.
Penjelasan Program
Implementasi Class Diagram Products pada program API Store App dibangun menggunakan
metode Export Class. Class ditulis pada folder model dan dibuat berdasarkan nama class. Misal,
class products dibuat pada file products.js yang berada dalam folder model. Jika ada class lain
maka ditulis dalam folder model dengan pola penamaan file yang sama yakni mengacu pada
nama class yang ada pada class diagram.
products.js
modules.exports = {
attribute_1: null,
attribute_2: null,
method_1: function(){
//kode program disini
},
method_2: function(){
//kode program disini
}
}
Kode program products.js mungkin memerlukan koneksi database untuk mengelola
penyimpanan data. Pada contoh program, database yang digunakan adalah mysql. Anda dapat
menggunakan database lain misalnya mogodb.
Pemanggilan class model di file yang lain (misal: file untuk mengelola request dari client):
app.js