Implementasi Komputasi Modern Bidang Matematika

Kelompok 4IA15:
Iqbal Maulana (53411659)
Mahdhika Juliansyah (54411246)
Maulana Ruswa (54411357)
Muhammad Ardi Yp (54411766)
Yuan Fachrul A (57411593)

Apa sih komputasi modern itu ?
Komputasi adalah algoritma yang digunakan untuk menemukan suatu cara untuk memecahkan masalah dari sebuah data input. Komputasi ini merupakan bagian dari ilmu matematika dan ilmu computer. Ilmu komputasi adalah bidang ilmu yang mempunyai perhatian pada penyusunan model matematika dan teknik penyelesaian numeric serta penggunaan computer untuk menganalisis dan memecahkan masalah – masalah ilmu. Jadi komputasi modern adalah sebuah konsep system yang mana menerima instruksi – intruksi dan menyimpannya dalam sebuah memory, memory ini bias juga dari memory computer. Oleh karena itu, kita melakukan komputasi menggunakan computer maka bias dibilang computer merupakan sebuah komputasi modern. Istilah mesin komputasi digunakan dari tahun 1920, mengacu pada setiap mesin yang melakukan pekerjaan computer manusia, yaitu setiap mesin yang menghitung sesuai dengan metode yang efektif. Selama akhir 1940-an dan awal 1950-an, muncul mesin komputasi elektronik, mesin komputasi secara bertahap member jalan hanya untuk ‘komputer’, awalnya biasa dengan elektronik ‘awalan’ atau ‘digital’.




Karakteristik komputasi modern
Komputer – komputer penyedia sumber daya bersifat heterogenous karena terdiri dari berbagai jenis perangkat keras, system operasi, serta aplikasi yang terpasang.
Komputer – komputer terhubung ke jaringan yang luas dengan kapasitas bandwidth yang beragam.
Komputer maupun jaringan tidak terdedikasi, bias hidup atau mati sewaktu – waktu tanpa jadwal yang jelas.
Implementasi Komputasi Modern di Bidang Matematika
Implementasi komputasi modern di bidang matematika ada numerical analysis yaitu sebuah algoritma dipakai untuk menganalisa masalah – masalah matematika. Bidang analisis numerik sudah sudah dikembangkan berabad-abad sebelum penemuan komputer modern. Interpolasi linear sudah digunakan lebih dari 2000 tahun yang lalu. Banyak matematikawan besar dari masa lalu disibukkan oleh analisis numerik, seperti yang terlihat jelas dari nama algoritma penting seperti metode Newton,interpolasi polynomial Lagrange, eliminasi Gauss, atau metode Euler. 

Buku-buku besar berisi rumus dan tabel data seperti interpolasi titik dan koefisien fungsi diciptakan untuk memudahkan perhitungan tangan. Dengan menggunakan tabel ini (seringkali menampilkan perhitungan sampai 16 angka desimal atau lebih untuk beberapa fungsi), kita bisa melihat nilai-nilai untuk diisikan ke dalam rumus yang diberikan dan mencapai perkiraan numeris sangat baik untuk beberapa fungsi. Karya utama dalam bidang ini adalah penerbitan NIST yang disunting oleh Abramovich dan Stegun, sebuah buku setebal 1000 halaman lebih. Buku ini berisi banyak sekali rumus yang umum digunakan dan fungsi dan nilainilainya di banyak titik. Nilai f-nilai fungsi tersebut tidak lagi terlalu berguna ketika komputer tersedia, namun senarai rumus masih mungkin sangat berguna.Kalkulator mekanik juga dikembangkan sebagai alat untuk perhitungan tangan. 

Kalkulator ini berevolusi menjadi komputer elektronik pada tahun 1940. Kemudian ditemukan bahwa komputer juga berguna untuk tujuan administratif. Tetapi penemuan komputer juga mempengaruhi bidang analisis numerik, karena memungkinkan dilakukannya perhitungan yang lebih panjang dan rumit.

referensi : http://bondan-eko-p.blogspot.com/2015/03/implementasi-komputasi-modern-pada.html


Keamanan Sistem Terdistribusi (Security Distributed System)


       Security (keamanan) secara umum adalah serangkaian langkah – langkah untuk menjamin privasi, integritas dan ketersediaan sumber daya seperti obyek, database, server, proses, saluran, dan lain – lain yang melibatkan perlindungan benda dan mengamankan proses dan saluran komunikasi. Tujuan utamanya adalah untuk membatasi akses informasi dan sumber hanya untuk pemakai yang memiliki hak akses.

            Pada sistem terdistribusi juga membutuhkan keamanan (security) fungsinya untuk melindungi dari kebocoran data (Kerahasiaan data), melindungi dari pengubahan dan interfrensi (Integritas) mis. Data keuangan yang membutuhkan teknologi ekripsi dan informasi identitas dan mempertahankan sistem tetap tersedia setiap saat dibutuhkan (Ketersediaan).

            Pada sistem terdistribusi ancaman keamanannya antara lain adalah kebocoran (leakage) yaitu pengambilan informasi oleh penerima yang tidak berhak, pengubahan (tampering) yaitu pengubahan informasi yang tidak legal, dan perusakan (vandalism) yaitu gangguan operasi sistem tertentu misalnya Si pelaku tidak mengharap keuntungan apapun. Serangan pada sistem terdistribudi tergantung pada pengaksesan ke saluran komunikasi yang ada atau membuat saluran baru yang menyamarkan (masquerade) sebagai koneksi legal.

Penyerangan Pada System Terdistribusi Terbagi Menjadi 2, Yaitu:

  1. Penyerangan Pasive, Hanya mengamati komunikasi atau data
  2. Penyerangan Aktif, Secara aktif memodifikasi komunikasi atau data Pemalsuan atau pengubahan Email

Metode Penyerangannya Adalah Sebagai Berikut :

  1. Eavesdropping, yaitu mandapatkan duplikasi pesan tanpa ijin
  2. Masquerading, yaitu mengirim atau menerima pesan menggunakan identitas lain tanpa ijin mereka
  3. Message Tampering, yaitu mencegat atau menangkap pesan dan mengubah isinya sebelum dilanjutkan ke penerima sebenarnya
  4. Replaying, yaitu menyimpan pesan yang ditangkap untuk pemakaian berikutnya
  5. Denial of servive, yaitu membanjiri saluran atau sumber lain dengan pesan yang bertujuan untuk menggagalkan pengaksesan pemakai lain
            Penyerangan tadi juga sering terjadi pada transaksi elektronik, maka dari itu keamanan sangat dibutuhkan untuk banyak transsaksi e-commerce, banking, dan e-mail. Transaksi elektronik dapat aman jika dilindungi dengan kebijakan dan mekanisme keamanan, Misalnya pembeli harus dilindungi terhadap penyingkapan kode credit number selama pengiriman dan juga terhadap penjual yang tidak bersedia mengirim barang setelah menerima pembayaran. Vendor harus mendapatkan pembayaran sebelum barang dikirim, sehingga perlu dapat memvalidasi calon pembeli sebelum member mereka hak akses.

            Hal – hal di atas akan akan berjalan baik jika dibangun perancangan system yang aman yang bertujuan untuk mencegah semua serangan yang saat ini diketahui ataupun yang akan datang. Adapula kriteria rancangan system keamanan yang buruk, yaitu:


    1. Antarmuka dibuka
    2. Jaringan tidak aman
    3. Membatasi waktu dan ruang lingkup setiap kunci rahasia
    4. Algoritma dan kode program tersedia bagi penyerang
    5. Penyerang memiliki akses ke sumber
    6. Meminimalkan computer yang menjadi inti implementasi sistem

