31 Desember 2014

Contoh MVC : Kalkulator

Model-view-controller (MVC) adalah pola yang digunakan untuk mengisolasi logika dari antarmuka pengguna. Menggunakan MVC, Model merupakan informasi (data) dari aplikasi dan aturan yang digunakan untuk memanipulasi data, View sesuai dengan elemen user interface seperti teks, item kotak centang, dan sebagainya, dan Controller mengelola rincian melibatkan komunikasi antara model dan view. Controller menangani tindakan pengguna seperti keystrokes dan gerakan mouse ke dalam model atau tampilan yang diperlukan.

Figure4.gif
Di sini saya akan menunjukkan contoh kalkulator dalam arsitektur MVC. Sebuah gambaran singkat; Formulir akan menangani view dan event yang akan diteruskan ke kontroler yang kemudian akan memanggil method pada model, seperti Tambah / Kurangi / NumberPress. Model mengurus semua pekerjaan dan memegang event saat ini kalkulator. Hal yang sulit tentang MVC adalah tempat yang terpisah dapat membingungkan.

Ciri khas pola Instansiasi MVC terlihat seperti berikut ini. Sebuah hal penting yang harus diperhatikan; controller mengambil sebuah antarmuka untuk tampilan dan model. Hal ini penting untuk mengetahui bahwa view biasanya akan berinteraksi dengan controller jika perlu pemberitahuan event melalui tampilan (seperti klik tombol).

static class Program
{
    static void Main()
    {
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        frmCalcView view = new frmCalcView();
        CalculatorModel model = new CalculatorModel();
        CalcController controller = new CalcController(model, view);
        Application.Run(view);
    }
}
class CalcController : IController
{
    ICalcModel model;
    ICalcView view;

    public CalcController( ICalcModel model, ICalcView view)
    {
        this.model = model;
        this.view = view;
        this.view.AddListener(this);
    }

    public void OnClick( int number )
    {
        view.Total = model.SetInput(number).ToString();
    }

    public void OnAdd()
    {
        model.ChangeToAddState(); 
    }
}

Perhatikan bahwa view tidak berinteraksi dengan model, itu hanya menerima permintaan update dari controller. Kontroler akan mengakses view melalui total properti. View juga melewati event klik pada controller.
View ini tidak harus tahu tentang Controller, kecuali kita harus memberikan pemberitahuan beberapa event sehingga lewat dalam IController. Lalu memanggil event handler pada kontroler melalui IController.
public partial class frmCalcView : Form, ICalcView
{
    IController controller;
    public frmCalcView( )
    {
        InitializeComponent();
    }
    public void AddListener( IController controller )
    {
        this.controller = controller;
    }
    private void lbl_Click(object sender, EventArgs e)
    {
        controller.OnClick((Int32.Parse(((Label)sender).Text)));
    }
    private void lblPlus_Click(object sender, EventArgs e)
    {
        controller.OnAdd();
    }

ICalcView Members
    public string Total
    {
        get
        {
            return textBox1.Text;
        }
        set
        {
            textBox1.Text = value;
        }
      }
}

Sekarang kita akan melihat pada model. Perhatikan bahwa itu harus melakukan "pekerjaan" dari kalkulator dan menangani negara.

    class CalculatorModel : ICalcModel
    {
        public enum States { NoOperation, Add, Subtract };
        States state;
        int currentValue;
        public States State
        {
            set { state = value; }
        }
        public int SetInput ( int number )
        {
            if (state == States.NoOperation)
            {
                currentValue = number;
            }
             else if (state == States.Add)
            {
                currentValue = Add(currentValue , number );
            }
            return currentValue;
        }
        public void ChangeToAddState()
        {
            this.state = States.Add;
        }
        public int Add( int value1, int value2 )
        {
            return value1 + value2;
        }
        public int Subtract(int value1, int value2)
        {
            throw new System.ApplicationException(" Not implemented yet");
        }
}

19 Oktober 2014

Contoh Class Diagram dan Sourcecode dari UML



package PeminjamanBuku;

public class Mahasiswa{
    private final int nim;
    private final String nama;
    private final Buku bukunya[];
    private int jumlah;

    Mahasiswa(int n, String nm){
        nim = n;
nama = nm;
jumlah = 0;
bukunya = new Buku [3];
        System.out.println("Constructor penyewa "+nama);
    
    }
    
    public void pinjam_buku(Buku b){
        if (jumlah < 3){
            bukunya[jumlah] = b;
            jumlah++;
            System.out.println(nama+" pinjam buku "+b.get_judul()+" karangan "+b.get_pengarang());
        }
else
            System.out.println("Sudah Penuh!");
    }
    
