Jumat, 14 Mei 2010

Public Key Infrastructure dan Certificate Authority

Public Key Infrastructure dan Certificate Authority



Definisi

Public key Infrastructure (PKI) adalah suatu sistem dimana terdapat pihak ketiga yang terpercaya yang akan menjamin kepercayaan, otentikasi dan keamanan pada jaringan dimana PKI digunakan.
Perangkat lunak PKI telah banyak dikembangkan oleh para developer, baik itu bersifat open source maupun berlisensi.



1.1 Public Key Infrastructure
PKI merupakan teknik aplikasi berbasis Public Key Cryptography yang merupakan kriptografi berbasis kunci asimetrik.
PKI adalah framework yang terdiri dari security policies, mekanisme enkripsi dan aplikasi yang membangkitkan, menyimpan serta mengelola kunci-kunci dan sertifikat digital. Sehingga dengan PKI sebagai pihak ketiga yang terpercaya akan dapat menjamin pertukaran data maupun transaksi online secara aman.

1.1.1 Komponen-komponen PKI
Certification Authority (CA)
CA adalah aplikasi pihak ketiga yang terpercaya yang mengotentikasi pihak-pihak yang berperan dalam suatu transaksi elektronik. Untuk mengotentikasi suatu entitas maka CA menerbitkan sertifikat digital. Sertifikat digital ini mengandung informasi yang tergantung pada Certification Policy (CP) dan Certification Practise Statement (CPS) masing-masing institusi penerbit sertifikat.

RootCA
Suatu RootCA adalah CA dengan level tertinggi yang menandatangani sertifikatnya sendiri (self-signed certificate), dan biasanya disebut Trusted Root.

SubCA
Suatu subordinat CA adalah suatu CA dimana sertifikatnya ditandatangani oleh CA lain yang dapat berupa SubCA atau RootCA.


Registration Authority (RA)
RA mempunyai fungsi-fungsi yang sesuai dengan CP/CPS, antara lain menerima permintaan sertifikat dan memvalidasinya, mengirim permitaan ke CA, menerima sertifikat yang diterbitkan oleh CA dan mengirim sertifikat pada user/entitas yang benar. RA khususnya bermanfaat untuk skala aplikasi PKI berada di lokasi yang berbeda secara
geografi.

Certificate Revocation List (CRL)
CRL digunakan untuk membuat list sertifikat yang sudah dibatalkan/dicabut. Sertifikat dapat dicabut dengan berbagai alasan, mulai dari pencabutan secara administratif sudah habis masa berlakunya dan tidak diperpanjang lagi maupun ketika kunci privat sudah tidak aman lagi. Beberapa metode dimana CA dapat menbatalkan sertifikat adalah:
Periodic Publication Mechanisms, di dalamnya termasuk penggunaan CRL dan Certificate Revocation Trees (CRT).
Online Query Mechanism, termasuk Online Certificate Status Protocol (OCSP) dan Online Transaction Validation
Protocol (OTVP). OCSP digunakan untuk mendapatkan informasi pembatalan sertifikat secara online, dan OTVP digunakan untuk validasi secara online.

End-entity
End-entity adalah pengguna/klien, seperti klien email, server web, browser web atau gateway VPN, yang tidak menerbitkan sertifikat dan merupakan node terakhir dalam PKI.

1.1.2 Model Kepercayaan Hirarki PKI
Dalam Microsoft Press tahun 2003 disebutkan bahwa yang termasuk model kepercayaan hirarki pada PKI adalah Rooted trust model, Network (or cross-certification) trust model dan Hybrid trust mode yang merupakan kombinasi elemen dari kedua model kepercayaan rooted dan network.

1.1.3 Standard Protocol dan Aplikasi pada PKI
X.509 v3 Certificate Standard
Pada tahun 1988, International Telecommunications Union merekomendasikan X.509 sebagai standar untuk sertifikat digital. Versi terakhir pada saat ini adalah X.509 v3.
X.509 CRL Versi 2 ISO/IEC/ITU X.509 standard juga mendefinisikan format X.509 CRL, mirip dengan format serifikat X.509. Versi terakhir yang banyak digunakan adalah X.509 CRL v2.

