Makalah ini membahas Object Oriented Programming dan konsep Abstraksi serta Generalisasi dalam pemrograman berorientasi objek. Object Oriented Programming dikembangkan untuk memodelkan dunia nyata dimana program dibangun dari objek-objek yang berinteraksi. Abstraksi dan generalisasi memungkinkan pembuatan komponen-komponen berulang yang dapat digunakan kembali dalam program.
2. Kata Pengantar
Puji dan syukur kami panjatkan kepada Tuhan Yang Maha Esa atas
rahmat-Nya kami dapat meyelesaikan makalah ini.
Dalam makalah ini kami membahas mengenai Object Oriented
Programming & Abstraksi , Generalisasi.
Kami menyadari penulisan makalah ini masih jauh dari kesempurnaan.
Akhir kata kami berharap makalah ini dapat bermanfaat bagi kita semua.
Depok, 9 januari 2013
3. 1. Object Oriented Programming
Tahun 1960, ditemukan suatu pembuatan program yang terstuktur
(structured programming). Metode ini dikembangkan dari bahasa C dan
Pascal.Dengan program yang terstruktur inilah untuk pertama kalinya kita mampu
menulis program yang begitu sulit dengan lebih mudah.
Definisi Object Oriented Programming
Object Oriented Programming adalah suatu metode dalam pembuatan
program, dengan tujuan untuk menyelesaikan kompleksnya berbagai masalah
program yang terus meningkat.
Pemrograman berorientasi objek diciptakan untuk mempermudah
pengembangan program dengan cara mengikuti model yang telah ada dalam
kehidupan nyata. Dalam paradigma ini, sesuai dengan model kehidupan nyata,
segala bagian (entiti) dari suatu permasalahan adalah objek. Objek-objek ini
kemudian juga dapat berupa gabungan dari beberapa objek yang lebih kecil. Sebagai
contoh, tengoklah sebuah mobil. Mobil adalah sebuah objek dalam kehidupan nyata.
Namun mobil sendiri terbentuk dari beberapa objek yang lebih kecil seperti roda
ban, mesin, jok, dll. Mobil sebagai objek yang merupakan gabungan dari objek yang
lebih kecil dibentuk dengan membentuk hubungan antara objek-objek penyusunnya.
Begitu juga dengan sebuah program. Objek besar dapat dibentuk dengan
menggabungkan beberapa objek-objek dalam bahasa pemrograman. Objek-objek
tersebut berkomunikasi dengan saling mengirim pesan kepada objek lain.
Konsep-konsep pemrograman berorientasi objek dalam Java secara umum
sama dengan yang digunakan oleh bahasa-bahasa lain. Jadi kebanyakan konsep yang
kita bahas juga terdapat dalam bahasa selain Java. Namun, terkadang terdapat
perbedaan-perbedaan kecil antara penerapan konsep-konsep tersebut dalam
masing-masing bahasa. Perbedaan-perbedaan ini juga akan dijelaskan seiring
penjelasan masing-masing konsep.
4. 2. ABSTRAKSI DAN GENERALISASI
Abstraksi adalah penekanan pada kualitas ide, dan sifat dari sebuah keterangan
(penekanan detail).
Generalisasi adalah perluasan aplikasi untuk mencakup domain yang lebih besar dari
objek dari jenis yang sama atau berbeda.
Binding
Binding umum untuk semua bahasa pemrograman. Objek yang dapat terikat
pada nama disebut bindables pada bahasa. Bindables mungkin termasuk: nilai
primitif, nilai majemuk, referensi ke variabel, jenis, dan abstraksi dieksekusi.
Sementara Binding terjadi pada definisi dan deklarasi, itu juga terjadi di tingkat mesin
virtual dan hardware antara nilai dan lokasi penyimpanan.
Selain. Paradigma pemrograman ini ditandai dengan mengizinkan nama untuk
terikat berturut-turut untuk objek yang berbeda, ini dicapai oleh pernyataan
penugasan (seringkali dalam bentuk, nama: = obyek) yang berarti diamkan nama
untuk objek sampai pemberitahuan lebih lanjut. Dengan kata lain, sampai
dipindahkan. Hal ini berbeda dengan paradigma pemrograman fungsional dan logika
di mana nama-nama tidak boleh dipindahkan. Jadi bahasa dalam paradigma yang
sering disebut bahasa tugas tunggal.
Biasanya teks dari sebuah program berisi sejumlah bindings antara nama dan
objek dan binding dapat terdiri collaterall, berurutan atau secara rekursif.
Collateral binding adalah melakukan binding independen satu sama lain dan
kemudian menggabungkan binding untuk menghasilkan menyelesaikan set binding.
Nether binding dapat referensi nama yang digunakan dalam mengikat lainnya.
binding Jaminan tidak sangat umum tapi terjadi pada Skema dan ML.
Cara yang paling umum penyusunan binding adalah secara berurutan.
sequential binding adalah untuk melakukan binding dalam urutan di mana mereka
terjadi. Efeknya adalah untuk memungkinkan pengikatan kemudian untuk
menggunakan bindings dihasilkan sebelumnya dalam urutan. Harus dicatat bahwa
sequential binding tidak mengijinkan saling definisi rekursif.
Dalam C / C dan Pascal, konstan, variabel, dan bindings prosedur dan fungsi
yang berurutan. Untuk memberikan definisi saling rekursif dari fungsi dan prosedur,
C / C dan Pascal menyediakan untuk pemisahan tanda tangan dari sebuah fungsi atau
5. prosedur dari tubuh dengan cara prototipe fungsi & deklarasi ke depan sehingga
sehingga saling definisi rekursif dapat dibangun. Recursive binding adalah satu di
mana nama yang terikat digunakan (langsung atau tidak langsung) dalam mengikat
sendiri.
Bahasa pemrograman yang membutuhkan deklarasi sebelum referensi
harus menciptakan mekanisme khusus untuk menangani referensi kedepan. Untuk
tipe data dinamis, aturan yang santai untuk memungkinkan definisi jenis pointer.
Untuk fungsi dan prosedur, ada deklarasi terpisah untuk tanda tangan dari fungsi
atau prosedur dan tubuhnya. Pascal dengan yang deklarasi maju dan C dengan
prototipe fungsi yang khas.
The deklarasi sebelum referensi sering dipilih untuk menyederhanakan
konstruksi compiler. Dalam Modula-3 dan Java pilihan telah dibuat untuk
menyederhanakan tugas programmer daripada compiler dan izin referensi kedepan.
Enkapsulasi
Bagian abstrak dari sebuah mengikat sering mengandung binding lain yang
dikatakan definisi lokal. definisi lokal tersebut tidak terlihat atau tersedia untuk
dijadikan acuan di luar abstrak. Sehingga bagian abstrak dari sebuah mengikat
melibatkan informasi bersembunyi. informasi yang tersembunyi kadang-kadang
disediakan oleh pegekspor nama.
Sebuah sistem modul memberikan cara penulisan program besar sehingga
berbagai potongan program tersebut tidak mengganggu yang lain karena bentrokan
nama dan juga menyediakan cara untuk menyembunyikan detail implementasi.
modul umumnya terdiri dari dua bagian, bagian ekspor dan bagian lokal. Bagian
ekspor dari sebuah modul terdiri dari deklarasi bahasa untuk simbol yang tersedia
untuk digunakan dalam salah satu bagian dari modul dan di modul lain yang impor
mereka dan deklarasi modul memberikan simbol dari modul lain yang tersedia untuk
digunakan dalam salah satu bagian dari modul dan dalam modul lain yang impor
mereka. Bagian daerah dari sebuah modul terdiri dari deklarasi bahasa untuk simbol
yang tersedia untuk digunakan hanya dalam bagian ini. TGPL-Hill dan Lloyd
Pekerjaan membangun program besar dibagi di antara beberapa orang,
masing-masing dari mereka harus menghasilkan bagian dari keseluruhan. Setiap
bagian disebut modul dan setiap programmer harus dapat membangun / nya modul-
6. nya tanpa mengetahui rincian internal dari bagian lain. Hal ini hanya mungkin bila
setiap modul adalah dipisahkan menjadi bagian interface dan merupakan bagian
implementasi. Bagian interface menggambarkan semua informasi yang diperlukan
untuk menggunakan modul sementara bagian menggambarkan pelaksanaan
implementasi. Gagasan ini sudah hadir dalam bahasa pemrograman yang paling
dalam cara di mana fungsi dan prosedur yang ditetapkan. Fungsi dan prosedur
definisi biasanya dipisahkan menjadi dua bagian. Bagian pertama memberikan nama
subprogram dan parameter persyaratan dan bagian kedua menjelaskan pelaksanaan.
Modul adalah generalisasi dari konsep abstraksi dalam modul diizinkan mengandung
kumpulan definisi. Tujuan tambahan modul adalah untuk membatasi perubahan ke
beberapa modul daripada seluruh program.
Sementara konsep modul adalah abstraksi yang berguna, keuntungan lengkap modul
diperoleh hanya ketika modul dapat ditulis, dikompilasi dan mungkin dilaksanakan
secara terpisah. Dalam banyak kasus modul harus dapat diuji secara independen dari
modul yang lain.
Keuntungan
pengurangan kompleksitas
Tim pemrograman
maintainability
reusabilitas kode
manajemen proyek
Pelaksanaan
penyimpanan umum daerah Fortran
termasuk direktif C + +
perpustakaan subrutin
7. Khas aplikasi:
subrutin paket matematika, statistik dll
ADT
contoh dari Ada, C + +, dll
Generalisasi
Prinsip Generalisasi generik adalah sebuah entitas yang mungkin khusus (diuraikan)
atas permintaan.
Generalisasi mengijinkan penggunaan pola tunggal untuk mewakili masing-masing
anggota kelompok. Kita menggunakan notasi: p.B lambda
(Disebut abstraksi lambda) untuk menunjukkan generalisasi B mana p disebut
parameter dan B adalah B dengan p mengganti sejumlah kejadian dari beberapa
bagian B dengan p. P parameter dikatakan terikat dalam ekspresi tetapi bebas dalam
B dan ruang lingkup p dikatakan B.
The lambda simbol adalah sebuah quantifier. Bilangan digunakan untuk mengganti
konstanta dengan variabel.
Spesialisasi (elaborasi) dari sebuah aplikasi bernama generik dan mengambil bentuk:
(lambda p.B a)
Ini menunjukkan ungkapan B yang diperoleh dari ekspresi lambda saat kejadian
bebas dari p dalam B diganti dengan a.
Simbol ini lambda diperkenalkan oleh Gereja untuk pengenalan variabel dalam
kalkulus lambda. Ini kira-kira sesuai dengan FORALL simbol, yang quantifier universal,
logika orde pertama. Lampiran ini berisi pengenalan singkat logika orde pertama. Bab
pemrograman fungsional berisi pengenalan singkat ke kalkulus lambda.
Generalisasi sering dikombinasikan dengan abstraksi dan mengambil bentuk sebagai
berikut:
n( p ) : B
dimana p adalah nama, x adalah parameter, dan B adalah abstrak. Seruan dari
abstrak mengambil bentuk:
8. n(a)
atau occaisionally (n a)di mana n adalah nama dan disebut sebagai argumen yang
nilainya digantikan dengan parameter. Setelah permintaan dari abstrak, argumen
yang terikat parameter. Gambar N.1 merangkum berbagai notasi yang digunakan
untuk menunjukkan elaborasi dari generalisasi.
Kebanyakan bahasa pemrograman izin bentuk implisit dari generalisasi di mana
variabel yang dapat diperkenalkan tanpa memberikan untuk sebuah prosedur doa
yang menggantikan parameter dengan argumen. Sebagai contoh, perhatikan
psudocode berikut untuk sebuah program yang menghitung keliling lingkaran:
pi : 3.14
c : 2*pi*r
begin
r := 5
write c
r := 20
write c
end
Nilai r tergantung pada konteks di mana fungsi tersebut didefinisikan. R variabel
adalah nama global dan dikatakan bebas. Dalam perintah pertama menulis, keliling
dihitung untuk lingkaran radius 5 sedangkan pada kedua menulis perintah keliling
dihitung untuk lingkaran 20 jari-jari. Perintah menulis tidak dapat dipahami tanpa
merujuk pada kedua definisi c dan lingkungan (pi dipandang sebagai konstan). Oleh
karena itu, program ini tidak sepenuhnya abstrak. Sebaliknya, program berikut ini
sepenuhnya abstrak:
pi : 3.14
c(r) : 2*pi*r
begin
FirstRadius := 5
write c(FirstRadius)
9. SecondRadius := 20
write c(SecondRadius)
end
Prinsip generalisasi tergantung pada prinsip analogi.
Prinsip Analogi Ketika ada konformasi dalam pola antara dua objek yang berbeda,
obyek dapat digantikan dengan satu objek parameter untuk mengizinkan
rekonstruksi objek asli.
prinsip analogi ini yang memungkinkan pengenalan variabel untuk mewakili unsur
sewenang-wenang dari sebuah kelas.
Prinsip Generalisasi tidak membuat pembatasan terhadap parameter atau bagian
dari suatu entitas yang mungkin parameter. Tidak harus bahasa pemrograman. Hal
ini ditekankan dalam prinsip berikut:
Prinsip parameterisasi adalah sebuah parameter generik mungkin berasal dari
domain manapun.
Terminologi. Parameter istilah formal (pakaian resmi) dan parameter aktual
(Realisasi) kadang-kadang digunakan sebagai pengganti parameter syarat dan
argumen masing-masing.
Substitusi
Kegunaan dari kedua abstraksi dan generalisasi bergantung pada substitusi. Ikatan
antara keduanya adalah ditangkap dalam prinsip berikut:
10. Prinsip mekanisme Korespondensi Parameter mengikat dan mekanisme definisi yang
setara.
Prinsip Korespondensi adalah formalisasi dari aspek Prinsip Abstraksi yang
menyiratkan bahwa definisi dan substitusi sangat erat terkait.
Kita menggunakan notasi
E [p: a]
untuk menunjukkan substitusi untuk p dalam E. notasi ini dibaca sebagai E [p: a]
adalah ekspresi diperoleh dari E dengan mengganti semua kejadian bebas dari p
dengansebuah.
Terminologi. Notasi untuk substitusi dipilih untuk menekankan hubungan antara
abstraksi dan substitusi. teks lain menggunakan notasi E [p: = a] untuk substitusi.
notasi mereka dimotivasi oleh operasi penugasan yang memberikan nilai untuk p.
teks lain menggunakan E notasi [a / p] untuk substitusi. Notasi terakhir ini dimotivasi
oleh pembatalan yang terjadi ketika sebuah angka dikalikan dengan inversenya (p
(p /) = a).
Bersama-sama, abstraksi, invokation, generalisasi dan spesialisasi menyediakan
mekanisme yang kuat untuk pengembangan program. Generalisasi menyediakan
mekanisme untuk pembangunan mengelompokkan sub ekspresi umum dan abstraksi
mekanisme untuk anjak dari mengelompokkan sub ekspresi umum. Pada contoh
berikut, faktor yang pertama umum mengandung mengelompokkan sub ekspresi
umum dan kemudian diabstraksikan keluar. Produk
(B-c) * (x y-z)
dibentuk dari dua faktor yang sangat mirip. Faktor-faktor generalisasi ke ekspresi
umum
lambda i j k. i j-k.
Ekspresi lambda dapat digunakan untuk menulis ulang produk sebagai:
(Lambda ij k. i jk) * abc (lambda ij k. i jk) xy z.
Ekspresi lambda dapat diabstraksikan nama dengan tiga argumen,
f (i k j): i j-k,
11. yang dapat digunakan untuk menggantikan ekspresi lambda dengan nama dan akan
mendapatkan ekspresi
f (a, b c) * f (x y z) dimana f (i k j): i j-k
yang secara jelas menunjukkan kesamaan faktor.
Partisi
Pisahkan kompilasi
o Hubungan
o Nama dan konsistensi Jenis
Lingkup aturan
o Impor
o Ekspor
Modul koleksi benda definisi
Paket
Struktur Blok
Sebuah blok adalah konstruksi yang membatasi lingkup dari setiap definisi yang
mungkin terkandung. Sebuah blok menyediakan yaitu lingkungan lokal, untuk definisi
lokal. Struktur blok (hubungan tekstual antara blok) suatu bahasa pemrograman
memiliki banyak pengaruh atas struktur program dan modularitas. Ada tiga struktur
blok dasar monolitik, datar dan bersarang.
Sebuah blok adalah sebuah konstruksi yang membatasi cakupan definisi yang
terkandung di dalamnya
Ada tiga dasar struktur blok: monolitik, flat dan nested
Syntax blok:
let Definitions in Body end
Body where Definitions
12. Syntax di atas menyatakan dua tipe blok, yang pertama membutuhkan definisi
sebelum body dan yang kedua membutuhkan definisi sesudah body
Monolitik hanya terdiri dari satu blok saja
Flat body nya bisa saja mengandung blok-blok tambahan tetapi blok bagian
dalam tidak mengandung blok
Nested jika blok-blok dimungkinkan untuk bersarang (nested) di dalam blok
lain
Aturan Cakupan (Scope)
Tindakan partisi program menimbulkan masalah lingkup nama. Apakah objek yang di
partisi harus terlihat di luar partisi? Solusi yang biasa adalah untuk menunjuk
beberapa nama untuk diekspor dan lainnya yang menjadi pribadi atau lokal untuk
partisi dan terlihat partisi lain. Dalam hal nama mungkin ada konflik antara nama
diekspor dari partisi, partisi sering mengizinkan untuk menunjuk nama-nama yang
akan mengimpor dari partisi yang ditunjuk atau untuk memenuhi syarat nama
dengan nama partisi.
Ruang lingkup peraturan untuk modul mendefinisikan hubungan antar nama-nama
dalam partisi. Ada empat pilihan.
1. Semua nama setempat terlihat secara global.
2. Semua eksternal terlihat nama lokal.
3. Hanya diekspor secara eksplisit nama lokal terlihat secara global.
4. Hanya nama eksternal yang diimpor secara eksplisit terlihat secara lokal.
Aturan cakupan dinamis ruang lingkup dinamis dari masing-masing asosiasi
dalam hal tentu saja dinamika pelaksanaan program
Aturan cakupan statis disebut juga aturan cakupan leksikal
13. Lingkungan
Ruang Lingkup ada hubungannya dengan kisaran visibilitas nama. Sebagai
contoh, batas nasional mungkin encapsulate bahasa alami. Namun, beberapa kata
yang digunakan di dalam batas ini adalah bukan kata-kata asli. Mereka adalah kata-
kata yang dipinjam dari beberapa bahasa lain dan didefinisikan dalam bahasa asing.
Jadi dalam sebuah program. Suatu definisi memperkenalkan nama dan batas (objek).
Objek mungkin berisi nama-nama yang tidak ada definisi lokal (definisi mungkin
asumsi bersarang). Nama-nama ini dikatakan bebas. Arti ditugaskan untuk nama-
nama yang akan ditemukan di luar dari definisi. Aturan diikuti dalam menentukan
arti nama-nama ini bebas disebut ruang lingkup aturan.