Jenis data yang ditentukan pengguna
| English | Bahasa Indonesia |
|---|---|
| user-defined types/ˈjuːzə dɪˈfaɪnd taɪps/ | tipe yang didefinisikan pengguna |
| non-composite/nɒn ˈkɒmpəzɪt/ | non-komposit |
| composite/ˈkɒmpəzɪt/ | komposit |
| enumerated type/ɪˈnjuːməreɪtɪd taɪp/ | tipe enumerate |
| pointer/ˈpɔɪntə/ | pointer |
| dereference/ˌdiːˈrefrəns/ | menyanggaikan |
| record/ˈrekɔːd/ | rekaman |
| set/set/ | set |
| class/klæs/ | kelas |
| attributes/ˈætrɪbjuːts/ | atribut-atribut |
| methods/ˈmeθədz/ | metodenya |
Tipe yang membuat kesalahan mustahil terjadi
- Sistem rumah sakit menyimpan golongan darah pasien sebagai
STRING. Seseorang mengetik "0+" alih-alih "O+": angka nol untuk huruf O. Bidang itu menerimanya, karena string menerima apa pun. - Tidak ada di dalam program yang bisa memberi tahu bahwa "0+" bukan golongan darah, sehingga kesalahan tersebut berjalan tanpa terdeteksi hingga titik di mana ia menjadi bermasalah.
- Berikan bidang itu tipe yang nilainya tepat delapan golongan darah, dan penugasan akan ditolak sesaat saat ditulis, oleh compiler, sebelum program pernah dijalankan.
- Itulah yang tipe yang didefinisikan pengguna berikan kepada Anda. Pelajaran ini adalah yang disebutkan kurikulum, dan bagaimana memilih di antaranya.
Mengapa tipe yang didefinisikan pengguna diperlukan
STRINGbawaan memungkinkan Anda menyimpan hal tidak masuk akal dalam bidang yang seharusnya berisi salah satu dari beberapa nilai sah; tipe yang didefinisikan pengguna membatasinya, sehingga compiler menangkap lebih banyak kesalahan.- Entitas nyata biasanya merupakan kumpulan nilai dari berbagai tipe, dan tipe bawaan dapat menampung hanya satu.
DECLARE MyTaxi : Vehicleadalah dokumentasi mandiri: ia mengatakan variabel itu apa, di manaDECLARE MyTaxi : STRINGhanya mengatakan bagaimana itu disimpan.
Mengapakah jenis yang ditentukan pengguna diperlukan? Pilih semua yang sesuai.
Pembatasan, pengelompokan dan dokumentasi diri. Kelajuan bukanlah sebab; ketepatan dan kejelasan adalah.
Tipe non-komposit: terenumerasi
- Tipe non-komposit memegang satu nilai; tipe komposit mengelompokkan beberapa nilai bersama-sama.
- Tipe terurut memiliki nilai yang merupakan daftar tetap dari konstanta bernama. Nama-nama tersebut adalah nilai dari tipe baru, disimpan secara internal sebagai bilangan bulat kecil.
TYPE Vehicle = (M100, M230, T101, T102, T120, T150)
DECLARE MyTaxi : Vehicle
MyTaxi ← T102 // anything outside the list is rejected
- Kegunaan: hari dalam seminggu, warna, kode status, golongan darah: bidang mana pun yang nilai sahnya merupakan daftar pendek yang diketahui.

Enam nilai yang dinamai, dan tidak ada yang lain yang dapat ditugaskan
Jenis enumerated memegang:
Jenis enumerated membataskan variabel kepada salah satu set tetap nilai bernama (contohnya, hari dalam seminggu).
Tipe non-komposit: pointer
- Pointer menyimpan alamat memori variabel lain, atau
NULLyang berarti "tidak ada target". - Untuk dereferencing (mengakses data yang ditunjuk) sebuah pointer, ditulis
p^, adalah mencapai variabel yang ditunjuknya.
TYPE PNode = ^TNode // a pointer to a TNode
DECLARE p : PNode
p ← NEW TNode
p^.Value ← 42 // dereference, then reach the field
- Pointer adalah hal yang membuat struktur dinamis mungkin: daftar linked adalah node yang saling terhubung oleh pointer, dan tree adalah node dengan dua pointer. Mereka juga meneruskan rekaman besar ke prosedur tanpa menyalinnya.

Variabel menyimpan di mana data berada, bukan datanya itu sendiri
Petunjuk menyimpan alamat memori bagi variabel lain, dan menyanggahnya (contohnya p^) mencapai variabel yang ditunjuknya.
Petunjuk (dengan NULL menandakan "menunjuk tiada apa-apa") adalah cara struktur dinamik seperti senarai berantai dan pokok dibina.
Menjangkau variabel yang ditunjuk oleh petunjuk, ditulis p^, dipanggil ____.
Petunjuk memegang alamat; menyanggai mengikuti alamat tersebut ke data. Itulah cara senarai berantai dan pokok dibina.
Tipe komposit
- Rekaman mengelompokkan bidang-bidang tipe berbeda di bawah satu nama, dalam blok
TYPE … ENDTYPE. Anda telah mengenalinya dalam topik 10. - Set adalah koleksi tidak berurutan dari nilai unik, dengan operasi tambah, hapus, uji keanggotaan, gabungan, dan irisan.
DECLARE Available : SET OF Colour
Available ← {Red, Blue}
IF Green IN Available THEN
…
ENDIF
- Kelas dan instance-nya, objek, menggabungkan bidang data, yaitu atribut, dengan operasi atasnya, yaitu metode.

Bidang tipe berbeda, satu pengenal
Padankan setiap jenis data yang ditentukan pengguna dengan apa yang dimilikinya.
Enumerated = nilai bernama tetap; petunjuk = alamat; kelas = data + tingkah laku; set = nilai unik tanpa susunan.
Set adalah kumpulan tersusun di mana nilai boleh muncul lebih daripada sekali.
Set adalah tidak tersusun dan nilainya adalah unik. Array ialah struktur tersusun yang membenarkan repetisi.
Kelas
CLASS Taxi
PRIVATE Capacity : INTEGER
PUBLIC FUNCTION GetCapacity() RETURNS INTEGER
RETURN Capacity
ENDFUNCTION
ENDCLASS
- Kelas adalah definisi; objek adalah instance darinya, satu taksi aktual dengan kapasitasnya masing-masing.
- Yang membedakannya dari rekaman adalah metode: rekaman hanyalah data, kelas adalah data dan perilaku yang menyertainya.
Kelas menggabungkan:
Kelas membungkus atribut dan kaedah; objek ialah实例 (instance) bagi kelas.
Apakah yang membezakan kelas daripada rekod?
Kedua-dua bidang grup; hanya kelas yang membawa perilaku. Sebuah objek adalah satu实例 dari kelas.
Contoh terpecahkan: pilih tipe dan justifikasikan
- Sistem pemesanan menyimpan, untuk setiap pemesanan, status yang harus berupa salah satu dari Diminta, Dikonfirmasi, atau Dibatalkan. Tipe buatan pengguna mana, dan mengapa?
- Tipe terurut: nilai sahnya adalah daftar tetap yang pendek, sehingga tipe mencegah nilai lain ditugaskan dan kode terbaca sesuai domain.
- Dan untuk pemesanannya sendiri: referensi, tanggal, jumlah penumpang, dan harga? Rekaman, karena nilainya dari tipe berbeda dan selalu menggambarkan satu pemesanan bersama-sama.
- Dan untuk kumpulan kursi yang masih kosong? Set: tidak berurutan, tanpa duplikat, dan keanggotaan adalah operasi yang Anda butuhkan.
Memilih di antara keduanya
| Kebutuhan | Tipe |
|---|---|
| nilai dari daftar tetap pendek | terurut |
| indirection, atau struktur yang tumbuh | pointer |
| beberapa bidang tipe berbeda yang mendeskripsikan satu hal | rekaman |
| koleksi tidak berurutan dari nilai unik | set |
| state dan perilaku yang bekerja padanya | kelas |
Makmal konsep pengaturcaraan
Sambungkan contoh kepada idea pengaturcaraan yang ditunjukkannya.
Untuk variabel yang harus merupakan salah satu {Red, Green, Blue}, tipe terbaik adalah:
Daftar nilai yang diizinkan secara tetap persislah fungsi dari tipe terenumerasi.
⟦⟧ Nilai yang sering terlewat
- Nilai tipe terurut adalah konstanta bernama, bukan string.
MyTaxi ← "T102"adalah hal yang berbeda dan salah. - Pointer menyimpan alamat, bukan nilai. Dereferencing adalah langkah yang mencapai nilai tersebut.
- Set tidak berurutan tanpa duplikat; array berurutan dan dapat berulang. Kata-kata pertanyaan memberi tahu Anda mana yang tepat.
- Apa yang membuat kelas lebih dari sekadar rekaman adalah metodenya. Katakanlah ketika diminta menjelaskan perbedaannya.
Anda telah memahaminya
- Tipe buatan pengguna membatasi apa yang dapat disimpan, mengelompokkan nilai yang terkait, dan membuat kode mandiri penjelasan
- non-komposit: terurut (daftar tetap konstanta bernama) dan pointer (alamat, dicapai melalui dereferencing)
- komposit: rekaman (bidang tipe berbeda), set (tidak berurutan, unik), kelas/objek (atribut ditambah metode)
- Pilih berdasarkan kebutuhan, dan justifikasikan dengan properti yang sesuai: daftar tetap, indirection, bidang campuran, keunikan, atau state dengan perilaku