1.1.4 Spesifikasi PKI
Spesifikasi lengkap mengenai PKI dapat merujuk dokumen Request For Command yang diterbitkan oleh Internet Engineering Task Force maupun Public-Key Cryptography Standards yang diterbitkan oleh RSA Laboratories.



1.2 Active Directory dan Lightweight Directory Access Protocol (LDAP)
Active Directory terdiri dari basisdata yang menyimpan segala sumber daya yang terdapat di dalam jaringan dan informasi yang disimpan di dalam basisdata dapat diakses oleh pengguna dan aplikasi. LDAP adalah protokol perangkat lunak untuk memungkinkan pencarian resource dalam suatu jaringan baik di internet atau intranet.

2. Konsep PKI Berbasis Windows Server 2003
PKI berbasis Windows Server 2003 merupakan PKI yang disediakan dan dikembangkan dengan platform Windows Server 2003. Ketika online, hanya satu instans CA yang dapat running pada Windows Server 2003.

2.1 Arsitektur PKI Windows 2003
Arsitektur PKI WS2003 yang mengandung berbagai modul, basisdata, tool administrasi, perantaraan dan CryproAPI.




2.2 Model Kepercayaan pada Windows Server 2003
PKI WS2003 mendukung dua model kepercayaan PKI, yaitu model kepercayaan hirarki dan model kepercayaan networked.

2.3 Aspek Kriptografi Pada PKI Windows Server 2003
Berikut adalah algoritma kriptografi dan panjang kunci yang digunakan pada PKI WS2003

3. Konsep PKI berbasis EJBCA
EJBCA adalah sebuah aplikasi berbasis komponen pada teknologi J2EE sehingga dapat berjalan pada banyak platform operating system (Windows, Linux, Unix). EJBCA dapat digunakan sebagai standalone atau terintegrasi dengan aplikasi J2EE yang lain, keduanya fleksibel dan dapat bekerja secara independent. EJBCA berkelas enterprise.

3.1. Arsitektur EJBCA
Arsitektur EJBCA terdiri dari komponen-komponen dalam kelompok klien dan server. Pada server, EJBCA dibagi lagi menjadi web tier, ejb tier dan data tier. Diagram berikut ini adalah skema umum dari arsitektur EJBCA.


3.2 Model Kepercayaan pada EJBCA
Model Hirarki dan Network adalah model kepercayaan yang dapat dikembangkan pada EJBCA.


Keterangan
PKI WS2003 dan EJBCA banyak mendukung parameter dengan perbandingan yang sama, Perbedaan yang ada antara lain adalah PKI WS2003 mendukung mode enterprise dan standalone, hanya melakukan pemilihan bit kunci algoritma kriptografi, administasi GUI berbasis konsol, dan mendukung Key Recovery untuk menyimpan kunci privat, sedangkan EJBCA mendukung mode enterprise, multiplatform Operating System, algoritma ECDSA dan SHA256, pemilihan terhadap algoritma kriptografi, administrasi GUI berbasis Web dengan Strong Authentication. Sebagai suatu aplikasi PKI maka dapat disimpulkan bahwa EJBCA memiliki kelebihan di sisi multiplatform operating system, aspek kriptografis maupun administrasi.




