Senin, 25 Maret 2013

Pengenalan Pemrograman Berorientasi Obyek


Pengenalan Pemrograman Berorientasi Obyek

OOP berputar pada konsep dari obyek yang merupakan elemen dasar dari program Anda. Ketika kita membandingkan dengan dunia nyata, kita dapat menemukan beberapa obyek disekitar kita seperti mobil, singa, manusia dan seterusnya. Obyek ini dikarakterisasi oleh atribut dan tingkah lakunya.
Contohnya, objek sebuah mobil mempunyai atribut tipe transmisi, warna dan manufaktur. Mempunyai tingkah laku berbelok, mengerem dan berakselerasi. Dengan cara yang sama pula kita dapat mendefinisikan perbedaan sifat dan tingkah laku dari singa.

Dengan deskripsi ini, obyek pada dunia nyata dapat secara mudah asumsikan sebagai obyek perangkat lunak menggunakan atribut sebagai data dan tingkah laku sebagai method. Data dan method dapat digunakan dalam pemrograman game atau perangkat lunak interaktif untuk membuat simulasi obyek pada dunia nyata. Contohnya adalah perangkat lunak obyek mobil dalam permainan balap mobil atau perangkat lunak obyek singa dalam sebuah perangkat lunak pendidikan interaktif pada kebun binatang untuk anak anak.
Perbedaan Class dan Object
Pada dunia perangkat lunak, sebuah obyek adalah sebuah komponen perangkat lunak yang  stukturnya mirip dengan obyek pada dunia nyata. Setiap obyek dibangun dari sekumpulan data (atribut) yang disebut variabel untuk menjabarkan karakteristik khusus dari obyek, dan juga terdiri dari sekumpulan method yang menjabarkan tingkah laku dari obyek. Bisa dikatakan bahwa obyek adalah sebuah perangkat lunak yang berisi sekumpulan variabel dan
method yg berhubungan. Variabel dan method dalam obyek Java secara formal diketahui sebagai variabel instance dan method instance. Hal ini dilakukan untuk membedakan dari variabel class dan method class, dimana akan dibahas kemudian. Class adalah sturktur dasar dari OOP. Class terdiri dari dua tipe dari anggota dimana disebutdengan field (attribut/properti) dan method. Field merupakan tipe data yang didefinisikan oleh class, sementara method merupakan operasi. Sebuah obyek adalah sebuah instance (keturunan) dari class.
Untuk dapat membedakanantara class dan obyek, mari kita mendiskusikan beberapa contoh berikut ini. Kita memiliki sebuah class mobil dimana dapat digunakan untuk medefinisikan beberapa obyek mobil. Pada tabel dibawah, mobil A dan mobil B adalah obyek dari class mobil. Class memiliki field nomor, plat, warna, manufaktur dan kecepatan yang diisi dengan
nilai pada obyek mobil A dan mobil B. Mobil juga dapat berakselerasi, berbelok dan melakukan rem.
Ketika diinisialisi, setiap obyek mendapat satu set variabel yang baru. Bagaimanapun, implementasi dari method dibagi diantara objek pada class yang sama. Class menyediakan keuntungan dari reusability. Programmer perangkat lunak dapat menggunakan sebuah kelas beberapa kali untuk membuat banyak objek.
Instansiasi Class
Untuk membuat sebuah objek atau sebuah instance pada sebuah class. Kita menggunakan operator new. Sebagai contoh, jika anda ingin membuat instance dari class string, kita menggunakan kode berikut :
String str2 = new String(“Hello world!”);
Ini juga sama dengan,
String str2 = "Hello";
Variabel Class dan Variabel Method
Selain dari variabel instance, kita juga memungkinkan untuk mendefinisikan variabel dari class, yang nantinya variabel ini dimiliki oleh class. Ini berarti variabel ini dapat memiliki nilai yang sama untuk semua objek pada class yang sama. Mereka juga disebut static member variables.
Method
Apakah Method itu dan mengapa menggunakan Method?
Pada contoh yang telah kita diskusikan sebelumnya, kita hanya memiliki satu method, dan itu adalah method main(). Di dalam Java, kita dapat mendefinisikan banyak method yang akan kita panggil dari method yang berbeda. Sebuah method adalah bagian-bagian kode yang dapat dipanggil oleh program utama atau dari method lainnya untuk menjalankan fungsi yang spesifik.
Berikut adalah karakteristik dari method :
1. dapat mengembalikan satu nilai atau tidak sama sekali
2. dapat diterima beberapa parameter yang dibutuhkan atau tidak ada  
    parameter sama sekali. Parameter bisa juga disebut sebagai argumen dari   
    fungsi
3. setelah method telah selesai dieksekusi, dia akan kembali pada method
    yang memanggilnya.
