Senin, 28 November 2016

Design Pattern, Apa itu?


Pola desain

Dalam dunia rekayasa perangkat lunak, Design Pattern adalah solusi umum yang berulang untuk masalah yang sering terjadi dalam desain software. Design pattern bukanlah desain yang sudah final dan bisa langsung diubah ke code! Ingatlah hal ini.

Nah, berhubung saya tidak bisa menjelaskan semuanya, saya akan menjelaskan salah satu design pattern. Design Pattern terdapat beberapa macam, yang diantaranya adalah
1. Creational Design Pattern
2. Structural Design Pattern
3. Behavioral Design Pattern
4. dan ... udah sih cuma 3.

Saya ingin menjelaskan tentang Bridge yang termasuk Structural Design Pattern.

Bridge merupakan Design pattern yang memisah object interface dengan implementasinya. Tujuannya adalah agar diantara keduanya dapat bervariasi dan gampang untuk diubah.

Ini contoh hierarkinya



Gunakan pola Bridge ketika :
1. Kamu ingin run-time tergantung dengan implementasinya,
2. Kamu memiliki proliferasi kelas yang dihasilkan dari banyak implementasi,
3. Kamu ingin berbagi sebuah implementasi antara beberapa objek,
4. Kamu perlu memetakan hierarki kelas orthogonal.


Structure



Contoh Implementasi Coding

<?php

abstract class BridgeBook {     
    private $bbAuthor;
    private $bbTitle;
    private $bbImp;
    function __construct($author_in, $title_in, $choice_in) {
      $this->bbAuthor = $author_in;
      $this->bbTitle  = $title_in;
      if ('STARS' == $choice_in) {
        $this->bbImp = new BridgeBookStarsImp();
      } else {
        $this->bbImp = new BridgeBookCapsImp();
      }
    }    
    function showAuthor() {
      return $this->bbImp->showAuthor($this->bbAuthor);
    }
    function showTitle() {
      return $this->bbImp->showTitle($this->bbTitle);
    }
}
 
class BridgeBookAuthorTitle extends BridgeBook {    
    function showAuthorTitle() {
      return $this->showAuthor() . "'s " . $this->showTitle();
    }
}  
 
class BridgeBookTitleAuthor extends BridgeBook {    
    function showTitleAuthor() {
      return $this->showTitle() . ' by ' . $this->showAuthor();
    }
}
 
abstract class BridgeBookImp {    
    abstract function showAuthor($author);
    abstract function showTitle($title);
}

class BridgeBookCapsImp extends BridgeBookImp {    
    function showAuthor($author_in) {
      return strtoupper($author_in); 
    }
    function showTitle($title_in) {
      return strtoupper($title_in); 
    }
}

class BridgeBookStarsImp extends BridgeBookImp {    
    function showAuthor($author_in) {
      return Str_replace(" ","*",$author_in); 
    }
    function showTitle($title_in) {
      return Str_replace(" ","*",$title_in); 
    }
}

  writeln('BEGIN TESTING BRIDGE PATTERN');
  writeln('');
 
  writeln('test 1 - author title with caps');
  $book = new BridgeBookAuthorTitle('Larry Truett','PHP for Cats','CAPS');
  writeln($book->showAuthorTitle());
  writeln('');

  writeln('test 2 - author title with stars');
  $book = new BridgeBookAuthorTitle('Larry Truett','PHP for Cats','STARS');
  writeln($book->showAuthorTitle());
  writeln('');

  writeln('test 3 - title author with caps');
  $book = new BridgeBookTitleAuthor('Larry Truett','PHP for Cats','CAPS');
  writeln($book->showTitleAuthor());
  writeln('');

  writeln('test 4 - title author with stars');
  $book = new BridgeBookTitleAuthor('Larry Truett','PHP for Cats','STARS');
  writeln($book->showTitleAuthor());
  writeln('');

  writeln('END TESTING BRIDGE PATTERN');

  function writeln($line_in) {
    echo $line_in."<br/>";
  }

?>
Sumber : https://sourcemaking.com/design_patterns

Sekian Terima kasih...