Sertifikat kunci public (Public Key Infrastructure)
Dalam kriptografi , sertifikat kunci publik (juga dikenal sebagai sertifikat digital atau sertifikat identitas) adalah dokumen elektronik yang menggunakan tanda tangan digital untuk mengikat bersama sebuah kunci publik dengan identitas - informasi seperti nama orang atau organisasi, mereka alamat, dan sebagainya. Sertifikat ini dapat digunakan untuk memverifikasi bahwa kunci publik milik individu.
Dalam khas infrastruktur kunci publik (PKI) skema, tanda tangan akan dari otoritas sertifikat (CA). Dalam web kepercayaan skema, signature-nya baik pengguna (a -menandatangani sertifikat diri ) atau pengguna lain ("dukungan"). Dalam kedua kasus, tanda tangan pada sertifikat yang attestations oleh penandatangan sertifikat bahwa informasi identitas dan kunci publik milik bersama.
Untuk keamanan dibuktikan ini ketergantungan pada sesuatu di luar sistem tersebut memiliki konsekuensi bahwa skema sertifikasi kunci publik harus bergantung pada beberapa asumsi konfigurasi khusus, seperti adanya otoritas sertifikat .
Sertifikat dapat dibuat untuk Unix berbasis server-dengan perangkat seperti OpenSSL 's ssl-ca. atau SuSE gensslcert s '. Ini dapat digunakan untuk menerbitkan sertifikat unmanaged, Sertifikasi Authority (CA) sertifikat untuk mengelola sertifikat lainnya, dan pengguna dan / atau permintaan komputer sertifikat harus ditandatangani oleh CA, serta sejumlah sertifikat fungsi-fungsi terkait.
Demikian pula, Microsoft Windows 2000 Server dan Windows Server 2003 berisi Sertifikasi Authority (CA) sebagai bagian dari Layanan Sertifikat untuk pembuatan sertifikat digital. Pada Windows Server 2008 CA dapat diinstal sebagai bagian dari Layanan Direktori Aktif Sertifikat. CA digunakan untuk mengelola dan terpusat sertifikat masalah bagi pengguna dan / atau komputer. Microsoft juga menyediakan beberapa utilitas sertifikat yang berbeda, seperti SelfSSL.exe untuk membuat sertifikat unmanaged, dan Certreq.exe untuk membuat dan mengajukan permintaan sertifikat harus ditandatangani oleh CA, dan certutil.exe untuk beberapa fungsi yang berhubungan dengan sertifikat lainnya.

Dari sertifikat digital yang khas
Serial Number: Digunakan untuk secara unik mengidentifikasi sertifikat.
Subject: Orang, atau entitas yang diidentifikasi.
Signature Algoritma: Algoritma yang digunakan untuk membuat tanda tangan.
Penerbit: The entitas yang diverifikasi informasi dan menerbitkan sertifikat.
Valid-Dari: Tanggal sertifikat pertama berlaku dari.
Valid-Untuk: Tanggal kadaluarsa.
Kunci-Penggunaan: Tujuan dari kunci publik (encipherment misalnya, tanda tangan, sertifikat penandatanganan ...).
Public Key: Kunci publik untuk mengenkripsi pesan kepada subjek bernama atau untuk memverifikasi tanda tangan dari subjek bernama.
Cap jempol Algoritma: Algoritma yang digunakan untuk hash sertifikat.
Cap jempol: The hash itu sendiri untuk memastikan bahwa sertifikat tersebut belum dirusak.

Klasifikasi
Vendor didefinisikan kelas
VeriSign memperkenalkan konsep kelas sertifikat digital
Kelas 1 untuk individu, dimaksudkan untuk email
Kelas 2 untuk organisasi, untuk bukti identitas yang diperlukan
Kelas 3 untuk server dan menandatangani perangkat lunak, yang verifikasi independen dan memeriksa identitas dan otoritas dilakukan dengan penerbitan sertifikat otoritas
Kelas 4 untuk transaksi bisnis online antara perusahaan
Kelas 5 untuk organisasi swasta atau keamanan pemerintah.


Infrastruktur kunci public

Public Key Infrastructure (PKI) adalah satu set perangkat keras, perangkat lunak, orang, kebijakan, dan prosedur yang diperlukan untuk membuat, mengelola, mendistribusikan, menggunakan, menyimpan, dan mencabut sertifikat digital. Dalam kriptografi , sebuah PKI adalah pengaturan yang mengikat kunci publik dengan identitas masing-masing pengguna melalui suatu otoritas sertifikat (CA). Identitas pengguna harus unik dalam setiap domain CA. Pengikatan dibentuk melalui proses registrasi dan penerbitan, yang, tergantung pada tingkat pengikatan jaminan memiliki, dapat dilakukan oleh perangkat lunak pada CA, atau di bawah pengawasan manusia. Peran PKI yang menjamin mengikat ini disebut Otorita Pendaftaran (RA). Untuk setiap pengguna, identitas pengguna, kunci publik,, kondisi validitas mengikat mereka dan atribut lainnya yang dibuat unforgeable di sertifikat kunci publik yang dikeluarkan oleh CA.
Istilah ini dipercaya pihak ketiga (TTP) juga dapat digunakan untuk otoritas sertifikat (CA). Istilah PKI kadang-kadang keliru digunakan untuk menunjukkan algoritma kunci publik , yang tidak memerlukan penggunaan CA.

