Parallel DBMS (Database Management System)


            Berdasarkan pada alasan bahwa sistem processor tunggal tidak dapat memenuhi syarat – syarat untuk skala biaya yang efektif, keandalannya (reliability) dan kemampuannya (performance). Parallel DBMS menghubungkan banyak, mesin – mesin kecil untuk mencapai hasil ouput sama seperti tunggal, mesin – mesin yang besar dengan scalability(kemampuan mengukur) dan reliability(keandalan) yang lebih bagus dari single – processor DBMS.

Arsitektur utama untuk parallel DBMS adalah :

a)      Shared Memory, multiple processor tanpa sistem tunggal berbagi sistem memory.
b)      Shared disk, setiap processor dapat mengakses tempat penyimpanan secara langsung, tetapi masing – masing mempunyai memory tersendiri.
c)      Shared nothing (Tidak berbagi apapun), dikenal juga sebagai Massively Parallel Processing (MPP) adalah sebuah arsitektur processor banyak dimana setiap processor merupakan sebuah bagian dari sistem yang lengkap dengan memory dan tempat penyimpanan masing – masing.

Tipe – tipe DDBMS

DDBMS Homogen

  1. Semua tempat menggunakan produk DBMS yang sama.
  2. Lebih mudah untuk dirancang dan diatur.
  3. Pendekatan yang menyediakan peningkatan pengembangan dan performa

DDBMS Heterogen

  1. Site dapat menjalankan produk DBMS yang berbeda dengan kemungkinan perbedaan model data
  2. secara mendasar.
  3. Terjadi ketika site telah diterapkan pada database mereka sendiri dan integrasi dipertimbangkan
  4. selanjutnya.
  5. diperlukan penerjemahan untuk :
a. Hardware yang berbeda, penerjemahan hanya terkait pada perubahan panjang kata dan code.
b. Produk – produk DBMS yang berbeda, penerjemahan menjadi rumit karena terkait dengan pemetaanstruktur data dari satu model data ke model lainnya, termasuk penerjemahan query language.
c. Hardware dan produk – produk DBMS yang berbeda, melibatkan dua jenis penerjemahan menyebabkan pemrosesan menjadi sangat rumit.
  1. Solusi yang umum digunakan pada sistem relasional dengan menggunakan gateway, dimana mengkonversikan bahasa dan model dari setiap DBMS yang berbeda kedalam bahasa dan model sistem relasional.
  2. Bagaimanapun pendekatan gateway mempunyai beberapa keterbatsan, diantaranya :
 a. Tidak ada dukungan transaksi, atau dengan kata lain hanya merupakan penerjemah query.

b. Hanya mengutamakan masalah penerjemahan ekspresi query dalam satu bahasa kedalam ekspresi yang ekuivalen dalam bahasa lainnya.

DDBMS (Distributed Database Management System)

Secara teori Database adalah suatu sistem yang memproses input berupa data menjadi output yaitu informasi yang diinginkan. Untuk memperoleh Database yang handal perlu diperhatikan hal-hal seperti keamanan data, kualitas data, kemudahan akses, kemudahan pengolahan data, dan kemungkinan untuk pengembangan Database tersebut. Pada DataBase Manajemen System (DBMS) yang tersentralisasi kegagalan pada suatu site akan mematikan seluruh operasional DBMS.

            Namun pada Distributed DataBase Manajemen System (DDBMS) kegagalan pada salah satu site, atau kegagalan pada hubungan komunikasi dapat membuat beberapa site tidak dapat di akses, tetapi tidak membuat operasional DBMS tidak dapat dijalankan. Dan juga jika terjadi kegagalan dalam pengaksesan data pada suatu site di karenakan jaringan komunikasi terputus maka site yang ingin mengakses data tersebut dapat mengakses pada site yang tidak mengalami kerusakan.

Database terdistribusi adalah sebuah database yang diatur oleh sebuah Database Management System (DBMS) yang tersimpan secara fisik pada beberapa komputer yang terdapat pada beberapa lokasi dengan terkoneksi pada sebuah jaringan. jaringan tersebut harus bisa menyediakan akses bagi user untuk melakukan sharing data.

Terdapat dua macam sifat dari database terdistribusi yaitu Heterogenous dan Homogenous.
  1. Homogenous artinya suatu database terdistribusi dimana data di distribusikan pada beberapa komputer dengan menggunakan DBMS(database management system) yang sama. DBMS digunakan pada database terdistribusi untuk melakukan koordinasi data pada beberapa node.
  2. Heterogenous adalah kebalikan dari Homogenous dimana data di sebarkan dengan menggunakan DBMS yang berbeda

Karakteristik Database Terdistribusi Yaitu :

  1. Kumpulan data yang digunakan bersama secara logic tersebar pada sejumlah computer yang berbeda
  2. Komputer yang dihubungkan menggunakan jaringan komunikasi.
  3. Data pada masing-masing situs dapat menangani aplikasi-aplikasi local secara otonom.
  4. Data pada masing situs di bawah kendali satu DBMS.
  5. Masing-masing DBMS berpartisipasi dalam sedikitnya satu aplikasi global.


Keuntungan Distribusi Database

  1. Pengawasan distribusi dan pengambilan data Jika beberpa site yang berbeda dihubungkan, seorang pemakai yang berada pada satu site dapat mengakses data pada site lain. Contoh : sistem distribusi pada sebuah bank memungkinkan seorang pemakai pada salah satu cabang dapat mengakses data cabang lain.
  2. Reliability dan availability Sistem distribusi dapat terus menerus berfungsi dalam menghadapi kegagalan dari site sendiri atau mata rantai komunikasi antar site.
  3. Kecepatan pemrosesan query Contoh : jika site-site gagal dalam sebuah sistem terdistribusi, site lainnya dapat melanjutkan operasi jika data telah direplikasi pada beberapa site.
  4. Otonomi lokal Pendistribusian sistem mengijinkan sekelompok individu dalam sebuah perusahaan untuk melatih pengawasan lokal melalui data mereka sendiri. Dengan kemampuan ini dapat mengurangi ketergantungan pada pusat pemrosesan.
  5. Efisiensi dan fleksibel Data dalam sistem distribusi dapat disimpan dekat dengan titik diman data tersebut dipergunakan. Data dapat secara dinamik bergerak atau disain, atau salinannya dapat dihapus.
  6. Ekonomi
Grosch's Law menyatakan daya listrik dari sebuah komputer di hitung menurut biaya yang dihabiskan dari penggunaan peralatannya, tiga kali biaya peralatan, 9 kali nya dari daya listrik . Sehingga lebih murah jika membuat sebuah sistem yang terdiri dari beberapa mini komputer yang mempunyai daya yang sama jika dibandingkan dengan memiliki satu buah super komputer.

