Selasa, 14 Maret 2017

PBO Classes and Objects (A Deeper Look II) (tugas 4)

Classes and Objects 8.7 - 8.13

8.7. Date Class Declaration

/**
 * Date
 * Monica I H
 * PBO
 */
public class Date
{
    private int month;
    private int day;
    private int year;
    
    private static final int[] daysPerMonth =
        {0,31,28,31,30,31,30,31,31,30,31,30,31};
        
   public Date(int theMonth, int theDay, int theYear)
   {
       month = checkMonth( theMonth ); 
       year = theYear;
       day = checkDay (theDay);
      
       System.out.printf(
        "Date object constructor for date %s\n", this);
   }
   
   private int CheckMonth(int testMonth)
   {
       if (testMonth > 0 && testMonth <=12)
        return testMonth;
       else
        throw new IllegalArgumentException ("month must be 1-12");
   }
   
   private int checkDay(int testDay)
   {
       if (testDay > 0 && testDay <= daysPerMonth [month])
        return testDay;
        
       if(month == 2 && testDay == 29 && (year % 400 == 0 ||
        (year % 4 == 0 && year % 100 != 0 )))
        return testDay;
        
       throw new IllegalArgumentException(
        "day out-of-range for the specified month and year");
   }
   
   public String toString()
   {
       return String.format("%d/%d/%d", month, day, year);
   }
}

8.8. Employee Class with References to other objects

/**
 * Employee
 * Monica I H
 * PBO
 */
public class Employee
{
   private String firstName;
   private String lastName;
   private Date birthDate;
   private Date hireDate;
   
   public Employee (String first, String last, Date dateOfBirth,
    Date dateOfHire)
    {
        firstName = first;
        lastName = last;
        birthDate = dateOfBirth;
        hireDate = dateOfHire;
    }
   
   public String toString()
   {
       return String.format ("%s, %s Hired: %s Birthday: %s",
        lastName, firstName, hireDate, birthDate);
   }
}

8.9. Composition Demonstration

/**
 * EmployeeTest
 * Monica I H
 * PBO
 */
public class EmployeeTest
{
  public static void main (String[] args)
  {
      Date birth = new Date (7,24,1949);
      Date hire = new Date (3,12,1988);
      Employee employee = new Employee ("Bob", "Blue", birth, hire);
      
      System.out.println(employee);
  }
}


8.10. Declaring an enum type with constructor and explicit instance fields and accessors for these fields

/**
 * Enumeration class Book
 * Monica I H
 * PBO
 */
public enum Book
{
    JHTP( "Java How to Program", "2012" ),
    CHTP( "C How to Program", "2007" ),
    IW3HTP( "Internet & World Wide Web How to Program", "2008" ),
    CPPHTP( "C++ How to Program", "2012" ),
    VBHTP( "Visual Basic 2010 How to Program", "2011" ),
    CSHARPHTP( "Visual C# 2010 How to Program", "2011" );
    
    private final String title;
    private final String copyrightYear;
    
    Book (String bookTitle, String year)
    {
        title = bookTitle;
        copyrightYear = year;
    }
    
    public String getTitle()
    {
        return title;
    }
    
    public String getCopyrightYear()
    {
        return copyrightYear;
    }
}

8.11. Testing an Enum Type

/**
 * EnumTypeTesting
 * Monica I H
 * PBO
 */

import java.util.EnumSet;

public class EnumTest
{
    public static void main(String[] args)
    {
        System.out.println("All books:\n");
        
        for (Book book : Book.values() )
            System.out.printf("%-10s%-45s%s\n", book,
                book.getTitle(), book.getCopyrightYear() );
        
        System.out.println("\nDisplay a range of enum constants:\n");
        
        for (Book book : EnumSet.range(Book.JHTP, Book.CPPHTP))
            System.out.printf("%-10s%-45s%s\n", book,
                book.getTitle(), book.getCopyrightYear() );
    }
}

8.12. Static Variable Used to Maintain a Count of The Number of Employee Object in Memory

/**
 * Employee2
 * Monica I H
 * PBO
 */
public class Employee2
{
    private String firstName;
    private String lastName;
    private static int count=0;
    
    public Employee2(String first, String last)
    {
        firstName = first;
        lastName = last;
        
        ++count;
        System.out.printf("Employee constructor: %s %s; count = %d\n",
            firstName, lastName, count);
    }
    
    public String getFirstName()
    {
        return firstName;
    }
    
    public String getLastName()
    {
        return lastName;
    }
    
    public static int getCount()
    {
        return count;
    }
}

8.13. Static Member Demonstration

/**
 * Employee2Testing
 * Monica I H
 * PBO
 */
