1 2 3 4 5 6 7 8

Minggu, 27 Februari 2011

DASAR PEMROGRAMAN JAVA

Kode yang ditulis dalam Java harus sesuai dengan kaidah2 yang sudah di tentukan .Nah bagaimana aturan yang di gunakan java , termasuk sintak dan semantiknya, berikut adalah elemen2 bahasa java yang harus di kuasai sebelum menulis koding program.

1.IDENTIFIER

IDENTIFIER adalah nama yg digunakan untuk mengidentifikasi elemen program, contoh : program_hitung bilangan. dan dalam penulisan program ada aturan2nya. oke man...

2.KEYWORD
adalah kata kunci yg mempunyai arti khusus atau bahasa2 baku program contoh, class, boolean, break, public, dst. sehingga tidak dapat di gunakan sebagai nama program.

3. Tipe data primitif
Tipe data primitif adalah tipe data yg punya nilai tertentu
macam2 tipe data:
* tipe data integer atau bilangan bulat: byte,short,int,long.
* tipe data float / bil nyata : float, double.
* tipe data char / karakter: char
* tipe data Boolean : boolean.

4. Variabel

Variabel digunakan untuk menyimpan data sehingga dapat diolah oleh program , contoh sintak deklarasi variabel;

float gaji;
short x,y,z;

5. kostanta
6. Statement
7. Operator
8. dsb.....

itulah sekilas dasar pemrograman java lain kali aku sambung dengan yang lebih dahsat lagi oke man.......!


TEKNIK PEMROGRAMAN.
Sekilas tentang Pemrograman.
Kata program dapat diartikan:
a. Untuk mendiskripsikan instruksi-instruksi tersendiri; yang biasanya disebut dengan source
code; yang dibuat oleh programmer.
b. Untuk mendiskripsikan suatu keseluruhan bagian dari software yang executable.
Dapat juga dikatakan bahwa sebuah program merupakan himpunan atau kumpulan
instruksi-instruksi tertulis yang dibuat oleh programmer atau suatu bagian executable dari suatu
software.
Kata pemrograman dapat diartikan sebagai cara membuat program; dalam konteks ini
berarti membuat program komputer. Dapat juga dikatakan bahwa pemrograman merupakan
suatu kumpulan urutan perintah ke komputer untuk mengerjakan sesuatu. Perintah-perintah ini
membutuhkan suatu bahasa tersendiri yang dapat dimengerti oleh komputer.
Bahasa merupakan suatu kumpulan simbol-simbol atomic yang terbatas. Kumpulan
simbol ini disebut dengan alphabet. Untaian simbol ditulis secara berurutan dari satu ke yang
lainnya setelahnya. Satu untaian yang tidak terlihat, disebut dengan untaian kosong (empty
string), biasanya dilambangkan dengan "". Beberapa untaian menjadi bagian dari suatu bahasa,
beberapa yang lainnya tidak. Untaian yang menjadi bagian dari suatu bahasa disebut dengan kata
atau kalimat.
Bahasa yang dapat dimengerti oleh komputer disebut dengan Bahasa Pemrograman.
Bahasa Pemrograman mempengaruhi cara dan teknik pemrograman. Di bawah ini beberapa cara
dan teknik pemrograman:

Pemrograman Procedural.
Pada pemrograman procedural, banyak yang berpikir bahwa program merupakan suatu
rangkaian procedure yang memanipulasi data. Suatu procedure merupakan suatu instruksi
khusus yang dieksekusi secara berurutan. Trik dalam pemrograman ini adalah mengingat
procedure mana yang sudah dipanggil dan data apa yang sudah diubah. Untuk
menanggulangi kebingungan dan ketidak jelasan situasi pada saat pengingatan pemanggilan
procedure, maka pemrograman terstruktur diciptakan.

Pemrograman Fungsional.
Pemrograman ini berdasarkan teori fungsi matematika, artinya pemrograman ini terdiri
atas fungsi-fungsi seperti fungsi-fungsi yang ada di matematika. Fungsi merupakan
pembangun utama program sehingga fungsi-fungsi ini dapat melewatkan parameter dan
mengembalikan nilai yang sudah di proses.
Pemrograman Terstruktur.
Secara mendasar, pemrograman terstruktur merupakan suatu teknik yang memecah
masalah besar menjadi lebih kecil dan lebih mudah dipahami, sehingga masalah yang besar
dapat diselesaikan dengan baik. Biasanya masalah-masalah yang menjadi lebih kecil tersebut
diimplementasikan ke dalam suatu procedure atau fungsi. Banyak bahasa pemrograman yang
mendukung pemrograman terstruktur, diantaranya bahasa C.
Pemrograman Berbasis Modul.
Pemrograman ini membentuk banyak modul, masing-masing modul merupakan suatu
group dari entitas variabel, procedure, atau fungsi. Dapat dikatakan bahwa modul merupakan
sebuah program kecil yang mandiri. Sebuah program merupakan kumpulan dari modulmodul
ini. MODULA-2 dan ADA mendukung pemrograman ini.
Pemrograman Berorientasi Object.
Pada saat ini, pemrograman komputer menjadi lebih interaktif, yaitu ketika muncul suatu
kejadian, maka program harus dapat dengan cepat menanggapi kejadian tersebut. Contohnya


Ditulis oleh: Iwan Binanto
© 2005
2
adalah pemakai meng-klik suatu tombol menu di layar monitor atau memilih menu dengan
keyboard.
Pemrograman berorientasi object pada dasarnya merupakan perlakuan untuk data dan
procedure yang memanipulasinya; sebagai object tunggal. C++, JAVA, dan bahasa
pemrograman Visual mendukung pemrograman ini.
Pemrograman Generic.
Pada dasarnya terfokus pada modul-modul generic yang di-instantiate pada waktu
kompilasi ataupun pada waktu run-time, untuk membuat suatu entitas (struktur data, fungsi,
dan procedure) yang diperlukan oleh program. Pendekatan ini untuk mendorong
pemrograman menuju ke pengembangan tingkat tinggi dan abstraksi generic sebagai suatu
unit modularity.
Pemrograman generic ini tidak berdiri sendiri melainkan bergabung dengan
pemrograman berorientasi objek, seperti Eiffel, atau dengan pemrograman fungsional, seperti
ML. Dapat juga bergabung dengan bahasa-bahasa pemrograman yang mempunyai teknik
pemrograman lebih dari satu, seperti Ada, dan C++.

Pemrograman Declarative.
Pemrograman ini mendeskripsikan suatu masalah dengan pernyataan (declarative)
daripada memecahkan masalah dengan implementasi algoritma. Bahasa pemrograman yang
dibutuhkan untuk pemrograman declarative ini adalah bahasa pemrograman Logika, seperti
PROLOG dan bahasa pemrograman berbasis aturan, seperti OPS5 dan CLIPS.
Cara dan teknik pemrograman tersebut berjalan dan berkembang seiring dengan
perkembangan hardware komputer dan kebutuhan manusia. Pada awalnya kebutuhan untuk
perhitungan numerik digunakan bahasa FORTRAN, untuk kebutuhan penggunaan di bidang
bisnis digunakan bahasa COBOL, untuk kebutuhan pengembangan kecerdasan buatan digunakan
bahasa LISP dan PROLOG, untuk kebutuhan pengembangan sistem; terutama Sistem Operasi
komputer digunakan bahasa C (bahkan sampai sekarang bahasa C masih digunakan untuk
pengembangan Sistem Operasi, seperti UNIX).