Secara umum, ada tiga pendekatan untuk mendapatkan kepercayaan ini:
Otoritas Sertifikat (CA)
Web dari Trust (WOT),
Infrastruktur Wikipedia kunci publik (SPKI).

Perangkat lunak PKI
Ketika menggelarkan PKI, bagian yang paling penting adalah bagian dari perangkat lunak CA yang tepat. Ada banyak solusi di pasaran:
• Ascertia : Perusahaan tetap independen dari Otoritas Sertifikasi produk dan vendor dan karenanya perusahaan Layanan Profesional bebas untuk memberikan saran objektif untuk penyebaran PKI.
• Comodo : Apakah terbesar kedua Otoritas Sertifikat untuk tinggi-jaminan sertifikat digital. Ia menawarkan produk PKI dan manajemen sertifikat, serta faktor-Otentikasi Dua menggunakan infrastruktur Kunci Publik.
• Cryptomathic : Menawarkan produk yang disebut CCA.
• DigiCert : adalah sebuah otoritas sertifikat yang menawarkan layanan PKI berhasil disebut DigiCert ® Enterprise Dikelola PKI untuk SSL / TLS sertifikat.
• Djigzo email enkripsi : Open source enkripsi email gateway dengan dukungan S / MIME dan enkripsi PDF dengan satu kali-sandi melalui SMS.
• Echoworx : Semua data dienkripsi menggunakan standar industri yang terpercaya PKI (Public Key Infrastructure) dan S / MIME teknologi untuk enkripsi kuat dan tanda tangan digital.
• EJBCA : Open source , platform independen solusi diimplementasikan di Java EE .
• Mempercayakan : Tawarkan suite produk yang disebut Penitipan Authority. penawaran Penitipan ini termasuk off-the-shelf software PKI serta host, dikelola solusi terutama dalam pemerintahan dan keuangan spasi industri.
• GlobalSign : Penawaran TrustedRoot, sebuah program PKI CA Rootstore chaining (Root Daftar) yang memungkinkan Anda untuk mendapatkan kepercayaan Anda segera untuk SSL, S / MIME dan kode sertifikat penandatanganan oleh chaining Microsoft Anda atau inhouse CA CA Root Sertifikat ke-pra terpercaya GlobalSign root sertifikat.
• IBM : Penawaran Jasa PKI untuk z / OS .
• KEYNECTIS : Penawaran produk bernama Sequoia serta solusi host
• Linux : Linux mendukung OpenSSL dan OpenCA , yang dua open source solusi CA.
Microsoft: Windows 2000 Server , Server 2003 dan Server 2008 semua berisi perangkat lunak CA, yang terintegrasi dalam Active Directory dan tidak memerlukan biaya lisensi tambahan.

Contoh Penggunaan
• PKIs dari satu jenis atau lain, dan dari beberapa vendor, memiliki banyak kegunaan, termasuk memberikan kunci publik dan binding untuk identitas pengguna yang digunakan untuk:
• Enkripsi dan / atau pengirim otentikasi dari e-mail pesan (misalnya, menggunakan OpenPGP atau S / MIME ).
• Enkripsi dan / atau otentikasi dokumen (misalnya, XML Signature atau XML Encryption standar jika dokumen dikodekan sebagai XML ).
• Otentikasi dari pengguna untuk aplikasi (misalnya, smart card logon, klien otentikasi dengan SSL ). Ada penggunaan digital-eksperimental untuk menandatangani HTTP otentikasi di Enigform dan mod_openpgp proyek.
• Bootstrap protokol komunikasi yang aman, seperti tombol pertukaran Internet (IKE) dan SSL . Dalam kedua ini, awal set-up saluran aman (sebuah " asosiasi keamanan ") menggunakan kunci asimetrik (alias kunci publik) metode, sedangkan komunikasi sebenarnya lebih cepat menggunakan kunci simetrik (alias kunci rahasia ) metode.
• Handphone tanda tangan. tanda tangan tanda tangan elektronik mobile yang dibuat menggunakan perangkat mobile dan bergantung pada layanan tanda tangan atau sertifikat di lokasi lingkungan telekomunikasi independen.