Kekurangan Distribusi Database

  1. Harga software mahal Hal ini disebabkan sangat sulit untuk membuat sistem database distribusi.
  2. Kompleksitas Site-site beroperasi secara paralel sehingga lebih sulit untuk menjamin kebenaran dan algoritma. Adanya kesalahan mungkin tak dapat diketahui.
  3. Biaya pemrosesan tinggi Perubahan pesan dan penambahan perhitungan dibutuhkan untuk mencapai koordinasi antar site.
  4. Sulit menjaga keutuhan data Banyaknya pengaksesan data membuat kurangnya sekuritas terhadap data yang telah terdistribusi.
  5. Kurangnya standar Tidak ada tool atau metodologi untuk membantu user mengubah database terpusat ke database terdistribusi.
  6. Kurang pengalaman Sistem DB terdistribusi bertujuan umum (generalpurpose) tidak sering digunakan. Yang digunakan adalah sistem prototype yang dibuat untuk satu aplikasi
  7. Perancangan basis data lebih kompleks Sebelumnya menjadi keuntungan. Tetapi karena distribusi menyebabkan masalah sinkronisasi dan koordinasi, kontrol terdistribusi menjadi kerugian atau kekurangan di masalah ini.

DDBMS mempunyai beberapa karakter, diantaranya :

a)      Kumpulan dari data yangdigunakan bersama, yang berhubungan secara logic.
b)      Data dipecah - pecah menjadi sejumlah fragmen.
c)      Fragmen dapat direplikasi.
d)      Fragmen/replikanya dapat dialokasikan/ditempatkan ke suatu site(tempat).
e)      Tempat - tempat (site) dihubungkan oleh jaringan komunikasi.
f)       Data yang terdapat pada setiap site berada dibawah kontrol/pengawasan dari DBMS.
g)      DBMS yang terdapat pada setiap site dapat mengatur aplikasi - aplikasi lokal secara autonom.
h)      Setiap DBMS berpartisipasi paling sedikit dalam sebuah aplikasi global.

Konsep Dasar Grafik Komputar

Kegiatan yang Terkait dengan Grafik Komputer

Pemodelan Geometris

Pemodelan geometris adalah salah satu cabang dari matematika terapan dan komputasi geometri yang mempelajari metode dan algoritma untuk deskripsi matematika bentuk.  Bentuk belajar di pemodelan geometris tarfokus pada 2D atau 3D. Dalam pemodelan geometris terdapat tingkat-tingkat kesulitan untuk membuat suatu obyek seperti menghubungkan beberapa bentuk sudut pada permukaan bebas karena bentuk sudut tersebut harus pas dan teliti ukurannya agar gambar terlihat nyata.

Rendering

Rendering merupakan proses final dari seluruh proses dalam pemodelan grafik dan atau animasi pada komputer. Dalam rendering, semua data yang sudah masuk dalam proses modeling, animasi, texturing dan pencahayaan dengan parameter tertentu akan diterjemahkan dalam sebuah bentuk output akhir.

Animasi

Animasi adalah gambar yang memuat objek yang seolah-olah hidup, yang disebabkan oleh kumpulan gambar itu berubah beraturan dan bergantian ditampilkan. Objek dalam gambar bisa berupa tulisan, bentuk benda, warna dan spesial efek.

Kerangka Grafik Komputar Interaktif




Pencarian Heuristik (Heuristic Search) - kecerdasan buatan

Heuristik adalah sebuah teknik yang mengembangkan efisiensi dalam proses pencarian, namum dengan kemungkinan mengorbankan kelengkapan (completeness). Fungsi heuristik digunakan untuk mengevaluasi keadaankeadaan problema individual dan menentukan seberapa jauh hal tersebut dapat digunakan untuk mendapatkan solusi yang diinginkan. Jenis-jenis Heuristic Searching: 
  1. Generate and Test. 
  2. HillClimbing. 
  3. Best First Search. 
  4. Alpha  Beta  Prunning,Means-End-Anlysis,Constraint Satisfaction, Simulated Anealing, dll

PEMBANGKITAN dan PENGUJIAN (Generate and Test) 

Metode ini merupakan penggabungan antara depth-first search dengan pelacakan mundur (backtracking), yaitu bergerak kebelakang menuju pada suatu keadaan awal. Algoritma: 
  • Bangkitkan suatu kemungkinan solusi (membangkitkan suatu tititk tertentu atau lintasan tertentu dari keadaan awal). 
  • Uji untuk melihat apakah node tersebut benar-benar merupakan solusinya dengan cara membandingkan node terebut atau node akhir dari suatu lintasan yang dipilih dengan kumpulan tujuan yang diharapkan. 
  • Jika solusi ditemukan, keluar. Jika  tidak, ulangi kembali langkah pertama.

Contoh:

 “Travelling Salesman Problem (TSP)” Seorang salesman ingin mengunjungi n kota. Jarak antara tiap-tiap kota sudah diketahui. Kita ingin mengetahui ruter terpendek dimana setaip kota hanya boleh dikkunjungi tepat  1 kal i. Misalkan ada 4 kota dengan jarak antara tiap-tiap kota seperti gambar di bawah ini: 
Penyelesaian dengan metode Generate and Test


PENDAKIAN BUKIT (Hill Climbing)

Metode ini hampir sama dengan metode pembangkitan dan pengujian, hanya saja proses pengujian dilakukan dengan menggunakan fungsi heuristic. Pembangkitan keadaan berikutnya tergantung pada feedback dari prosedur pengetesan. Tes yang berupa fungsi heuristic ini akan menunjukkan seberapa baiknya nilai terkaan yang diambil terhadap keadaan-keadaan lainnya yang mungkin. 

Algoritma Simple HillClimbing 

Kerjakan langkah-langkah berikut sampai solusinya ditemukan atau sampai  tidak ada operator baru yang akan diaplikasikan pada keadaan sekarang: 
  • Cari operator yang belum pernah digunakan; gunakan operator ini untuk mendapatkan keadaan yang baru.
  • Evaluasi keadaan baru tersebut : 
  • Jika keadaan baru merupakan tujuan, keluar 
  • Jika bukan tujuan, namun nilainya lebih baik dari pada keadaan sekarang, maka jadikan keadaan baru tersebut menjadi keadaan sekarang. 
  • Jika keadaan baru tidak lebih baik daripada keadaan sekarang, maka lanjutkan iterasi. 

Pada simple hill climbing, ada 3 masalah yang mungkin: 

  • Algoritma akan berhenti kalau mencapai nilai optimum local 
  • Urutan penggunaan operator akan sangat berpengaruh pada penemuan solusi 
  • Tidak diijinkan untuk melihat satupun langkah sebelumnya.

Contoh: TSP dengan Simple Hill Climbing 
Disini ruang keadaan berisi semua kemungkinan lintasan yang mungkin. Operator digunakan untuk menukar posisi kota-kota yang bersebelahan. Apabila ada n kota, dan kita ingin mencari kombinasi l intasan dengan menukar posisi urutan 2 kota, maka kita akan mendapatkan sebanyak: 
atau sebanyak 6 kombinasi (lihat gambar dibawah). Fungsi heuristic yang digunakan adalah panjang lintasan yang terjadi 

PENCARIAN TERBAIK PERTAMA(Best-First Search)