Pemrograman Berbasis Modul.
Modula-2 adalah komputer bahasa pemrograman yang dirancang dan dikembangkan antara tahun 1977 dan tahun 1980 oleh Niklaus Wirth di ETH Zurich sebagai revisi dari Pascal untuk melayani sebagai bahasa pemrograman tunggal untuk sistem operasi dan perangkat lunak aplikasi untuk workstation pribadi Lilith . [1] Para konsep utama adalah:
• Modul sebagai unit kompilasi untuk kompilasi terpisah
• Para coroutine sebagai blok bangunan dasar untuk proses konkuren
• Jenis dan prosedur yang memungkinkan akses ke mesin-data spesifik.
Modula-2 telah dipahami oleh Niklaus Wirth sebagai penerus bahasa pemrograman sebelumnya nya Pascal . [2] Desain bahasa juga dipengaruhi oleh bahasa pemrograman Mesa dan kemungkinan pemrograman baru dari komputer pribadi awal Xerox Alto , baik dari Xerox, yang Wirth pada tahun 1976 itu melihat tahun cuti di Xerox PARC . [3]
Isi
[hide]
• 1 Deskripsi
• 2 Dialek
• 3 Supersets
• 4 Derivatif
• 5 Bahasa elemen
o 5.1 Dilindungi kata
o 5.2 Pervasif Identifier
• 6 Gunakan di embedded system
o Cambridge 6.1 Modula-2
o 6.2 Mod51
o 6.3 Modula-GM
• 7 saat ini compiler
• 8 Buku
• 9 Referensi
• 10 Pranala luar