Certificate Authority
Dalam kriptografi, Certificate Authority (disingkat menjadi CA), adalah sebuah entitas yang mengeluarkan sertifikat digital yang dapat digunakan oleh pihak-pihak lainnya.
Disebut juga sebagai Certification Authority. Para CA merupakan contoh pihak-pihak yang dapat dipercayai, khususnya dalam transaksi secara online di Internet. CA merupakan salah satu ciri-ciri dari beberapa ciri-ciri lainnya dalam skema implementasi public key infrastructure (PKI).
Ada banyak CA yang bersifat komersial yang untuk menggunakan jasanya, sebuah entitas, baik itu perseorangan ataupun organisasi, harus membayar jasa mereka. Beberapa pemerintahan dan institusi pendidikan mungkin memiliki CA mereka masing-masing, dan tentu saja di sana juga banyak tersebar CA yang menawarkan jasanya secara cuma-Cuma..
(CA juga singkatan untuk akses bersyarat, sebuah istilah yang digunakan dalam DTV.)
Sebuah certificate authority (CA) adalah authority dalam sebuah jaringan bahwa isu-isu dan kepercayaan mengelola keamanan dan kunci publik untuk enkripsi pesan.
Sebagai bagian dari infrastruktur kunci publik (PKI), sebuah cek CA dengan Registration Authority (RA) untuk memverifikasi informasi yang diberikan oleh pemohon sertifikat digital. Jika RA memverifikasi informasi pemohon itu, CA kemudian dapat menerbitkan sertifikat.
Tergantung pada implementasi infrastruktur kunci publik, sertifikat kunci publik termasuk pemilik, tanggal berakhirnya sertifikat tersebut, nama pemilik, dan informasi lainnya tentang pemilik kunci publik.





Cara Penggunaan Infrastruktur Kunci Publik (PKI)

Panduan ini adalah pengenalan singkat untuk Public Key Infrastructure (PKI), yang meliputi tujuan dan penggunaan kunci, sertifikat dan otoritas sertifikat untuk penandatanganan dan enkripsi komunikasi.

Ikhtisar
Tinjauan kunci, sertifikat dan otoritas sertifikat.
Dalam penyebaran aman, akan ada klien, jasa dan otoritas sertifikat. Masing-masing memiliki kunci publik dan swasta dan sertifikat.
Adalah penting bahwa kunci pribadi bersifat rahasia, dan bahwa kunci publik yang tersedia. Diagram di bawah ini menunjukkan yang pihak telah dengan kunci dan sertifikat:














Diagram of sites, keys, CAs and certificates




Setiap pihak memiliki sebuah kunci pribadi, yang mereka menghasilkan sendiri. Setiap pihak punya rahasia pribadi utama mereka dari orang lain. Setiap kunci pribadi memiliki kunci publik yang sesuai, yang diberikan secara bebas.
Sebuah pesan dienkripsi menggunakan kunci publik hanya dapat dibaca dengan menggunakan kunci pribadi yang sesuai. Hal ini memungkinkan klien untuk mengirim pesan yang hanya server dapat membaca.

Sebuah pesan masuk dengan kunci pribadi dapat diperiksa menggunakan kunci publik yang sesuai. Jika pesan telah berubah setelah penandatanganan kemudian memeriksa akan gagal. Hal ini memungkinkan server untuk mengkonfirmasi bahwa pesan itu benar-benar dikirim oleh klien.

Seperti ditunjukkan dalam diagram, ada tiga kunci publik-swasta-pasangan (satu untuk masing-masing pihak). Klien menggunakan salinan kunci publik server untuk mengenkripsi pesan, dan kunci pribadi untuk menandatanganinya. Server menggunakan salinan kunci publik klien untuk memeriksa tanda tangan, dan kunci pribadi untuk mendekripsi itu.
Ini sangat aman, dengan ketentuan bahwa kedua belah pihak bisa mendapatkan kunci publik yang diperlukan. Walaupun tidak masalah jika orang lain mendapatkan memegang kunci publik, itu penting bahwa mereka memiliki kunci publik yang tepat. Jika seorang penyerang memberikan server kunci publik mereka, berpura-pura menjadi klien, maka server akan menerima pesan yang dikirim oleh penyerang. Demikian juga, jika klien ingin mengirim pesan ke server, tetapi menggunakan kunci publik penyerang bukan kunci publik server, maka klien akan mengirim pesan bahwa penyerang dapat membaca.