Metode ini merupakan kombinasi dari metode depth-first search dan breadth-first search. Pada metode best-first search, pencarian diperbolehkan mengunjungi node yang ada di level yang lebih rendah, jika ternyata node pada level yang lebih tinggi ternyata memiliki nilai heuristic yang lebih buruk. 
Fungsi Heuristik yang digunakan merupakan prakiraan (estimasi) cost dari initial state ke goal state, yang dinyatakan dengan : 
f’(n) = g(n)+ h’(n) 
dimana f’ = Fungsi evaluasi 
g = cost dari ini tial state ke current state
h’ = prakiraan cost dari current state ke goal state 
Contoh : 
Misalkan kita memiliki ruang pencarian seperti pada gambar dibawah. Node M merupakan keadaan awal dan node T merupakan tujuannya. Biaya edge yang menghubungkan node M dengan node A adalah biaya yang dikeluarkan untuk bergerak dari kota M ke kota A. Nilai g diperoleh berdasarkan biaya edge minimal. Sedangkan nilai h’ di node A merupakan hasil perkiraan terhadap biaya yang diperlukan dari node A untuk sampai ke tujuan. h’(n) bernilai ~ jika sudah jelas tidak ada hubungan antara node n dengan node tujuan (jalan buntu). Kita bisa mengurut nilai untuk setiap node.





Teknik Pencarian / Penelusuran Kecerdasan Buatan

Pada umumnya manusia mempertimbangkan sejumlah alternatif strategi dalam menyelesaikan suatu problema. Dalam permainan catur misalnya, seorang pemain mempertimbangkan sejumlah kemungkinan tentang langkah-langkah berikutnya, memilih yang terbaik menurut kriteria tertentu seperti kemungkinan respon lawannya. Aspek tingkahlaku cerdas yang mendasari teknik penyelesaian problema seperti dalam permainan catur tersebut dinamakan proses pencarian ruang keadaan (space state search). 

Exhaustive search  –  adalah proses pencarian terhadap seluruh ruang keadaan serangakaian langkah yang paling dimungkinkan untuk menghasilkan kemenangan. Walaupun metode ini dapat diterapkan pada setiap ruang keadaan, namum ukuran ruang keadaan yang sangat besar membuat pendekatan ini secara praktis tidak dimungkinkan (dalam permainan catur terdapat 10120keadaan ) Bila kasus ini diimplementasikan ke dalam sistem komputer, maka akan membutuhkan memori yang sangat besar, dan waktu pencarian yang sangat lama. Dengan kata lain metode exhaustive search ini tidak efisien dan tidak efektif, sehingga tidak praktis untuk diimplementasikan. 

Untuk mengatasi kendala tersebut diatas, ada beberapa cara yang dapat dilakukan, diantaranya: pertama teknik pencarian parsial (Blind Search) dan yang kedua teknik pencarian heuristic (Heuristik Search). 

Pencarian Parsial (Blind Search)

PENCARIAN MELEBAR PERTAMA (Breadth-First Search)

Pada metode breadth-first search, semua node pada level n akan dikunjungi terlebih dahulu sebelum mengunjungi node-node pada level n+1. Pencarian dimulai dari node akar terus ke level ke-1 dari kiri ke kanan, kemudian berpindah ke level berikutnya, demikian pula dari kiri ke kanan hingga ditemukannya solusi (lihat gambar di bawah ini ).

Keuntungan : 

  • Tidak akan menemui jalan buntu 
  • Jika ada satu solusi, maka breadth-first search akan menemukannya. Dan, jika ada lebih dari satu solusi, maka solusi minimum akan ditemukan. 

Kelemahan : 

  • Membutuhkan memori yang cukup banyak, karena menyimpan semua node dalam satu pohon 
  • Membutuhkan waktu yang cukup lama, karena akan menguji n level untuk mendapatkan solusi pada level yang ke-(n+1). 


PENCARIAN KEDALAM PERTAMA (Depth-First Search) 

Pada Depth-First Search, proses pencarian akan dilakukanpada semua anaknya sebelum dilakukan pencarian ke node-node yang selevel. Pencarian dimulai dari node akar ke level yang lebih tinggi. Proses ini diulangi terus hingga ditemukannya solusi (lihat gambar di  bawah). 

Keuntungan : 

  • Membutuhkan memori yang relative keci l, karena hanya node-node pada lintasan yang aktif saja yang disimpan. 
  • Secara kebetulan, metode depth-first search akan menemukan solusi tanpa harus menguji lebih banyak lagi dalam ruang keadaan. 

Kelemahan : 

  • Memungkinkan tidak ditemukannya tujuan yang diharapakan 
  • Hanya akan menemukan 1 solusi pada setiap pencarian


Pencarian Heuristik (Heuristic Search)

Heuristik adalah sebuah teknik yang mengembangkan efisiensi dalam proses pencarian, namum dengan kemungkinan mengorbankan kelengkapan (completeness). Fungsi heuristik digunakan untuk mengevaluasi keadaankeadaan problema individual dan menentukan seberapa jauh hal tersebut dapat digunakan untuk mendapatkan solusi yang diinginkan. Jenis-jenis Heuristic Searching: 
  1. Generate and Test. 
  2. HillClimbing. 
  3. Best First Search. 
  4. Alpha  Beta  Prunning,Means-End-Anlysis,Constraint Satisfaction, Simulated Anealing, dll





Artificial Intelligence / Kecerdasan Buatan

Definisi

Awalnya komputer difungsikan sebagai alat hitung. Seiring dengan perkembangan jaman, komputer diharapkan dapat diberdayakan untuk mengerjakan segala sesuatu yang dikerjakan oleh manusia. Manusia bisa pandai menyelesaikan masalah karena mempunyai pengetahuan, penalaran dan pengalaman. Agar komputer bisa bertindak seperti dan sebaik manusia, maka komputer harus diberi bekal pengetahuan dan mempunyai kemampuan  menalar. AI merupakan salah satu bagian ilmu komputer yang membuat agar mesin (komputer) dapatmelakukan pekerjaan seperti dan sebaik yang dilakukan oleh manusia.

AI dilihat dari berbagai sudut pandang :

1. Sudut pandang Kecerdasan : mesin menjadi ‘cerdas’ (mampu berbuat apa yang dilakukan oleh manusia) 
2. Sudut pandang Penelitian : studi bagaimana membuat agar komputer dapat melakukan sesuatu sebaik yang dilakukan oleh manusia. Domain penelitian : 
  • Mundande task 
    • Persepsi (vision & speech) 
    • Bahasa alami (understanding, generation & translation) 
    • Pemikiran yang bersifat commonsense 
    • Robot control 
  • Formal task 
    • Permainan/games 
    • Matematika (geometri, logika, kalkulus, integral, pembuktian)
  • Expert task 
    • Analisis finansial 
    • Analisis medikal 
    • Analisis ilmu pengetahuan 
    • Rekayasa (desain, pencarian, kegagalan, perencanaan, manufaktur) 
3. Sudut pandang  Bisnis : kumpulan peralatan yang sangat powerful dan metodologis dalam menyelesaikan masalahmasalah bisnis 
4. Sudut pandang Pemrograman : studi tentang pemrograman simbolik, penyelesaian masalah (problem solving) dan pencarian (searching). Aplikasi AI memili ki 2 bagian utama, yaitu : 
  • Basis  Pengetahuan (Knowledge Base) : berisi faktafakta, teori, pemikiran dan hubungan antara satu dengan lainnya. 
  • Motor  Inferensi (Inference Engine) : kemampuan menarik kesimpulan berdasarkan pengalaman.