[ sunting ] Deskripsi
Modula-2 adalah tujuan umum bahasa prosedural , cukup fleksibel untuk melakukan pemrograman sistem, tapi dengan aplikasi yang lebih luas. Secara khusus, ia dirancang untuk mendukung kompilasi terpisah dan abstraksi data dalam cara langsung. Sebagian besar sintaks didasarkan pada bahasa Wirth yang lebih awal dan lebih terkenal, Pascal . Modula-2 ini dirancang untuk secara luas mirip dengan Pascal, dengan beberapa elemen dan ambiguitas sintaksis dihapus dan penambahan penting dari konsep modul, dan dukungan bahasa langsung untuk multiprogramming .
Modul Modula-2 dapat digunakan untuk merangkum serangkaian subprogram terkait dan struktur data, dan membatasi visibilitas mereka dari bagian lain dari program. Desain modul menerapkan fitur data abstraksi dari Modula-2 dalam cara yang sangat bersih. Modula-2 program terdiri dari modul, masing-masing terdiri dari dua bagian: modul definisi, bagian antarmuka, yang berisi hanya bagian-bagian dari subsistem yang diekspor (terlihat modul lain), dan modul pelaksanaan, yang berisi kode kerja yang internal untuk modul.
Bahasa memiliki kontrol lingkup yang ketat. Secara khusus lingkup modul dapat dianggap sebagai suatu dinding tak tertembus: Kecuali tidak ada standar pengidentifikasi objek dari dunia luar terlihat dalam modul diimpor kecuali secara eksplisit, tidak ada objek modul internal terlihat dari luar kecuali secara eksplisit diekspor.
Misalkan modul M1 ekspor objek a, b, c, dan P dengan menghitung pengidentifikasi dalam suatu daftar ekspor eksplisit
DEFINISI MODUL M1;
EKSPOR RESMI a, b, c, P;
...
Kemudian objek a, b, c, dan P dari modul M1 menjadi yang sekarang dikenal luar module M1 sebagai M1.a, M1.b, M1.c, dan M1.P. Mereka diekspor dengan cara memenuhi syarat untuk alam semesta (diasumsikan modul M1 adalah global). Nama modul mengekspor, yakni M1, digunakan sebagai kualifikasi diikuti oleh nama objek.
Misalkan modul M2 berisi deklarasi berikut IMPOR
MODUL M2;
IMPOR M1;
...
Maka ini berarti bahwa objek yang diekspor oleh M1 modul dengan semesta program melampirkan sekarang dapat digunakan di dalam modul M2. Mereka direferensikan dengan cara yang berkualitas seperti ini: M1.a, M1.b, M1.c, dan M1.P. Contoh:
...
M1.a: = 0; M1.c: = M1.P (M1.a + M1.b);
...
Berkualitas ekspor menghindari bentrokan nama: Sebagai contoh, jika modul lain juga akan ekspor M3 sebuah benda yang bernama P, maka kita masih dapat membedakan dua benda, karena M1.P berbeda dari M3.P. Berkat ekspor berkualitas tidak peduli bahwa kedua benda yang disebut P dalam mengekspor mereka modul M1 dan M3.
Ada teknik alternatif yang tersedia, yang digunakan secara luas oleh Modula-2 programmer. Misalkan modul M4 dirumuskan seperti ini
MODUL M4;
DARI IMPOR M1 a, b, c, P;
Maka ini berarti bahwa objek yang diekspor oleh M1 modul untuk alam semesta lagi dapat digunakan di dalam modul M4, tapi sekarang dengan hanya referensi ke pengidentifikasi diekspor dengan cara "wajar tanpa pengecualian" seperti ini: a, b, c, dan P. Contoh:
...
a: = 0; c: = P (a + b);
...
Teknik ini memungkinkan impor unqualifying penggunaan variabel dan benda-benda lain di luar modul mengekspor mereka di persis sederhana yang sama, yaitu wajar tanpa pengecualian, rupa di dalam modul ekspor. Dinding sekitarnya semua modul kini telah menjadi tidak relevan untuk semua benda-benda yang selama ini telah secara eksplisit diperbolehkan. Tentu saja unqualifying impor hanya dapat digunakan jika tidak ada bentrokan nama.
Aturan-aturan ekspor dan impor mungkin tampak tidak perlu ketat dan verbose. Tapi mereka tidak hanya menjaga benda terhadap akses yang tidak diinginkan, tetapi juga memiliki efek samping yang menyenangkan untuk menyediakan referensi silang-otomatis dari definisi dari setiap identifier dalam program: jika identifier yang memenuhi syarat dengan nama modul, maka definisi berasal dari modul yang. Sebaliknya jika terjadi tidak memenuhi syarat, hanya mencari mundur, dan Anda juga akan menemukan sebuah deklarasi identifier, atau kejadian dalam sebuah pernyataan IMPOR yang nama modul itu berasal dari. Properti ini menjadi sangat berguna ketika mencoba untuk memahami program-program besar yang berisi banyak modul.
Bahasa menyediakan (terbatas) prosesor tunggal konkurensi ( monitor , coroutines dan transfer eksplisit kontrol) dan untuk akses perangkat keras (alamat absolut, sedikit manipulasi, dan interupsi ). Menggunakan nama kesetaraan .
[ sunting ] Dialek
Ada dua dialek utama dari Modula-2. Yang pertama adalah PIM, dinamai "Pemrograman di Modula-2" buku oleh Niklaus Wirth . Ada tiga edisi utama dari PIM, kedua, edisi ketiga (dikoreksi) dan keempat, masing-masing varian sedikit menggambarkan bahasa. Dialek utama kedua adalah ISO, dari upaya standarisasi oleh Organisasi Internasional untuk Standardisasi .
• PIM2 (1983)
o Diperlukan EKSPOR klausul eksplisit dalam modul definisi.
• PIM3 (1985)
o Dihapus klausul EKSPOR dari modul definisi berikut pengamatan bahwa segalanya dalam modul definisi mendefinisikan antarmuka untuk modul itu, maka klausul EKSPOR itu berlebihan.
• PIM4 (1989)
o Ditentukan perilaku operator MOD ketika operan adalah negatif.
• ISO (1996)
o ISO Modula-2 diselesaikan sebagian besar ambiguitas dalam PIM Modula-2. Ini menambahkan KOMPLEKS data jenis dan LONGCOMPLEX, pengecualian, penghentian modul (AKHIRNYA klausa) dan standar lengkap I / O perpustakaan. Ada perbedaan kecil banyak dan klarifikasi. [4]
[ sunting ] Supersets
Ada beberapa supersets Modula-2 dengan ekstensi bahasa untuk domain aplikasi tertentu:
• PIM supersets
o Canterbury Modula-2 , diperpanjang dengan Oberon-seperti catatan extensible
o Modula-2 + , diperpanjang dengan benang preemptive dan pengecualian
o Modula-2 * ekstensi, paralel [5]
o Modula-P , perpanjangan paralel [6]
o Modula-Prolog, menambahkan lapisan Prolog [7]
o Modula / R, dengan ekstensi database relasional
o Modula-GM, ekstensi untuk embedded system
• ISO supersets
o Mod51 , diperpanjang dengan IEC1131 konstruksi untuk pembangunan tertanam
[ sunting ] Derivatif
Ada beberapa bahasa derivatif yang menyerupai Modula-2 sangat erat tetapi bahasa baru di kanan mereka sendiri. Kebanyakan bahasa yang berbeda dengan tujuan yang berbeda dan dengan kekuatan dan kelemahan mereka sendiri:
• Modula-3 , yang dikembangkan oleh sebuah tim mantan Xerox karyawan yang telah pindah ke DEC dan Olivetti [8]
• Tujuan Modula-2 , diperpanjang dengan Smalltalk-seperti konstruksi berorientasi objek [9] (masih sedang dirancang, tidak ada compiler yang tersedia)
• Oberon , dikembangkan di ETH Zürich untuk Sistem Oberon [10] tersedia secara online .
• Oberon-2 , Oberon dengan ekstensi OO [11]
• Oberon aktif , Perpanjangan lagi berorientasi obyek Oberon , dikembangkan juga di ETH dengan tujuan utama untuk mendukung pemrograman paralel pada multiprosesor dan sistem multicore.
• Parallaxis, bahasa untuk mesin-independen data-paralel pemrograman [12]
• Umbriel, dikembangkan oleh Pat Terry sebagai pengajaran bahasa [13]
• YAFL, bahasa penelitian oleh Darius Blasband [14]
Banyak bahasa pemrograman saat ini telah mengadopsi fitur Modula-2.
[ sunting ] Bahasa elemen
[ sunting ] kata-kata Reserved
PIM [2,3,4] mendefinisikan 40 kata-kata berikut reserved:
DAN ELSIF LOOP REPEAT
ARRAY END MOD RETURN
BEGIN EXIT SET MODUL
EKSPOR DENGAN TIDAK MAKA
KASUS UNTUK DARI KE
Const DARI JENIS ATAU
DEFINISI JIKA SAMPAI POINTER
PROSEDUR PELAKSANAAN DIV VAR
DO WHILE IMPOR RESMI
ELSE DALAM REKOR DENGAN
[ sunting ] Identifier Pervasif
PIM [3,4] mendefinisikan 29 pengidentifikasi berikut meresap (built-in):
ABS excl longint NYATA
BitSet UKURAN LONGREAL SALAH
Float boolean MAX BENAR
CAP HALT MIN TRUNC
Kardinal TINGGI NIL VAL
CHAR INC ODD
CHR INCL ORD
Desember INTEGER PROC
[ sunting ] Penggunaan di embedded system
[ sunting ] Cambridge Modula-2
Cambridge Modula-2 oleh Sistem Mikroprosesor Cambridge didasarkan pada subset dari PIM4 dengan ekstensi bahasa untuk pengembangan embedded. Compiler berjalan pada MS-DOS dan menghasilkan kode untuk mikrokontroler berbasis embedded m68k menjalankan sistem operasi Minos.
[ sunting ] Mod51
Mod51 oleh Mandeno Granville Electronics adalah berdasarkan ISO Modula-2 dengan ekstensi bahasa untuk pengembangan embedded berikut IEC1131, sebuah standar industri untuk programmable logic controller (PLC) terkait erat dengan Modula-2. Mod51 compiler menghasilkan kode mandiri untuk mikrokontroler berbasis 80C51.
[ sunting ] Modula-GM
Delco Electronics , maka anak perusahaan GM Hughes Electronics, mengembangkan sebuah versi dari Modula-2 untuk sistem kontrol embedded dimulai pada tahun 1985. Delco menamakannya Modula-GM. Itu adalah bahasa tingkat tinggi pertama digunakan untuk mengganti kode bahasa mesin untuk sistem tertanam dalam unit kontrol Delco engine (ECU). Hal ini penting karena Delco itu memproduksi lebih dari 28.000 ECU per hari pada tahun 1988 untuk GM, ini kemudian produsen terbesar di dunia ECU. [15] Penggunaan eksperimental pertama dari Modula-GM di controller tertanam dalam Pengereman 1985 Antilock Sistem Kontroler yang didasarkan pada mikroprosesor 68xxx Motorola, dan pada tahun 1993 Gen-4 ECU yang digunakan oleh Kereta (Tim Auto Racing Championship) dan IRL (Indy Racing League) tim. [16] Penggunaan produksi pertama dari Modula-GM penggunaannya dalam GM truk dimulai dengan model tahun 1990 VCM (Kendaraan Control Module) yang digunakan untuk mengelola GM Powertrain yang Vortec mesin. Modula-GM juga digunakan pada semua ECU untuk GM Buick V6 90 ° keluarga 3800 Seri II digunakan pada tahun 1997-2005 Model Buick Park Avenue . The Modula-GM compiler dan perangkat lunak manajemen terkait yang bersumber oleh Delco dari Intermetrics .
Modula-2 dipilih sebagai dasar untuk bahasa tingkat tinggi Delco karena kekuatan yang banyak atas pilihan alternatif bahasa lainnya pada tahun 1986. Setelah Delco Electronics berputar off dari GM (dengan divisi komponen lain) untuk membentuk Delphi pada tahun 1997, sumber global diperlukan bahwa non-proprietary bahasa tingkat tinggi perangkat lunak digunakan. ECU tertanam perangkat lunak sekarang dikembangkan di Delphi dikompilasi dengan kompiler C komersial.
[ sunting ] compiler Lancar
• ACK Modula-2 untuk Minix ( freeware )
• Aglet Modula-2 untuk Amiga OS 4.0/PPC ( freeware )
• Cambridge Modula-2 untuk berbagai mikro-kontroler dan sistem operasi tertanam Minos (komersial + perangkat lunak berpemilik )
• Canterbury Modula-2 menghasilkan kode sumber Java
• FST Perangkat Lunak Alat Dilengkapi Modula-2 untuk MS-DOS ( freeware )
• Titik Gardens Modula-2 untuk BSD, Linux, OS / 2, Solaris dan NET. - ISO compliant ( freeware )
• GNU Modula-2 untuk platform GCC, versi 1.0 dirilis 11 Desember 2010;, PIM2 PIM3, PIM4, dan ISO compliant ( perangkat lunak bebas , GPL )
• M2Amiga untuk Amiga ( perangkat lunak bebas )
• M2M oleh N. Wirth dan kolaborator dari ETH Zurich, platform independen, menghasilkan M-kode untuk mesin virtual ( freeware )
• MacMETH oleh N. Wirth dan kolaborator dari ETH Zurich untuk Macintosh, tetapi hanya Klasik ( freeware )
• Mod51 untuk keluarga Intel 80x51 mikro-kontroler, ISO compliant, IEC1132 ekstensi (komersial + berpemilik )
• Modula-2 R10 Referensi compiler untuk Modula-2 R10 (open-source/peer-review)
• ModulaWare untuk OpenVMS, baik VAX dan Alpha, ISO compliant (komersial + berpemilik )
• MTC Modula-2 untuk penerjemah C, tersedia dalam Modula-2 dan sumber C ( perangkat lunak bebas )
• XDS-x86 asli untuk Windows dan Linux (x86), ISO compliant, Topspeed perpustakaan yang kompatibel ( freeware )
• Tujuan Modula-2 , target C dan LLVM, lintas-platform, dengan ekstensi untuk Kakao dan sintaks (lisensi gaya BSD)
• p1 Modula-2 untuk Macintosh, baik Classic dan Mac OS X (PPC dan Karbon hanya API), ISO compliant (komersial + berpemilik )
• The Modula-2 Karlsruhe Kompilator MOCKA untuk berbagai platform, PIM compliant (komersial, freeware Linux / BSD versi)
• TERRA M2VMS untuk OpenVMS, baik VAX dan Alpha, PIM compliant (komersial + berpemilik )
• The Modula-2 Ulm Sistem untuk Solaris, baik SPARC dan MC68K (perangkat lunak bebas, GPL )
• XDS-C untuk Windows dan Linux, 16 - dan 32-bit platform, penargetan C (K & R & ANSI), ISO compliant, Topspeed perpustakaan yang kompatibel ( freeware )
Sumber untuk semua entri: Modula2.net [17]
[ sunting ] Buku
• Niklaus Wirth, Pemrograman dalam Modula-2, Edisi Keempat, 1989, ISBN 0-387-50150-9