    public void daftar_buku(){
        System.out.println("Daftar Bukunya "+nama+":");
            
        for(int i=0;i
            System.out.println(i+1+". "+bukunya[i].get_judul());
        }
            
    }
}



package PeminjamanBuku;

class Buku {
    public String judul;
    public String pengarang;
    public String penerbit;
    public Buku(){};
    public Buku(String j, String p){
        judul = j;
        pengarang = p;
        System.out.println("Constructor buku "+judul);
    }
    
    public void milik_buku(){
        System.out.println("Method ini milik class induk");
    }
    
    public String get_judul(){
        return judul;
    }

    public String get_pengarang(){
        return pengarang;
    }

}



package PeminjamanBuku;

public class Sejarah extends Buku{
    public void view_buku_sejarah(){
        milik_buku(); //method milik induknya
    }
    
    public void set_buku(String j, String p){
        judul = j;
        pengarang = p;
        System.out.println(judul+" "+pengarang);
    }

}



package PeminjamanBuku;

public class Main {
    public static void main(String[] args){
        Mahasiswa si = new Mahasiswa(123,"Lita");
        Buku bp = new Buku("Java","Tita");
        si.pinjam_buku(bp);
        Buku pti = new Buku("Pengantar IT","Jogiyanto");
        si.pinjam_buku(pti);
        Buku logika = new Buku("Logika","Joko");
        si.pinjam_buku(logika);
        Buku komik = new Buku("Doraemon","Akimoto");
        si.pinjam_buku(komik);
        si.daftar_buku();
        Sejarah bukuku = new Sejarah();
        bukuku.view_buku_sejarah();
        bukuku.set_buku("Sejarah Jawa","Raden Adi");
    }
}

10 Oktober 2014

Class Diagram dalam Java




Class Diagram


Dalam tahap perencanaan setiap proyek, programmer harus menjelaskan method objek yang berbeda yang diperlukan untuk memenuhi urusan. Namun objek tak dapat muncul tiba-tiba, sehingga kita perlu template yang menggambarkan jenis objek yang akan sistem miliki. Sebagai hasilnya, kita perlu untuk menunjukkan diagram dengan semua kelas yang terlibat dan hubungan antar kelas. Diagram ini disebut Class Diagram. 

Menurut Wikipedia, Class Diagram "dalam Unified Modeling Language (UML) adalah jenis diagram struktur statis yang menggambarkan struktur dari suatu sistem dengan menunjukkan kelas sistem, atribut mereka, operasi (atau metode), dan hubungan di antara obyek". Meskipun definisi ini cukup jelas, kita harus memahami bahwa Class Diagram adalah bagian dari sistem model Logical View. 

Pada gambar berikut, kita akan melihat hubungannya dengan pandangan proyek lain:



Mari Ingat: Konsep Dasar PBO

Kelas A adalah cetak biru (blue print) dari objek yang dihasilkan. Termasuk atribut dan metode dari objek. Sekarang, dalam kehidupan nyata, kita dapat menemukan banyak objek individu dari jenis yang sama. Katakanlah sebuah mobil. Mungkin ada banyak mobil, tapi semua dengan komponen dasar yang sama. Dalam hal ini, konsep kelas mobil (yang dapat dimasukkan ke paket/package) dan banyak mobil di dunia adalah contoh dari kelas itu. Analogi ini berlaku untuk hampir semua hal.


Representasi Package di UML

Dalam UML, paket digambarkan dalam folder dengan tab. Nama paket tertulis di dalam folder atau di tab. Lihat pada diagram berikut:




Sebuah package mengatur elemen UML seperti kelas dan paket lainnya. Diagram berikut merupakan gambaran dari package, kelas, dan sub-package:
Dan kemudian package lebih dalam dapat menggunakan notasi alternatif yang dapat meringankan pekerjaan. Kita dapat mewakili diagram sebelumnya dengan notasi alternatif sebagai berikut:
Rekomendasi: Nama paket dalam huruf kecil. Dalam proyek-proyek kecil itu harus sederhana dan bermakna, tetapi dalam proyek-proyek yang kompleks nama harus dibagi dan spesifik.