Penerapan Konsep AI di komputer

Kecerdasan Buatan Vs Kecerdasan Alami

Keuntungan kecerdasan alami : 

  1. Kreatif, kemampuan menambah pengetahuan sangat lekat pada jiwa manusia. 
  2. Memungkinkan orang menggunakan pengalaman secara langsung. 
  3. Pemikiran manusia dapat digunakan secara luas. 

Komputasi AI vs Komputasi Konvensional


Sejarah AI : 

1950-an, Alan Turing mengusulkan tes untuk melihat bisa atau tidaknya mesin memberikan respon terhadap serangkaian pertanyaan (agar mesin dapat dikatakan cerdas). Istilah “Artificial Intel ligence” dimunculkan oleh John McCarthy (MIT), tahun 1956 pada Dart mouth Conference. Dalam konferensi itu juga didefinisikan tujuan AI, yaitu mengetahui dan memodelkan proses-proses berpikir masunia dan mendesain mesin agar dapat menirukan kelakukan manusia tersebut. Beberapa program AI periode 1956-1966 : 
  • Logic Theorist, untuk pembuktian teorema  matematik 
  • Sad Sam (oleh Robert K.Lindsay, 1960), program  yang dapat mengetahui kalimat sederhana dalam bahasa Inggris dan memberikan jawaban dari fakta yang didengar dalam sebuah percakapan. 
  • ELIZA (Joseph Weizenbaum, 1967), progra untuk terapi pasien dengan memberikan jawaban.

Lingkup AI pada Aplikasi Komersial 

  1. Sistem Pakar(Expert System ) : Komputer memiliki keahlian untuk menyelesaikan masalah dengan meniru keahlian yang dimiliki oleh pakar. 
  2. Pengolahan Bahasa Alami (Natural Languange Processing) : Diharapkan user dapat berkomunikasi dengan komputer menggunakan bahasa sehari-hari 
  3. Pengenalan Ucapan (Speech Recognition) : Melalui pengenalan ucapan, diharapkan manusia dapat berkomunikasi dengan komputer menggunakan suara. 
  4. Robotika dan Sistem Sensor (Robotics & Sensory Systems) 
  5. Computer Vision : Menginterpretasikan gambar atau obyek-obyek tampak melalui komputer 
  6. Intelligence Computer – aidedInstruction : Komputer digunakan sebagai  tutor yang dapat melatih dan mengajar. 
  7. Game Playing : Perkembangan selanjutnya adalah kemunculan Fuzzy Logic (1965) dan Terminologi Genetika (John Halland, 1975). 

Soft Computing 

Soft computing (Lotfi A.Zadeh, 1992) adalah koleksi dari beberapa metodologi yang bertujuan untuk mengeksploitasi adanya toleransi terhadap ketidaktepatan, ketidakpastian dan kebenaran pasial untuk dapat diselesaikan dengan mudah, robustness, dan biaya penyelesaian yang murah. 

Soft computing merupakan inovasi baru dalam membangun AI yang memiliki keahlian seperti manusia pada domain tertentu, mampu beradaptasi dan belajar agar dapat bekerja lebih baik jika terjadi perubahan lingkungan.

Unsur-unsur pokok Soft Computing: 

  • Sistem Fuzzy (mengakomodasi ketidaktepatan) 
  • Jaringan Syaraf (menggunakan pembelajaran) 
  • Probabilistic Reasoning (mengakomodasi  ketidakpastian) 
  • Evolutionary Computing (optimasi)




Generasi Sistem Operasi

Generasi ke-1 (1945-1955) : Vacuum Tubes dan Plugboards

  • Analytical Engine (Charles Babbage)
  • Calculating Engine menggunakan vacuum tubes (Howard Aitken, John von Neumann, J.P Eckert, Konrad Zuse)
  • Beluam ada bahasa pemrograman
  • Belum ada sistem operasi, system komputer diberi instruksi yang harus dikerjakan langsung.
  • Operasi menggunakan plugboard
  • Pengenalan punched card

Generasi Ke-2 (1955-1965) : Transistors dan Batch System

  • Tetap belum dilengkapi system operasi. Tetapi beberapa fungsi dasar SO sudah ada.
  • Pengenalan transistor untuk komputer
  • Pemisahan fungsi personil :Designer , Operator, Programmer dan Maintenance personel
  • Pengenalan job (program atau seperangkat program)
  • Penggunaan bahasa FORTRAN, Assembeler
  • Penerapan Batch System
  • Pengoperasian Off-Line
  • Penggunaan mesin-mesin besar untuk kalkulasi sains dan engineering
  • Typical operating system : FMS (Fortran Monitor System) dan IBSYS (sistem operasi untuk IBM 7094)

Generasi Ke-3 (1965-1980) : IC dan Multiprogramming

  • IBM mengenalkan IBM 360 dengan sistem operasi OS/360
  • Menggunakan Integrated Circuit (IC)
  • Dapat menangani komputasi sains dan komersial
  • Mengadopsi konsep ‘one family’
  • Sistem operasi berukuran besar dan kompleks
  • Mengenalkan multiuser, komputer memiliki resource yang dapat digunakan oleh banyak orang sekaligus
  • Mengenalkan multiprogramming, komputer melayani banyak proses sekaligus pada waktu yang bersamaan dengan menerapkan partisi memori menjadi beberapa bagian memori dengan satu bagian memori untuk satu job berbeda. Saat satu job menunggu operasi I/O selesai, job lain dapat menggunakan proses.
  • Mengenalkan Time Sharing (berbagi waktu), tiap pemakai mempunyai satu terminal online dengan pemroses hanya memberi layana pada pemakai yang aktif secara bergantian secara cepat. Pemakai akan merasa dilayani terus menerus. Padahal sebenarnya secara bergantian.
  • Mengenalkan SPOOLING (Simultaneous Peripheral Operation On Line), membuat peripheral seolah-olah dapat digunakan bersamaan, dapat diaksis secara simultan yaitu dengan cara menyediakan beberapa partisi memori. Saat terdapat permintaan layanan peripheral, langsung diterima dan data disimpan lebih dulu di memori yang disediakan berupa antrian kemudian dijadwalkan agar secara nyata dilayani peripheral.
  • Sistem time sharing pertama, CTSS, dikembangkan di MIT
  • Usaha pengembangan ‘computer utility’ mesin yang dapat menunjang ratusan time sharing user
  • Pengembangan komputer MINI (DEC-PDP-1 s/d PDP-11)
  • Ken Thompson mengembangkan versi satu pemakai (single user) dari MULTICS (MULTIplex and Computing Services)
  • UNIX (Uniplexed Information and Computing Services)

Generasi Ke-4 (1980-1990) : LSI, VLSI, dan Personal Computer (PC)

  • Pengembangan LSI dan VLSI melahirkan PC dan Workstation
  • Perangkat lunaknya ‘user friendly’
  • Dua sistem operasi yang dominan :
    • MS-DOS (pada IBM-PC dengan CPU Intel 8088, 80286, 80386, 80486)
    • UNIX (pada Non-Intel computer dan workstation)
  • RISC Chips
  • Network Operating System
  • Distributed Operating System
  • Generasi Ke-5 (1990-sekarang) : VLSI, ULSI an teknologi Nano Second, Internet, Multimedia
  • Pengembangan VLSI an ULSI melahirkan PC yang berbasis Pentium untuk server maupun workstation
  • Pengembangan sistem operasi windows
  • Pengembangan internet dan multimedia
  • Pengembangan aplikasi yang berbasis Web atau WWW
  • dll.