Untuk mencegah hal ini, kunci publik yang datang dengan sertifikat memberikan identitas pemilik kunci pribadi. Kunci dan bundel sertifikat ini ditandatangani oleh otoritas sertifikat untuk mengkonfirmasi bahwa detail-detail yang benar. Efek dari ini adalah bahwa masing-masing pihak hanya perlu mendapatkan kunci publik CA dipercaya oleh beberapa mekanisme, dan dapat menggunakannya untuk memverifikasi setiap tombol lainnya.

Diagram di atas menunjukkan hanya satu CA. Dalam situasi yang lebih rumit, klien dan server mungkin memiliki sertifikat mereka ditandatangani oleh CA yang berbeda. Dalam hal ini, masing-masing harus mempercayai CA yang menandatangani sertifikat pihak lain. Selain itu, diagram hanya menampilkan pesan permintaan. Tanggapan ditandatangani dan dienkripsi oleh layanan dan diperiksa dan didekripsi oleh klien dengan cara yang sama.

Sabtu, 23 Januari 2010

Sekilas tentang OOP

Pengantar Program Berorientasi Object (Pengantar OOP programming).

Program berorientasi object (OOP) merupakan paradigma yang dominan akhir-akhir ini, prosedur teknik pemrogramannya mulai dikembangkan pada tahun 1970. Program Java merupakan program yang benar-benar berorientasi object, dan kita harus terbiasa dengan OOP agar menjadi familiar dan produktif dengan program Java.

Program berorientasi object dibuat dari object-object. Setiap object memiliki fungsi-fungsi spesifik yang ditampilkan kepada penggunanya, dan juga implementasi tersembunyi. Banyak object-object dalam program diambil dari turunanannya untukpendesignan sebagai sesuatu yang biasa.

Baik membuat/membangun sendiri maupun memebelinya tergantung pada budget dan waktu yang kita punya. Tetapi biasanya sepanjang object-object memuaskan spesifikasi kita, kita tidak akan perduli function apa yang akan kita implementasikan. Dan juga dalam OOP, kita tidak akan peduli bagaimana object diimplementasikan sepanjang memenuhi apa yang kita inginkan.

Program berstruktur tradisional biasanya dibuatdengan mendesign satu set prosedur (algoritma) untuk memecahkan masalah. Setelah prosedur ditentukan, langkah tradisional berikutnya adalah menemukan cara yang tepat untuk menyimpan data. Karena itu mengapa designer bahasa pascal, (Niklaus Wirth), menyebut dalam bukunya yang terkenal yaitu algoritma + struktur data sama dengan program (Prentice Hall, 1975). Menyadari hal tersebut maka Wirth mengatakan, algoritma adalah yang pertama dan struktur data sebagai yang kedua. Begitulah cara programmer bekerja saat itu. Pertama, mereka memutuskan prosedur untuk memanipulasi data; kemudian mereka menentukan struktur apa yang akan dipakai/ dimasukkan kedalam data untuk membuat manipulasi data menjadi mudah. Sebaliknya OOP membalikkan urutannya dan menempatkan data dulu, kemudian beralih kealgoritma yang mengopersikan data.

Untuk masalah yang kecil pembagian kedalam prosedur berjalan sangat baik, tetapi object-object akan lebih tepat untuk masalah yang lebih besar. Berdasar pada Web browser yang sederhana, Mungkin akan membutuhkan 2000 prosedur untuk implementasinya, dan seluruhnya memanipulasi satu set global data.

Dalam style(gaya) berorientasi objek mungkin ada 100 kelas dengan rata rata 20 metode per kelas.

Struktur berikutnya lebih mudah bagi progrmmer untuk merangkum. Juga lebih mudah untuk mendapatkan bug. Umpamanya data dari objek tertentu dalam situasi yang salah. Akan lebih mudah untuk pencarian diantara 20 metode yang mempunyai akses terhadap item data daripada diantara 2000 prosedur.