Representasi Kelas di UML
Dalam UML, kelas digambarkan dengan sebuah persegi panjang tiga bagian. Bagian atas meliputi nama kelas, bagian tengah meliputi atribut dan bagian bawah meliputi metode. Selain itu, ada empat cara yang berbeda untuk menunjukkan kelas menggunakan notasi UML:
  • Nama Kelas + Atribut + Metode
  • Nama Kelas + Atribut
  • Nama Kelas + Metode
  • Nama Kelas
Nama kelas harus mengikuti pola CamelCase. Juga, cobalah untuk menggunakan kata benda karena merupakan objek kehidupan nyata.
Visibilitas
Untuk menerapkan enkapsulasi, kita harus membatasi akses ke atribut, metode dan kelas. Hal ini dilakukan melalui visibilitas. Ada empat jenis visibilitas. Diagram berikut merupakan gambaran dari mereka:
Public
Public memiliki karakteristik visibilitas terlemah. Notasi adalah tanda plus (+). Mendeklarasikan atribut, kelas, atau metode sebagai publik akan membuatnya dapat diakses langsung oleh setiap kelas.
Private
Private adalah visibilitas dengan karakteristik terkuat. Notasi adalah simbol minus (-). Mendeklarasikan atribut, kelas, atau metode sebagai private akan membuatnya hanya dapat diakses untuk kelas itu sendiri.
Protected
Protected adalah salah satu visibilitas karakteristik netral. Notasi adalah simbol hash (#). Mendeklarasikan atribut, kelas, atau metode sebagai protected akan membuatnya lebih terlihat daripada atribut dan metode private, tetapi kurang terlihat daripada yang public. Dengan kata lain, unsur-unsur yang protected dapat diakses oleh kelas yang mewarisi dari kelas kita apakah itu dalam paket yang sama atau tidak.
Package
Package adalah visibilitas dengan karakteristik netral lainnya. Notasi adalah simbol tilde (~). Mendeklarasikan atribut, kelas, atau metode sebagai package akan membuatnya hanya terlihat oleh setiap kelas dalam package yang sama. Tidak masalah jika kelas lain dari package lain mewarisi dari kelas dalam package utama.
Rekomendasi
  • Private adalah yang paling berguna ketika kita memiliki atribut, atau metode yang kita inginkan menjadi independen dari seluruh sistem.
  • Atribut harus selalu private dan hanya dalam kasus yang ekstrim protected, tidak pernah bersifat public.
  • Protected sangat penting jika kita ingin mengizinkan akses ke atribut, atau metode di kelas dasar tanpa mengekspos atribut, atau metode untuk seluruh sistem.
  • Jika kita ingin menggunakan kembali metode antara kelas tetapi tidak terekspos terhadap seluruh sistem maka kita akan memerlukan visibiilty Package.
  • Protected dan Packaged visibilitiasnya tidak sama.

Atribut

Sebuah atribut dapat direpresentasikan pada diagram kelas dengan menempatkan mereka di dalam bagian tengah kotak kelas atau oleh asosiasi dengan kelas lain. Penting atribut memiliki karakteristik visibilitas, nama yang tepat dan jenis data. Lihat diagram berikut untuk lebih jelasnya:
Nama atribut harus dalam kasus campuran. Nama-nama harus mewakili nilai apa yang diwakilinya. Hindari menggunakan nama pendek.

Atribut

Sebuah metode dapat direpresentasikan pada diagram kelas dengan menempatkan mereka di dalam bagian bawah kotak kelas. Adalah penting bahwa metode ini memiliki karakteristik visibilitas, nama yang tepat, tanda kurung untuk parameter dan tipe kembali. Lihat diagram berikut untuk lebih jelasnya:
Parameter yang digunakan untuk menentukan input yang diperlukan untuk memungkinkan metode untuk menyelesaikan tugasnya. Notasi adalah sebagai berikut: name : datatype . Jika kita tidak menggunakan return type void. Kita harus menentukan setidaknya satu parameter. Dalam skenario beberapa parameter, kita harus memisahkan mereka dengan koma.
Return type ditentukan setelah akhir tanda operasi. Nama metode harus dalam kasus campuran. Gunakan kata kerja untuk menggambarkan apa metode tersebut.


Representasi Elemen statis dalam UML


Dalam object-oriented programming atribut non-statis dan metode yang terkait dengan setiap objek individu yang tercipta dari sebuah kelas. Di sisi lain, atribut statis dan metode yang terkait dengan kelas. Hal ini memungkinkan untuk berbagi nilai-nilai di antara semua objek dari jenis kelas.
Sebuah atribut atau metode dibuat statis dalam UML dengan garis bawah. Lihat ini pada diagram berikut:


Hubungan Antar Kelas


Ini adalah fakta bahwa kelas hidup berdampingan dan bekerja sama melalui releationships berbeda. Kekuatan hubungan kelas tergantung pada bagaimana terlibat adalah masing-masing kelas dengan lainnya: erat atau longgar. Diagram berikut menunjukkan jenis yang berbeda lima dari hubungan kelas:
Dependency
Menyatakan bahwa kelas perlu tahu tentang kelas lain untuk menggunakan objek dari kelas tersebut. Representasinya adalah panah putus-putus.
Association
Berarti kelas akan berisi referensi ke sebuah obyek dari kelas lain dalam bentuk atribut. Perwakilannya adalah garis lurus, nama asosiasi dan atribut (atau Kelas) yang terlibat. Contohnya adalah "Student --take -> Course".
Aggregation
Menunjukkan bahwa kelas dapat berbagi objek dari kelas lain. Representasinya adalah dengan berlian kosong, garis lurus, nama agregasi dan atribut bersama. Contohnya adalah "Orang ◊ ---- Address".
Composition
Ini bekerja mirip seperti Agregasi tetapi dalam cara yang lebih kuat. Representasinya adalah dengan berlian penuh, garis lurus, nama agregasi dan atribut bersama. Contohnya adalah "Orang ----- Nama ⧫".
Generalisasi
Hal ini juga disebut Warisan(Inheritance). Digunakan untuk menggambarkan kelas yang adalah jenis kelas lain. Representasinya adalah dengan segitiga kosong dan garis lurus. Contohnya adalah "Mammal ----- ▷ Dog".

Representasi Kelas Abstrak di UML

Kelas abstrak adalah kelas yang memperpanjang oleh kelas-kelas lain. Tidak seperti kelas konkrit, kelas abstrak tidak dapat dipakai dan hanya memiliki metode. Tujuan utama dari itu adalah memiliki kode public untuk digunakan dalam subclass. Notasi adalah sama seperti kelas tapi tanpa atribut dan teks dalam huruf miring.

Referensi

  1. Miles, R .; Hamilton, K. Belajar UML 2.0. Bab 4. Pemodelan Struktur Logical Systems. Memperkenalkan Kelas dan Class Diagram. O'Reilly Media, Inc Amerika Serikat. April 2006.
  2. Miles, R .; Hamilton, K. Belajar UML 2.0. Bab 5. Pemodelan Struktur Logical Systems. Lanjutan Class Diagram. O'Reilly Media, Inc Amerika Serikat. April 2006.

04 Oktober 2014

Polimorfisme dalam Java

Polimorfisme adalah kemampuan suatu benda untuk mempunyai banyak bentuk. Penggunaan yang paling umum dari polimorfisme di OOP/PBO terjadi ketika referensi kelas induk (superclass) digunakan untuk merujuk ke objek kelas anak (subclass).

Dalam Java semua object Java adalah polimorfik karena objek apapun akan melewati tes untuk tipe mereka sendiri dan untuk Object kelas. 

Hal ini penting untuk mengetahui bahwa satu-satunya cara yang mungkin untuk mengakses objek melalui variabel referensi. Sebuah variabel referensi hanya dapat dari satu jenis. Setelah menyatakan, jenis variabel referensi tidak dapat diubah.

Variabel referensi dapat dipindahkan ke objek lain asalkan tidak dideklarasikan akhir. Jenis variabel referensi akan menentukan metode yang dapat memanggil pada objek.

Sebuah variabel referensi dapat mengacu pada setiap objek dari jenis dinyatakan atau subtipe dari jenis dideklarasikan. Sebuah variabel referensi dapat dideklarasikan sebagai kelas atau tipe interface.

Sebagai contoh, berikut sourcecode yang telah saya buat.

public abstract class Karyawan {
    protected String nama;
    protected String jabatan;
    protected double gajibersih;
    protected double gajikotor;
    protected double gajipokok;
    protected double uangmakan;
  
    public Karyawan()
    {
        gajipokok=1000000.0;
    }
  
    public void setNama (String name)
    {
        this.nama=name;
    }
  
    public String getNama()
    {
        System.out.println ("Nama Karyawan      : " +nama);
        return nama;
    }
  
    public String jabatan()
    {
        System.out.println ("Posisi             : " +jabatan);
        return jabatan;
    }
  
    public abstract double perhitungangaji();
  
}

public class KaryawanKontrak extends Karyawan{
    
    public KaryawanKontrak()
    {
        jabatan="Karyawan Kontrak";
        uangmakan=500000.0;
    }
  
    public double perhitungangaji()
    {
        double potongan;
        gajikotor=gajipokok+uangmakan;
        potongan=(5.0/100.0)*gajikotor;
        gajibersih=gajikotor-potongan;
      
        System.out.println ("Gaji Pokok         : Rp. " +gajipokok);
        System.out.println ("Uang Makan         : Rp. " +uangmakan);
        System.out.println ("Gaji Kotor         : Rp. " +gajikotor);
        System.out.println ("Potongan           : Rp. " +potongan);
        System.out.println ("Gaji Bersih        : Rp. " +gajibersih);
      
        return gajibersih;
    }

}

public class KaryawanTetap extends Karyawan{
    double tunjangankinerja;
  
    public KaryawanTetap()
    {
        jabatan="Karyawan Tetap";
        uangmakan=750000.0;
        tunjangankinerja=500000.0;
    }
  
    public double perhitungangaji()
    {
        double potongan;
        gajikotor=gajipokok+uangmakan+tunjangankinerja;
        potongan=(10.0/100.0)*gajikotor;
        gajibersih=gajikotor-potongan;
      
        System.out.println ("Gaji Pokok         : Rp. " +gajipokok);
        System.out.println ("Uang Makan         : Rp. " +uangmakan);
        System.out.println ("Tunjangan Kinerja  : Rp. " +tunjangankinerja);
        System.out.println ("Gaji Kotor         : Rp. " +gajikotor);
        System.out.println ("Potongan           : Rp. " +potongan);
        System.out.println ("Gaji Bersih        : Rp. " +gajibersih);
      
        return gajibersih;
    } 
}

public class Manajer extends Karyawan{
    double tunjangankinerja;
    double tunjanganjabatan;
  
    public Manajer()
    {
        jabatan="Manajer";
        uangmakan=750000.0;
        tunjangankinerja=1000000.0;
        tunjanganjabatan=1000000.0;
    }
  
    public double perhitungangaji()
    {
        double potongan;
        gajikotor=gajipokok+uangmakan+tunjangankinerja+tunjanganjabatan;
        potongan=(15.0/100.0)*gajikotor;
        gajibersih=gajikotor-potongan;
      
        System.out.println ("Gaji Pokok         : Rp. " +gajipokok);
        System.out.println ("Uang Makan         : Rp. " +uangmakan);
        System.out.println ("Tunjangan Kinerja  : Rp. " +tunjangankinerja);
        System.out.println ("Tunjangan Jabatan  : Rp. " +tunjanganjabatan);       
        System.out.println ("Gaji Kotor         : Rp. " +gajikotor);
        System.out.println ("Potongan           : Rp. " +potongan);
        System.out.println ("Gaji Bersih        : Rp. " +gajibersih);
      
        return gajibersih;
    }

}

public class MainGaji {

    public static void main (String [] args)
    {
        Karyawan ref;
        KaryawanKontrak Ilham=new KaryawanKontrak();
        KaryawanTetap Ulil=new KaryawanTetap();
        Manajer Amry=new Manajer();
      
        System.out.println ("DAFTAR GAJI KARYAWAN X-Treamly Corp.");
        System.out.println ("\n");
      
        ref=Ilham;       
        ref.setNama ("Ilham");
        ref.getNama();
        ref.jabatan();
        ref.perhitungangaji();
        System.out.println ("\n");
      
        ref=Ulil;
        ref.setNama ("Ulil");
        ref.getNama();
        ref.jabatan();
        ref.perhitungangaji();
        System.out.println ("\n");
        
        ref=Amry;
        ref.setNama ("Amry");
        ref.getNama();
        ref.jabatan();
        ref.perhitungangaji();
    }
}

Maka jika dibuild dan run akan tampil seperti berikut:


DAFTAR GAJI KARYAWAN X-Treamly Corp.


Nama Karyawan      : Ilham
Posisi             : Karyawan Kontrak
Gaji Pokok         : Rp. 1000000.0
Uang Makan         : Rp. 500000.0
Gaji Kotor         : Rp. 1500000.0
Potongan           : Rp. 75000.0
Gaji Bersih        : Rp. 1425000.0


Nama Karyawan      : Ulil
Posisi             : Karyawan Tetap
Gaji Pokok         : Rp. 1000000.0
Uang Makan         : Rp. 750000.0
Tunjangan Kinerja  : Rp. 500000.0
Gaji Kotor         : Rp. 2250000.0
Potongan           : Rp. 225000.0
Gaji Bersih        : Rp. 2025000.0


Nama Karyawan      : Amry
Posisi             : Manajer
Gaji Pokok         : Rp. 1000000.0
Uang Makan         : Rp. 750000.0
Tunjangan Kinerja  : Rp. 1000000.0
Tunjangan Jabatan  : Rp. 1000000.0
Gaji Kotor         : Rp. 3750000.0
Potongan           : Rp. 562500.0
Gaji Bersih        : Rp. 3187500.0

25 September 2014

PBO: Inheritance dalam Java

INHERITANCE


Dalam tutorial ini kita akan membahas tentang Inheritance pada PBO dengan Java. Unsur yang paling mendasar dari Java adalah kelas. Kelas A merupakan entitas, dan juga mendefinisikan serta mengimplementasikan fungsionalitas. Dalam Java, kelas dapat diturunkan dari kelas lain, dalam rangka menciptakan hubungan yang lebih kompleks misalnya, atau pembeda dari sebuah objek dengan objek dari kelas tanpa perlu mengetik ulang.

Sebuah kelas yang berasal dari kelas lain disebut subclass dan mewarisi (inherit) semua atribut dan metode superclass-nya. Di Java, hanya single inheritance yang diperbolehkan dan dengan demikian, setiap kelas dapat memiliki paling banyak satu superclass langsung. Sebuah kelas dapat diturunkan dari kelas lain yang berasal dari kelas lain dan sebagainya. Akhirnya, kita harus menyebutkan bahwa setiap kelas di Java secara implisit subclass dari kelas Object.

Misalkan kita telah menyatakan dan menerapkan kelas A. Dalam rangka untuk menyatakan kelas B yang berasal dari A, Java menawarkan kata kunci extends yang bisa digunakan seperti contoh berikut:

class A {
    //Deklarasi atribut dan method.
}

class B extends A {
    //Pewarisan atribut dan method dari kelas A.
    //Deklarasi atribut dan method dari kelas B.
}

Sebagai contoh, berikut screenshoot contoh implementasi Inheriance beserta console jalannya program.

Superclass

Subclass
Main class saya ganti dengan kelas BugattiVeyron)