Sistem Operasi Komputer

Sistem Operasi adalah perangkat lunak yang bertindak sebagai perantara/penghubung antara pemakai komputer dan perangkat keras. serta, sistem operasi merupakan suatu bagian program yang berjalan setiap saat yang dikenal dengan istilah kernal.


Fungsi Sistem Operasi


1. Sebagai Resource Manager /pengelola seluruh sumber daya system komputer

  •  Mengatur dan mengefisienkan penggunaan selluruh sumber daya komputer (computer resources)
  • Tugas utamanya : memantau penggunaan semua resources; menerapkan aturan (policy); mengalokasikan resources yang diminta; mengambil kembali (dealokasi) resource
  • Sumber daya pada komputer terdiri dari :
    • Sumber daya fisik, misalnya : Keyboard, bar-code reader, mouse, joystick, light-pen, touch-screen, pointing devices, floppy disk drive, harddisk, tape drive, optical disk, CD ROM drive, CRT, LCD, printer, modem, ethernet card, PCMCIA, RAM, cache memory, register, kamera, sound card, radio, digitizer, scanner, plotter, dan sebagainya.
    • Sumber daya abstrak, terdiri dari :Data dan Program

2. Sebagai Extended Machine (Virtual Machine), penyedia layanan

  • Menyembunyikan kompleksitas / kerumitan pemrograman hardware dari programmer atau user.
  • Menyajikan fasilitas yang lebih mudah dan sederhana untuk menggunakan hardware.

Konsep Sistem Operasi


1. Proses

  • Proses adalah program yang sedang di-eksekusi.
  • Proses terdiri dari : Executable program; program data dan stack; program counter; dll
  • Pada sistem timesharing secara periodik sistem operasi menggilir eksekusi proses-proses yang ada, biasanya berdasarkan porsi waktu CPU.
  • Ketika suatu proses dihentikan untuk sementara, maka proses tersebut harus dimulai kembali pada state yang sama dengan state ketika ia dihentikan.
    • Semua informasi yang berkaitan dengan proses tersebut harus disimpan.Umumnya informasi tersebut disimpan pada tabel proses (array atau linked list), satu tabel untuk setiap proses.
    • Tabel proses (process table) adalah tabel yang berisi informasi tentang semua proses yang dijalankan.
    • Suatu proses terdiri dari : address space (core image) dan atribut / informasi pada tabel proses.
  • System call utama dalam pengaturan proses adalah yang berkaitan dengan pembuatan dan pemberhentian suatu proses. Contoh :
    • Command interpreter atau shell akan membaca command yang diketikkan user pada terminal, dan membuat proses yang menjalankan command tersebut.
    • Bila telah selesai, maka proses akan menjalankan system call untuk menghentikan dirinya.
  • Suatu proses dapat men-create proses lainnya yang disebut sebagai child process.
  • Sistem operasi dapat berkomunikasi dengan suatu proses dengan menggunakan signal.
  • Signal juga dapat digunakan untuk komunikasi antar proses.
  • Pada sistem multiprogramming, setiap proses memiliki user identification (uid) yang berasal dari uid pemilik proses.

2. Files

Terdiri dari : Pathname, Working directory, rwx (read, write, execute) bits protection code, File descriptor / handle, Special file (block & character), Standard input, Standard output, Standard error, Pipe. SO mendukung konsep direktori.


3. System Calls / API (Aplication Programming Interface) 

  • Suatu set tata cara pemanggilan di program aplikasi untuk memperoleh layanan system operasi. Berupa extended instructions / perluasan instruksi yang merupakan interface / layanan langsung antara program-program dengan sistem operasi.
  • System calls meng-create, men-delete dan menggunakan objek-objek yang diatur oleh system operasi, antara lain : proses-proses dan file-file.
  • Library procedure meletakkan parameter-parameter system call pada tempat tertentu dan memberikan instruksi trap untuk memulai sistem operasi
  • Trap instruction : ketika diterima oleh sistem operasi, sistem memeriksa apakah parameter tersebut valid atau tidak
  • Return form trap : sistem operasi mengembalikan kontrol ke library procedure
  • Contoh mekanisme system calls untuk READ pada program C. 
    • count = read (file, buffer, nbytes)

4. Shell

  • Shell pada Unix merupakan command interpreter yang walaupun bukan merupakan bagian dari sistem operasi, menggunakan banyak feature sistem operasi
  • Prompt : standar input, menandakan bahwa shell siap menerima command
  • Contoh :
    • date
    • date > file
    • sort < file1 > file2
    • cat file1 file2 file3 | sort > /dev/lp
  • Background job : proses yang berjalan sementara user tetap bisa terus bekerja

Struktur Sistem Operasi


Sistem Monolitik


  • Konsep : “Sistem operasi sebagai kumpulan prosedur dimana prosedur dapat saling dipanggil oleh prosedur lain di sistem bila diperlukan”.
  • Kernel berisi semua layanan yang disediakan sistem operasi untuk pemakai.
  • Contoh : Sistem Operasi Unix menggunakan konsep kernel loadable modules, yaitu :
    • Bagian-bagian kernel terpenting berada dimemori utama secara tetap.
    • Bagian-bagian esensi lain berupa modul yang dapat ditambahkan ke kernel saat diperlukan dan dicabut begitu tidak digunakan lagi diwaktu jalan (run-time).
  • The ‘big mess’
  • Tidak berstruktur
  • Kernel call / supervisor call
  • User mode
  • Kernel mode / supervisor mode

Sistem Berlapis (Layered System) 

  • Konsep : “Sistem operasi dibentuk secara hirarki berdasarkan lapisan-lapisan, dimana lapisan-lapisan memberi layanan lapisan lebih atas”.
  • Dimaksudkan untuk mengurangi kompleksitas rancangan dan implementasi system operasi. Tiap lapisan mempunyai fungsional dan antarmuka I/O antara dua lapisan bersebelahan.
  • Contoh : 
    • Sistem Operasi THE (Technique Hogesschool Endiche), Djikstra, 1968.
    • Sistem Operasi MULTICS (menggunakan concentric rings).

Sistem dengan Mesin Maya (Virtual Machines)


  • Konsep : “Awalnya struktur ini membuat seolah-olah user mempunyai seluruh komputer dengan simulasi atas pemroses yang digunakan. Sistem operasi melakukan simulasi mesin nyata. Mesin hasil simulasi digunakan user, mesin maya merupakan tiruan 100% atas mesin nyata. Semua user diberi ilusi mempunyai satu mesin yang sama-sama canggih”.
  • Contoh : 
    • Sistem operasi MS-Windows NT dapat menjalankan aplikasi MS-Dos, OS/2 mode teks, dan Win 16.
    • Pengembang Linux membuat DOSEMU agar aplikasi MS-Dos dapat dijalankan di Linux, WINE agar aplikasi MS-Windows dapat dijalankan di Linux, iBCS agar aplikasi SCO-Unix dapat dijalankan di Linux.
  • CP/CMS
  • VM/370
  • Virtual Machine Monitor
  • CMS (Conversational Monitor System)


