Abstract Data Type : Kasus ADT Point
Bahasa Pemrograman : C/C++
Abstract Data Type (ADT) merupakan definisi terhadap type dari atribut-atribut yang dimiliki oleh suatu data dan operasi-operasi terhadap atribut-atribut tersebut. Jadi, pada saat membuat sebuah ada dua hal yang harus ditentukan yaitu atribut-atribut dari data tersebut dan operasi-operasi terhadap atribut tersebut. Sebagai contoh, saat mendefinisikan ADT dari koordinat kartesius maka harus didefinisikan atribut apa yang membangun koordinat kartesius, yaitu nilai absis (X) dan ordinat (Y). Setelah mendefinisikan atribut dari ADT yang selanjutnya ialah mendefinisikan operasi-operasi yang akan terjadi pada koordinat kartesius tersebut seperti pencerminan, pergeseran, rotasi, dan lain-lainnya.
Operasi yang telah didefinisikan pada ADT kemudian harus di implementasikan. Hal yang paling penting dari pengimplementasian operasi-operasi tersebut ialah konsep reusability dan information hiding. Konsep Reusability didefinisikan sebagai penggunaan kembali operasi-operasi yang telah ada pada ADT tanpa harus kembali menuliskan implementasinya. Hal ini dimungkinkan karena operasi-operasi pada ADT yang telah dibuat akan membentuk suatu modul (ada juga yang menyebutnya library) yang kemudian dapat digunakan kembali. Selain itu terdapat fungsi information hiding yang memungkinkan pengguna (user) dari modul yang telah dibuat dapat langsung menggunakan operasi-operasi yang telah ada tanpa harus mengetahui metode implementasinya. Hal ini merupakan bentuk pengamanan terhadap modul yang telah dibuat.
Pada bahasa C/C++ modul ini dikenal dengan nama header file dengan extensi *.h (pada bahasa pemrograman lain modul ini dikenal dengan extensi berbeda seperti *.dll pada bahasa pemrograman C#). Ada banyak jenis-jenis modul yang telah didefinisikan oleh bahasa C/C++ seperti stdio.h, stdlib.h, conio.h, math.h, dan lain-lainnya. Pada pembahasan kali ini, tidak akan dibahas mengenai apa fungsi dari modul-modul yang telah disebutkan diatas namun mengenai bagaimana membuat sebuah modul (header file) dengan menggunakan bahasa C/C++.
Pada bahasa pemrograman C/C++ untuk membuat sebuah modul diperlukan tiga file dengan nama yang sama namun dengan extensi yang berbeda yaitu sebuah file dengan extensi *.h, file dengan extensi *.C/*.CPP, dan file dengan extensi *.o. File berextensi *.h menyimpan atribut terhadap data dan spesifikasi (informasi) operasi-operasi yang akan di implementasikan sementara file dengan extensi *.C/*.CPP merupakan file yang menyimpan metode pengimplementasian dari operasi-operasi yang akan digunakan. File berextesi *.o merupakan hasil compile dari file berextensi *.C/*.CPP. File ini dan file berextensi *.h inilah yang kemudian menjadi modul sehingga operasi-operasi yang telah diimplementasikan pada file *.C/*.CPP dapat digunakan kembali (reusability) tanpa harus menyertakan file implementasi yaitu file berextensi *.C/*.CPP yang telah dibuat (information hiding).
Dengan menggunakan kasus diatas, maka dapat dibuat modul dari C/C++. Berhubung syntax yang panjang maka syntaxnya tidak dicantumkan pada blog ini namun dapat langsung mendownload filenya disini atau versi edittannya disini.
Catatan :
*) Untuk versi asli (file : ADTPoint.rar) pada saat kompile akan ada warning mengenai konversi dari float/double ke integer. Hal ini dikarenakan type point pada file point.h terdiri atas X dan Y yang bertipe integer. Sementara fungsi putarpoint memiliki keluaran float/double.
*) Pada versi edittan (file : ADTPointEditted.rar), hal diatas telah diubah. Yaitu dengan merubah type atribut point dari integer menjadi float sekaligus merubah sebagian besar fungsi yang menggunakan integer menjadi float.
*) File versi asli (ADTPoint.rar) menggunakan bahasa C++ sementara file editan (file : ADTPointEditted.rar) menggunakan bahasa C. Namun demikian, penulis tidak melihat ada perbedaan dari kedua file tersebut.
*) Perubahan syntax pada fungsi putarpoint (file : point.cpp dan pointedit.c)
- pada file point.cpp diubah menjadi
#define PI 3.14159265
void putarpoint(point *p, float sudut){
(*p).x = (*p).x * cos (sudut*PI/180) – (*p).y * sin (sudut*PI/180);
(*p).y = (*p).y * cos (sudut*PI/180) + (*p).x * sin (sudut*PI/180);
}
- pada file pointedit.c diubah menjadi:
#define PI 3.14159265
void putarpoint (point *p, float sudut) {
(*p).x = (*p).x * cos (sudut*PI/180) – (*p).y * sin (sudut*PI/180);
(*p).y = (*p).y * cos (sudut*PI/180) + (*p).x * sin (sudut*PI/180);
}
About this entry
You’re currently reading “Abstract Data Type : Kasus ADT Point,” an entry on Fajrul Akram
- Telah Diterbitkan:
- Agustus 29, 2010 / 10:01 AM
- Kategori:
- Algorithm
- Kaitkata:

No comments yet
Langsung ke formulir komentar | comment rss [?] | trackback uri [?]