Eiffel adalah ISO -standar, berorientasi obyek bahasa pemrograman yang dirancang oleh Bertrand Meyer (seorang pendukung objek-orientasi dan penulis Berorientasi Objek Software Konstruksi ) dan Eiffel Software . Desain bahasa berhubungan erat dengan metode pemrograman Eiffel. Keduanya didasarkan pada seperangkat prinsip, termasuk desain dengan kontrak , pemisahan perintah-query , yang prinsip seragam-akses , yang prinsip tunggal-pilihan , yang prinsip terbuka-tertutup , dan pilihan-operan pemisahan .
Banyak konsep awalnya diperkenalkan oleh Eiffel kemudian menemukan cara mereka ke dalam Java , C # , dan bahasa lainnya. Ide-ide desain baru bahasa, khususnya melalui ECMA / ISO proses standarisasi, terus dimasukkan ke dalam bahasa Eiffel.
Isi
[hide]
• 1 Karakteristik
• 2 Desain tujuan
o 2.1 Latar Belakang
o 2.2 Implementasi dan lingkungan
o 2.3 Spesifikasi dan standar
• 3 Sintaks dan semantik
o 3.1 Secara keseluruhan struktur
 3.1.1 Penjajakan
 3.1.2 "Hello, world!"
o 3.2 Desain oleh Kontrak
o 3.3 Fitur, perintah, permintaan
o 3.4 Overloading
o 3,5 Genericity
o 3,6 Warisan dasar
o 3,7 tangguhan kelas dan fitur
o 3.8 Mengganti nama
o 3,9 Tuple
o 3.10 Agen
o 3.11 Setelah rutinitas
o 3.12 Konversi
o 3.13 Exception handling
o 3.14 Concurrency
o 3.15 Operator dan sintaks braket, assigner perintah
o 3.16 leksikal dan sintaks properti
o 3.17 Gaya konvensi
o 3.18 Antarmuka untuk alat-alat lain dan bahasa
• 4 Referensi
• 5 Eksternal Link