Senin, 24 Oktober 2016

Gimana sih Use Casenya FlightReservation??

Jadi gini. Sama seperti usecase nya ATM yang kemaren2, kali ini saya membuat use case Flight Reservation.

USE CASE DIAGRAM




SEQUENCE DIAGRAM














CLASS DIAGRAM



IMPLEMENTASI
public class systemUsers
 {

        static ManageVector system1 = new ManageVector("login1.txt");
    
    static Vector systemuser1 = new Vector();

        public static void saveUser()
    {
        system1.saveVector(systemuser1);
    }

        public static void loadUser()
    {    
        systemuser1 = system1.loadVector();
    }

public class flightResDetails extends FlightDetails  
    {
        String Name;
        String Address;
        int phone;
        String Email;
        final String[] ReservationType = {"FirstClass","SecondClass","ThirdClass"};
        String Res;
        int Num_OfResSeats;


 public class FlightDetails implements Serializable
  {
        public String Flight_Num;
        public String FlightDate;
        public String Time;
        public int Num_Of_Seats;
        public String Source;
        public String Destination;
    



public class flightMenu //extends mainSystem
{
    static Vector fDetails = new Vector();    

    static ManageVector  manage = new ManageVector("sample.txt");   

    static Vector fResDetails = new Vector();    

    static ManageVector res = new ManageVector("res.txt"); 


public class flightResMenu    
{

    static Vector fResDetails = new Vector();    

    static Vector fDetails = new Vector();    
    
    static ManageVector manager = new ManageVector();  

public class ManageVector
{


public Vector myVector = new Vector();

public String filePath;



Senin, 17 Oktober 2016

Sequence Diagram & Prototype Thingy!


Singkat saja, melanjutkan pos kemarin yang berisi Use Case Diagram dan Sequence Diagram.
Bagi yang lagi lupa ingatan silahkan dilihat lagi dibawah ini.

USE CASE DIAGRAM




SEQUENCE  DIAGRAM

Startup System

Session






















Shutdown System



 Sudah Ingat? Semoga ingatan anda bisa dipulihkan dengan Diagram diagram diatas.
Dalam membuat aplikasi, tidak mungkin bisa direncanakannya aplikasi tersebut tanpa adanya gambaran awal tentang aplikasi tersebut akan berupa seperti apa nantinya, atau dengan kata lain Implementasi Prototype Aplikasi.

Berikut Source Codenya :

#include<string>
using std::string;
using std::getline;

#include <vector>
using std::vector;

#include <iostream>
using std::cout;
using std::endl;
using std::cin;

#include <iomanip>
using std::setw;
using std::left;
using std::right;

#include <fstream>
using std::ofstream;
using std::ifstream;

#include <sstream>
using std::stringstream;

#include <ctime>
class LoginUser {
    private:
    string _PIN;
    string _namaUser;
    string _noRekening;
    string _saldo;
    public:
    List();
    List(string id, string category, string itemDescription, string price);
    List(string id, string quantity, string price, string total, string VAT );
 void display();
    void Bill();
};

class ListItem {
    public:
    void getRek();
    void getNama();
    void getPIN();
    void getSaldo();
    void newPIN();
};















Senin, 26 September 2016

UML For ATM

Pada kesempatan kali ini, saya dengan iseng akan membagikan Materi tentang UML mesin ATM.

ATM (Automated Teller Machine) adalah sebuah sistem banking yang menyediakan nasabah bank dengan akses ke transaksi finansial di tempat yang publik tanpa membutuhkan kasir dan bank teller.

  • Use Case Diagram ATM




Customer menggunakan mesin ATM dengan Login PIN terlebih dahulu. Jika Customer memasukkan PIN yang salah, maka akan kembali diarahkan ke menu Login PIN lagi.
Jika PIN yang dimasukkan tepat, maka akan memasuki Session.
Dalam Session ini, Customer memiliki banyak pilihan menu, yaitu: Transfer,Penarikan Uang, Informasi Saldo, Prabayar, dan Bayar/Beli.

Sementara Teknisi/Operator akan bisa melakukan Perbaikan dan Perawatan Mesin ATM.

Selanjutnya, saya akan menjelaskan Sequence Diagram di tiap Use Case diatas.

Pertama, kita awali dari Actor Operator.

  1. Operator

Operator memiliki 2 use case yang berhubungan dengannya, yaitu Startup Sistem dan Shutdown Sistem.

Pada Startup Sistem, Operator akan menyalakan mesin ATM. Maka ATM pun dalam proses menyala.
Setelah booting up selesai, ATM akan meminta data uang tunai yang ATM miliki sekarang kepada operator. Operator setelah itu memasukkan data tersebut. Setelah itu, ATM akan disambungkan ke koneksi Bank sehingga diantara keduanya akan terhubung.


STARTUP SYSTEM
GAMBAR








 Setelah itu, Operator juga bisa melakukan Shutdown Sistem. Operator akan mematikan mesin ATM, lalu ATM akan melakukan shutdown. Dan dalam proses shutdown itu, ATM juga akan memutuskan koneksi ke Bank.

SHUTDOWN SYSTEM

GAMBAR




Lalu kita beralih pada Actor Nasabah/Customer.



  2. Customer
SESSION
GAMBAR


Ketika nasabah memasukkan kartu, maka session akan terbuat. Session akan menyimpan data kartu dan kemudian meminta kode PIN pada nasabah. Setelah diinputkan, maka ATM akan memverifikasi kebenaran PIN dengan data PIN yang ada di BANK. 


TRANSAKSI
GAMBAR



Ketika PIN nasabah yang diinputkan benar, maka nasabah akan melanjutkan ke proses transaksi. Ketka PIN yang diinputkan salah, maka nasabah akan dikembalikan ke menu INPUT PIN lagi. Jika benar PIN-nya, maka akan bisa melakukan transaksi , dan setiap kegiatan akan tercatat di log.

INFORMASI SALDO
GAMBAR


Nasabah dapat meminta informasi saldo yang ada di tabungan. ATM akan meminta data di BANK yang tersambung di Internet dan menampilkannya pada nasabah.

PENARIKAN UANG
GAMBAR



Penarikan tunai akan diawali ATM meminta nasabah untuk memasukkan angka penarikan tunai. Setelah memasukkan jumlah uang, maka ATM akan mengecek kevalidan angka nya.Jika sudah, maka ATM akan mengecek saldo nasabah. Jika cukup, maka mesin akan mengeluarkan uang yang diminta.

TRANSFER
GAMBAR



Nasabah diminta untuk memasukkan nomor rekening tujuan. Kemudian ATM akan menverifikasikan nomor tersebut dengan data tujuan transfer. Jika valid, maka nasabah akan diminta nominal jumlah uang yang ditransfer. Uang di saldo nasabah akan berkurang dan uang di rekening tujuan transfer akan bertambah.

BAYAR/BELI

Nasabah akan mendapat banyak pilihan dari ATM. Nasabah lalu akan memasukkan nomor pembayaran, lalu ATM akan menghubungkan dengan jaringan internet perbankan. Jika sukses, maka pembayaran yang dilakukan akan berhasil.

MANDIRI PRABAYAR

ATM akan meminta kode akses pada nasabah, dan jika benar, maka ATM akan mengarahkan pada e-banking. Jika salah, maka nasabah akan diminta mengulangi proses tersebut.

Selasa, 13 September 2016

Use Case Diagram

Permisi kawan.
Pada kali ini saya akan membagikan pelajaran tentang Perancangan Perangkat Lunak.
Dalam PPL ini, ada salah satu tipe UML diagram, yaitu User case diagram.

Berikut User Case Diagram dari Air Conditioner:





Bingung?
Ya memang, saya juga masih dalam proses memahami pelajaran ini.
Sekian begitu saja kali ini. Terimakasih.

Sumber:
http://www.eso.org/

Naufan Arifie S.
5114100136
PPL E

Kamis, 14 April 2016

Code Igniter ---- How to ?

Tentang CodeIgniter


CodeIgniter adalah sebuah bentuk framework yang sedang hangat dibahas dan banyak digunakan di web web Indonesia. CodeIgniter sendiri dapat mempercepat pengembang untuk banyak membuat aplikasi di web. Sehingga dengan CodeIgniter, kita tidak perlu menulis semua code dari awal.

Oke, mari kita langsung membahas bagaimana cara memakainya..



Hello CodeIgniter!

Sebelum membuat file aplikasi untuk menampilkan hasil, kita harus membuat controller dahulu. Controller merupakan inti dari suatu aplikasi, karena controller mengatur permintaan dari HTTP.  
Buat contoh controller dengan nama Hello.php di folder application/controller.

 <?php if ( ! defined('BASEPATH'))  
  exit('No direct script access allowed');  
  class Hello extends CI_Controller {  
  function __construct()  
  {  
  parent::__construct();  
  }  
 function index()  
  {  
  echo "Hello WORLD";  
 }  
  }  

Lalu buka di http://localhost/index.php/Hello/
Maka akan muncul


Membuat Database

Pertama-tama, buat suatu database yang misalnya berisi data buku telepon..



Lalu, pada folder/application/config/ , buka database.php. Ubah bagian username dan database menjadi "root" dan nama database yang kita buat. Dalam kasus saya, saya namakan sesuai database saya yaitu "test database".

 <?php  
 defined('BASEPATH') OR exit('No direct script access allowed');  
 $active_group = 'default';  
 $query_builder = TRUE;  
 $db['default'] = array(  
      'dsn'     => '',  
      'hostname' => 'localhost',  
      'username' => 'root',  
      'password' => '',  
      'database' => 'test database',  
      'dbdriver' => 'mysqli',  
      'dbprefix' => '',  
      'pconnect' => FALSE,  
      'db_debug' => (ENVIRONMENT !== 'production'),  
      'cache_on' => FALSE,  
      'cachedir' => '',  
      'char_set' => 'utf8',  
      'dbcollat' => 'utf8_general_ci',  
      'swap_pre' => '',  
      'encrypt' => FALSE,  
      'compress' => FALSE,  
      'stricton' => FALSE,  
      'failover' => array(),  
      'save_queries' => TRUE  
 );  

Untuk menampilkannya, kita membutuhkan model. Buat modelnya di folder /application/models/.
Misal beri nama Model.php. 

 <?php   
  class db_model extends CI_Model{        
       function __construct()   
       {   
            parent::__construct();   
            $this->load->database();   
       }   
       function index(){   
            $getdata = $getdata->db->get('data');   
            return $getdata->result();   
       }   
  }   
  ?>  

Tanpa controller, model itu tidak akan berguna, jadi mari kita buat controllernya. Buat di folder application/controller. Misal, namanya ControllerDB.php

 <?php    
  defined('BASEPATH') OR exit('No direct script access allowed');    
  class controller extends CI_Controller {    
     function __construct(){    
       parent::__construct();    
                $this->load->helper(array('url','form'));   
       $this->load->model('Model');    
     }    
     function book()      
     {    
     $data['datadb'] = $this->Model->index();    
     $this->load->view('lihat', $data);    
     }    
  }    
  ?>    

Lalu buat file view yang berguna untuk melihat database kita. Buat di folder /application/views/.
Gunakan nama view yang tertera di model. Dalam hal ini, namanya adalah lihat.php

<!DOCTYPE html>   
  <html>   
    <head>   
       <title>PhoneBook</title>   
    </head>   
    <body>   
       <h1>Hello World!</h1>   
       <h1>Data Buku Telpon</h1>   
       <table border="1" style="width:100%">   
         <tr>   
            <td>Nama</td>   
            <td>Alamat</td>   
            <td>No.HP</td>   
            <td>Email</td>   
            <td>Kelas</td>   
         </tr>   
         <?php   
            foreach ($datadb as $data){   
         ?>   
         <tr>   
            <td> <?php echo $data->Nama;?> </td>   
            <td> <?php echo $data->Alamat;?> </td>   
            <td> <?php echo $data->No.HP;?> </td>   
            <td> <?php echo $data->Email;?> </td>   
            <td> <?php echo $data->Kelas;?> </td>   
         </tr>   
         <?php   
         }   
         ?>   
       </table>   
    </body>   
  </html>  

Lalu tinggal masukkan alamat  http://localhost/index.php/ControllerDB/book/



Jumat, 01 April 2016

ETS Pweb E.... Tentang Webku dan Php



No.1 
Web yang dikerjakan : infinityheroes.com
Mantan web yang dikerjakan : shinigamidono.xyz

Biaya dalam pengerjaan web

  • Shinigamidono.xyz = Rp.14.000,00
  • Infinityheroes.com =  Rp.130.000,00
Langkah-langkah yang dilakukan dalam mengerjakan web yang telah dikerjakan
  1. Memesan di domain niagahoster.co.id. Karena yg paling murah adalah .xyz, dan dalam asumsi domain hanya dipakai untuk belajar, maka kami memilih .xyz
  2. Karena hosting di niagahoster tersebut kemahalan, jadi kami memakai hosting sendiri di hostinger.co.id
  3. Dalam asumsi domain dan hosting akan terhubung dengan sendirinya, kami menunggu selama 4 hari. Ternyata, semua itu sia sia. 
  4. Setelah tahu tentang nameserver, kami memindahkan nameserver hosting ke nameserver domain. Setelah satu jam, ternyata berhasil.
  5. Karena domain yg tidak proporsional untuk komersial, maka kami membeli domain baru dengan nama infinityheroes.com
  6. Sama seperti shinigamidono.xyz, kami membeli di niagahoster dan hostinger.
Fitur fitur dalam website:
1. Halaman Home yg berisi kaos2 yg dijual


2. Informasi kontak yg terletak di footer web


3. Halaman kaos yg di pilih


Itulah fitur2 web kelompok saya.

2. Program Pendek Monitoring Praktikum


Login.php



<?php    
   $dbserver='localhost';    
   $dbname='ETS';    
   $dbuser='root';    
   $dbpass='';    
   $conn=mysqli_connect($dbserver,$dbuser,$dbpass,$dbname);    
   if(!$conn) {    
     die("Gagal " . mysqli_connect_error());    
   }    
  ?> 
2. Membuat form login


<html>   
  <head>   
    <title>LOGIN</title>   
  </head>   
  <style>   
    div {   
   background-color: lightgreen;   
   width: 200px;   
   padding: 10px;   
   margin: 10px;   
  }   
  </style>   
  <body>   
  <div>   
  <form>   
    Username : <input type = 'text' name = 'username'> <br> <br>   
    Password : <input type = 'password' name = 'password'> <br><br>   
    <input type = 'button' value = 'Login'>   
  </form>   
  </div>   
  </body>   
  </html> 



3. Tampilkan data.php

 <!DOCTYPE html>   
  <html>   
  <head>   
    <title>Tampilkan Data</title>   
  </head>   
  <body>   
  <h1>Daftar Mata Praktikum dan Jumlah Praktikan</h1>   
    <table border="1" cellpadding="3" cellspacing="0">   
       <tr>   
         <th>No.</th><th>Kode</th><th>Mata Praktikum</th><th>Jumlah Praktikum</th>   
       </tr>   
       <?php   
         mysql_connect("localhost", "root", "");   
         mysql_select_db("monitoring_praktikum");   
         $sql = mysql_query("select * from praktikum");   
         if(mysql_num_rows($sql)==0)   
         {   
            echo '<tr><td colspan="4">tidak ada data!</td></tr>';   
         }   
         else   
         {   
            $no = 1;   
            while($data = mysql_fetch_assoc($sql))   
            {   
              echo '   
              <tr>   
                 <td>'.$no.'</td>   
                 <td>'.$data['kode_mk'].'</td>   
                 <td>'.$data['nama_mk'].'</td>   
                 <td>'.$data['jumlah_praktikan'].'</td>   
              </tr>   
              ';   
              $no++;   
            }   
         }   
       ?>   
    </table>   
       <br><input style = "text-align: right" type = 'button' value = 'Tambah Data MK'>   
  </body></html>