Sekarang mengapa kita butuh untuk membuat banyak method? Mengapa kita tidak menuliskan semua kode pada sebuah method? Hal ini karena penyelesaian masalah yang sangat efektif adalah memecah masalah-masalah tersebut menjadi beberapa bagian. Kita juga dapat melakukan hal ini di
Java dengan membuat method untuk mengatasi bagian tertentu dari masalah. Sebuah permasalahan dapat dipecah-pecah menjadi beberapa bagian kecil. Hal ini sangat baik sekali untuk membuat program yang sangat besar.
Memanggil Instance dan memberikan Variabel dari Method
Sekarang, untuk mengilustrasikan bagaimana memanggil method, mari kita menggunakan class string sebagai contoh. Anda dapat menggunakan the dokumentasi dari Java API untuk melihat semua method yang tersedia dalam class string. Selanjutnya, kita akan membuat method, kita sendiri. Tapi untuk saat ini, mari terlebih dahulu kita gunakan method yang sudah disediakan oleh
Java. Untuk memanggil sebuah instance method, kita dapat menuliskan :
nameOfObject.nameOfMethod( parameters );
mari kita mengambil dua contoh method yang ditemukan dalam class String.
Menggunakan method :
String str1 = "Hello";
char x = str2.charAt(0); //will return the
character H
//simpan pada variabel x
String str2 = "hello";
//return boolean
boolean result = str1.equalsIgnoreCase( str1 );
Pemberian Variabel Dalam Method
Pada contoh kita sebelumnya , kita sudah pernah mecoba melewati variabel pada method. Walaupun kita belumdapat membedakan antara perbedaan tipe variabel yang diberikan (passing) ke method dalam Java. Ada dua tipe data variabel passing pada method, yang pertama adalah pass-by-value dan yang kedua adalah pass-by-reference.
Pass-by-Value
Ketika pass-by-values terjadi, method membuat sebuah salinan dari nilai variable yang dikirimkan ke method. Walaupun demikian, method tidak dapat secara langsung memodifikasi nilai variabel pengirimnya meskipun parameter salinannya sudah dimodifikasi nilainya di dalam method.
Pass-by-reference
Ketika sebuah pass-by-reference terjadi, alamat memori dari nilai pada sebuah variabel dilewatkan pada saat pemanggilan method. Hal ini berarti bahwa method menyalin alamat memori dari variabel yang dilewatkan pada method. Ini tidak seperti pada pass-by-value, method dapat memodifikasi variabel asli dengan menggunakan alamat memori tersebut, meskipun berbeda nama variabel yang digunakan dalam method dengan variabel aslinya, kedua variabel ini menunjukkan lokasi dari data yang sama.


Kamis, 14 Maret 2013

Sistem Client Server 2


Sistem Terdistribusi
Introduction
Pengantar Sistem Terdistribusi &
Overview

JarKom vs SisTer
·         Jaringan komputer : komputer otonom yang secara eksplisit terlihat (secara eksplisit teralamati)
            – Dengan IP address masing-masing komputer
·         Sistem terdistribusi: keberadaan beberapa komputer otonom bersifat transparan, sebagai satu kesatuan. (tanembaum)
·         Secara normal, setiap sistem terdistribusi mengandalkan layanan yang disediakan oleh jaringan komputer
            – Berbasis TCP/IP

Sistem Terdistribusi
·         Satu sistem dimana beberapa komputer pada jaringan saling berkomunikasi, berkoordinasi, dan bekerja sama dengan cara saling bertukar pesan (messages)
            – Komputer-komputer saling independen
¨       Memiliki memori dan prosesor sendiri
            – Dihubungkan dalam jaringan komputer
¨       LAN / WAN
            – Terlihat sebagai satu kesatuan
            – Komputasi terintegrasi
            – Dapat diterapkan pada middleware (tanembaum)
DS in middleware
A distributed system organized as middleware. The
middleware layer extends over multiple machines, and
offers each application the same interface.

Scalability problems
v  Centralized services: single service for all requests
v  Centralized data: single data point for all services
v  Centralized algoritms: single computation for all requests

Contoh SisTer
v  Internet = Interconnection Network
v  Intranet Coorporation
v  Mobile Computing
v  Automated banking systems
v  Tracking roaming cellular phones
v  Global positioning systems
v  Retail point-of-sale terminals
v  Air-traffic control

Intranet adalah sebuah jaringan privat yang menggunakan protokol-protokol Internet (TCP/IP), untuk membagi informasi rahasia perusahaan atau operasi dalam perusahaan tersebut kepada karyawannya.
v  Bersifat internal (cth: web internal)
v  Untuk membangun sebuah intranet, maka sebuah jaringan haruslah memiliki beberapa komponen yang membangun Internet, yakni protokol Internet (Protokol TCP/IP, alamat IP, dan protokol lainnya), klien dan juga server.
v  Biasanya proprietary
v  Terhubung ke internet (melalui firewall)