[ sunting ] Karakteristik
Karakteristik kunci dari bahasa Eiffel meliputi:
• Sebuah berorientasi objek struktur program di mana kelas berfungsi sebagai unit dasar dari dekomposisi.
• Desain oleh kontrak terintegrasi dengan konstruksi bahasa lainnya.
• Manajemen memori otomatis, biasanya dilaksanakan oleh pengumpulan sampah .
• Warisan , termasuk multiple inheritance , mengubah nama , redefinisi , "pilih", non-conforming warisan , dan mekanisme lain yang dimaksudkan untuk membuat warisan aman.
• Terbatas dan tidak dibatasi pemrograman generik
• Sebuah sistem yang seragam jenis penanganan baik nilai dan semantik referensi di mana semua jenis, termasuk jenis dasar seperti INTEGER, yang berbasis kelas.
• Statis mengetik
• Void keselamatan, atau perlindungan terhadap panggilan statis pada referensi nol, melalui mekanisme yang melekat-jenis.
• Agen, atau benda yang membungkus perhitungan, berhubungan erat dengan penutupan dan kalkulus lambda .
• Setelah rutinitas, atau rutinitas dievaluasi hanya sekali, untuk berbagi objek dan inisialisasi desentralisasi.
• Kata Kunci berbasis sintaks di ALGOL / Pascal tradisi tapi pemisah bebas, sejauh titik koma adalah opsional, dengan sintaks operator yang tersedia untuk rutinitas.
• Kasus ketidakpekaan
[ sunting ] Desain tujuan
Eiffel menekankan pernyataan deklaratif atas kode prosedural dan upaya untuk menghilangkan kebutuhan untuk petunjuk pembukuan.
Eiffel shuns trik coding atau teknik pengkodean dimaksudkan sebagai optimasi petunjuk untuk compiler. Tujuannya tidak hanya untuk membuat kode lebih mudah dibaca, tetapi juga untuk memungkinkan pemrogram untuk berkonsentrasi pada aspek-aspek penting dari program tanpa macet dalam rincian pelaksanaan. Kesederhanaan Eiffel dimaksudkan untuk mempromosikan jawaban sederhana, extensible, dapat digunakan kembali, dan dapat diandalkan untuk masalah komputasi. Compiler untuk program komputer yang ditulis di Eiffel menyediakan teknik optimasi yang luas, seperti otomatis di-lapisan, yang menghilangkan programmer bagian dari beban optimasi sambil menghasilkan kode yang efisiensi adalah sebanding dengan kode yang ditulis dalam C + + [ rujukan? ].
[ sunting ] Latar Belakang
Eiffel awalnya dikembangkan oleh Eiffel Software , sebuah perusahaan awalnya disebut Interaktif Software Engineering Inc (ISE) didirikan oleh Bertrand Meyer . Object-Oriented Software Konstruksi berisi pengobatan rinci konsep dan teori dari teknologi objek yang menyebabkan desain Eiffel. [ 2]
Tujuan desain di balik bahasa Eiffel, perpustakaan, dan metode pemrograman adalah untuk memungkinkan programmer untuk menciptakan handal, modul perangkat lunak dapat digunakan kembali. Eiffel mendukung multiple inheritance , genericity , polimorfisme , enkapsulasi , jenis-aman konversi, dan kovarians parameter . Kontribusi Eiffel yang paling penting untuk rekayasa perangkat lunak adalah desain oleh kontrak (dBc), di mana pernyataan , prekondisi , postconditions dan invariants kelas yang digunakan untuk membantu memastikan ketepatan program tanpa mengorbankan efisiensi.
Desain Eiffel didasarkan pada teori berorientasi objek pemrograman, dengan pengaruh hanya kecil dari paradigma lain atau kepedulian untuk mendukung kode warisan. Eiffel secara resmi mendukung tipe data abstrak . Dalam desain Eiffel, sebuah teks perangkat lunak harus dapat mereproduksi dokumentasi desain dari teks itu sendiri, menggunakan implementasi formal dari "Tipe Data Abstrak".
[ sunting ] Implementasi dan lingkungan
EiffelStudio adalah sebuah lingkungan pengembangan terintegrasi tersedia di bawah baik sebagai open source atau lisensi komersial. Ini menawarkan lingkungan berorientasi objek untuk rekayasa perangkat lunak . EiffelEnvision adalah plug-in untuk Microsoft Visual Studio yang memungkinkan pengguna untuk mengedit, mengkompilasi, dan debug proyek Eiffel dari dalam Microsoft Visual Studio IDE. EiffelStudio dan EiffelEnvision bebas untuk non-komersial. Empat lainnya open source implementasi yang tersedia: "The Eiffel Compiler" tecomp , Gobo Eiffel, SmartEiffel -implementasi GNU, berdasarkan versi yang lebih tua dari bahasa-dan Visual Eiffel .
Beberapa bahasa pemrograman lain memasukkan unsur-unsur pertama kali diperkenalkan di Eiffel. Sather , misalnya, pada awalnya didasarkan pada Eiffel tetapi sejak menyimpang, dan sekarang termasuk beberapa pemrograman fungsional fitur. Pengajaran interaktif-bahasa Biru , pendahulu BlueJ , juga Eiffel berbasis. Para Alat Apple Media mencakup Eiffel Apple yang berbasis di Bahasa Media.
[ sunting ] Spesifikasi dan standar
Eiffel bahasa definisi adalah standar internasional ISO . Standar ini dikembangkan oleh ECMA International , yang pertama kali disetujui standar pada tanggal 21 Juni 2005 sebagai Standar ECMA-367, Eiffel: Bahasa Analisis, Desain dan Pemrograman. Pada bulan Juni 2006, ECMA dan ISO mengadopsi versi kedua. Pada bulan November 2006, ISO pertama kali diterbitkan bahwa versi. Standar dapat ditemukan dan digunakan secara gratis di situs ECMA. [3] Versi ISO [4] adalah identik dalam segala hal, kecuali format.
Eiffel Software, "The Eiffel Compiler" tecomp dan Eiffel-perpustakaan-pengembang Gobo telah berkomitmen untuk menerapkan standar; Eiffel Software EiffelStudio 6.1 dan "The Eiffel Compiler" tecomp mengimplementasikan beberapa dari baru utama mekanisme-khususnya, agen inline, assigner perintah , braket notasi, non-conforming warisan, dan jenis terlampir. Para SmartEiffel Tim telah berbalik dari standar ini untuk membuat versi sendiri dari bahasa, yang mereka percaya untuk lebih dekat dengan gaya asli dari Eiffel. Obyek Peralatan belum diungkapkan apakah versi masa depan dari kompiler Eiffel yang akan mematuhi standar.
Standar mengutip pendahulunya, berikut Eiffel-bahasa spesifikasi:
• Bertrand Meyer: Eiffel: Bahasa, Prentice Hall, cetakan kedua, 1992 (cetakan pertama: 1991)
• Bertrand Meyer: Standar Eiffel (revisi dari entri sebelumnya), yang sedang berlangsung, 1997-sekarang, di halaman ETL3 Bertrand Meyer , dan
• Bertrand Meyer: Object-Oriented Software Konstruksi, Prentice Hall: edisi pertama, 1988; edisi kedua, 1997.
Versi saat ini dari standar dari bulan Juni 2006 berisi beberapa inkonsistensi (redefinitions kovarian misalnya) [ rujukan? ]. Komite ECMA belum mengumumkan apapun timeline dan arahan mengenai bagaimana menyelesaikan inkonsistensi.
[ sunting ] Sintaks dan semantik
[ sunting ] Struktur Keseluruhan
Sebuah Eiffel "sistem" atau "program" adalah koleksi kelas. Di atas tingkat kelas, Eiffel mendefinisikan cluster, yang pada dasarnya kelompok kelas, dan mungkin dari subclusters (cluster bersarang). Cluster bukan sintaksis bahasa membangun , melainkan sebuah konvensi organisasi standar. Biasanya aplikasi Eiffel akan diselenggarakan dengan masing-masing kelas dalam file terpisah, dan masing-masing cluster dalam sebuah direktori yang berisi file kelas. Dalam organisasi ini, subclusters adalah subdirektori. Sebagai contoh, di bawah konvensi organisasi dan casing standar, xe mungkin nama file yang mendefinisikan sebuah kelas yang disebut X.
Kelas A berisi fitur, yang mirip dengan "anggota", "atribut" atau "metode" di lain bahasa berorientasi objek pemrograman. Kelas A juga mendefinisikan invariants, dan mengandung sifat-sifat lainnya, seperti bagian "catatan" untuk dokumentasi dan metadata. Tipe data standar Eiffel, seperti INTEGER , STRING dan ARRAY , semua kelas sendiri.
Setiap sistem harus memiliki kelas yang ditunjuk sebagai "root", dengan salah satu prosedur penciptaan yang ditunjuk sebagai "prosedur root". Pelaksana sistem terdiri dari menciptakan sebuah instance dari kelas akar dan melaksanakan prosedur akarnya. Umumnya, melakukan hal menciptakan objek baru, panggilan fitur baru, dan seterusnya.
Eiffel memiliki lima instruksi dieksekusi dasar: tugas, penciptaan objek, panggilan rutin, kondisi, dan iterasi. Struktur kontrol Eiffel adalah ketat dalam menegakkan pemrograman terstruktur: setiap blok memiliki tepat satu entri dan tepat satu pintu keluar.
[ sunting ] Penjajakan
Tidak seperti banyak bahasa berorientasi objek, tapi seperti Smalltalk , Eiffel tidak mengizinkan tugas apapun ke dalam bidang obyek, kecuali dalam fitur dari obyek. Eiffel menekankan menyembunyikan informasi dan abstraksi data, dengan mengharuskan antarmuka formal untuk mutasi data. Untuk memasukkannya ke dalam bahasa lain bahasa berorientasi objek pemrograman, semua bidang Eiffel adalah "pribadi", dan "setter" yang diperlukan untuk memodifikasi nilai-nilai. Sebuah Hasilnya dari hal ini adalah bahwa "setter" bisa, dan biasanya melakukan, melaksanakan invariants yang menyediakan sintaks Eiffel.
[ sunting ] "Halo, dunia!"
Sebuah bahasa pemrograman terlihat dan merasa sering disampaikan dengan menggunakan "Halo, dunia!" program. Seperti program yang ditulis di Eiffel mungkin:
kelas
Hello_world
menciptakan
membuat
Fitur
membuat
lakukan
cetak ("Halo, dunia% N!")
akhir
akhir
Program ini berisi kelas HELLO_WORLD . Konstruktor (membuat rutin) untuk kelas, bernama make , memanggil print sistem rutin perpustakaan untuk menulis "Hello, world!" pesan untuk output.
[ sunting ] Desain oleh Kontrak
Konsep desain oleh kontrak merupakan pusat Eiffel. Mekanisme terintegrasi dengan bahasa. Kontrak panduan redefinisi fitur dalam warisan.
• Prasyarat Rutin: prasyarat hanya dapat menjadi lemah oleh warisan; setiap panggilan yang memenuhi persyaratan leluhur memenuhi orang-orang dari keturunan.
• Postcondition Rutin: postcondition hanya bisa diperkuat oleh warisan; hasil yang dijamin oleh nenek moyang masih disediakan oleh keturunan.
• Kelas invarian
Selain itu, bahasa ini mendukung "instruksi cek" (semacam "menegaskan") dan invariants loop.
[ sunting ] Fitur, perintah, permintaan
Karakteristik utama dari sebuah kelas adalah bahwa hal itu berisi satu set fitur. Sebagai kelas merupakan satu set benda run-time, atau "contoh", sebuah fitur operasi pada benda tersebut. Ada dua jenis fitur: pertanyaan dan perintah. Permintaan A memberikan informasi tentang sebuah contoh. Sebuah perintah memodifikasi sebuah contoh.
Perbedaan perintah query penting untuk metode Eiffel. Secara khusus:
• Seragam-Prinsip Akses: dari sudut pandang perangkat lunak klien membuat panggilan dengan fitur kelas, apakah query adalah atribut (field dalam objek masing-masing) atau fungsi (algoritma) tidak harus membuat perbedaan apapun. Sebagai contoh a_vehicle.speed bisa menjadi atribut, diakses dari representasi objek, atau bisa juga dihitung dengan fungsi yang membagi jarak dengan waktu. Notasi adalah sama dalam kedua kasus, sehingga mudah untuk mengubah representasi tanpa mempengaruhi sisa dari perangkat lunak.
• Command-Query Separation Prinsip : Pertanyaan tidak harus memodifikasi contoh. Ini bukan aturan bahasa tetapi prinsip metodologis. Jadi dalam gaya Eiffel yang baik, kita tidak menemukan "mendapatkan" fungsi yang mengubah sesuatu dan kembali hasilnya, melainkan ada perintah (prosedur) untuk mengubah objek, dan pertanyaan untuk memperoleh informasi tentang objek, yang dihasilkan dari perubahan sebelumnya.
[ sunting ] Overloading
Eiffel tidak memungkinkan argumen overloading . Setiap nama fitur dalam kelas selalu peta untuk fitur tertentu dalam kelas. Satu nama, dalam satu kelas, berarti satu hal. Ini pilihan desain membantu pembacaan kelas, dengan menghindari penyebab ambiguitas tentang yang rutin akan dipanggil oleh panggilan. Hal ini juga menyederhanakan mekanisme bahasa, khususnya, ini adalah apa yang membuat mekanisme multiple inheritance Eiffel mungkin. [5]
Nama dapat, tentu saja, digunakan kembali di kelas yang berbeda. Misalnya fitur ditambah (bersama dengan infiks nya alias "+") didefinisikan dalam beberapa kelas: INTEGER, REAL, STRING, dll
[ sunting ] Genericity
Kelas dapat generik, untuk mengekspresikan bahwa mereka parameter berdasarkan jenis. Parameter generik muncul dalam tanda kurung siku:
DAFTAR kelas [G] ...
G dikenal sebagai "parameter generik formal". (. Eiffel cadangan "argumen" untuk rutinitas, dan menggunakan "parameter" hanya untuk kelas generik) Dengan pernyataan tersebut G mewakili dalam kelas tipe sewenang-wenang; sehingga fungsi dapat mengembalikan nilai tipe G, dan rutin dapat mengambil argumen jenis yang:
item: G lakukan ... akhir
meletakkan (x: G) lakukan ... akhir
Para LIST [INTEGER] dan LIST [WORD] adalah "turunan generik" dari kelas ini. Kombinasi diizinkan (dengan n: INTEGER , w: WORD , il: LIST [INTEGER] , wl: LIST [WORD] ) adalah
n:. = il Item
wl. meletakkan (w)
INTEGER dan WORD adalah "parameter generik yang sebenarnya" dalam turunan generik.
Hal ini juga mungkin untuk memiliki 'dibatasi' parameter formal, yang parameter aktual harus mewarisi dari kelas tertentu, "kendala". Misalnya di
kelas HASH_TABLE [G, KUNCI -> HASHABLE]
turunan HASH_TABLE [INTEGER, STRING] ini hanya berlaku jika STRING mewarisi dari HASHABLE (seperti itu memang tidak di perpustakaan Eiffel khas). Dalam kelas, memiliki KEY dibatasi oleh HASHABLE berarti bahwa untuk x: KEY adalah mungkin untuk berlaku untuk x semua fitur HASHABLE , seperti dalam x.hash_code .
[ sunting ] Dasar-dasar Pewarisan
Untuk mewarisi dari satu atau lebih orang lain, kelas akan mencakup inherit klausa di awal:
kelas C mewarisi
Sebuah
B