public class Employee2Test
{
    public static void main (String[] args)
    {
        System.out.printf("Employees before instantiation: %d\n",
            Employee2.getCount());
            
        Employee2 e1 = new Employee2("Susan", "Baker");
        Employee2 e2 = new Employee2("Bob", "Blue");
        
        System.out.println( "\nEmployees after instantiation: " );
        System.out.printf( "via e1.getCount(): %d\n", e1.getCount());
        System.out.printf( "via e2.getCount(): %d\n", e2.getCount());
        System.out.printf( "via Employee2.getCount(): %d\n",
            Employee2.getCount() );
            
        System.out.printf("\nEmployee 1 : %s %s \nEmployee 2: %s %s \n",
            e1.getFirstName(), e1.getLastName(),
            e2.getFirstName(), e2.getLastName());
            
        e1 = null;
        e2 = null;
    }
}

PBO Ticket Machine (tugas 3)

Studi Kasus Ticket Machine

Ticket Machine adalah sebuah mesin seperti ATM, yang berfungsi melayani penjualan tiket kereta api dari satu tujuan ke tujuan yang lain. Mesin ini berisi informasi harga tiket ke berbagai tujuan, menghitung kembalian, dan mencetak bukti pembelian tiket.

Class TicketMachine
/**
 * TicketMachine
 * Monica I H
 * PBO
 */
public class TicketMachine
{
    // The price of a ticket from this machine.
   private int price;
    //The amount of money entered by a customer so far.
   private int balance;
    // The total amount of money collected by this machine.
   private int total;
   
   public TicketMachine (int ticketCost)
   {
       price=ticketCost;
       balance=0;
       total=0;
   }
   
   public int getPrice()
   {
       return price;
   }
   
   public int getBalance()
   {
       return balance;
   }
   
   public void insertMoney(int amount)
   {
       balance=balance+amount;
   }
   
   public void printTicket()
   {
        // Simulate the printing of a ticket.
       System.out.println("##################");  
       System.out.println("# The BlueJ Line");  
       System.out.println("# Ticket");  
       System.out.println("# " + price + " cents.");  
       System.out.println("##################");  
       System.out.println();
       
        // Update the total collected with the balance.
       total=total+balance;
        // Clear the balance.
       balance=0;
   }
}

Main Program

/**
 * TicketMachine-Main
 * Monica I H
 * PBO
 */
import java.util.Scanner;
public class IntMain
{
    public static int main()
    {
        Scanner scan= new Scanner(System.in);  
        int cost,menu;  
        System.out.println("Masukkan harga tiket: ");  
        cost=scan.nextInt();
        TicketMachine ticket=new TicketMachine(cost);
        while (true)
        {
            System.out.println("1. Get Price");  
            System.out.println("2. Get Balance");  
            System.out.println("3. Insert Money");  
            System.out.println("4. Print Ticket");
            System.out.println("5. Exit");
            menu=scan.nextInt();  
                switch(menu)
                {
                    case 1:  
                        cost=ticket.getPrice();  
                        System.out.println(cost);  
                        break;  
                    case 2:  
                        System.out.println(ticket.getBalance());  
                        break;  
                    case 3:  
                        int money=scan.nextInt();  
                        ticket.insertMoney(money);  
                        break;  
                    case 4:  
                        ticket.printTicket();  
                        break;  
                    case 5:
                        return 0;
                }
        }
    }
}

Output:

Senin, 13 Maret 2017

MPPL Contoh Proposal Penawaran (tugas 3)

draft

MPPL Contoh Kerangka Acuan Kerja (KAK) Pembuatan Aplikasi Pengendalian Internal (tugas 2)

PEMBUATAN APLIKASI PENGENDALIAN INTERNAL KEGIATAN PENGEMBANGAN LAYANAN INFORMASI ADMINISTRASI KEPEGAWAIAN SERTA SINKRONISASI KEBIJAKAN BIDANG KEPEGAWAIAN DI JAWA TENGAH


Latar Belakang
        Badan Kepegawaian Daerah (BKD) Provinsi Jawa Tengah mempunyai tugas pokok membantu Gubernur dalam penyelenggaraan Pemerintahan Daerah di bidang Manajemen PNS Daerah. Dalam rangka pelaksanaan tugasnya, BKD mempunyai fungsi sebagai perencana, pengembang, dan pelayan administrasi kepegawaian bagi Pegawai Negeri Sipil Daerah (PNSD) di lingkungan Pemerintah Provinsi Jawa Tengah. Fungsi-fungsi tersebut dapat terwujud bila didukung sistem tata kerja yang jelas, rinci serta dukungan SDM berkualitas dan handal yang dapat bekerja sama mencapai tujuan organisasi dalam mendukung rangka mendukung pengambilan keputusan dan kendali dalam organisasi. Sesuai pasal 34 Undang-Undang Nomor 43 Tahun 1999 tentang perubahan atas Undang-Undang Nomor 8 Tahun 1974 tentang Pokok-Pokok Kepegawaian bahwa untuk kelancaran pelaksanaan manajemen Pegawai Negeri Sipil Daerah dibentuk Badan Kepegawaian Daearah yang merupakan perangkat daerah. Selanjutnya pada Keputusan Presiden Nomor 159 Tahun 2000 tentang Pedoman Pembentukan Badan Kepegawaian Daerah bahwa yang dimaksud dengan Badan kepegawaian Daerah adalah perangkat daerah yang melaksanakan manajemen Pegawai Negeri Sipil dalam membantu tugas pokok Pejabat Pembina Kepegawaian Daerah.