Sistem terdistribusi multimedia
v  Biasanya digunakan pada infrastruktur Internet
v  Karakteristik
            – Sumber data yang heterogen dan memerlukan sinkronisasi secara real time
            – Video, audio, text
            – Multicast (UDP based)
            – Contoh:
1.     Teleteaching tools
2.     Video-conferencing
3.     Video and audio on demand

ATM
v  Mesin ATM ada di cabang-cabang bank
v  Klien dapat mengakses pada saat yg simultan bersamaan
            – Mekanisme deadlock & sinkronisasi
v  Sistem ATM akan menggunakan central-central office terdekatnya
            – Relay mode
v  Setiap central office akan menjadi backup bagi yang lainnya
            – Replication
v  Bagaimana menghandle transasksi? Keamanan? Network failure?
            – Security

Contoh SisTer yg lain
v  Sistem telepon
            – ISDN, PSTN
v  Manajemen jaringan
            – Administrasi resource jaringan
v  Network File System (NFS)
            – Arsitektur untuk mengakses sistem file melalui jaringan
v  WWW
            – Arsitektur client/server tebuka yang diterapkan di atas infrastruktur internet
            – Shared resources (melalui URL)

Alasan SisTer
v  Resources sharing: sumber daya dapat digunakan secara bersama / bergantian
v  Distribusi fungsi : komputer memiliki kemampuan fungsi yang berbeda-beda
            – client/server
            – Host/terminal
            – Data gathering / data processing
v  Distribusi beban/keseimbangan :
            pemberian tugas ke prosesor secukupnya sehingga unjuk kerja seluruh sistem teroptimasi.

Alasan SisTer
v  Replikasi kekuatan pemrosesan : independent processors bekerja untuk pekerjaan yang sama
            – Sistem terdistribusi terdiri dari kumpulan mikrokomputer yang memiliki kekuatan     pemrosesan yang tidak dapat dicapai oleh superkomputer
            – Mis: 10000 CPU, masing-masing berjalan pada 50 MIPS, mencapai 500000 MIPS,
            – Maka satu perintah dijalankan dalam waktu 0.002 nsec
v  Reliability : dalam sistem terdistribusi, apabila sebuah situs mengalami kegagalan, maka situs yang tersisa dapat melanjutkan operasi yang sedang berjalan. Hal ini menyebabkan reliabilitas sistem menjadi lebih baik.

v  Pemisahan fisik : sistem yang menggantungkan pada fakta bahwa komputer secara fisik terpisah (e.g., untuk mencapai kehandalan).
v  Ekonomis : kumpulan mikroprosesor menawarkan harga/unjuk kerja yang lebih baik dari pada mainframe
v  Fleksibilitas : komputer yang berbeda dengan kemampuan yang berbeda dapat di share antar user

Kesulitan
v  Software - bagaimana merancang dan mengatur software dalam DS
v  Ketergantungan pada infrastruktur jaringan (world wide wait....)
v  Kemudahan akses ke data yang di share, memunculkan masalah keamanan

Pitfalls when Developing
Distributed Systems
False assumptions made by first time developer:
v  The network is reliable.
v  The network is secure.
v  The network is homogeneous.
v  The topology does not change.
v  Latency is zero.
v  Bandwidth is infinite.
v  There is one administrator.

Karakteristik SisTer
v  Concurrency: Beberapa komputer dapat berjalan sekaligus dengan tugas yang berbeda
            – Sinkronisasi dan koordinasi dengan message passing
            – Sharing resources
Ø  Contoh: WEB diakses oleh bnyk orang
            – Masalah umum dalam sistem concurrent
Ø  Deadlock
Ø  Komunikasi yang tidak handal
v  No global clock: Pada sistem terdistribusi, tidak ada satu proses tunggal yang mengetahui global state sistem saat ini (disebabkan oleh concurrency)
            – Hal ini menyebabkan kesulitan dalam mensinkronkan waktu seluruh komputer/perangkat        yang terlibat
v  Independent failure: kegagalan komputer/jaringan bisa terjadi kapan saja
            – Setiap komponen/perangkat dapat mengalami kegagalan namun komponen/perangkat lain       tetap berjalan dengan baik.

Tantangan SisTer
v  Heterogenity:
            – Infrastruktur jaringan
            – Hardware dan software (sistem operasi, perbedaan UNIX socket dan Winsock)
            – Bahasa pemrograman
            – Solusi: Perlu ada protokol yang standar, Middleware (contoh : CORBA), Kode program           universal (contoh : JAVA)