Sistem dengan Client-Server

Konsep : “Server adalah proses yang menyediakan layanan, dan Client adalah proses yang memerlukan / meminta layanan. Proses client yang memerlukan layanan mengirim pesan ke server dan menanti pesan jawaban. Proses server setelah melakukan tugas yang diminta, mengirim hasil dalam bentuk pesan jawaban ke proses client. Server hanya menanggapi permintaan client dan tidak memulai percakapan dengan client”.


Model Client Server pada distributed system


 Sistem berorientasi objek 


  • Konsep : “Layanan diimplementasikan sebagai objek”.
  • Model ini terstruktur dan memisahkan antara layanan yang disediakan dan implementasinya.
  • Contoh : 
    • Sistem operasi X-kernel
    • Sistem operasi MS-Windows NT telah mengadopsi beberapa teknologi berorientasi objek, tapi belum secara keseluruhan.

Layanan Sistem Operasi Komputer

  • Layanan Otomatis : Alokasi sumberdaya; Catatan pemakaian; Proteksi; Penanganan kekeliruan; Pindah baris; Gulung jendela pada monitor
  • Layanan permintaan pemakaian : Loading; Mengolah/run; Menyimpan/save; Menghapus/delete

Jenis Sistem Operasi


Aspek kegiatan

  • Pemakai tunggal (single user)
  • Pemakai jamak (multiuser)

Berdasarkan jenis-jenisnya

  • Linux
  • MS-Dos
  • MS Windows-NT
  • MS Windows 
  • Dll




Teori Algoritma

Pengertian

Algoritma  adalah  urutan  langkah-langkah  sistematis  untuk  menyelesaikan  masalah. Selain  itu  Algoritma  juga  bisa  diartikan  sebagai  cara  yang  ditempuh  oleh  computer  dalam menccapai  suatu  tujuan,  terdiri  atas  langkah-langkah  yang  terdefinisi  dengan  baik,  menerima input, melakukan proses, dan menghasilkan output.

Mengapa belajar Algoritma dan Pemrograman??

-  Mempermudah membuat suatu program
-  Mengetahui tahapan pembuatan suatu program

Penyajian Algoritma

Penyajian algoritma secara garis besar bisa dalam 2 bentuk penyajian yaitu tulisan dan gambar. Algoritma yang disajikan dengan tulisan yaitu dengan struktur bahasa tertentu (misalnya bahasa Indonesia atau bahasa Inggris) dan pseudocode. Pseudocode adalah kode yang mirip dengan kode pemrograman yang sebenarnya seperti Pascal, atau C, sehingga lebih tepat digunakan untuk menggambarkan algoritma yang akan dikomunikasikan kepada pemrogram. Sedangkan algoritma disajikan dengan gambar, misalnya dengan flowchart. Secara umum, pseudocode mengekspresikan  ide-i de secara informal dalam proses penyusunan algoritma. Salah satu cara untuk menghasilkan kode pseudo adalah dengan meregangkan aturanaturan bahasa formal yang dengannya versi akhir dari algoritma akan diekspresikan. Pendekatan ini umumnya digunakan ketika bahasa pemrograman yang akan digunakan telah diketahui sejak awal. 

Flowchart merupakan gambar atau bagan yang memperlihatkan urutan dan hubungan antar proses beserta pernyataannya. Gambaran ini dinyatakan dengan simbol. Dengan demikian setiap simbol menggambarkan proses tertentu. Sedangkan antara proses digambarkan dengan garis enghubung. Dengan menggunakan flowchart akan memudahkan kita untuk melakukan pengecekan bagian-bagian yang terlupakan dalam analisis masalah. Di samping itu flowchart juga berguna sebagai fasilitas untuk berkomunikasi antara pemrogram yang bekerja dalam tim suatu proyek

Ada dua macam flowchart  yang menggambarkan proses dengan komputer, yaitu :
  • Flowchart sistem yaitu bagan dengan simbol-simbol tertentu yang menggambarkan urutan prosedur dan proses suatu file dalam suatu media menjadifile di dalam media lain, dalam suatu sistem pengolahan data. Beberapa contoh Flowchart sistem:

  • Flowchart program yaitu bagan dengan simbol-simbol tertentu yang menggambarkan urutan prose dan hubungan antar proses secara mendetail di dalam suatu program.


Konsep Dasar Pemrograman Berbasis Objek

Dalam dunia pemrograman, biasanya kita dihadapkan pada dua jenis metode pemrograman, yaitu pemrograman prosedural (procedural) dan pemrograman berorientasi objek (object oriented). Apa perbedaan kedua metode tersebut? Bagaimana pemrograman berorientasi objek itu dilakukan? Apa saja konsep-konsep OOP yang harus dikuasai? Tulisan ini akan menjelaskan pertanyaan-pertanyaan tersebut.
Pemrograman prosedural merupakan suatu metode menulis program yang didasarkan pada “serangkaian tugas yang diselesaikan dalam bentuk fungsi atau prosedur”. Cara pandang pemrograman prosedural yaitu sebuah program adalah suatu urutan instruksi. Programmer harus mem-break down suatu problem/masalah menjadi sub problem yang lebih sederhana. Fokus utama metode prosedural ini adalah fungsi dan prosedur, dimana keduanya digunakan untuk memanipulasi data. Dalam hal ini data bersifat pasif.
Lain halnya dengan pemrograman berorientasi objek (OOP), fungsi dan data bukan menjadi dua hal yang terpisah. Fungsi dan data menjadi satu kesatuan yang disebut sebagai objek aktif. Cara pandang OOP ini yaitu sebuah program merupakanserangkaian objek yang bekerjasama untuk menyelesaikan suatu problem.
Dengan kata lain, metode prosedural berfokus pada cara komputer menangani tugas, sedangkan metode OOP berfokus pada tugas yang kita kembangkan untuk dieksekusi komputer. Kedua jenis metode pemrograman tersebut dapat digunakan untuk menangani masalah yang sama, asalkan bahasa pemrograman yang digunakan mendukung metode-metode tersebut. Contoh bahasa pemrograman yang mendukung OOP diantaranya : Java, C++, Pascal, Visual Basic .NET, Ruby, Python, PHP, C#, Delphi, Perl, dsb. Selain itu masih banyak bahasa lain yang termasuk ke dalam bahasa prosedural, atau bahkan bisa mendukung kedua metode pemrograman tersebut.
Istilah-Istilah OOP
1. Objek
Untuk mempermudah pemahaman, maka disini akan dijelaskan melalui analogi. Pada dasarnya semua benda yang adadi dunia nyata dapat dianggap sebagai objek. Misalnya rumah, mobil, sepeda, motor, gelas, komputer, meja, sepatu, dll. Setiap objek memiliki atribut sebagai status (state) dan tingkah laku sebagai behavior.
Contoh objek : Motor. Maka atribute (state) nya adalah pedal, roda, jeruji, speedometer, warna, jumlah roda. Sedangkan tingkah laku (behavior) nya adalah kecepatan menaik, kecepatan menurun, dan perpindahan gigi motor.
Analogi pemrograman berorientasi objek sama dengan penggambara pada dunia nyata seperti contoh di atas. Dalam OOP, state disimpan pada variabel dan tingkah laku disimpan pada method.
Dalam bahasa teoretis OOP, Objek berfungsi untuk membungkus data dan fungsi bersama menjadi satu unit dalam sebuah program komputer. Objek merupakan dasar dari modularitas dan struktur dalam sebuah program komputer berorientasi objek.
2. Class
Definisi class yaitu template untuk membuat objek. Class merupakan prototipe atau blue prints yang mendefinisikan variabel-variabel dan method-method secara umum. Objek merupakan hasil instansiasi dari suatu class. Proses pembentukan objek dari suatu kelas disebut sebagai instantiation. Objek disebut juga sebagai instances.
Dalam bahasa teoretis OOP, class merupakan kumpulan atas definisi data dan fungsi-fungsi dalam suatu unit untuk suatu tujuan tertentu. Sebagai contoh ‘class of dog’ adalah suatu unit yang terdiri atas definisi-definisi data dan fungsi-fungsi yang menunjuk pada berbagai macam perilaku/turunan dari anjing. Sebuah class adalah dasar dari modularitas dan struktur dalam pemrograman berorientasi object.
Sebuah class secara tipikal sebaiknya dapat dikenali oleh seorang non-programmer sekalipun terkait dengan domain permasalahan yang ada, dan kode yang terdapat dalam sebuah class sebaiknya (relatif) bersifat mandiri dan independen (sebagaimana kode tersebut digunakan jika tidak menggunakan OOP). Dengan modularitas, struktur dari sebuah program akan terkait dengan aspek-aspek dalam masalah yang akan diselesaikan melalui program tersebut. Cara seperti ini akan menyederhanakan pemetaan dari masalah ke sebuah program ataupun sebaliknya.
3. Attributes
Atribut adalah data yang membedakan antara objek satu dengan yang lainnya.
Contoh Objek : VolcanoRobot ( a volcanic exploration vehicle), mempunyai atribut sebagai berikut:
  • Status ~> exploring, moving, returning home
  • Speed ~> in miles per hour
  • Temperature ~> in Fahrenheit degrees