Maksud dan Tujuan
Maksud
Aplikasi pengendalian internal dibuat untuk:
a. Mencatat realisasi keuangan yang terintegrasi dari aplikasi Sistem Informasi Keuangan Internal (SIKI) dan realisasi fisik serta target fisik yang sudah ditetapkan oleh Biro Bangda.
b. Mencatat jadwal pelaksanaan kegiatan yang akan datang, sehingga masing-masing bidang dapat mempunyai reminder/pengingat tentang list kegiatan yang sudah mendekati jadwal pelaksanaan ataupun yang sudah melebihi jadwal pelaksanaan.
c. Membuat laporan triwulan yang dikirimkan ke Bappeda.
 
Tujuan
Tujuan Pembuatan Aplikasi Pengendalian Internal ini adalah :
a. Mengintegrasikan Data Program dan Kegiatan dari Sistem Penganggaran e-Budgeting/SIMDA2016.
b. Menambahkan breakdown data program dan kegiatan untuk masing-masing sub kegiatan perbidang yang ada di BKD.
c. Membreakdown masing-masing sub kegiatan menjadi rincian pelaksanaan kegiatan disertai dengan target output PNS dan PNS yang bertanggung jawab sebagai pelaksana dari rincian tersebut.

Metode Kerja
        Kegiatan Pembuatan Aplikasi Pengendalian Internal pada Badan Kepegawaian Daerah Provinsi Jawa Tengah dalam bentuk tahapan-tahapan kegiatan, yang dilaksanakan sebagai berikut:
1. Tim Perancangan/DesainSistem (PendampinganPenyedia Jasa),
2. Tim Pembuatan/Pemrograman Aplikasi (Pendampingan Penyedia Jasa),
3. Pelaporan.

Lingkup Kegiatan
        Kegiatan Pembuatan Aplikasi Pengendalian Internal pada Badan Kepegawaian Daerah Provinsi Jawa Tengah ini dilaksanakan dalam bentuk pembuatan modul-modul aplikasi berbasis web melalui tahap-tahap analisis, desain, koding, uji coba dan implementasi.

Perancangan Sistem
-Metodologi
        Kegiatan Pembuatan Aplikasi Pengendalian Internal pada Badan Kepegawaian Daerah Provinsi Jawa Tengah dilaksanakan dalam bentuk pembuatan sebuah program aplikasi berbasis web melalui tahapan-tahapan sebagai berikut:
Komponen Sistem :
a. Arsitektur sistem : berbasis Web Application
b. Database MySQL dan Pemrograman dengan PHP
c. Server Aplikasi (Operating System Linux)
d. Komputer client dengan Web Browser (OS. Linux dan Windows)

-Desain Aplikasi
        Aplikasi Pengendalian Internal pada Badan Kepegawaian Daerah Provinsi Jawa Tengahdidesain dengan menggunakan pendekatan Desain Web berbasiskan Framework. Pendekatan ini bertujuan untuk mempermudah di dalam development system dan menghasilkan system yang user friendly bagi user, sehingga menghasilkan aplikasi yang mudah di pahami dan mudah digunakan untuk membantu system kerja di dalam monitoring kegiatan dan program yang ada.

-Otoritas Pengguna
        Pada Aplikasi Pengendalian Internal pada Badan Kepegawaian Daerah Provinsi Jawa Tengah setiap user login mempunyai tipe user yang menentukan hak akses terhadap modul-modul yang ada. Setelah melalui proses validasi login, operator yang mempunyai hak akses terhadap modul ini dapat menjalankan proses-proses untuk input, edit, dan membuat laporan dalam format PDF yang dapat dicetak melalui printer.
Otoritas pengguna tersebut yaitu:
a. Administrator BKD
Memiliki semua hak akses, manajemen pengguna, manajemen setting aplikasi dan database.
b. Operator BKD
Memiliki hak untuk inputdata program dan kegiatan, edit, menampilkan data, laporan dan seluruh dana perencanaan program dan kegiatan yang akan di susun di lingkungan BKD Pemerintah Provinsi Jawa Tengah.
c. User BKD
Memiliki hak untuk mengakses aplikasi sesuai dengan bidangnya masing-masing.