Dan ketika dijalankan, seperti ini tampilannya.


Demikian sedikit tentang Inheritance dalam Java.

Semoga bermanfaat.

20 September 2014

Enkapsulasi

Pada kesempatan ini kita akan belajar tentang Enkapsulasi pada Java. Enkapsulasi adalah pembungkusan. Maksud dari pembungkusan yaitu sebuah cara atau jalan untuk menyembunyikan implementasi detail dari sebuah class untuk mencegah akses yang ilegal.

Terdapat dua hal yang mendasar dari enkapsulasi yaitu penyembunyian informasi (information hiding) dan cara mengakses data (interface to access data). Berikut ini sedikit penjelasan tentang Information hiding, yaitu menyembunyikan informasi dari suatu class agar tidak bisa diakses dari luar class, caranya hanya dengan memberikan modifier private pada atribut yang ingin kita sembunyikan.

Selanjutnya mengenai interface to acces data, ialah cara kita untuk mengubah nilai pada suatu atribut yang telah kita sembunyikan. Cara yang biasa dilakukan adalah melalui method, melalui method ini kita bisa mengubah nilai suatu atribut yang telah disembunyikan. Berikut adalah contoh program dengan konsep enkapsulasi.

Listing program :
class




public class pasien {

            private String nama="Wiwin";
            public String keluhan="PKK (Panu, Kadas, Kurap)";
            public int usia;
            public int biaya;

            void tarif(int jumlah)
            {
                        biaya+=jumlah;
            }

           
            void keluhan(String penyakit)
            {
                        keluhan=penyakit;
            }
           
            String tampilnama()
            {
                        return nama;
            }

            String tampilkeluhan()
            {
                        return keluhan;
            }


            void usia(int i) {          
                        usia=i;
            }         

}


main class




public class testpasien {
       public static void main(String[]args){
       pasien pasien1=new pasien();
       pasien1.tarif(100000);
       pasien1.keluhan("Lion King");
       pasien1.usia(20);
       System.out.println("Nama Pasien          : "+pasien1.tampilnama());
       System.out.println("Usia                 : "+pasien1.usia+" Tahun");
       System.out.println("Keluhan              : "+pasien1.tampilkeluhan());
       System.out.println("Biaya                : Rp. "+pasien1.biaya);
             
       }
      
}

Dan nanti output-nya seperti berikut :


Semoga bermanfaat.