ClASS

Class adalah blueprint dari object yang dibuat. Memahami tentang klas sangatlah mudah. Ketika kita membuat object dari class, maka yang kita lakukan disebut menginstansiasi klas.

Seperti kita lihat semua kode yang kita tulis pada java, ada dalam suatu klas. Perpustakaan java standard mensupplai beberapa ribu kelas untuk setiap ragam tujuan sebagai pengguna design interface, tanggal dan kalender, dan program network. Walaupun demikian , kita masih harus membuat klas kita sendiri di java untuk menjelaskan objek-objek dari domain masalah aplikasi kita.

Encapsulation (pembungkusan/penyembunyian informsai) merupakan konsep utama dalam pengerjaan objek. Secara formal, encapsulation tidak lebih dari kombinasi data dan perilaku, dalam satu paket dan menyembunyikan detail-detail implementasi dari penggunaan objek. Data dalam sebuah object disebut inatansiasi field, prosedur yang mengoperasikan data disebut method. Objek spesifik yang dinstansiasi dari kelas akan memiliki nilai-nilai spesifik untuk instansiasi field. Sekumpulan nilai-nilai tersebut merupakan kondisi saat ini dari objek. Kapanpun anda memakai mehod pada objek, kondisinya bisa berubah.

Kunci untuk membuat Encapsulation bekerja adalah untuk membuat metode tidak pernah langsung mengakses instans filed dalam klas selain miliknya sendiri. Program harus saling berinteraksi dengan objek data hanya melalui method objek. Encapsulation merupakan cara untuk memberikan objek perilaku (black box), yang merupakan kunci untuk penggunaan kembali secara reliability. Ini artinya sebuah klas mungkin berubah secara total bagaimana data disimpan, tetapi selama itu terus menggunakan method yang sama untuk memanipulasi data, tidak ada object lain yang tahu (tersembunyi).

Ketika anada mulai menulis klas anda sendiri dalam java, fasilitas lainnya dari OOP membuat hal ini jadi lebih mudah. Kelas-kelas dapat dibangun dengan memperluas kelas-kelas lainnya. Java, pada kenyataannya, datang bersama sifat superclasnya yang disebut objek. Seluruh kelas lainnya memperluas kelas ini. Kita akan melihat lebih banyak mengenai kelas objek di kesempatan berikutnya.

Ketika kita memperluas kelas yang ada, kelas baru memiliki semua properti dan method dari kelas yang anda perluas. Kita mensuplai metod baru dan data field yang menerapkan hanya pada kelas baru kita. Konsep memperluas kelas untuk mendapatkan kelas lainnya disebut Inheritance.



OBJECT.

Untuk bekerja dengan OOP kita harus mampu mengidentifikasikan tiga karakterisitik utama dari objek :
- Perilaku Objek- Apa yang dapat kita lakukan dengan objek ini, atau method apa yang dapat kita terapkan ?
- State Object - Bagaimana objek bereaksi ketika kita menerapkan method tersebut
- Identitas objek - Bagaimana objek dibedakan dari lainnya yang mungkin memiliki perilaku dan bentuk yang sama ?


Seluruh objek yang diiinstansiasi dari kelas yang sama, berbagi sifat-sifat dari kelompoknya dengan cara mensupport perilaku yang sama. Perilaku objek didefinisikan melalui method yang kita panggil.

Berikutnya, setiap objek menyimpan informasi mengenai seperti apa kelihatannya saat ini. Ini adalah state objek. Sebuah state objek berubah sepanjang waktu tetapi tidak spontan. Perubahan dalam state objek mesti menjadi konsekwensi panggilan method. (Jika state objek diubah tanpa pemanggilan method pada objek, hal ini merusak encapsulation).

Bagaimanapun, state objek tidak secara lengkap dijelaskan, karena setiap objek memiliki identitas tersendiri. Sebagai contoh, dalam sistem order prosessing sistem, dua order dibedakan meski mereka meminta item identifikasi. Menyadari bahwa objek individual yang instan dari kelas selalu berbeda dalam indentitasnya dan biasanya berbeda dalam bentuknya.

