際際滷

際際滷Share a Scribd company logo
Algoritma & Pemrograman 1 C
Object Oriented Programming &
Abstraksi , Generalisasi
Anggota:
 Ahmad Faiz 50412429
 Arya Hasa Kuswiratama 51412186
 Moch. Ichratyarsyah 54412618
 Rizanda Febri Ramadhan 56412526
 Teuku Uzer Yusran 57412343
Kelas: 1IA11
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
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.
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
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-
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
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:
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)
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:
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,
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
 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
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.

More Related Content

Second task bu okta 2 edit

  • 1. Algoritma & Pemrograman 1 C Object Oriented Programming & Abstraksi , Generalisasi Anggota: Ahmad Faiz 50412429 Arya Hasa Kuswiratama 51412186 Moch. Ichratyarsyah 54412618 Rizanda Febri Ramadhan 56412526 Teuku Uzer Yusran 57412343 Kelas: 1IA11
  • 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.