v  Scalability: Sistem tetap efektif meskipun terdapat peningkatan resource dan pengguna secara signifikan

Tantangan
v  Openness
            – Memastikan sistem dapat diperluas dan mudah dalam pemeliharaan
¨       Mengikuti standard antarmuka
¨       Solusi: Adanya publikasi dari spesifikasi (RFC)
v  Security
            – Confidentiality (pencegahan terhadap hak akses oleh orang yang tidak berhak)
            – Integrity (pencegahan terhadap perubahan data)
            – Availability (pencegahan terhadap masalah ketersediaan, misalnya mencegah DDOS)
v  Menghandle Kegagalan: Kesalahan/Kegagalan bisa ditemukan/diperbaiki A.S.A.P dan mampu melakukan proses recovery
            – Pendeteksian, Toleransi dan Redudancy
            – Solusi: Replikasi, Load Balancing, Backup
v  Konkurensi: Banyak client yang mengakses banyak data dalam waktu yang bersamaan, sedangkan data harus tetap konsisten!
            – Menghindari masalah deadlock

Transparansi
v  Transparency: Sistem terlihat sebagai satu kesatuan, bukan gabungan dari beberapa komponen

Transparansi
v  Access transparency: memungkinkan resource lokal / remote untuk diakses menggunakan operasi yg sama (tidak berbeda-beda)
v  Location transparency: memungkinkan resources untuk diakses tanpa pengetahuan ttg jaringan fisik/lokasi (lokasi dan IP address).
v  Concurrency transparency: memungkinkan beberapa proses untuk beroperasi secara konkuren menggunakan shared resources tanpa “mengganggu” mereka.
v  Replication transparency: memungkinkan multiple instances dari resources untuk digunakan menaikan reliability dan performance tanpa pengetahuan pemrograman replikasi.
v  Failure transparency: memungkinkan penyembunyian kegagalan, memperbolehkan users dan program aplikasi untuk menyelesaikan tugas mereka walaupun ada kegagalan komponen hardware / software.
v  Mobility transparency: memungkinkan perubahan resources dan clients didalam sistem tanpa berefek pada operasi user dan program.
v  Performance transparency: memungkinkan sistem untuk dikonfigurasi ulang untuk meningkatkan performa yang berubah secara cepat.
v  Scaling transparency: memperbolehkan sistem dan aplikasi untuk diperluas tanpa mengubah struktur sistem atau algoritma aplikasi.

Pengembangan Lebih lanjut
v  Distributed Database
            – A logically interrelated collection of shared data (and a description of this data),   physically distributed over a computer network
            – Penyimpanan data bisa dilakukan secara terdistribusi (tidak lagi tersentralisasi)
            – Menggunakan Replikasi dan Fragmentasi
v  Distributed Processing
            – Menggunakan RMI, RPC, atau .NET Remoting
v  Distributed Transactions

Prinsip berkomunikasi
v  Source
            – generates data to be transmitted
v  Transmitter
            – Converts data into transmittable signals
v  Transmission System
            – Carries data
v  Receiver
            – Converts received signal into data
v  Destination
            – Takes incoming data

Socket
v  Socket adalah sebuah abstraksi perangkat lunak yang digunakan sebagai suatu "terminal" dari suatu hubungan antara dua mesin atau proses yang saling berinterkoneksi.
v  End to end communication

Distributed Objects
v  Located separately on each host
v  Must communicate with others
            – Interprocess communication
¨       RPC (Remote Procedural Call)
¨       RMI (Remote Method Invocation)
¨       CORBA (Common Object Request Broker Architecture)
¨       XML RPC & Web Service
v  Transparency
            – Location
v  Receive events notification from other objects

Distributed programming
paradigms
v  Client/server model
v  Remote procedure calls
v  Distributed File Systems
v  Group communication and multicasts
v  Distributed transactions
v  Distributed object-based systems
v  Publish-subscribe model
v  Peer-to-peer model
v  The Web

DOS dan DFS
v  Pada perkembangannya sistem operasi juga dibuat terdistribusi
v  Menciptakan juga konsep DFS
            – Distributed file system (DFS) adalah sebuah sistem di mana banyak pengguna dapat             berbagi berkas dan sumber daya penyimpanan.
            – Muncul masalah mengenai penamaan resource terdistribusi:
¨       Human oriented vs machine
¨       URI

Operating Systems
v  Flexibility
            – Monolithic kernel vs. Microkernel
            – Microkernel -- keep it small, use user-level servers for system services
¨       An interprocess communication mechanism
¨       A small amount of low-level process management and scheduling
¨       Low-level input / output
            – Monolithic kernel
¨       provide the file system and directory system
¨       full process management, and much system call handling

NEXT
v  Model sistem terdistribusi