Karakter-karakter kunci ini dapat saling mempengaruhi. Sebagai contoh, bentuk objek dapat mempengaruhi perilakunya (bila perintahnya Shipped atau paid, mungkin menolak panggilan method yang memintanya untuk menambah atau memindahkan item. Sebaliknya, bila ordernya kosong, yaitu tidak ada item yang diperintahkan, seharusnya tidak mengijinkan dirinya untuk di shipped).


IDENTIFIKASI KLAS

Dalam program prosedur tradisional, kita memulai proses dari atas , dengan fungsi utama. Ketika mendesign sistem berorientasi objek, tidak ada atas dan pendatang baru, terhadap pendatang baru, OOP sering bingung harus memulai. Jawabnya adalah temukan kelas dan kemudian menambah method setiap kelas.

Aturan yang sederhana dalam mengidentifikasi kelas adalah mencari kata benda dalam setiap analisis masalah. Method, disisi lain mengacu pada kata kerja.

Sebagai contoh, dalam sistem prosesing order(pesanan), beberapa dari kata benda adalah
- Item
- Order
- Penempatan Address
- Pembayaran (payment).
- Account

Kata benda ini bisa merujuk kepada item kelas, order dan lainnya.

Berikutnya mencari kata kerja. Item ditambahkan pada order. Order ditempatkan atau dicancel. Payment diterapkan untuk order. Dengan setiap kata kerja, seperti add, ship(pengiriman), cancel dan apply, kita mengidentifikasi sebuah objek yang memiliki tanggung jawab besar untuk membawanya keluar. Sebagai contoh, ketika item baru ditambahkan pada order, order objek harus menjadi satu dalam nilai karena dia mengetahui bagaimana penyimpanan dan memilah-milah item. Yaitu, add seharusnya menjadi method dari order kelas yang mengambil objek item sebagai parameter.

Sudah tentu, aturan kata benda dan kata kerja hanya sebuah aturan pokok, dan hanya pengalaman kita yang dapat membantu kita memutuskan kata benda dan kata kerja yang mana , yang penting ketika membuat kelas kita.


HUBUNGAN ANTARA KELAS

Hubungan yang paling umum antara kelas adalah
- Saling ketergantungan ( Menggunakan -A)
- Agregasi (memiliki -A)
- Inheritance (adalah -A)

Saling ketergantungan, atau hubungan menggunakan -A, merupakan yang paling jelas dan paling umum. Sebagai contoh kelas order menggunakan kelas account karena object order membutuhkan akses objek account untuk chek status credit. Tetapi kelas item tidak tergantung pada kelas account, karena objek item tidak perlu untuk khawatir mengenai accoun t pelanggan. Jadi, kelas bergantung pada kelas lainnya bila metodenya menggunakan atau memanipulasi objek dari kelas itu.

Coba untuk meringkas jumlah kelas yang saling bergantung. Intinya adalah, jika kelas A tidak menyadari keberadaan kelas B berarti itu juga tidak perhatian terhadap perubahan B (dan ini artinya poerubahan pada B tidak memperkenalkan bug terhadap A). Dalam istilah software engineering kita perlu meringkas pasangan diantara kelas.

Agreagasi atau hubungan memliki A, mudah untuk memahami karena konkret; Sebagai contoh, objek order berisi objek item. Contain berarti, objek kelas A berisi objek kelas B.

Inheritance atau hubungan adalah A , mengekspresikan hubungan antara yang lebih khusus dan umum. Sebagai contoh kelas rush order berasal(pewarisan) dari kelas order. Kelas rush order khusus memilki method khusus untuk penanganan prioritas dan method yang berbeda mengolah penempatan nilai, tetapi method lainnya seperti penambahan item dan billing , diturunkan dari kelas order . Secara umum bila kelas A memperluas kelas B , kelas A mewariskan method dari kelas B tetapi lebih handal. (kami menjelaskan Inheritance secara lengkap pada kesem[patan berikutnya)

Banyak programmer menggunakan notasi UML (Unified Modelling Languange) untuk menggambarkan diagram kelas yang menjelaskan hubungan antar kelas. Kita menggambarkan kelas -kelas sebagai kotak-kotak diagram dan memakai hubungan dengan (tanda panah) ( dalam arah yang banyak).



----