Abstraction and Generalization

Abstraksi adalah penekanan pada kualitas ide, dan sifat daripada khusus (penindasan detail).

Generalisasi adalah perluasan aplikasi untuk mencakup domain yang lebih besar dari objek dari jenis yang sama atau berbeda.

Parameter adalah kuantitas yang nilainya bervariasi dengan keadaan penerapannya.

Pergantian — Untuk menempatkan sesuatu di tempat lain.
Encapsulate — Untuk benar-benar melampirkan.

Kemampuan untuk abstrak dan generalisasi merupakan bagian penting dari setiap aktivitas intelektual. Abstraksi dan generalisasi yang mendasar untuk matematika dan filsafat dan sangat penting dalam ilmu komputer juga.

Pentingnya abstraksi berasal dari kemampuannya untuk menyembunyikan rincian yang tidak relevan dan dari penggunaan nama-nama obyek referensi. Bahasa pemrograman menyediakan abstraksi melalui prosedur, fungsi, dan modul yang memungkinkan programmer untuk membedakan antara apa program yang dilakukan dan bagaimana hal itu diimplementasikan.

Perhatian utama dari pengguna program adalah dengan apa yang dilakukannya. Hal ini berbeda dengan penulis dari program yang utama perhatian adalah dengan bagaimana itu dilaksanakan. Abstraksi adalah penting dalam pembangunan program. Ini penekanan pada apa suatu objek atau tidak daripada bagaimana diwakili atau cara kerjanya. Jadi, itu adalah cara utama mengelola kompleksitas dalam program besar.

Generalisasi pun penting Sementara abstraksi mengurangi kompleksitas dengan menyembunyikan detail yang tidak relevan, generalisasi mengurangi kompleksitas dengan mengganti beberapa entitas yang melakukan fungsi yang sama dengan membangun tunggal. Bahasa pemrograman menyediakan generalisasi melalui variabel, generik parameterisasi, dan polimorfisme. Generalisasi sangat penting dalam pembangunan program. Ini penekanan pada kesamaan antara objek. Dengan demikian, hal ini membantu untuk mengelola kompleksitas dengan mengumpulkan individu-individu ke dalam kelompok dan memberikan perwakilan yang dapat digunakan untuk menentukan individu kelompok.

Abstraksi dan generalisasi sering digunakan bersama-sama. Abstrak digeneralisasi melalui parameterisasi untuk menyediakan utilitas yang lebih besar. Dalam parameterisasi, satu atau lebih bagian dari suatu entitas diganti dengan nama yang baru untuk entitas. Nama ini digunakan sebagai parameter. Ketika parameter abstrak dipanggil, ia dipanggil dengan pengikatan parameter untuk argumen.

  • Abstraction

Prinsip Abstraksi abstrak adalah sebuah entitas bernama yang dapat dipanggil dengan menyebutkan nama.

Pemberian nama obyek memberikan izin untuk mengganti nama untuk hal yang bernama (atau sebaliknya) tanpa mengubah arti. Kita menggunakan notasi

Nama: abstrak

Untuk menunjukkan pengikatan nama untuk abstrak. Deklarasi dan definisi adalah semua contoh dari penggunaan abstraksi dalam bahasa pemrograman.  Selain penamaan ada aspek kedua untuk abstraksi. Itu adalah bahwa abstrak dirumuskan, yaitu, rincian abstrak yang tersembunyi sehingga nama cukup untuk mewakili entitas. Aspek abstraksi dianggap lebih rinci dalam bab berikutnya. Sebuah benda dikatakan sepenuhnya abstrak jika dapat dimengerti tanpa mengacu pada setiap hal eksternal ke objek.

Terminologi. Aspek penamaan abstraksi ditangkap dalam konsep mengikat, definisi dan deklarasi sementara menyembunyikan rincian yang tidak relevan ditangkap oleh konsep enkapsulasi. Mengikat adalah sebuah asosiasi dari dua entitas. Definisi adalah pengikatan nama untuk entitas, deklarasi adalah definisi yang mengikat sebuah nama untuk variabel, dan tugas adalah mengikat nilai dan variabel.

Kami sama-sama bisa juga mengatakan bukan nama identifier. Variabel adalah sebuah entitas yang nilainya tidak tetap, tetapi dapat bervariasi. Nama terikat untuk variabel dalam pernyataan deklarasi. Di antara berbagai istilah untuk abstrak ditemukan dalam teks-teks lain modul, paket, perpustakaan, unit, subprogram, subroutine, rutin, fungsi, prosedur, jenis abstrak, objek.

  • Binding

Konsep mengikat umum untuk semua bahasa pemrograman. Benda yang dapat terikat pada nama disebut bindables bahasa. Para bindables dapat mencakup: nilai-nilai primitif, nilai-nilai kompleks, referensi ke variabel, jenis, dan abstraksi dieksekusi. Sementara mengikat terjadi dalam definisi dan deklarasi, itu juga terjadi pada tingkat mesin virtual dan perangkat keras antara nilai-nilai dan lokasi penyimpanan.

