ABSTRACTION AND GENERALIZATION

29 09 2010

Abstraksi dan Generalisasi

  • Abstraksi Abstraksi adalah penekanan pada kualitas ide, dan sifat dari sebuah keterangan (penekanan detail).
  • Generalisasi adalah 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 untuk 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

Top of Form

Bottom of Form

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 dengan”sebuah.

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
    • Hubungan
    • Nama dan konsistensi Jenis
  • Lingkup aturan
    • Impor
    • 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.

Lingkup ini berkaitan dengan kontrol nama.

Sumber: http://www.emu.edu.tr/aelci/Courses/D-318/D-318-Files/plbook/absgen.htm (diterjemahkan)


Actions

Information

One response

5 10 2010
4tmaj4

ok lah membantu melaksanakan tugas

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s




%d bloggers like this: