Tipe data bentukan merupakan tipe data yang dibentuk atau dibuat sendiri sesuai kebutuhan dalam program yang akan kita buat. Dalam bahasa asing, tipe ini dikenal dengan istilah user defined types. Tipe data bentukan diperoleh dari tipe data yang sudah ada (tipe data primitive). Namun dianggap terpisah dan tidak seperti tipe data dasar tersebut. Adapun jenis tipe data bentukan, yaitu:
- Struct
- Union
- Enumeration
- Typedef
- Class
Struct Sebagai Tipe Data Bentukan
Dalam bahasa indonesia tipe struct dikenal dengan istilah struktur. Struct merupakan salah satu jenis dari tipe data bentukan dalam bahasa pemrograman C++.
Struct merupakan sekelompok elemen data yang dikelompokkan dalam satu nama. Data elemen yang disebut juga sebagai “member“ dapat memiliki tipe data dan panjang data yang berbeda.
Dikatakan sebagai tipe data bentukan karena struct dapat menampung satu atau lebih variabel dengan tipe data yang sama ataupun berbeda. Kita dapat mendesain struktur data elemen sedemikian rupa di dalamnya. Dengan kemampuan tersebut, tipe data bentukan tersebut dapat digunakan untuk mengelompokkan beberapa variabel. Kelompok variabel tersebut kemudian dibentuk sebagai sebuah “cetakan”. Cetakan tersebut digunakan untuk mencetak objek (variabel) dengan karakteristik seperti struct yang dibentuk tadi.
Pendeklarasian Struct
Untuk membuat tipe data struct dalam bahasa pemrograman C++, sebuah variabel harus dideklarasikan dengan menggunakan keyword struct. Berikut sintaks pendeklarasian sebuah struct.
Sintaks 1
struct nama_struktur {
tipe_data variabel1;
tipe_data variabel2;
…
tipe_data variabelN;
};
Jika anda masih bingung melihat sintaks di atas, berikut gambar ilustrasi sintaks 1. Perhatikan gambar 1.
Berdasarkan sintaks 1, dapat kita ketahui bahwa dalam pendeklarasian sebuah struct harus diawali dengan keyword struct. Pada bagian nama_tipe, kita bebas memberikan nama tipe yang diinginkan namun harus tetap mengingat aturan pemberian nama identifier. Di dalam blok struct “{ }” dapat kita isi dengan berbagai pendeklarasian variabel. Berbagai variabel ini disebut sebagai data elemen atau member.
Untuk lebih memahami sintaks 1 di atas, berikut kami berikan sebuah contoh penggunannya. Perhatikan gambar 2.
Pada gambar 2 di atas kita dapat melihat bahwa sebuah struct dengan nama paket_internet telah dideklarasikan. Struct paket_internet memiliki tiga data elemen yaitu nama_paket yang bertipe string, kuota_telpon dan kuota_internet yang bertipe integer.
Pembentukan Object Struct
Setelah memahami bagaimana mendeklarasikan sebuah struct, maka selanjutnya anda harus memahami bagaimana membentuk objek dari sebuah struct.
Dalam pembentukan objek, objek dapat dianggap sebagai sebuah variabel dan struct yang membentuk adalah tipe datanya.
Terdapat 3 cara yang dapatdilakukan untuk membentuk objek. Perhatikan 3 cara berikut.
Cara 1
Sintaks 2
struct nama_struktur {
tipe_data variabel1;
tipe_data variabel2;
…
tipe_data variabelN;
} nama_objek;
Jika anda masih bingung melihat sintaks di atas, berikut gambar ilustrasi sintaks 2. Perhatikan gambar 3.
Berdasarkan sintaks 2, dapat kita ketahui bahwa sebuah objek dapat dibentuk bersaaman pada saat pendeklarasian sebuah struct. Cukup dengan menambahkan nama objek yang diinginkan di belakang blok setelah blok “}” dan sebelum tanda titik koma. Objek ini nanti akan memiliki “karakteristik” yang sama dengan struct pembentuknya.
Masih bingung? perhatikan contoh pada gambar 4.
Pada gambar 4 kita dapat melihat sebuah struct dengan nama paket_internet dideklarasikan. Struct
ini kemudian digunakan untuk membentuk sebuh objek bernama “begadang“. Jadi, dapat dikatakan bahwa objek begadang memiliki data elemen sama dengan struct paket_internet. Begadang adalah hasil cetakan paket_internet.
Berikut contoh lain dengan ilustrasi yang sedikit lebih jelas. Perhatikan gambar 5.
Sama seperti struct pada gambar 5. Pada gambar 5 kita dapat melihat bahwa paket _internet digunakan untuk membentuk dua objek yaitu begadang dan belajar. Sehingga, terbentuk dua objek yang memiliki “karakteristik” yang sama dengan paket_internet.
Cara 2
Selain sintaks di atas yang sudah dijelaskan bersama dengan contohnya, juga terdapat satu bentuk pendeklarasian objek lagi. Perhatikan sintaks 3.
Sintaks 3
nama_tipe nama_objek;
Jika anda masih bingung melihat sintaks di atas, berikut gambar ilustrasi sintaks 3. Perhatikan gambar 6.
Seperti ditunjukkan pada gambar 6, pendeklarasian/pembentukan objek juga dapat dilakukan secara terpisah dari pendeklarasian struct. Objek dideklarasikan dalam satu baris perintah tersendiri. Namun perlu diingat bahwa pembentukan objek hanya dapat dilakukan setelah pendeklarasian struct pembentuk objek tersebut.
Berdasarkan sintaks 3 di atas, berikut contoh penggunaannya. perhatikan gambar 7.
Berdsarkan pada contoh yang ada pada gambar 7 di atas, kita dapat melihat bahwa tiap baris perintah membentuk sebuah objek. Karena terdapat tiga baris perintah untuk membentuk objek dari struct yang sama. Maka, ketiga objek yang terbentuk memiliki karakteristik yang sama. Hanya nama objeknya yang bebeda.
Cara 3
Pendeklarasian beberapa objek sekaligus dengan tipe struct yang sama juga dapat dilakukan dalam satu baris perintah saja. Seperti nampak pada sintaks berikut.
Sintaks 4
nama_tipe nama_objek1, nama_objek2,…, nama_objekN;
Gambar ilustrasi sintaks 4 ditunjukkan pada gambar 8 berikut.
Pengaksesan Member Objek Struct
Teman-teman pasti sudah memahami pendeklarasian struct dan pembentukan objek. Sekarang kalian juga harus memahami bagaimana cara menyimpan nilai ke dalam variabel member dari suatu objek. Selain itu kalian juga harus memahami bagaimana mengakses (mengmbil ata menampilkan) nilai dari suatu variabel member objek. Hal tersebut wajib untuk anda ketahui agar dapat menggunakan objek tersebut dalam pengolahan data pada program.
Menyimpan nilai ke variabel member
Berikut sintaks untuk menyimpan nilai ke dalam sebuah variabel member dari objek.
Sintaks 5
nama_objek.nama_member = nilai ;
Gambar ilustrasi sintaks 5 ditunjukkan pada gambar 9 berikut.
Perhatikan sintaks di atas. Dapat kita ketahui bahwa untuk menyimpan nilai ke dalam sebuah variabel member, harus mengakses objeknya terlebih dahulu. Nama objek diikuti dengan nama member dimana di antara keduanya dipisahkan dengan dot (titik). Nama objek harus disebutkan karena jika hanya menyebutkan nama member tentu akan terjadi kesalahan. Sebab jika tidak, compiler akan kebingungan untuk mengakses variabel yang dimaksud. Selain itu boleh jadi terdapat banyak objek, tentu nama variabel membernya sama jika dibentuk dari struct yang sama.
Kemudian, untuk menugaskan nilai ke dalam variabel member tersebut caranya sama dengan menugaskan nilai ke dalam variabel biasa. Dengan menggunakan operator penugasan sama dengan.
Penggunaan sintaks 5 dapat dilihat pada gambar 10 berikut.
Pada contoh diatas kita dapat mengetahui bahwa nilai 50 disimpan ke dalam variabel member kuota_internet. Dimana, kuota_internet adalah variabel member dari objek begadang. Nilai 50 yang bertipe integer dapat masuk ke dalam variabel member kuota_internet karena memiliki tipe yang sama.
Mengakses (mengambil / menampilkan) nilai dari variabel member
Setelah menyimpan nilai sementara ke variabel, tentu suatu waktu kita ingin menampilkan ataupun mengakses nilai dalam variabel member tersebut. Untuk melakukan hal tersebut, perhatikan sintaks berikut.
Sintaks 6
nama_objek.nama_member;
Gambar ilustrasi sintaks 6 ditunjukkan pada gambar 11 berikut.
Contoh penggunaan sintaks di atas dapat dilihat pada gambar 12 berikut.
Seperti ditunjukkan pada gambar 12, untuk mengakses variabel member sangatlah mudah. Agar dapat mendapatkan nilai dari variabel member, nama objek harus diketikan terlebih dauhulu. Keduanya dipisahkan dengan dot (titik). Dengan begitu kita telah memperoleh isi dari variabel member.
Contoh Program
Anda tentu telah memahami sintaks pendeklarasian hingga pengaksesan variabel member dari objek. Untuk lebih mempermantap pemahaman anda, berikut contoh pengimplementasiannya dalam sebuah program sederhana.
Contoh program 1
#include <iostream>
#include <cstring>
using namespace std;
struct paket_internet {
string nama_paket;
int kuota_telpon;
int kuota_internet;
}begadang;
int main() {
begadang.nama_paket = "Begadang";
begadang.kuota_telpon = 50;
begadang.kuota_internet = 25;
cout<<"Nama paket : "<< begadang.nama_paket << endl;
cout<<"Kuota telpon : "<< begadang.kuota_telpon << " Menit" << endl;
cout<<"Nama internet : "<< begadang.kuota_internet << " GB" << endl;
return 0;
}
Output:
Nama paket : Begadang
Kuota telpon : 50 Menit
Nama internet : 25 GB
Pada contoh program 1 di atas kita dapat melihat bahwa telah dideklarasikan sebuah struct dengan nama paket_internet
. Pendeklarasian dilakukan pada baris 5 hingga 9. Pendeklarasian struct ini juga langsung disertai dengan pembentukan objek “begadang
” seperti terlihat pada baris 9. Karena dideklarasikan di luar dan di atas fungsi main, maka struct dan objeknya berlaku secara global.
Struct paket_internet
terdiri atas 3 elemen data atau variabel member. Variabel membernya yaitu nama_paket
yang bertipe string, kuota_telpon
yang bertipe integer, dan kuota_internet
yang bertipe integer.
Perhatikan baris 13 hingga 15. Dapat kita lihat bahwa setiap variabel member diisi dengan sebuah nilai. Jika diamati, variabel member tidak dituliskan begitu saja. Namun, didepannya diikuti dengan nama objeknya yang dipisahkan dengan dot (titik).
Sebagai contoh perintah baris 13 begadang.nama_paket = "Begadang";
. Perintah ini berarti bahwa nilai string “Begadang
” akan dimasukkan ke dalam variabel nama_paket
yang dimiliki oleh objek begadang
. Nama objek harus diikut sertakan agar compiler tidak bingung menentukan variabel member mana yang dimaksud.
Kemudian pada baris 17 hingga 20 variabel member diakses untuk ditampilkan nilainya sebagai output pada layar monitor. Hasil pengeksekusian dari baris perintah 17 hingga 20 ini dapat dilihat pada bagian output program di atas.
Contoh program 2
#include <iostream>
#include <cstring>
using namespace std;
struct paket_internet {
string nama_paket;
int kuota_telpon;
int kuota_internet;
};
int main() {
paket_internet begadang;
paket_internet belajar;
begadang.nama_paket = "Begadang";
begadang.kuota_telpon = 50;
begadang.kuota_internet = 25;
belajar.nama_paket = "Belajar";
belajar.kuota_telpon = 0;
belajar.kuota_internet = 50;
cout<<"Nama paket : "<< begadang.nama_paket << endl;
cout<<"Kuota telpon : "<< begadang.kuota_telpon << " Menit" << endl;
cout<<"Nama internet : "<< begadang.kuota_internet << " GB" << endl;
cout<<"-------------------------------" << endl;
cout<<"Nama paket : "<< belajar.nama_paket << endl;
cout<<"Kuota telpon : "<< belajar.kuota_telpon << " Menit" << endl;
cout<<"Nama internet : "<< belajar.kuota_internet << " GB" << endl;
cout<<"-------------------------------" << endl;
return 0;
}
Output:
Nama paket : Begadang
Kuota telpon : 50 Menit
Nama internet : 25 GB
-------------------------------
Nama paket : Belajar
Kuota telpon : 0 Menit
Nama internet : 50 GB
-------------------------------
Contoh program 2 di atas hampir sama dengan contoh program 1. Hanya saja pada contoh program 2 pendeklarasian objek dari struct dilakukan secara terpisah dan di dalam fungsi main()
. Hal ini dapat anda lihat pada baris 13 dan 14. Selain itu objek
yang dideklarasikan lebih dari 1.
Dua objek yang dibentuk dari struct
yang sama yakni objek “begadang
” dan “belajar
“. Keduanya dibentuk dari struct
paket_internet
. Karena dibentuk dari struct
yang sama, kedua objek
ini memiliki struktur elemen atau karakteristik yang sama. Jelas seperti itu karena mereka dibentuk dengan menggunakan “cetakan” yang sama.
Selanjutnya pada baris 16 hingga 18 dilakukan penginisialisasian nilai ke dalam variabel member dari objek begadang
. Begitupun pada baris 20 hingga 22 , dilakukan penginisialisasian nilai ke dalam variabel member dari objek belajar
. Dari penginisialisasian nilai ke dalam variabel member kedua objek tersebut, kita dapat mengetahui bahwa nama variabel member tiap objek sama. Sehingga untuk membedakan variabel member dari objek mana yang dimaksud, nama objek harus ikut didefenisikan.
Seperti perintah baris 16 begadang.nama_paket = "Begadang";
dan baris 20 belajar.nama_paket = "Belajar";
. Compiler dapat membedakan kedua variabel member nama_paket
karena nama objek juga ikut didefenisikan.
Begitupun pada saat akan menampilkan atau mengakses isi dari variabel member objek. Nama objek juga harus didefenisikan. Seperti ditunjukkan pada baris 24 hingga 26 dan 28 hingga 30. Hasil pengeksekuasian baris tersebut dapa dilihat pada output di atas.
Semoga dapat menambah wawasan teman-teman yang masih baru dalam dunia pemrograman. Semoga bermanfaat.
Jika ingin mendengarkan penjelasan secara lisan, jangan sungkan untuk mengunjungi channel youtube kami “PAKKODING“.
Oh iya, share halaman ini agar orang-orang yang baru belajar pemrograman dapat terbantu.
6,049 total views, 32 views today