- ... Istirahat deklarasi kelas ...
Kelas bisa mendefinisikan kembali (menimpa) beberapa atau semua fitur yang diwariskan. Ini harus secara eksplisit diumumkan pada awal kelas melalui redefine subklausa dari klausa warisan, seperti dalam
kelas C mewarisi
Sebuah
mendefinisikan f, g, h akhir
B
mendefinisikan u, v akhirnya
[ sunting ] kelas tangguhan dan fitur
Kelas dapat didefinisikan dengan deferred class daripada dengan class untuk menunjukkan bahwa kelas tidak dapat langsung instantiated. Non-instantiatable kelas disebut kelas abstrak dalam beberapa bahasa berorientasi objek pemrograman lainnya. Dalam bahasa Eiffel, hanya "efektif" kelas dapat dipakai (mungkin keturunan dari kelas ditangguhkan). Sebuah fitur juga dapat ditangguhkan dengan menggunakan deferred kata kunci di tempat yang do klausa. Jika kelas memiliki semua fitur ditangguhkan itu harus dinyatakan sebagai ditangguhkan, namun kelas tanpa fitur ditangguhkan tetap mungkin itu sendiri ditangguhkan.
Kelas tangguhan memainkan beberapa peran yang sama sebagai antarmuka dalam bahasa seperti Java, walaupun banyak teori berorientasi objek pemrograman percaya interface itu sendiri sebagian besar jawaban untuk Jawa kurangnya multiple inheritance (yang Eiffel) [. siapa? ]
[ sunting ] Mengganti nama
Sebuah kelas yang mewarisi dari satu atau lebih orang lain mendapat semua fitur-fiturnya, secara default dengan nama asli mereka. Mungkin, bagaimanapun, mengubah nama mereka melalui rename klausa. Ini diperlukan dalam kasus multiple inheritance jika ada nama bentrokan antara fitur mewarisi, tanpa mengubah nama, kelas yang dihasilkan akan melanggar prinsip-overloading tidak disebutkan di atas dan karenanya akan valid.
[ sunting ] Tuple
Jenis tupel dapat dipandang sebagai bentuk sederhana dari kelas, memberikan atribut saja dan yang sesuai "setter" prosedur. Sebuah tipe tuple yang khas berbunyi
Tuple [nama: STRING; berat: NYATA, tanggal: TANGGAL]
dan dapat digunakan untuk menggambarkan pengertian sederhana dari catatan kelahiran jika kelas tidak diperlukan. Sebuah contoh seperti tupel hanyalah sebuah urutan nilai dengan tipe tertentu, yang diberikan dalam kurung, seperti
["Brigitte", 3,5, Last_night]
Komponen seperti tupel dapat diakses seolah-olah itu tupel tag atribut dari kelas, misalnya jika t telah ditetapkan tupel atas maka t.weight memiliki nilai 3,5.
Berkat gagasan assigner perintah (lihat di bawah), notasi dot juga dapat digunakan untuk menetapkan komponen seperti tupel, seperti dalam
t. berat: = t. berat + 0,5
Tag tupel adalah opsional, sehingga dimungkinkan juga untuk menulis tipe tuple sebagai TUPLE [STRING, REAL, DATE] . (Dalam beberapa kompiler ini adalah satu-satunya bentuk tupel, sebagai tag diperkenalkan dengan standar ECMA.)
Spesifikasi yang tepat dari misalnya TUPLE [A, B, C] adalah bahwa hal itu menggambarkan urutan dari setidaknya tiga unsur, yang tiga pertama dari jenis A , B , C masing-masing. Sebagai hasil TUPLE [A, B, C] sesuai dengan (mungkin ditugaskan untuk) TUPLE [A, B] , untuk TUPLE [A] dan untuk TUPLE (tanpa parameter), jenis tupel yang paling atas semua jenis tupel sesuai.
[ sunting ] Agen
"Agen" Eiffel mekanisme membungkus operasi menjadi obyek. Mekanisme ini dapat digunakan untuk pemrograman iterasi,-event, dan konteks lain di mana hal ini berguna untuk melewati operasi di sekitar struktur program. Bahasa pemrograman lain, terutama yang menekankan pemrograman fungsional , memungkinkan pola yang sama menggunakan continuations , penutupan , atau generator ; agen Eiffel menekankan bahasa yang berorientasi objek paradigma, dan menggunakan sintaks dan semantik yang sama dengan blok kode dalam Smalltalk dan Ruby .
Misalnya, untuk mengeksekusi my_action blok untuk setiap elemen my_list , satu akan menulis:
my_list do_all (my_action agen).
Untuk mengeksekusi my_action hanya pada unsur memuaskan my_condition , pembatasan / filter dapat ditambahkan:
my_list do_if (agen my_action, my_condition agen).
Dalam contoh ini, my_action dan my_condition adalah rutinitas. Awalan mereka dengan agent menghasilkan objek yang mewakili rutin yang sesuai dengan semua sifat-sifatnya, khususnya kemampuan untuk disebut dengan argumen yang tepat. Jadi, jika a mewakili bahwa obyek (misalnya karena a adalah argumen untuk do_all ), instruksi
a. panggilan ([x])
akan memanggil rutin asli dengan argumen x , seolah-olah kita telah secara langsung disebut rutinitas asli: my_action (x) . Argumen untuk call dikirimkan sebagai tupel, di sini [x] .
Hal ini dimungkinkan untuk menyimpan beberapa argumen untuk agen terbuka dan membuat orang lain tertutup. Argumen terbuka dilewatkan sebagai argumen untuk call : mereka disediakan pada saat menggunakan agen. Argumen ditutup disediakan pada saat definisi agen. Sebagai contoh, jika action2 memiliki dua argumen, iterasi
my_list do_all (agen action2 (, y?)).
iterates action2 (x, y) untuk nilai-nilai berturut- x , dimana argumen kedua tetap diatur ke y . Tanda tanya ? menunjukkan sebuah argumen terbuka; y adalah argumen yang tertutup agen. Perhatikan bahwa sintaks dasar agent f adalah tangan pendek untuk agent f (?, ?, ...) dengan semua argumen terbuka. Hal ini juga memungkinkan untuk membuat target agen terbuka melalui notasi {T}? mana T adalah jenis target.
Perbedaan antara operan terbuka dan tertutup (operan = argumen + sasaran) sesuai dengan perbedaan antara variabel terikat dan bebas dalam kalkulus lambda . Ekspresi agen seperti action2 (?, y) dengan beberapa operan tertutup dan terbuka untuk beberapa sesuai versi dari operasi asli kari pada operan tertutup.
Mekanisme agen juga memungkinkan mendefinisikan agen tanpa referensi ke sebuah rutinitas yang ada (seperti my_action , my_condition , action2 ), melalui agen inline seperti dalam
my_list do_all (agen (s:. STRING)
membutuhkan
not_void: s / = Void
lakukan
s. append_character (',')
memastikan
ditambahkan: s. count = count + lama s. 1
akhir)
Agen inline berlalu sini dapat memiliki semua perangkap rutinitas normal, termasuk prasyarat, postcondition, klausul penyelamatan (tidak digunakan di sini), dan tanda tangan lengkap. Hal ini untuk menghindari mendefinisikan rutinitas ketika semua yang dibutuhkan merupakan perhitungan untuk dibungkus di agen. Hal ini berguna khususnya untuk kontrak, sebagai invarian dalam klausul yang mengungkapkan bahwa semua elemen dari daftar yang positif:
. my_list for_all (agen (x: INTEGER): boolean lakukan Result: = (x> 0) akhir)
Mekanisme Agen daun saat ini kemungkinan run-time error tipe (jika rutin dengan argumen n adalah dilewatkan ke agen mengharapkan argumen m dengan m <10 maka
upaya: = usaha + 1
mencoba kembali
akhir
akhir
Contoh ini bisa dibilang cacat untuk apa pun tetapi program sederhana, namun, karena kegagalan koneksi yang akan diharapkan. Untuk program yang paling rutin seperti nama attempt_connecting_to_server akan lebih baik, dan postcondition tidak akan menjanjikan sambungan, meninggalkan itu sampai ke pemanggil untuk mengambil langkah yang tepat jika sambungan tidak dibuka.
[ sunting ] Concurrency
Sejumlah jaringan dan perpustakaan threading yang tersedia, seperti EiffelNet dan EiffelThreads. Sebuah model konkurensi untuk Eiffel, berdasarkan konsep desain dengan kontrak, adalah sendok , atau Sederhana serentak Pemrograman Berorientasi Objek, belum bagian dari definisi bahasa resmi namun tersedia di EiffelStudio . Cameo [7] adalah variasi (diimplementasikan) sendok untuk Eiffel. Concurrency juga berinteraksi dengan pengecualian. Pengecualian asynchronous dapat mengganggu (di mana rutinitas menaikkan pengecualian setelah pemanggil nya sendiri telah selesai). [8]
[ sunting ] Operator dan sintaks braket, assigner perintah
Melihat Eiffel perhitungan benar-benar berorientasi obyek dalam arti bahwa setiap operasi relatif ke sebuah obyek, yaitu "target". Jadi misalnya penambahan seperti
a + b
secara konseptual dipahami sebagai olah itu adalah pemanggilan metode
a. ditambah (b)
dengan target a fitur, plus dan argumen b .
Tentu saja, yang pertama adalah sintaks konvensional dan biasanya lebih disukai. Sintaks operator memungkinkan untuk menggunakan formulir baik dengan menyatakan fitur (misalnya di INTEGER , tapi ini berlaku untuk kelas dasar lainnya dan dapat digunakan di lain yang seperti operator yang sesuai):
ditambah alias "+" (lainnya: INTEGER): INTEGER
- ... Deklarasi fungsi normal ...
akhir
Kisaran operator yang dapat digunakan sebagai "alias" cukup luas, mereka termasuk operator standar seperti "+" tetapi juga "operator bebas" yang terbuat dari non-alfanumerik simbol. Hal ini memungkinkan untuk desain dan notasi infiks khusus awalan, misalnya dalam matematika dan aplikasi fisika.
Setiap kelas mungkin di samping memiliki satu fungsi alias untuk "[]", yang "braket" operator, yang memungkinkan notasi a [i, ...] sebagai sinonim untuk af (i, ...) di mana f adalah fungsi yang dipilih . Hal ini sangat berguna untuk struktur wadah seperti array, tabel hash, dll daftar Untuk akses contoh untuk sebuah elemen dari sebuah hash tabel dengan kunci string dapat ditulis
nomor: = phone_book ["JILL SMITH"]
"Perintah Assigner" adalah mekanisme pendamping dirancang dalam semangat yang sama yang memungkinkan mapan, notasi nyaman ditafsirkan kembali dalam kerangka pemrograman berorientasi obyek. Perintah Assigner memungkinkan tugas-seperti sintaks untuk memanggil "setter" prosedur. Tugas yang tepat tidak pernah dapat dari bentuk ax := v karena ini melanggar menyembunyikan informasi, Anda harus pergi untuk perintah setter (prosedur). Misalnya kelas tabel hash dapat memiliki fungsi dan prosedur
Item alias "[]" (kunci: STRING): ELEMEN [3]
- Elemen kunci `kunci '.
- ("Getter" query)
lakukan
...
akhir

meletakkan (e: ELEMEN; kunci: STRING)
- Masukkan elemen `e ', mengaitkannya dengan key' kunci '.
- ("Setter" perintah)
lakukan
...
akhir
Kemudian untuk menyisipkan elemen Anda harus menggunakan panggilan eksplisit untuk perintah setter:
[4] phone_book. Meletakkan (New_person, "JILL SMITH")
Hal ini dimungkinkan untuk menulis ini sama sebagai
[5] phone_book ["JILL SMITH"]: = New_person
(Dalam cara yang sama bahwa phone_book ["JILL SMITH"] adalah sinonim untuk number := phone_book.item ("JILL SMITH") ), asalkan deklarasi item sekarang mulai (pengganti [3]) dengan
Item alias "[]" (kunci: STRING): ELEMEN menetapkan menempatkan
Hal ini menyatakan put sebagai perintah assigner terkait dengan item dan, dikombinasikan dengan alias braket, membuat [5] hukum dan setara dengan [4]. (Hal ini juga dapat ditulis, tanpa mengambil keuntungan dari braket, sebagai phone_book.item ("JILL SMITH") := New_person .
catatan: daftar argumen dari yang assigner dibatasi menjadi: (a kembali jenis, semua daftar argumen ...)
[ sunting ] sifat leksikal dan sintaks
Eiffel tidak case-sensitive. Token make , maKe dan MAKE semua menunjukkan identifier yang sama. Lihat, bagaimanapun, "aturan style" di bawah.
Komentar yang diperkenalkan oleh -- (dua strip berturut-turut) dan memperpanjang ke akhir baris.
Titik koma, sebagai pemisah instruksi, adalah opsional. Sebagian besar waktu titik koma hanya dihilangkan, kecuali untuk memisahkan beberapa instruksi pada satu garis. Hal ini menyebabkan kekacauan kurang pada halaman program.
Tidak ada bersarang fitur dan deklarasi kelas. Akibatnya struktur kelas Eiffel sederhana: beberapa kelas tingkat klausa (warisan, invarian) dan suksesi deklarasi fitur, semua pada tingkat yang sama.
Ini adalah kebiasaan untuk fitur kelompok menjadi terpisah "klausul fitur" untuk dibaca lebih, dengan satu set standar tag fitur dasar muncul dalam urutan yang standar, misalnya:
kelas HASH_TABLE [ELEMEN, KUNCI -> HASHABLE] mewarisi TABLE [ELEMEN]

fitur - Inisialisasi
- ... Deklarasi perintah inisialisasi (penciptaan prosedur / konstruktor) ...

Fitur - Akses
- ... Deklarasi non-boolean query pada item objek negara, misalnya ...

fitur - Status Laporan
- ... Deklarasi pertanyaan boolean pada negara objek, misalnya is_empty ...

fitur - mengubah Elemen
- ... Deklarasi perintah yang mengubah struktur, misalnya menempatkan ...

- Dll
akhir
Berbeda dengan kebanyakan bahasa pemrograman braket keriting , Eiffel membuat perbedaan yang jelas antara ekspresi dan instruksi. Hal ini sejalan dengan Command-Query Separation prinsip metode Eiffel.
[ sunting ] Gaya konvensi
Sebagian besar dokumentasi Eiffel menggunakan konvensi gaya yang khas, yang dirancang untuk menegakkan melihat-dan-merasa konsisten. Beberapa konvensi berlaku untuk format kode itu sendiri, dan orang lain untuk rendering standar tipografi Eiffel kode dalam format dan publikasi di mana konvensi yang mungkin.
Sedangkan bahasa adalah case-insensitive, standar gaya meresepkan penggunaan semua-modal untuk nama kelas ( LIST ), semua-rendah-kasus untuk nama fitur ( make ), dan ibukota awal untuk konstanta ( Avogadro ). Gaya direkomendasikan juga menyarankan menggarisbawahi untuk memisahkan komponen pengenal kata-multi, seperti di average_temperature .
Spesifikasi Eiffel mencakup pedoman untuk menampilkan teks dalam format mengeset perangkat lunak: kata kunci dalam huruf tebal, user-defined pengidentifikasi dan konstanta ditampilkan dalam italics , komentar, operator, dan tanda baca di Roman , dengan teks program dalam blue seperti pada pasal ini untuk membedakannya dari teks penjelasan. Misalnya, "Halo, dunia!" Program yang diberikan di atas akan menjadi sebagai di bawah ini di Eiffel dokumentasi:
kelas
Hello_world
menciptakan
membuat
Fitur
membuat
lakukan
cetak ("Halo, dunia!")
akhir
akhir

2 komentar:

Aliephs mengatakan...

waah, makasih yah, baru ngerti nihh.. aku boleh request lebih gak? hehe :)

DATINAWONG mengatakan...

oke nanti aku sambung dengan yang lebih menantang siapakan logika anda oke Man....!