Selain Paradigma pemrograman imperatif ditandai dengan mengizinkan nama untuk terikat berturut-turut untuk objek yang berbeda, ini dicapai oleh pernyataan penugasan (sering 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 mungkin tidak dipindahkan. Jadi bahasa dalam paradigma ini sering disebut bahasa penugasan tunggal.

Biasanya teks dari sebuah program berisi sejumlah binding antara nama dan objek dan binding dapat terdiri collaterally, secara berurutan atau secara rekursif. Sebuah mengikat agunan adalah untuk melakukan binding secara independen satu sama lain dan kemudian untuk menggabungkan binding untuk menghasilkan set binding selesai. Mengikat Nether dapat referensi nama yang digunakan dalam mengikat lainnya. Binding Agunan tidak sangat umum, tetapi terjadi dalam Skema dan ML.

Cara yang paling umum binding menyusun secara berurutan. Sebuah mengikat sekuensial adalah untuk melakukan binding dalam urutan di mana mereka terjadi. Efeknya adalah untuk memungkinkan binding nanti untuk menggunakan bindings diproduksi sebelumnya dalam urutan. Harus dicatat bahwa binding sekuensial tidak mengijinkan definisi rekursif saling.

Dalam C / C + + dan Pascal, konstan, variabel, dan prosedur dan fungsi yang berurutan binding. Untuk memberikan definisi saling rekursif fungsi dan prosedur, C / C + + dan Pascal menyediakan untuk pemisahan tanda tangan dari fungsi atau prosedur dari tubuh dengan cara prototipe fungsi & deklarasi ke depan sehingga sehingga definisi saling rekursif dapat dibangun.

Sebuah mengikat rekursif adalah satu di mana nama terikat digunakan (secara langsung atau tidak langsung) dalam mengikat sendiri. Bahasa pemrograman yang membutuhkan “deklarasi sebelumnya referensi” harus menciptakan mekanisme khusus untuk menangani referensi ke depan. Untuk jenis data dinamis, aturan adalah santai untuk memungkinkan definisi jenis pointer. Untuk fungsi dan prosedur, ada deklarasi terpisah untuk tanda tangan dari fungsi atau prosedur dan tubuhnya. Pascal dengan “maju” nya deklarasi dan C + + dengan prototipe fungsi yang khas.

Para “deklarasi sebelumnya referensi” sering dipilih untuk menyederhanakan konstruksi compiler. Dalam Modula-3 dan Jawa pilihan telah dibuat untuk menyederhanakan tugas programmer daripada compiler dan izin referensi ke depan.

  • Encapsulation

Bagian abstrak mengikat sering mengandung binding lain yang dikatakan definisi lokal. Definisi lokal tersebut tidak terlihat atau tersedia untuk direferensikan luar abstrak. Sehingga bagian abstrak mengikat melibatkan “”menyembunyikan informasi. Ini informasi tersembunyi kadang-kadang dibuat tersedia dengan mengekspor nama.

Sebuah sistem modul menyediakan cara untuk menulis program besar sehingga berbagai potongan-potongan program tidak mengganggu yang lain karena bentrokan nama dan juga menyediakan sebuah cara untuk menyembunyikan rincian implementasi. … Sebuah modul umumnya terdiri dari dua bagian, bagian ekspor dan bagian lokal. Bagian ekspor 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 baik dalam bagian dari modul dan dalam modul lain yang impor mereka. Bagian lokal dari sebuah modul terdiri dari deklarasi bahasa untuk simbol yang tersedia untuk digunakan hanya pada bagian ini. TGPL-Hill dan Lloyd.

Pekerjaan membangun program besar dibagi di antara beberapa orang, yang masing-masing harus menghasilkan bagian dari keseluruhan. Masing-masing bagian disebut modul dan programmer masing-masing harus mampu membangun modul / nya tanpa mengetahui rincian internal dari bagian lain. Hal ini hanya mungkin bila setiap modul dipisahkan menjadi bagian interface dan merupakan bagian implementasi. Bagian antarmuka menggambarkan semua informasi yang diperlukan untuk menggunakan modul sementara bagian implementasi menggambarkan pelaksanaannya.

Ide ini sudah ada 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 persyaratan parameter dan bagian kedua menjelaskan pelaksanaan. Modul adalah generalisasi dari konsep abstraksi dalam modul diizinkan untuk berisi kumpulan definisi.

Tujuan tambahan modul adalah untuk membatasi perubahan beberapa modul daripada seluruh program.Sementara konsep modul adalah abstraksi berguna, keuntungan penuh dari modul diperoleh hanya ketika modul dapat ditulis, dikompilasi dan mungkin dieksekusi secara terpisah. Dalam banyak kasus modul harus dapat diuji secara independen dari modul lainnya.

  •  Generalization

Prinsip Generalisasi Sebuah generik adalah sebuah entitas yang mungkin khusus (diuraikan)

Generalisasi memungkinkan penggunaan satu pola tunggal untuk mewakili masing-masing anggota kelompok. Kami menggunakan notasi: lambda ‘p.B (disebut abstraksi lambda) untuk menunjukkan generalisasi dari B dimana p adalah disebut parameter dan B ‘adalah B dengan p menggantikan sejumlah kejadian beberapa bagian dari B dengan hal Parameter p dikatakan terikat dalam ekspresi tetapi bebas dalam B ‘dan ruang lingkup p dikatakan B’.

Lambda simbol suatu pembilang. Quantifiers digunakan untuk mengganti konstanta dengan variabel. Spesialisasi (elaborasi) dari generik disebut aplikasi dan mengambil bentuk:

(lambda p.B a)

Ini menunjukkan ekspresi B ‘yang diperoleh dari ekspresi lambda saat kejadian bebas dari p di B diganti dengan a.

Selain Simbol lambda diperkenalkan oleh Gereja untuk pengenalan variabel dalam kalkulus lambda. Ini kira-kira sesuai dengan FORALL simbol, quantifier universal, orde pertama logika. Lampiran ini berisi pengantar singkat untuk orde pertama logika. 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 abstrak mengambil bentuk:

n (a)

atau occaisionally (na) di mana n adalah nama dan disebut argumentasi yang nilainya digantikan parameter. Setelah doa abstrak, argumen terikat untuk parameter. Gambar N.1 merangkum berbagai notasi yang digunakan untuk menunjukkan elaborasi dari generalisasi.
Bahasa pemrograman yang paling memungkinkan bentuk implisit dari generalisasi di mana variabel yang dapat diperkenalkan tanpa menyediakan untuk sebuah prosedur permintaan yang menggantikan parameter dengan argumen.

  • Analogy Principle

Ketika ada konformasi dalam pola antara dua objek yang berbeda, obyek dapat diganti dengan satu objek parameter untuk memungkinkan rekonstruksi objek asli. Ini adalah prinsip analogi yang memungkinkan pengenalan variabel untuk mewakili elemen sewenang-wenang dari sebuah kelas.

Prinsip Generalisasi tidak membuat pembatasan pada parameter atau bagian dari suatu entitas yang mungkin parameter. Tidak harus bahasa pemrograman. Hal ini ditekankan pada prinsip berikut:

Prinsip parameterisasi Sebuah parameter generik dapat dari domain manapun.

  • Terminology 

Istilah parameter formal (pakaian resmi) dan parameter aktual (Kenyataan) kadang-kadang digunakan sebagai pengganti istilah parameter dan argumen masing-masing.

  • Substitusi

Utilitas dari kedua abstraksi dan generalisasi tergantung pada substitusi. Ikatan antara dua.

  • Block structure

Blok adalah membangun yang memisahkan ruang lingkup dari setiap definisi yang mungkin mengandung. Ini menyediakan lingkungan lokal yaitu, kesempatan untuk definisi lokal. Struktur blok (hubungan tekstual antara blok) dari suatu bahasa pemrograman memiliki banyak pengaruh atas struktur program dan modularitas. Ada tiga struktur blok dasar – monolitik, datar dan bersarang.

  •  Static scope rules

Teminology. Aturan lingkup statis juga disebut aturan lingkup leksikal.

Cobol, BASIC, FORTRAN, Prolog, kalkulus Lambda, Skema, Miranda, Algol-60, Pascal.

  • Environment

Lingkungan adalah satu set binding.

Lingkup ada hubungannya dengan kisaran visibilitas nama. Misalnya, batas nasional bisa merangkum bahasa alami. Namun, beberapa kata yang digunakan dalam batas bukan kata-kata asli. Mereka adalah kata-kata dipinjam dari beberapa bahasa lain dan didefinisikan dalam bahasa asing. Jadi dalam sebuah program. Sebuah definisi memperkenalkan nama dan batas (objek). Objek mungkin berisi nama-nama yang tidak ada definisi lokal (dengan asumsi definisi mungkin bersarang). Nama-nama ini dikatakan bebas. Arti nama-nama yang ditugaskan untuk dapat ditemukan di luar definisi. Aturan diikuti dalam menentukan arti dari nama-nama ini gratis disebut ruang lingkup aturan.

Lingkup Hal ini terkait dengan kontrol nama.

  • ADTs

Sebuah pendekatan yang lebih efektif adalah dengan memisahkan tanda tangan dari operasi dari tubuh operasi dan jenis representasi sehingga tubuh operasi dan tipe representasi dapat dikompilasi secara terpisah. Hal ini memudahkan pengembangan perangkat lunak dalam bahwa ketika representasi tipe data abstrak adalah berubah (misalnya untuk meningkatkan kinerja) perubahan lokal untuk tipe data abstrak.

 

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s