Keluaran Kegiatan
        Keluaran yang dihasilkan dari pelaksanaan pekerjaan ini adalah:
1. Perangkat lunak Pembuatan Aplikasi Pengendalian Internal untuk mendukung Kegiatan Pengelolaan dan monitoring Data Program dan Kegiatan di BKD Provinsi Jawa Tengah sehingga dapat diperoleh informasi yang cepat, tepat dan akurat demi terselenggaranya tertib administrasi pengelolaan keuangan dan pertanggung jawaban. 
2. Dokumentasi yang berkaitan dengan pengembangan aplikasi, antara lain kebutuhan sistem, desain sistem, konfigurasi sistem dan arsitektur program.
3. Dokumentasi seluruh sistem dan perangkat lunak berupa buku manual.
4. Dokumentasi SOP (System Operation Procedure) maupun SMP (System Maintenance Procedure)
5. Instalasi aplikasi
6. Pelatihan, pendampingan/asistensi, garansi dan pemeliharaan. Media dokumentasi pada proyek ini dibuat dalam format softcopy danhardcopy. Format yang digunakan dalam dokumentasi dalam bentuk softcopy adalah menggunakan standar format MS Office atau PDF. Dokumen yang diserahkan tersebut harus merupakan versi final dari aplikasi yang telah dikembangan/dibangun melalui tahapan pengujian dan integrasi sistem aplikasi.

Kebutuhan Personil dan Peralatan
        Untuk memperoleh hasil sebagaimana yang diharapkan, sesuai dengan tahapan-tahapan kegiatan dibagi menjadi kelompok kerja (tim), yaitu:
1. Tim Teknis Perancangan
2. Tim Teknis Pemrograman
3. Tim Evaluasi

        Untuk kebutuhan tersebut, maka diperlukan beberapa tenaga ahli yang memenuhi kualifikasi yang memadai dan peralatan, sebagai berikut:

 Jadwal Pelaksanaan
Pembiayaan
        Pembiayaan Pembuatan Aplikasi Pengendalian Internal pada Badan Kepegawaian Daerah dibebankan APBD Perubahan Pemerintah Provinsi Jawa Tengah Tahun Anggaran 2015 DPA Nomor 3679/DPPA/2015 tanggal 13 Oktober 2015 Rekening 120.27.0026.5.2.2.21.05 Kegiatan Pengembangan Layanan Informasi Administrasi Kepegawaian serta Sinkronisasi Kebijakan Bidang Kepegawaian di Jateng mulai dari perencanaan sampai dengan pelaporan.

Tempat
        Tempat Penyerahan hasil Pembuatan Aplikasi Pengendalian Internal adalah di Badan Kepegawaian Daerah Provinsi Jawa Tengah, Jl. Stadion Selatan No. 1 Semarang.

Pelaporan
         Laporan pelaksanaan kegiatan dibuat dalam rangkap 10 (sepuluh) dalam bahasa Indonesia, meliputi:
1. Laporan Awal, berisi :
a. Metodologi/Rencana pelaksanaan pekerjaan
b. Alokasi Tim Ahli dan tenaga pendukung lainnya
c. Jadwal kegiatan penyedia jasa
d. Desain awal aplikasi

Laporan harus diserahkan selambat-lambatnya 7 (tujuh) hari kalender sejak SPMK diterbitkan.
2. Laporan Akhir, berisi :
a. Memuat seluruh proses kegiatan dan pertanggungjawaban karena telah selesainya tahapan-tahapan kegiatan yang sudah dilakukan

b. Dokumentasi lain yang berkaitan dengan kegiatan pengembangan sistem ini.
Laporan harus diserahkan selambat-lambatnya 45 (empat puluh lima) hari kalender sejak SPMK diterbitkan.
3. Manual Book sebanyak 10 (sepuluh) Buku
4. CD Master Aplikasi berisi seluruh laporan dan hasil aplikasi sebanyak 10 (sepuluh) CD

Penutup
          Demikian Kerangka Acuan Kerja (KAK) Pembuatan Aplikasi Pengendalian Internal pada Badan Kepegawaian Daerah Provinsi Jawa Tengah ini disusun sebagai dasar pelaksanaan kegiatan, sehingga BKD Provinsi Jawa Tengah dapat mengatasi permasalahan-permasalahan yang ada, terutama dalam Pembuatan Aplikasi Pengendalian Internalpada Badan Kepegawaian Daerah provinsi Jawa Tengah.

Sumber: bkd.jatengprov.go.id