Dalam class, atribut sering disebut sebagai variabel. Atribut dibedakan menjadi dua jenis yaitu Instance Variable dan Class Variable.
Instance variable adalah atribut untuk tiap objek dari kelas yang sama. Tiap objek mempunyai dan menyimpan nilai atributnya sendiri. Jadi, tiap objek dari class yang sama bokeh mempunyai nilai yang sama atau berbeda.
Class Variable adalah atribut untuk semua objek yang dibuat dari class yang sama. Semua objek mempunyai nilai atribut yang sama. Jadi semua objek dari class yang sama mempunyai hanya satu nilai yang value nya sama.
4. Behavior
Behavior/tingkah laku adalah hal-hal yang bisa dilakukan oleh objek dari suatu class. Behavior dapat digunakan untuk mengubah nilai atribut suatu objek, menerima informasi dari objek lain, dan mengirim informasi ke objek lain untuk melakukan suatu tugas (task).
Contoh behavior untuk objek VolcanoRobot:
  • check current temperature
  • begin a survey
  • report its current position
Dalam class, behavior disebut juga sebagai methods. Methods sendiri adalah serangkaian statements dalam suatu class yang menghandle suatu task tertentu. Cara objek berkomunikasi dengan objek yang lain adalah dengan menggunakan method.
Konsep Konsep OOP
1. Enkapsulasi (Encapsulation)
Definisi enkapsulasi: Pembungkusan variabel dan method dalam sebuah obyek yang terlindungi serta menyediakan interface untuk mengakses variabel tersebut. Variabel dan method yang dimiliki oleh suatu objek, bisa ditentukan hak aksesnya. Dalam OOP, konsep enkapsulasi sebenarnya merupakan perluasan dari struktur dalam bahasa C.
Contoh: jam tangan. Dalam hal ini, penting sekali untuk mengetahui waktu, sedangkan cara jam mencatat waktu dengan baik antara jam bertenaga baterai atau bertenaga gerak tidaklah penting kita ketahui.
Dengan kata lain enkapsulasi berfungsi untuk memastikan pengguna sebuah objek tidak dapat mengganti keadaan dalam/dari sebuah objek dengan cara yang tidak layak; hanya metode dalam objek tersebut yang diberi izin untuk mengakses keadaannya. Setiap objek mengakses interface yang menyebutkan bagaimana objek lainnya dapat berinteraksi dengannya. Objek lainnya tidak akan mengetahui dan tergantung kepada representasi dalam objek tersebut.
2. Pewarisan (Inheritance)
Pewarisan merupakan pewarisan atribut dan method dari sebuah class ke class lainnya. Class yang mewarisi disebut superclass dan Class yang diwarisi disebut subclass. Subclass bisa berlaku sebagai superclass bagi class lainya, disebut sebagai multilevel inheritance.
Contoh : terdapat class sepeda dan sepeda gunung. Sepeda termasuk superclass.  Sepeda gunung termasuk subclass. Hal ini dikarenakan sepeda gunung memiliki variabel dan method yang dimiliki oleh sepeda.
Prinsip dasar inheritance yaitu persamaan-persamaan yang dimiliki oleh beberapa kelas dapat digabungkan dalam sebuah class induk sehingga setiap kelas yang diturunkannya memuat hal-hal yang spesifik untuk kelas yang bersangkutan.
Keuntungan Pewarisan
  • Subclass menyediakan state/behaviour yang spesifik yang membedakan dengan superclass, sehingga memungkinkan programmer untuk menggunakan ulang source code dari superclass yang telah ada.
  • Programmer dapat mendefinisikan superclass khusus yang bersifat generik, yang disebut abstract class (abstraksi), untuk mendefinisikan class dengan tingkah laku dan state secara umum.
Single & Multiple Inheritance
Bahasa C adalah contoh multiple inheritance. Suatu class diperbolehkan untuk mempunyai lebih dari satu superclass. Variabel dan method yang diwariskan merupakan kombinasi dari superclass-nya. Java adalah contoh single inheritance. Suatu class hanya boleh mempunyai satu superclass.
Multilevel Inheritance
Suatu subclass bisa menjadi superclass bagi class yang lain.
3. Polimorfisme
Polimorfisme adalah kemampuan suatu obyek untuk mempunyai lebih dari satu bentuk. Polimorfisme tidak bergantung kepada pemanggilan subrutin. Metode tertentu yang berhubungan dengan sebuah pengiriman pesan tergantung kepada objek tertentu di mana pesan tersebut dikirim. Contohnya, bila sebuah burung menerima pesan “gerak cepat”, dia akan menggerakan sayapnya dan terbang. Bila seekor singa menerima pesan yang sama, dia akan menggerakkan kakinya dan berlari. Keduanya menjawab sebuah pesan yang sama, namun yang sesuai dengan kemampuan hewan tersebut. Ini disebut polimorfisme karena sebuah variabel tungal dalam program dapat memegang berbagai jenis objek yang berbeda selagi program berjalan, dan teks program yang sama dapat memanggil beberapa metode yang berbeda di saat yang berbeda dalam pemanggilan yang sama. Hal ini berlawanan dengan bahasa fungsional yang mencapai polimorfisme melalui penggunaan fungsi kelas-pertama.