Jumat, 18 Januari 2019

Pengenalan Komputer Grafik



Grafika komputer (Inggris: Computer graphics) adalah bagian dari ilmu komputer yang berkaitan dengan pembuatan dan manipulasi gambar (visual) secara digital. Bentuk sederhana dari grafika komputer adalah grafika komputer 2D yang kemudian berkembang menjadi grafika komputer 3D, pemrosesan citra (image processing), dan pengenalan pola (pattern recognition). Grafika komputer sering dikenal juga dengan istilah visualisasi data.

Sejarah grafika komputer :

Istilah ”Grafik Komputer”ditemukan tahun 1960 oleh William Fetter : pembentukan disain model cockpit (Boeing) dengan menggunakan pen plotter dan referensi model tubuh manusia 3 Dimensi.

Sejarah Perkembangan Komputer Grafik:

Awal tahun 60-an dimulainya model animasi dengan menampilkan simulasi efek fisik.
  • 1961: Edward Zajac menyajikan suatu model simulasi satelit dengan menggunakan teknologi Grafik Komputer.
  • 1963 : -ditemukan Sutherland (MIT)
  • -Sketchpad (manipulasi langsung, CAD)
  • -Alat untuk menampilkan Calligraphic (vector)
  • -Mouse oleh Douglas Englebert
  • 1968 : ditemukan Evans & Sutherland.
  • 1970: Pierre B´eezier mengembangkan kurva B´eezier.
  • 1972: ditayangkannya filmWestworld, sebagai film pertama yang menggunakan animasi komputer.
  • 1974: Ed Catmull mengembangkan z-buffer (Utah). Komputer animasi pendek, Hunger:Keyframe animation and morphing.
  • 1976: Jim Blinn mengembangkan texture dan bump mapping.
  • 1977: Film terkenal Star Wars menggunakan grafik komputer.
  • 1979: Turner Whitted mengembangkan algoritma ray tracing,untuk pesawat Death Star.
  • Pertengahan tahun 70-an hingga 80-an: Pengembangan Quest for realism radiosity sebagai main-stream aplikasi realtime.
  • 1982: Pengembangan teknologi grafik komputer untuk menampilkan partikel.
  • 1984: Grafik Komputer digunakan untuk menggantikan model fisik pada film The Last Star Fighter.
  • 1986: Pertama kalinya Film hasil produksi grafik komputer dijadikan sebagai nominasi dalam Academy Award: Luxo Jr. (Pixar).
  • 1989: Film Tin Toy (Pixar) memenangkan Academy Award.
  • 1995: Diproduksi fillm Toy Story (Pixar dan Disney) sebagai film3D animasi panjang pertama.
  • Akhir tahun 90-an, ditemukannya teknologi visualisasi interaktif untuk ilmu pengetahuan dan kedokteran, artistic rendering, image based rendering, path tracing, photon maps, dll.
  • Tahun 2000 ditemukannya teknologi perangkat keras untuk real-time photorealistic rendering
  • Kemajuan dalam komputer grafis adalah berasal dari seorang mahasiswa MIT, Ivan Sutherland. Pada tahun 1961 Sutherland menciptakan program komputer untuk menggambar yang disebut Sketchpad. Dengan menggunakan Light Pen, Sketchpad dapat menggambar bentuk sederhana pada layar komputer, menyimpan mereka dan bahkan bisa memanggil mereka lagi nanti. Light pen itu sendiri memiliki sel fotolistrik kecil di ujungnya. Sel ini dipancarkan pulsa elektronik setiap kali ditempatkan di depan layar komputer dan pistol elektron layar itu ditembakkan langsung dalam. Dengan waktu yang singkat pulsa elektronik ini tahu dimana lokasi electron gun, ini mudah untuk menentukan persis di mana pena ini di layar pada saat tertentu. Begitu yang ditentukan, komputer kemudian bisa menggambar kursor di lokasi itu.

Sutherland tampaknya terus mencari solusi yang sempurna untuk banyak masalah grafis yang dihadapinya. Bahkan saat ini, banyak standar grafis komputer interface mulai mendapatkan masalah dengan program Sketchpad awal. Salah satu contoh dari hal ini adalah dalam batasan menggambar. Jika seseorang ingin menggambar persegi misalnya, ia tidak perlu khawatir tentang menggambar empat baris sempurna untuk membentuk tepi kotak. Satu hanya dapat menentukan bahwa ia ingin menggambar kotak, dan kemudian tentukan lokasi dan ukuran kotak. Perangkat lunak kemudian akan membangun sebuah kotak yang sempurna, dengan dimensi yang tepat dan di lokasi yang tepat. Contoh lain adalah bahwa perangkat lunak Sutherland model objek – tidak hanya gambar objek. Dengan kata lain, dengan model mobil, orang bisa mengubah ukuran ban tanpa mempengaruhi sisa mobil. Itu bisa meregangkan tubuh mobil tanpa deformasi ban.

Revolusi perangkat Hardware

  1. Hukum Moore : “Setiap 12-18 bulan, kemampuan komputer meningkat dua kali lipat dalam hal harga/performance untuk setiap penggandaan jumlah transistor”.
  2. Memory grafik dan kecepatan jaringan meningkat secara eksponensial, Graphics chips meningkat setiap 6-9 bulan (contoh : Sony Playstation 2, nVidia GeForce FX, Nintendo GameCube, Microsoft Xbox).


Sistem Grafika computer dibedakan antara non-interaktif dan interaktif:

1. Grafika computer non interaktif: dibuat sebagai akhir dari proses dalam bentuk hardcopy.
  • Grafika dengan lineprinter: Sistem computer general purpose dengan perangkat lunak yang sesuai bias digunakan sebagai suatu system grafika (seperti di masa-masa awalnya grafika computer) yaitu dengan mengkombinasikan berbagai karakter dengan cara cetak-tumpuk untuk meniru pola shading (gradasi tingkat keabuan).
  • Grafika dengan plotter dan semcam: terutama untuk grafika “line-drawing”.Grafika dengan hi quality printers: laser, ink-jet, thermal, dsb.
a. Grafika interaktif dapat dibuat dan dimanipulasi secara interaktif pada layar peranti peraga. Peranti-peranti peraga interaktif yang paling umum digunakan: CRT (tabung sinar katoda). Lain-lain: DVST, plasma-panel, LED/LCD, laser, dsb.
Komponen Dasar Sistem Grafik Interaktif :
  • Masukan : mouse, tablet dan stylus, peralatan force feedback, scanner, live video stream, dll
  • Proses dan Penyimpanan
  • Keluaran : layar, printer berbasis kertas, perekam video, non-linear editor, dll
  • Tujuan dari grafika komputer ini adalah untuk memungkinkan manusia berkomunikasi lewat gambar, bagan-bagan, dan diagram.
Bagian dari grafika komputer meliputi:

  • Geometri: mempelajari cara menggambarkan permukaan bidang
  • Animasi: mempelajari cara menggambarkan dan memanipulasi gerakan
  • Rendering: mempelajari algoritma untuk menampilkan efek cahaya
  • Citra (Imaging): mempelajari cara pengambilan dan penyuntingan gambar

Beberapa perangkat Lunak Grafis meliputi:

  • Corel Draw
  • Auto CAD
  • 3D Studio MAX
  • Visio dll.

Aplikasi-aplikasi computer grafik :

Computer-Aided Design (CAD)

CAD adalah alat bantu berbasis komputer yang digunakan dalam proses analisis dam desain, khusunya untuk sistem arsitektural dan engineering. CAD banyak digunakan dalam mendesain bagunan, mobil, pesawat, komputer, alat-alat elektronik, peralatan rumah tangga, dan berbagai produk lainnya. Contoh aplikasinya: AutoCAD.

Computer-Aided Sofware Engineering (CASE)

CASE mirip dengan CAD tetapi digunakan dalam bidang sofware engineering. CASE digunakan dalam memodelkan user requirement, pemodelan basisdata, workflow dalam proses bisnis, struktur program, dan sebagainya. Contoh aplikasi: Rational Rose, SyBase Power Designer

Virtual Reality

Virtual Reality adalah lingkungan virtual yang seakan-akan begitu nyata di mana user dapat berinteraksi dengan objek-objek dalam suasana atau lingkungan 3 dimensi. Perangkat keras khusus digunakan untuk memberikan efek pemadangan 3 dimensi dan memampukan user beriteraksi dengan objek-objek yang ada dalam lingkungan. Aplikasi ini dapat memberikan keutungan berupa mengurangi resiko cedera selama latihan, mengurangi biaya penerbangan, melatih perwira sebelum melakukan terjun payung sesungguhnya.

Visualisasi Data

Visualisasi Data adalah teknik-teknik membuat image, diagram, atau animasi untuk mengkomunikasikan pesan. Visualisasi telah menjadi cara yang efektif dalam mengkomunikasikan baik data atau ide abstrak maupun nyata sejak permulaan manusia.

Pendidikan dan Pelatihan

Model-model yang dihasilkan melalui komputer yang tentunya menggunakan grafis biasa digunakan sebagai alat bantu pendidikan. Model-model seperti proses-proses fisika dan kimia, fungsi-fungsi psikologi, simulasi, dan sebagainya dapat membantu sesorang memahami bagaimana operasi atau proses yang terjadi dalam suatu sistem.

Computer Art

Computer art adalah penggunaan komputer grafis untuk menghasilkan karya-karya seni. Hasil dapat berupa kartun, potret, foto, layout media cetak, logo, lukisan abstrak, desain interior atau eksterior, dan lain sebagainya.

Hiburan

Komputer grafis juga digunakan secara luas pada bidang entertainment khususnya pertelevisian, motion pictures, animasi, video clips, dan sebagainya. Film-film animasi yagn berdar di pasaran seperti Shrek, Monster Inc., anime-anime Jepang, menggunakan komputer grafis.

Video Game

Video game adalah permainan yang melibatkan interaksi dengan user interface untuk menghasilkan umpan balik berupa visualisasi pada perangkat video. Aplikasi banyak beredar di pasaran mulai yang sederhana 2 dimensi, seperti tetris, hingga yang rumit, 3 dimensi, dan memerlukan resource banyak, seperti game sepakbola Winning Eleven. Dari yang yang standalone hingga online network, seperti Ragnarok. Dari PC, console, hingga mobile devices.

Pengolahan Citra

Pengolahan citra berkaitan dengan teknik-teknik untuk modifikasi dna intepretasi citra, meningkatkan kualitas citra, analisis citra, dan mengenali pola-pola visual yang ada dalam suatu citra. Contoh: perbaikan citra sehingga menjadi lebih jelas.

Computer Vision

Compute Vision adalah ilmu pengetahuan dan teknologi dari mesin-mesin yang dapat melihat. Sebagai disiplin ilmu, computer vision berkaitan dengan teori untuk membangun sistem buatan yang dapat menarik informasi dari citra-citra. Informasi tersebut kemudian dapat digunakan sebagai input dalam mengambil keputusan atau tindakan. Data citra yang diambil dapat berupa video, citra dari berbagai kamera, dan sebagainya.

Graphical User Interface

Graphical User Inteface adalah antarmuka grafis yang mempermudah interaksi manusia dengan komputer dan alat-alat yang dikendalikan oleh komputer. GUI sudah sering kita lihat berupa window-window yang digunakan pada sistem operasi Windows, Mac, maupun Linux.

Itulah sedikit informasi yang bisa saya berikan.

Minggu, 13 Januari 2019

Library Grafik


OPENGL

Pengertian OpenGL

OpenGL (Open Graphics Library) adalah suatu spefikasi grafik yang low-level yang menyediakan fungsi untuk mempermudah pekerjaan atau untuk keperluan – keperluan pemrograman grafis (Graphics Programming / GP), termasuk grafik primitif (titik, garis, dan lingkaran). OpenGL(Open Graphic Library) adalah sebuah library terdiri dari berbagai macam fungsi dan biasanya digunakan untuk menggambar sebuah objek 2D ata 3D. OpenGL bersifat Open-Source , multi-platform dan multi-language.

OpenGL juga merupakan suatu antarmuka pemrograman aplikasi (application programming interface (API) yang tidak tergantung pada piranti dan platform yang digunakan, sehingga OpenGL dapat berjalan pada sistem operasi Windows, UNIX, SGI, Linux, frreBSD dan sistem operasi lainnya.

OpenGL pada awalnya didesain untuk digunakan pada bahasa pemrograman C/C++, namun dalam perkembangannya OpenGL dapat juga digunakan dalam bahasa pemrograman yang lain seperti Java, Tcl, Ada, Visual Basic, Delphi, maupun Fortran. Namun OpenGL di-package secara berbeda-beda sesuai dengan bahasa pemrograman yang digunakan.

Sejarah OpenGL

Tahun 1980-an, mengembangkan perangkat lunak yang dapat berfungsi dengan berbagai hardware grafis adalah tantangan nyata. Pengembang perangkat lunak antarmuka dan kebiasaan menulis driver untuk setiap perangkat keras yang menjadikannya semakin mahal dan mengakibatkan banyak duplikasi.

OpenGL Dikembangkan oleh Silicon Graphics (SGI) pada tahun 1990-an. Pendahulu openGL adalah IRIS GL dari Silicon Grapics, yang pada awalnya berupa GL(Glut Library) 2D, yang berevolusi menjadi API program 3D untuk workstation canggih milik perusahaan tersebut.

OpenGL adalah hasil dari usaha SGI untuk mengembangkan dan meningkatkan kemampuan portable IRIS. API grafis yang baru akan menawarkan kemampuan IRIS GL tetapi dengan standar yang lebih terbuka, dengan input dari pembuatan hardware lain dan sistem operasi lain, dan akan memudahkan adaptasi ke hardware platform dan sistem operasi lain. SGI menganggap bahwa IrisGL API itu sendiri tidak cocok untuk membuka karena masalah lisensi dan paten. Juga, IrisGL memiliki fungsi-fungsi API yang tidak relevan dengan grafis 3D. Sebagai contoh, termasuk windowing, keyboard dan mouse API, sebagian karena dikembangkan sebelum Sistem X Window dan Sun’s NEWS sistem dikembangkan.

Untuk lebih mempopulerkan openGL SGI mengijinkan pihak lain untuk mengembangkan standart openGL,dan beberapa vendor menyambut hal tersebut dengan membentuk OpenGL Architecture Review Board (ARB) .

Pendiri openGL adalah SGI, Digital Equepment Corporation, IBM, Intel dan Microsoft, pada tanggal 1 juli 1992 OpenGL versi 1.0 diperkenalkan.

Tahun 1994 SGI mengeluarkan gaggasan yang disebut “OpenGL + +” yang mencakup unsur-unsur seperti grafik adegan-API (mungkin berbasis di sekitar mereka Performer teknologi). Spesifikasi itu beredar di kalangan beberapa pihak yang berkepentingan – tetapi tidak pernah berubah menjadi sebuah produk pada tahun 1995, yang akan menjadi pesaing utama dari OpenGL. Pada tanggal 17 Desember 1997 Microsoft dan SGI memprakarsai Fahrenheit proyek, yang merupakan upaya bersama dengan tujuan mempersatukan OpenGL dan Direct3D antarmuka (dan menambahkan adegan-API grafik juga). Pada tahun 1998 Hewlett-Packard bergabung dengan proyek ini. Ini awalnya menunjukkan beberapa janji untuk membawa dunia komputer grafis 3D interaktif API, melainkan karena kendala keuangan di SGI, alasan strategis di Microsoft, dan kurangnya dukungan industri , itu ditinggalkan pada tahun 1999.

OpenGL mengalami beberapa revisi yang sebagian besar ada penambahan ektensi secara berangsur-angsur pada main body dari API. Contohnya OpenGL 1.1 (1997) ada penambahan glBindTexture. OpenGL 2.0 (2004) memasukkan tambahan yang paling penting yaitu OpenGL Shading Language (GLSL).

GLUT (GL Utility Toolkit)

Pengertian

Dikarenakan OpenGL tidak menyediakan interface sistem window ataupun input, maka untuk tujuan ini aplikasi harus mengunakan keseragaman spesifik platform. Dengan demikian jika aplikasi yang diinginkan tidak hanya berjalan di satu platfrom saja, maka perlu menggunakan GLUT

GLUT merupakan pengembangan dari OpenGL yang didesain untuk aplikasi dengan level kecil hingga menengah dan menggunkan callback function untuk menambahkan interaksi dari user. GLUT menyediakan interface untuk menejemen window, menu, dan peralatan input (keyboard, dan mouse). GLUT juga menyediakan fungsi otomatis untuk menggambar objek primitif (garis, lingkaran, titik, persegi),objek 3 dimensi wire (kerangka) maupun yang solid, seperti cube (kubus), sphere (bola), dan teapot (poci teh), cone (kerucut), torus, dan lain-lain .

GLUT dikembangkan oleh Mark Kilgard, yaitu penulis OpenGL Programming for the X Window System dan The Cg Tutorial: The Definitive Guide to Programmable Real-Time Graphics, ketika dia masih bekerja di Silicon Graphics.

Dua tujuan GLUT ialah menciptakan fleksibitas code antar platform yang dapat dijalankan lebih dari satu sistem operasi (Windows, Linux, Mac OS X, FreeBSD, OpenBSD, NetBSD), dan untuk lebih mudah mempelajari OpenGL. Dengan menggunakan GLUT hanya memerlukan sedikit code dibandingkan dengan OpenGL, tanpa mengetahui spesifikasi sistem operasi, dikarenakan OpenGL adalah sebagai mesin.

Pemrograman Berbasis Event

GLUT pada dasarnya dibangun untuk menciptakan aplikasi grafis menggunakan pemrograman yang bersifat prosedural. Di dalamnya terdapat fungsi main loop yang diatur oleh GLUT dan looping yang terjadi dalam aplikasi bertujuan untuk penanganan fungsi-fungsi callback sebagai input dari user seperti fungsi redraw, mouse, keyboard, joystick, dan lain-lain.

Untuk pemrograman OpenGL menggunakan C++, diperlukan library tambahan yaitu :
  1.  glut.h yang dicopy ke drive:\ Program Files\Microsoft Visual Studio 2010\Vc\include\GL
  2.  glut32.lib yang dicopy ke drive:\ Program Files\Microsoft Visual Studio 2010\Vc\lib
  3.  glut32.dll yang dicopy ke drive:\ Windows\System

Menejemen Window

Ada 5 fungsi yang harus dipanggil untuk melakukan instalansi window yaitu:
  1. glutInit(int argc,char**argv), Fungsi ini menginisialisasi glut dan memproses argument command_line yg disertakan(jika ada). Fungsi ini harus di panggil pertama kali sebelum pemanggilan terhadap fungsi-fungsi yang lain.
  2. glutInitDisplayMode(unsigned intmode), Fungsi ini digunakan untuk menentukan apakah akan menggunakan model pewarnaan RGBA atau indek warna. Dengan fungsi ini juga bisa menentukan apakah akan menggunakan windows buffer single atau double.
  3. GlutInitWindowPosisition(int.x,int.y), Fungsi ini menentukan letak window dengan patokkannya ialah pada window kiri atas.
  4. glutInitWindowSize(int width,int height), fungsi ini menspesifikasikan ukuran window yang dibuat dalam pixel.
  5. glutCreateWindow(char *string), fungsi untuk membuat window dalam konteks openGL, dan akan menghasilkan identitas atau judul window tersebut.

 Windowing dengan GLUT

Display Callback

  1. glutDisplayFunc(void(*func)(void), Fungsi ini memanggil fungsi lain yg menentukan konten dari windows yg telah di buat sebelumnya.
  2.  glutPostRedisplay(void), Untuk mengubah konten window
  3. glutMainLoop(void), Fungsi untuk event perulangan, display pada callback akan terus ditampilkan selama aplikasi itu tidak ditutup.

Sabtu, 12 Januari 2019

PEMBUATAN PRIMITIVE DRAWING


Primitif Drawing

OpenGL memiliki beberapa obyek dasar yang disebut primitif.Gambar-gambar kompleks dibuat dari kombinasi obyek-obyek primitif ini. Primitif mudah digambar pada layar monitor karena menggunakan persamaan geometrik sederhana. Contoh primitif / grafik dasar adalah :
  1. Titik
  2. Garis
  3. Segitiga
  4. Polygon

Line (Garis)

Pengertian garis menurut Leksikon Grafika adalah benda dua dimensi tipis memanjang. Sedangkan Lillian Gareth mendefinisikan garis sebagai sekumpulan titik yang bila dideretkan maka dimensi panjangnya akan tampak menonjol dan sosoknya disebut dengan garis. Terbentuknya garis merupakan gerakan dari suatu titik yang membekaskan jejaknya sehingga terbentuk suatu goresan. Untuk menimbulkan bekas, biasa mempergunakan pensil, pena, kuas dan lain-lain. Bagi senirupa garis memiliki fungsi yang fundamental, sehingga diibaratkan jantungnya senirupa. Garis sering pula disebut dengan kontur, sebuah kata yang samar dan jarang dipergunakan.

Pentingnya garis sebagai objek/elemen senirupa, sudah terlihat sejak dahulu kala.Nenek moyang manusia jaman dulu, menggunakan garis ini sebagai media ekspresi senirupa di gua-gua.Mereka menggunakan garis ini untuk membentuk obyek-obyek ritual mereka.Sebagai contoh adalah lukisan di dinding gua Lascaux di Prancis, Leang-leang di Sulawesi, Altamira di Spanyol dan masih banyak lainnya.

Selain berupa lukisan, nenek moyang manusia juga menggunakan garis sebagai media komunikasi, seperti huruf paku peninggalan bangsa Phoenicia (abad 12 – 10 SM) yang berupa goresan-goresan.

Disamping potensi garis sebagai pembentuk kontur, garis merupakan elemen untuk mengungkapkan gerak dan bentuk.Baik bentuk dua dimensi maupun tiga dimensi.

Circle (Lingkaran)

Lingkaran adalah suatu garis lengkung yang kedua ujungnya dan semua titik yang terletak pada garis lengkung tersebut mempunyai jarak yang sama jauh terhadap suatu titik tertentu.

“Dalam geometri Euklid, sebuah lingkaran adalah himpunan semua titikpada bidang dalam jarak tertentu, yang disebut jari-jari, dari suatu titik tertentu, yang disebut pusat. Lingkaran adalah contoh dari kurva tertutup sederhana, membagi bidang menjadi bagian dalam dan bagian luar.”

Lingkaran didefiniskan sebagai garis melengkung yang kedua ujungnya bertemu pada jarak yang sama dari titik pusat. Lingkaran adalah contoh kurva tertutup sederhana yang merupakan himpunan titik pada ruang dua dimensi yang berjarak sama dengan suatu titik tertentu yang disebut pusat lingkaran. Lingkaran adalah bentuk sempurna dari semua benda yang ada di alam semesta karena lingkaran tidak mempunyai ujung dan pangkal.

Arc

Dalam geometri Euklides, sebuah arc adalah segmen tertutup kurva dapat diturunkan dalam dua dimensi pesawat; sebagai contoh, busur yang melingkar adalah segmen lingkaran.Jika busur segmen menempati lingkaran besar (atau elips besar), itu dianggap segmen besar-arc. Dalam objek 2D biasanya Digunakan untuk menggambar kurva/garis lengkung/busur.

Polygon

Poligon berasal dari kata polygon yang berarti poly : banyak dan gon(gone) : titik. Yang kita maksud disini adalah poligon yang digunakan sebagai kerangka dasar pemetaan yang memiliki titik titik dimana titik tersebut mempunyai sebuah koordinat X dan Y.

“Poligon (secara literal “banyak sudut”) merupakan bentuk datar yang terdiri dari garis lurus yang bergabung untuk membentuk rantai tertutup.

Poligon digunakan untuk merepresentasikan obyek-obyek duadimensi.Satu poligon paling sedikit dibatasi oleh tiga garis di antara tiga titik yang saling bertemu membentuk bidang.Grafik tidak hanya terdiri dari gambar-gambar statis. Grafik tersebut dapat dimanipulasi secara dinamis, yaitu :

1. Motion dynamics : obyek / background bergerak

2. Update dynamics : obyek berubah bentuk, warna, dll.

Itulah sedikit informasi yang bisa saya berikan.

Definisi Objek Grafik 2 Dimensi


Animasi 2D

Merupakan dimensi panjang dan lebar dalam satu bidang datar, jadi hanya ada panjang dan lebar saja tanpa adanya dimensi tebal. Bidang dua dimensi dapat digambarkan dengan sumbu X dan Y. Agar dapat tampil dengan sempurna, gambar yang akan ditampilkan dengan teknik ini harus memiliki nilai koordinat x dan y minimum 0 dan maksimum sebesar resolusi yang digunakan.

Definisi warna grafik 2 dimensi:

  • Warna terdiri dari 3 elemen warna yaitu red (r), green (g) dan blue (b) yang nilainya antara 0 dan 1
  • Membuat obyek 2 dimensi

Contoh obyek 2 dimensi

#include<GL/glut.h>
voiddisplay()
{
glClear (GL_COLOR_BUFFER_BIT);
glColor3f (1.0, 1.0, 0.0);
glBegin(GL_POINTS);
glVertex3f (0.0, 0.0, 0.0);
glVertex3f (0.0, 0.8, 0.0);
glVertex3f (0.8, 0.0, 0.0);
glVertex3f (0.0, -0.8, 0.0);
glVertex3f (-0.8, 0.0, 0.0);
glEnd();
glFlush ();
}

voidkunci(unsigned char key, int x, int y)
{
switch(key)
{
/* aplikasi berhenti ketika tombol q ditekan */
case27 :
case’q’:
exit(0);
break;
}
glutPostRedisplay();
}

intmain(int argc, char *argv[])
{
glutInitWindowSize(400,400);
glutInitWindowPosition(100,100);
glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE);
glutCreateWindow(“Primitif”);
glutDisplayFunc(display);
glutKeyboardFunc(kunci);
glutMainLoop();
return0;
}

Definisi obyek grafik 2D


1. Obyek grafis 2D adalah sekumpulan titik-titik 2D yang dihubungkan dengan garis lurus baik berupa polyline,polygon atau kurva

2. Obyek grafik 2D didefinisikan sebagai sekumpulan titik 2D yang secara komputasi dinyatakan sebagai array 1D,atau linked-list

3. Definisi Warna obyek grafik 2D:

typedef struct {
float r;
float g;
float b;
} color_t;

4. Warna terdiri dari 3 elemen warna:

yaitu red (r), green (g) dan blue (b) yang nilainya antara 0 dan 1
void setColor(color_t col)
{
glColor3f(col.r, col.g, col.b);
}


5. Membuat struktur data obyek 2D
6. Macam-Macam objek 2D :
  • · Line
  •  Circle
  •  Arc
  •  Polygon
  •  Text
  •  Section
  •  Rectangle
  •  Ellips
  •  Donut
  •  Star
  •  Helix

Dari macam-macam objek 2d ini saya akan membahas 3 macam:

Circle

Circle atau lingkaran adalah object 2 dimensi yang memiliki ukuran diameter dan jari-jari. Circle atau lingkaran merupakan kumpulan titik-titik yang tak berhingga dan saling berhubung.

Line

Objek line/garis adalah objek salah satu 2 dimensi yang sangat mendasar dan sering digunakan untuk perancangan gambar kerja.Lineberasal dari 2 titik yang saling terhubung.

Polygon

Polygon adalah suatu fungsi yang mirip dengan polyline, hanya sajahasilnya adalah kurva tertutup. Pada polygon digunakan konsep array dalam menyatakan objek 2D sebagaikumpulan titik 2D. Polygon digunakan untuk merepresentasikan objek-objek duadimensi.
Membuat struktur data warna

Color, untuk memberi warna pada objek, seperti titik atau garis, dapat dilakukan dengan menggunakan fungsi àglColor3f(red,green,blue). Di mana red, green, blue berada pada 0 sampai dengan 1, yang menunjukkan skala pencerahan dari masing-masing skala. Beberapa fungsi color :
  1. glColor3f(0,0,0);//black
  2. glColor3f(0,0,1);//blue
  3. glColor3f(0,1,0);//green
  4. glColor3f(0,1,1)//cyan
  5. glColor3f(1,0,0)//red
  6. glColor3f(1,0,1)//magenta
  7. glColor3f(1,1,0);//yellow
  8. glColor3f(1,1,1);//white

Menerapkan Transformasi obyek 2D



1. Struktur data titik dan vector

Struktur data dari titik 2D> typedef struct {

float x,y;

} point2D_t;

Struktur data dari vektor 2D > typedef struct {

float v[3];

} vector2D_t;

2. Perubahan struktur data

Fungsi ini digunakan untuk memindahkan tipe data titik menjadi tipe data vektor.Hal ini sangat berguna untuk operasional matrik yang digunakan dalam melakukan transformasi dan pengolahan matrik pada grafika komputer.

Point 2 Vector :

vector2D_t point2vector(point2D_t pnt)
{
vector2D_t vec;
vec.v[1]=pnt.x;
vec.v[2]=pnt.y;
vec.v[3]=1.;
}


Point 2 Point :

Fungsi ini digunakan untuk memindahkan tipe data vektor menjadi tipe data titik. Hal ini sangat berguna untuk penyajian grafis setelah proses pengolahan matrik yang dikenakan pada obyek 2D. 

point2D_t vector2point(vector2D_t vec)
{
point2D_t pnt;
pnt.x=vec.v[1];
pnt.y=vec.v[2];
}


3. Translasi

Translasi adalah perpindahan obyek dari titik P ke titik P’ secara linier.

4. Scalling

Scaling m adalah perpindahan obyek dari titik P ke titik P’, dimana jarak titik P’ adalah m kali titik P

5. Rotasi

Rotasi adalah perpindahan obyek dari titik P ke titik P’, yang berupa pemindahan berputar sebesar sudut θ

6. Perkalian Matrix

Perkalian matrik dengan matrik menghasilkan matrik • Perkalian matrik dengan vektor menghasilkan vektor Perkalian matrik ini digunakan untuk operasional transformasi dari obyek 2D dan untuk komposisi (menggabungkan) tranformasi.
Perkalian matrik a dan matrik b menghasilkan matrik c yang dirumuskan dengan
dimana i dan j bernilai 0 s/d 2

7. Komposisi Transformasi

Komposisi transformasi adalah menggabungkan beberapa tranformasi, sehingga dapat menghasilkan bentuk transformasi yang lebih kompleks
Komposisi tranformasi dapat dilakukan dengan mengalikan matrik-matrik transformasi

PEMROGRAMAN GRAFIS 3D DENGAN OPENGL DAN GLUT



Sebuah dunia 3d terdiri dari 4 elemen, yaitu objek atau grup objek, material objek, pencahayaan, dan camera, Objek 3d dari OpenGL terdiri dari beberapa proses sebelum ditampilkan pada suatu window.

objek melewati modelview matrix -> clipping ->projection matrix -> viewport matrix -> window
sebuah matrik hanya merupakan operasi matematika matrix sederhana. Matrix-matrix mentransformasikan objek menjadi tampilan sesuai yang diinginkan.

code dibawah adalah contoh mengatur kamera:

void setCamera()
{
//set the camera
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
gluLookAt(3.3,3.3,3.0,0,0.25,0,0.0,1.0,0.0);
}

Suatu kamera mempunyai prinsip dengan mata. Pada dunia 3d sebuah kamera mempunyai titik posisi dan titik arah pandang dalam koordinat 3d x,y,z. posisi kamera sama dengan posisi “dari”mana kita melihat objek. titik arah pandang adalah arah “ke”mana mata kita memandang.

Pada OpenGL pengaturan suatu proyeksi diatur dengan mengatur matrix modelview. bisa dilihat pada code diatas bahwa ddibawah matrix model view di load suatu matriks identitas.


void cube()
{
//menggambar kubus dan transformasi tarnslasi ke titik 0.5 0.5 0.5 dan skala 1 1 1
glPushMatrix();
glTranslated(0.5,0.5,0.5);//cube
glScaled(1.0,1.0,1.0);
glutSolidCube(1.0);
glPopMatrix();
}


fungsi diatas adalah fungsi untuk menggambar model kubus solid. GLUT menyediakan objek sederhana yang langsung bisa dipanggil dengan mudah kerangka kubus dgn memanggil fungsi glutWireCube(x). Pada code diatas sebelum fungsi pemanggil obejk kubus dipanggil terjadi 2 buah transformasi yaitu skala dan rotasi. Tanpa ada push dan pop serta transformasi secara default objek akan dirender pada skala default dan posisi default yaitu x,y,z = 0 0 0.

Operasi push dan pop matriks adalah operasi penambahan stack matriks pada modelview matriks untuk transformasi. tanpa push berarti menambahkan matriks, pada code diatas ditambahkan transalasi atau pergeseran dx,dy,dz = 0,5 0,5 0,5. operasi pop . Matriks tarnsformasi dirubah dengan menambahkan translate dan scale pada stack matriks model view sehingga objek kubus yang dipanggil melalui perhitungan tarnsformasi. glPop mengeluarkan matriks tarnsformasi keluar dari tumpukan sehingga mengambalikan matriks modelview menjadi matriks identitas.

code lengkap :

#include <Windows.h>
#include <iostream>
#include <gl\GL.h>
#include <gl\GLU.h>
#include <gl\glut.h>
#include <math.h>

void cube()
{
//menggambar kubus dan transformasi tarnslasi ke titik 0.5 0.5 0.5 dan skala 1 1 1
glPushMatrix();
glTranslated(0.5,0.5,0.5);//cube
glScaled(1.0,1.0,1.0);
glutSolidCube(1.0);
glPopMatrix();
}

void setMaterial()
{
//set properties of surfaces material
GLfloat mat_ambient[] = {0.7f,0.7f,0.7f,1.0f}; // ada 4 jenis material yang dipakai, dengan kombinasi warna tertentu
GLfloat mat_diffuse[] = {0.6f,0.6f,0.6f,1.0f};
GLfloat mat_specular[] = {1.0f,1.0f,1.0f,1.0f};
GLfloat mat_shininess[] = {50.0f};
glMaterialfv(GL_FRONT,GL_AMBIENT,mat_ambient);
glMaterialfv(GL_FRONT,GL_DIFFUSE,mat_diffuse);
glMaterialfv(GL_FRONT,GL_SPECULAR,mat_specular);
glMaterialfv(GL_FRONT,GL_SHININESS,mat_shininess);
}

void setLighting()
{
//set light sources
GLfloat lightIntensity[] = {0.7f,0.7f,0.7f,1.0f};//mensetting pencahayaan
GLfloat light_position[] = {2.0f,6.0f,3.0f,0.0f};
glLightfv(GL_LIGHT0,GL_DIFFUSE,lightIntensity);
glLightfv(GL_LIGHT0,GL_POSITION,light_position);
}


void setViewport()
{
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
double winHt = 1.0;//half height of the window
glOrtho(-winHt*64/48,winHt*64/48,-winHt,winHt,0.1,100.0);
}


void setCamera()
{
//set the camera
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
gluLookAt(3.3,3.3,3.0,0,0.25,0,0.0,1.0,0.0);
}


void displayObject()
{
setMaterial();
setLighting();
setViewport();
setCamera();
//startDrawing
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
cube();//memanggil fungsi menggambar kubus
glFlush();//mengirim smua objek untuk dirender
}


void main(int argc, char **argv)
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB|GLUT_DEPTH);
glutInitWindowSize(640,480);
glutInitWindowPosition(100,100);
glutCreateWindow(“simple 3d scene”);
glutDisplayFunc(displayObject);//fungsi dari display object yang menggabungkan kubus lighting material dan kamera
glEnable(GL_LIGHTING);
glEnable(GL_LIGHT0);
glShadeModel(GL_SMOOTH);
glEnable(GL_DEPTH_TEST);
glEnable(GL_NORMALIZE);
glClearColor(1.0f,1.0f,1.0f,0.0f);
glViewport(0,0,640,480);
glutMainLoop();
}


output :

voila sebuah kubus berwarna abu-abu tergambar. Namun kubus tersebut kurang tampak realistis karena proyeksi yang digunakan adalah ortogonal buka persepektif. Proyeksi perspektif akan membuat objek semakin realistis dengan menghadirkan efek jauh dekat objek.

Sekian dan Terimakasih. Semoga bermanfaat.

Tranformasi 3 Dimensi



Transformasi 3D pada dasarnya hampir sama dengan transformasi 2D, hanya pada 3D kita menghitung sumbu Z. Sama seperti pada 2D, ada tiga transformasi dasar yang dapat dilakukan terhadap verteks, yaitu:
  1. Translasi. 
  2. Pensekalaan. 
  3. Rotasi. 

Titik hasil transformasi dapat diperoleh melalui rumus affine transformation

Q = P * M + tr

Dimana:

Q: (Qx, Qy, Qz) menyatakan matrix 1×3 yang berisi titik hasil transformasi.

P: (Px, Py, Pz) menyatakan matrik 1×3 yang berisi titik yang akan ditransformasi.

tr: (trx, try, trz) menyatakan matriks 1×3 yang berisi banyaknya pergeseran sumbuk x,y, z.

M: Matriks transformasi berukuran 3×3 seperti berikut


Translansi

Translasi dilakukan dengan menggunakan matriks sebagai berikut:



Scalling (Penskalaan)

Penskalaan dilakukan dengan mengisi tr = (0,0,0) dan matriks M diatur seperti beikut.


Rotasi

Berbeda dengan rotasi di 2D yang menggunakan titik pusat(0,0) sebagai pusat perputaran,
rotasi 3D menggunakan sumbu koordinat sebagai pusat perputaran. Dengan demikian ada 3
macam rotasi yang dapat dilakukan, yaitu:
  1. Rotasi terhadap sumbu X 
  2. Rotasi terhadap sumbu Y 
  3. Rotasi terhadap sumbu Z 

Rotasi terhadap sumbu X, Y, dan Z diperlihakan seperti pada gambar berikut



Mengingat ada 3 buah sumbu rotasi maka matriks transformasi yang digunakan juga bergantung kepada sumbu putar. Adapun isi masing-masing transformasi sesuai dengan sumbu putar didefinisikan sebagai berikut:




Sekian dan terimakasih.

PENGEMBANGAN BERORIENTASI OBYEK




Apa itu Pengembangan Berorientasi Obyek?

Pengembangan berorientasi objek yaitu cara berpikir baru tentang perangkat lunak berdasarkan abstraksi yang terdapat dalam dunia nyata. Dalam konteks pengembangan menunjuk pada bagian awal dari siklus hidup pengembangan sistem, yaitu survei, analis, desain, implementasi dan pemeliharaan sistem. Hal yang lebih penting dalam pengembangan berorientasi objek adalah konsep mengidentifikasi dan mengorganisasi domain aplikasi dari pada penggunakan bahasa pemrograman, berorientasi objek atau tidak.

Metodologi Berorientasi Objek

Metodologi merupakan sekumpulan aturan/panduan penerapan dan sekumpulan heuristic untuk menentukan kapan suatu tahapan dianggap lengkap. Dalam MBO terdapat istilah tahapan yang merupakan batas fase perkembangan pada siklus hidup perangkat lunak. Tahapan awal pengembangan suatu perangkat lunak hendaknya mencerminkan persoalan-persoalan nyata, dan tahapan akhir mencerminkan hasil/produk. Suatu metode dianggap baik apabila menyediakan produk terdefinisi untuk setiap tahapan (chart, diagram checklist) dan menggunakannya sebagai tool yang benar.
Suatu proses dalam suatu metodologi dianggap baik apabila :
  • Menyediakan mekanisme semi-otomatis dalam pencarian konsep persoalan yang akan dipecahkan.
  • Menyajikan mekanisme pengujian di setiap tahapan proses.

Struktur Obyek

Struktur Objek dan Hirarki Kelas

  • Struktur kelas dibagi dua macam, yaitu Whole-Part Structure dan Gen-Spec Structure.
1. Whole-Part Structure memperlihatkan hirarki dari suatu kelas sebagai komponen dari kelas lain yang disebut juga sub objek. Contohnya, kelas Mobil adalah Whole dan komponennya Mesin, Rangka, dan lain-lain, merupakan Part1, Part 2, …, Part n.

Notasi untuk whole-part structure
2. Gen-Spec Structure memperlihatkan kelas sebagai spesialisasi dari kelas di atasnya. Kelas yang mempunyai sifat umum disebut Generalization, Superclass atau Topclass, sedangkan kelas yang mempunyai sifat khusus disebut Specialization.

Notasi untuk gen-spec structure

Contohnya, kelas Mobil adalah Generalization, sedangkan Sedan, Truk, Minibus, dan lain-lain merupakan Specizlization1, Specialization2, …, Specialization n, yaitu kelas yang mempunyai sifat khusus.
  • Atribut
Atribut menggambarkan data yang dapat memberikan informasi mengenai kelas atau objek dimana atribut tersebut berada.
Notasi untuk atribut

  • Metode

Metode (method) disebut juga service atau operator adalah prosedur atau fungsi seperti yang terdapat dalam bahasa Pascal pada umumnya, tetapi cara kerjanya agak berlainan. Metode adalah subprogram yang tergabung dalam objek bersama-sama dengan atribut. Metode dipergunakan untuk pengaksesan terhadap data yang terdapat dalam objek tersebut.

Notasi untuk metode

  •  Pesan (Message)
Message merupakan cara untuk berhubungan antara satu objek dengan objek lain. Suatu pesan dikirimkan oleh suatu objek kepada objek tertentu dapat digambarkan dengan anak panah.

Notasi untuk message

Object Oriented Analysis

OOA (Object Oriented Analysis)

OOA mempelajari permasalahan dengan menspesifikasikannya atau mengobservasi permasalahn tersebut dengan menggunakan metode berorientasi objek. Biasanya analisa sistem dimulai dengan adanya dokumen permintaan (requirement) yang diperoleh dari semua pihak yang berkepentingan. (Misal: klien,developer, pakar, dan lain-lain).

Dokumen permintaan memiliki 2 fungsi yaitu : memformulasikan kebutuhan klien dan membuat suatu daftar tugas. Analisis berorientasi obyek (OOA) melihat pada domain masalah, dengan tujuan untuk memproduksi sebuah model konseptual informasi yang ada di daerah yang sedang dianalisis. Model analisis tidak mempertimbangkan kendala-kendala pelaksanaan apapun yang mungkin ada, seperti konkurensi, distribusi, ketekunan, atau bagaimana sistem harus dibangun. Kendala pelaksanaan ditangani selama desain berorientasi objek (OOD).

Sumber-sumber untuk analisis dapat persyaratan tertulis pernyataan, dokumen visi yang formal, wawancara dengan stakeholder atau pihak yang berkepentingan lainnya. Sebuah sistem dapat dibagi menjadi beberapa domain, yang mewakili bisnis yang berbeda, teknologi, atau bidang yang diminati, masing-masing dianalisis secara terpisah.

Hasil analisis berorientasi objek adalah deskripsi dari apa sistem secara fungsional diperlukan untuk melakukan, dalam bentuk sebuah model konseptual. Itu biasanya akan disajikan sebagai seperangkat menggunakan kasus, satu atau lebih UML diagram kelas, dan sejumlah diagram interaksi. Tujuan dari analisis berorientasi objek adalah untuk mengembangkan model yang menggambarkan perangkat lunak komputer karena bekerja untuk memenuhi seperangkat persyaratan yang ditentukan pelanggan.

UML (Unified Modeling Language) 

adalah sebuah bahasa yang berdasarkan grafik/gambar untuk memvisualisasi, menspesifikasikan, membangun, dan pendokumentasian dari sebuah sistem pengembangan software berbasis OO (Object-Oriented). UML sendiri juga memberikan standar penulisan sebuah sistem blue print, yang meliputi konsep bisnis proses, penulisan kelas-kelas dalam bahasa program yang spesifik, skema database, dan komponen-komponen yang diperlukan dalam sistem software. Unified Model Language (UML) adalah bahasa universal untuk :
memvisualisasikan grafis model yang tepat.
menetapkan model yang tepat, lengkap, dan tidak ambigu untuk mengampil semua keputusan penting dalam analisis, desain dan implementasi.
membangun model yang dapat dihubungkan langsung dengan bahasa pemrograman.
mendokumentasikan semua informasi yang dikumpulkan oleh tim sehingga memungkinkan untuk berbagi informasi.

Object Oriented Design

OOD (Object Oriented Design)

OOD mengubah model konseptual yang dihasilkan dalam analisis berorientasi objek memperhitungkan kendala yang dipaksakan oleh arsitektur yang dipilih dan setiap non-fungsional – teknologi atau lingkungan – kendala, seperti transaksi throughput, response time, run – waktu platform, lingkungan pengembangan, atau bahasa pemrograman.

Desain model berdasarkan model analisa tetapi berisi detail implementasi. Fokus dari object design adalah perencanaan struktur data dan algoritma yang diperlukan untuk implementasi setiap kelas. Objek domain aplikasi dan objek domain komputer dijelaskan dengan menggunakan konsep dan notasi berorientasi objek yang sama.
Class Diagram

Class adalah sebuah spesifikasi yang jika diinstansiasi akan menghasilkan sebuah objek dan merupakan inti dari pengembangan dan desain berorientasi objek. Class menggambarkan keadaan (atribut/properti) suatu sistem, sekaligus menawarkan layanan untuk memanipulasi keadaan tersebut (metoda/fungsi). Class diagram menggambarkan struktur dan deskripsi class, package dan objek beserta hubungan satu sama lain seperti containment , pewarisan, asosiasi, dan lain-lain.

Class memiliki tiga area pokok :
  1. Nama (dan stereotype)
  2. Atribut
  3. Metoda

Atribut dan metoda dapat memiliki salah satu sifat berikut :

  1. Private , tidak dapat dipanggil dari luar class yang bersangkutan
  2. Protected , hanya dapat dipanggil oleh class yang bersangkutan dan anak-anak yang mewarisinya
  3. Public , dapat dipanggil oleh siapa saja

Class dapat merupakan implementasi dari sebuah interface , yaitu class abstrak yang hanya memiliki metoda. Interface tidak dapat langsung diinstansiasikan, tetapi harus diimplementasikan dahulu menjadi sebuah class. Dengan demikian interface mendukung resolusi metoda pada saat run-time .

Sesuai dengan perkembangan class model, class dapat dikelompokkan menjadi package . Kita juga dapat membuat diagram yang terdiri atas package.


Hubungan Antar Class

  1. Asosiasi, yaitu hubungan statis antar class . Umumnya menggambarkan class yang memiliki atribut berupa class lain, atau class yang harus mengetahui eksistensi class Panah navigability m enunjukkan arah query antar class .
  2. Agregasi, yaitu hubungan yang menyatakan bagian (“terdiri atas..”).
  3. Pewarisan, yaitu hubungan hirarkis antar class . Class dapat diturunkan dari class lain dan mewarisi semua atribut dan metoda class asalnya dan menambahkan fungsionalitas baru, sehingga ia disebut anak dari class yang diwarisinya. Kebalikan dari pewarisan adalah generalisasi.
  4. Hubungan dinamis, yaitu rangkaian pesan ( message ) yang di- passing dari satu class kepada class Hubungan dinamis dapat digambarkan dengan menggunakan sequence diagram yang akan dijelaskan kemudian.

Sequence Diagram

Sequence diagram menggambarkan interaksi antar objek di dalam dan di sekitar sistem (termasuk pengguna, display , dan sebagainya) berupa message yang digambarkan terhadap waktu. Sequence diagram terdiri atar dimensi vertikal (waktu) dan dimensi horizontal (objek-objek yang terkait). Sequence diagram biasa digunakan untuk menggambarkan skenario atau rangkaian langkah-langkah yang dilakukan sebagai respons dari sebuah event untuk menghasilkan output tertentu. Diawali dari apa yang men- trigger aktivitas tersebut, proses dan perubahan apa saja yang terjadi secara internal dan output apa yang dihasilkan. Masing-masing objek, termasuk aktor, memiliki lifeline vertikal. Message digambarkan sebagai garis berpanah dari satu objek ke objek lainnya. Pada fase desain berikutnya, message akan dipetakan menjadi operasi/metoda dari class. Activation bar menunjukkan lamanya eksekusi sebuah proses, biasanya diawali dengan diterimanya sebuah message.

Untuk objek-objek yang memiliki sifat khusus, standar UML mendefinisikan icon khusus untuk objek boundary, controller dan persistent entity .

Sekian dan terimakasih. semoga bermanfat.


Graphic User Interface (GUI)




A. Pengertian GUI Pada JAVA 

Graphic User Interface (GUI) adalah pemrograman dengan bahasa Java yang dibuat menggunakan aplikasi yang berbasiskan GUI. Tujuannya adalah menambahkan beberapa komponen yang tidak bisa dibuat dalam basis text.

Komponen-konponen tersebut bisa berupa tombol, gambar, dll. Tujuannya adalah untuk memudahkan user menggunakan program yang dibuat tersebut.

Kalau dilihat pengertian tentang GUI secara umum adalah Interaksi yang dapat dilaksanakan oleh user melalui menu dan icon yang diperlihatkan dalam modus grafik. Contoh implementasi GUI-based shell ini adalah pada sistem operasi Microsoft Windows.

B. Jenis-Jenis Gui

Diantara jenis-jenis gui di java adalah:

a) AWT (Abstract Window Toolkit)

AWT (Abstract Window Toolkit) adalah GUI Toolkit pertama pada bahasa pemrograman Java, sayang-nya AWT ini sangat-sangat kekurangan komponen yang biasa digunakan untuk membangun sebuah aplikasi desktop secara lengkap (komponen tabel saja tidak ada ) Terlepas dari kurang-nya komponen GUI yang terdapat pada AWT (Abstract Window Toolkit), aplikasi yang dibangun menggunakan AWT (Abstract Window Toolkit) akan tampak seperti aplikasi native. Maksudnya yaitu, jika aplikasi yang dibangun menggunakan AWT (Abstract Window Toolkit) ini dijalankan pada Sistem Operasi Windows. Maka aplikasi ini akan terlihat seperti aplikasi Windows pada umum-nya, dan begitu juga jika dijalankan pada Sistem Operasi Mac ataupun GNU/Linux. Kenapa ini bisa terjadi, karena AWT (Abstract Window Toolkit) ini benar-benar memanggil native subrutin untuk menggambar setiap komponen-nya ke layar.

b) SWT (Standart Widget Tookit)

SWT (Standart Widget Toolkit) adalah sebuah GUI Toolkit yang dikeluaran oleh IBM sebagai alternatif dari AWT/Java Swing milik SUN Microsystem. SWT terdapat pada package java.swt. package java.swt berisis komponen-komponen GUI yang bersifat platform sistem operasi.

Tampilan dari java.swt menyesuaikan dengan sistem operasi sehingga mengakibatkan dependensi sistem. Namun performa dari SWT ini sama dengan swing. Yang membedakan antara SWT (Standart Widget Toolkit) dan AWT/Java Swing adalah SWT ini benar-benar mengakses native GUI library yang terdapat pada Sistem Operasi melalui JNI (Java Native Interface).

c) SWING

Java Swing adalah librari java yang digunkan untuk menciptakan Grafik User Interface (GUI). Dengan Java Swing kita dapat membuat user interface yang cross platform atau OS independent. Artinya user interface yang kita buat dapat dijalankan pada system operasi apa saja (OS yang suport Java) dengan tampilan yang relative sama. Bahkan kita dapat membuat user interface yang menyerupai Windows XP, Mac OS atau Linux tanpa tergantung dari OS yang kita gunakan. SWING, adalah salah satu bagian dari Java Foundation Classes (JFC). Pada JFC ini juga terdapat fasilitas untuk menambahkan Rich Graphic Functionality.

LANGKAH-LANGKAH PRAKTIKUM

cthAWT1.java
import java.awt.*;
public class cthAWT1 {
public static void main(String[] args) {
Frame myFrame = new Frame(“Contoh program AWT”);
Label myLabel = new Label(“Selamat belajar JAVA”);
myFrame.add(myLabel);
myFrame.setSize(200,150);
myFrame.show();
}
}
CthAWT2.java
import java.awt.*;
class frameTurunan extends Frame {
Label myLabel = new Label (“Selamat Belajar JAVA!”);
public frameTurunan(String judul) {
setTitle (judul);
setSize(200,200);
add(myLabel);
show();
}
}
public class chtAWT2 {
public static void main(String[] args) {
frameTurunan f = new frameTurunan(“Ini FrameTurunan”);
}
}
CthSWING1.java
import javax.swing.*;
public class cthSwing1 {
public static void main(String[] args) {
JFrame myFrame= new JFrame(“Contoh program Swing”);
Jlabel myLabel= new JLabel(“Selamat belajar JAVA”);
myFrame.add(myLabel);
myFrame.setSize(200,150);
myFrame.setVisible(true);
myFrame.SetDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
cthSWING2.java
import javax.swing.*;
class frameTurunan extend JFrame {
JLabel myLabel= new JLabel(“Selamat Belajar JAVA!”);
public frameTurunan(String judul) {
setTitle(judul);
setSize(200,200);
add(myLabel);
setVisible(true);
}
}
public class cthSwing2 {
public static void main(String[] args) {
frameTurunan f = new frameTurunan(“Ini FrameTurunan”);
}
}
Dip

Komunikasi Dengan Database

Komunikasi Dengan Database




JAVA DATABASE CONECTIVITY (JDBC)

Sistem Basis Data pada Java

Database merupakan salah satu bagian inti dari Sistem Informasi yang menyimpan data untuk proses pengolahan nantinya. Agar aplikasi bisa mengakses data dari suatu database engine, maka diperlukan suatu mekanisme koneksi antara aplikasi dan database tersebut. Pada bahasa pemrograman java terdapat kumpulan kelas yang digunakan khusus untuk koneksi database.

Komponen database pada java mengikuti standar SQL (Structured Query Language), sehingga libraryfungsinya dapat ditemukan dalam package java.sql.* dan javax.sql.*.

Terdapat 3 langkah utama untuk melakukan koneksi ke database : (1) membuat koneksi sengan server database. (2) Membuat perintah dan mengirimkannya ke server database. (3) menerima dan mengolah hasil.

Untuk mendapatkan koneksi database, diperlukan 3 langkah, yaitu :
  1.  Menginstalasi driver database yang digunakan
  2.  menciptakan instance object dari server
  3.  melakukan registrasi koneksi ke database

Setelah berhasil dilakukan, maka kita hanya perlu melakukan registrasi koneksi, dan menciptakan koneksi melalui interface Connection berdasarkan URL disertai dengan username dan password database

PENGERTIAN

JDBC (Java database connectivity) adalah spesifikasi standar dari JavaSoft API (Aplication Programming Interface) yang memungkinkan program Java untuk mengakses sistem database manajemen. JDBC menyediakan methods untuk melakukan query dan modifikasi data pada RDBMS seperti Oracle, SQL Server, MySQL, dll menggunakan Driver Manager. JDBC mirip dengan ODBC (Open Database Connectivity), hanya saja JDBC spesifik digunakan untuk program Java. ODBC bersifat language independent.

JDBC memiliki beberapa kegunaan, yaitu membantu programmer untuk koneksi dengan data source, membantu mengirimkan query dan update statements ke database, dan menerima serta memroses hasil yang didapatkan dari database sesuai dengan query yang diberikan.Untuk melakukan koneksi ke suatu sumber data, diperlukan database driver yang akan menjadi jembatan antara Aplikasi dengan Database. Database driver ini bersifat spesifik untuk setiap sumber data. Misalnya, Database Driver MySQL hanya bisa digunakan untuk melakukan koneksi ke database MySQL, begitu juga dengan Database Driver PostgreSQL hanya untuk PostgreSQL.

Komponen utama JDBC

  1. Driver adalah komponen untuk menangani masalah komunikasi dengan server database.
  2. DriverManager adalah komponen untuk menangani objek driver.
  3. Connection adalah komponen yang menyimpan koneksi ke database.
  4. Statement adalah komponen yang menangani perintah SQL ke database.
  5. ResultSet adalah komponen yang menyimpan data hasil perintah ke database.
  6. SQLException adalah komponen untuk menangani kesalahan-kesalahan yang mungkin terjadi saat pengolahan database.


Memanggil Driver JDBC

Untuk menghubungkan database MySQL dengan Java, perlu dilakukan pemanggilan driver JDBC. Driver adalah sebuah library yang berisi perintah-perintah untuk berkomunikasi dengan server database.

Sebelum mulai menulis program, import terlebih dahulu package java.sql.*. karena di dalam library ini terdapat kelas-kelas seperti DriverManager, Connection, dan ResultSet.

import java.sql.*

Untuk memanggil driver JDBC bisa menggunakan

Class.forName(namaDriver);


atau

Class.forName(namaDriver).newInstance();

Keduanya bertujuan untuk registrasi Class Driver. Perintah tersebut dapat menghasilkan error bila driver tidak ditemukan, sehingga perlu dilakukan penanganan, menggunakan ClassNotFoundException.

try {

// perintah pemanggilan driver

} catch (ClassNotFoundException exc) {

// penanganan kesalahan

}


Membangun Koneksi

Setelah berhasil melakukan pemanggilan driver, maka dilanjutkan dengan membangun koneksi. Untuk membuat koneksi tidak perlu dengan menciptakan object baru. Karena pembuatan object telah dienkapsulasi pada kelas DriverManager. Jadi, untuk mendapatkan object hanya dengan syntax :

DriverManager.getConnection(url, username, password);
Sama seperti pemanggilan driver, perintah kali ini dapat menyebabkan error. Untuk itu, diperlukan penanganan. Namun, kali ini menggunakan SQLException, karena kesalahan yang mungkin terjadi ada di dalam database engine.

try {

Connection conn = DriverManager.getConnection(URL, username, password);

} catch (SQLException exc) {

// penanganan kesalahan

}


URL bisa dibuat dengan format : Jdbc:<DBServer>://[host]:[port]/<NamaDB>

Username : user pada server database

Password : password untuk user diatas


Membuat Object Statement

Statement merupakan objek interface yang diciptakan dari method Connection.createStatement().Objek Statement digunakan untuk penerimaan statement SQL tanpa parameter.

Perintah Statement :

Statement stat = Connection.createStatement();

Melakukan Eksekusi

Sekarang, objek statement telah dibuat dan sudah bisa digunakan untuk mengirim perintah SQL, kemudian mengeksekusinya. Untuk melakukan eksekusi, dibagi menjadi 2 bagian.
  1. Pertama, menggunakan method executeQuery(). Method ini dipakai untuk perintah SELECT,sehingga akan memberikan nilai kembalian dalam bentuk ResultSet.
  2. Kedua, menggunakan method executeUpdate(). Method ini dipakai pada perintah INSERT, UPDATE, dan DELETE. Untuk melakukan perintah DELETE :

PreparedStatement stat = conn.prepareStatement(perintah/query delete);

stat.executeUpdate();

Menerima hasil dan memprosesnya

Hasil statement akan memberikan hasil, jikaperintah yang digunakan adalah SELECT. Hasil kembalian berupa ResultSet.

ResultSet rs = stat.executeQuery(perintah SQL);

If( rs.next() ) {

// ambil nilai dan masukan ke dalam variabel

}


langkah-langkah diatas merupakan cara yang paling sederhana untuk melakukan akses database pada bahasa pemrograman Java.

EMPAT KOMPONEN PENTING DARI JDBC :

1. JDBC-API

JDBC-API menyediakan fasilitas untuk mengakses database relasional dari program berbahasa Java. Melalui komponen ini user dapat melakukan proses query dan perubahan data dalam database. JDBC-API memiliki package utama yang tersedia pada java.sql dan javax.sql.

2. JDBC Driver Manager

Merupakan komponen kelas utama yang mendefinisikan object yang mengkoneksikan aplikasi Java ke JDBC driver. Komponen ini berfungsi untuk mengatur beberapa tipe JDBC database driver yang berbeda. JDBC Driver Manager memilih driver mana yang sesuai untuk koneksi ke suatu database.

3. JDBC Test Suite

Komponen ketiga ini memastikan JDBC driver dapat menjalankan program user dan sangat berguna dalam melakukan testing sebuah aplikasi yang menggunakan teknologi JDBC.

4. JDBC-ODBC Bridge

Adalah database driver yang menggunakan ODBC driver untuk koneksi ke database serta memiliki fungsi utama untuk translasi dari JDBC method calls ke ODBC function calls dan mengimplementasikan JDBC untuk semua driver yang didukung oleh ODBC. Komponen ini dapat diimplementasikan dalam package sun.jdbc.odbc.

   JDBC MEMILIKI 10 ARSITEKTUR, YAITU :
  1. Database connections
  2. SQL Statements
  3. Result set
  4. Database metadata
  5. Prepared Statement
  6. Binary Large Objects (BLOBs)
  7. Character Large Objects (CLOBs)
  8. Callable statements
  9. Database Driver
  10. Driver Manager

Tipe 1 – JDBC-ODBC Bridge

Fungsi

  • Translasi query dari JDBC ke ODBC query
  • Client à JDBC Driver à ODBC Driver à Database

Keunggulan

  • Semua database yang didukung oleh ODBC dapat diakses

Kelemahan

  • Performance overhead 
  • ODBC driver harus diinstal di semua client
  • Dibutuhkan client-side software

Tipe 2 – Java to Native API

Fungsi

  • Konversi JDBC calls ke client API untuk database
  • Client à JDBC driver à Vendor Client DB Library à Database

Keunggulan

  •  Performa lebih baik daripada tipe 1

Kelemahan

  •  Vendor client library harus diinstal di client.
  • Tidak dapat digunakan di internet karena membutuhkan client-side software.
  • Tidak semua database memberikan client-side library.


Tipe 3 – Java to Network Protocol or All-Java Driver

Fungsi


  • Menggunakan pendekatan three-tier communication
  • Vendor independent
  • Client à JDBC Driver à Middleware-Net Server à Any database


Keunggulan

  •  Tidak membutuhkan instalasi pada client-side
  • Middleware server dapat memberikan fungsi tambahan dalam hal caching, load balancing, logging, auditing, dll.
  • Dapat digunakan di internet


Kelemahan


  •  Membutuhkan program yang bersifat database-specific untuk middle tier.
  • Extra layer dapat menyebabkan time-bottleneck.


Tipe 4 – Java to Database Protocol

Fungsi


  • Melakukan komunikasi langsung dengan database melalui koneksi socket.
  • Driver berfungsi mengubah JDBC call ke database protocol langsung.
  •  Diimplementasikan sepenuhnya dalam Java.
  • Client Machine à Native Protocol JDBC Driver à Database Server. Contoh: Oracle Thin Driver


Keunggulan

  • Performa cenderung meningkat à Tidak melakukan translasi ke ODBC, tidak menggunakan client API, tidak menggunakan middleware layer

Kelemahan

  • Pada sisi client, driver untuk masing-masing database harus terinstal.

BEBERAPA KONSEP PENTING DI DALAM JDBC :

Transactions

  • Secara default, semua transaksi pada JDBC bersifat auto-commit

Logging

  • Digunakan untuk mengatur apakah dilakukan logging kejadian selama transaksi dilakukan.


Concurrency

  • Memastikan transaksi terjadi sesuai urutan kronologis.
  • Berhubungan dengan kemungkinan terjadinya multikoneksi yang mengakses data yang sama.

JDBC MASIH MEMILIKI KOMPONEN PENTING LAIN, YAITU :

  1. Package java.sql : Berisi beberapa class, interface yang digunakan dalam transaksi.
  2. DriverManager : Menangani segala sesuatu yang berkaitan dengan driver yang dipakai.
  3. DataSource : Alternatif dari DriverManager untuk melakukan koneksi database.

JDBC Connection Object

Object untuk melakukan koneksi dengan database
Membuat Statement, PreparedStatement, dan CallableStatement untuk eksekusi SQL.
Melakukan commit dan rollback transaksi


KOMPONEN UTAMA JDBC API


JDBC API memiliki beberapa komponen utama yang berhubungan dengan mekanisme pengolahan data baik itu untuk berkomunikasi dengan database server, melakukan koneksi, mengirim perintah SQL, mendapatkan data, menutup koneksi, serta penanganan error yang mungkin terjadi dalam pengolahan data.
  1. Driver adalah komponen untuk menangani komunikasi dengan database server.
  2. DriverManager adalah komponen untuk menangani objek Driver dimana objek DriverManager juga mengabstraksi detail dari proses kerja objek Driver.
  3. Connection adalah komponen untuk merepresentasikan koneksi secara fisik ke database
  4. Statement adalah komponen untuk mengirim perintah-perintah SQL ke database.
  5. ResultSet adalah komponen untuk menyimpan data yang didapat dari database setelah perintah SQL dijalankan dengan menggunakan komponen Statement.
  6. SQLException adalah komponen untuk menangangi kesalahan-kesalahan (error) yang mengkin terjadi dalam pengolahan database

Basis data client-server

Basis data client-server




PENGERTIAN CLIENT – SERVER

Client-Server merupakan suatu paradigma hubungan antara computer yang menjadi penyedia dan computer yang menjadi penerima. Hubungan suatu CLIENT-SERVER adalah computer meminta sesuatu ke computer lain dan computer lain memenuhi permintaan. Hubungan ini menggunakan jaringan agar tetap terhubung satu sama lain,menggunakan metode LAN,MAN,atau WAN.

Metode LAN menghubungkan suatu Client ke Server yang lain dengan jarak yang sangat dekat, Metode MAN menghubungkan jarak yang sedang antara Client dan Server dan Metode WAN menghubungkan Cient dengan Server yang lain dengan jarak yang jauh,WAN bisa juga disebut dengan INTERNET .

Server digunakan untuk mengirimkan dan menyediakan keperluan dari client. Dalam penyediaannya server dapat membatasi file dan data yang di minta oleh client hal tersebut dilakukan untuk mencegah suatu kejadian yang tidak terduga seperti server di serang dengan cara mengirim program tidak bertanggung jawab atau virus. Sehingga server memiliki hak yang lebih tinggi dibandingkan dengan client.

SERVER atau KOMPUTER SERVER adalah suatu sistem komputer yang menyediakan layanan disebuah jaringan komputer yang dilengkapi dengan prosesor cepat dan RAM yang besar,dilengkapi dengan sistem operasi khusus untuk server.

Server mengontrol akses terhadap jaringan dan sumber daya yang terdapat di dalamnya seperti file atau printer, dan memberikan akses kepada Clients.

CLIENTS adalah suatu system yang mengakses suatu system computer yang menyediakan layanan atau server melalui jaringan seperti LAN,MAN,WAN. Clients meminta data ke server dan server memenuhi permintaan tersebut yang dikirimkan melalui jaringan.

Client Server terdiri dari 3 komponen pembentuk yaitu Client, Middleware, dan Server.

FUNGSI CLIENT SERVER

fungsi dari CLIENT-SERVER adalah untuk memudahkan pekerjaan dalam suatu system jaringan ,yang diminta oleh client dapat dipenuhi oleh server dalam waktu singkat ataupun sebaliknya. Sehingga pekerjaan menjadi efisien.berikut adalah tugas dari server dan client.

Server

  1. Menerima dan memproses basis data yang diminta dari client
  2. Memeriksa autorisasi
  3. Menjamin tidak terjadi pelanggaran terhadap integrity constraint
  4. Melakukan query/pemrosesan update dan memindahkan response ke client
  5. Memelihara data dictionary

Client

  1. Mengatur user interface
  2. Menerima dan memeriksa sintaks input dari pemakai
  3. Memproses aplikasi
  4. Generate permintaan basis data dan memindahkannya ke server
  5. Memberikan response balik kepada pemakai
  6. Menyediakan akses basis data secara bersamaan
  7. Menyediakan kontrol recovery


JENIS CLIENT-SERVER

  1. File Servers
  2. Database Servers
  3. Transaction Servers (Transaksi Server)
  4. Groupsware Servers
  5. Object Application Servers
  6. Web Application Servers (Aplikasi Web Servers)

TIPE CLIENT-SERVER

1. Standalone (one-tier)

Pemrosesan data dilakukan pada mainframe.
Keuntungan
  • Sangat mudah
  • Cepat dalam merancang dan mengaplikasikan
Kelemahan
  • Skala kecil
  • Susah diamankan
  • Menyebabkan perubahan terhadap salah satu komponen diatas tidak mungkin dilakukan, karena akan mengubah semua bagian.
  • Tidak memungkinkan adanya re-usable component dan code.
  • Cepat dalam merancang dan mengaplikasikan

2. Client/Server (two tier)

Pemrosesan data pada sebuah aplikasi terjadi pada client dan server.
Kelebihan:
  •  Mudah
  •  Menangani Database Server secara khusus
  •  Relatif lebih sederhana untuk di develop dan diimplementasikan.
  •  Lebih cocok diterapkan untuk bisnis kecil.
Kekurangan:
  •  Kurangnya skalabilitas
  •  Koneksi database dijaga
  •  Tidak ada keterbaharuan kode
  •  Tidak ada tingkat menengah untuk menangani keamanan dan transaksi skala kecil.
  •  Susah di amankan.
  •  Lebih mahal.

3. Three Tier

Arsitektur ini pengembangan arsitektur Client Server. Arsitektur Three Tier ini terdapat Application Server yang berdiri di antara Client dan Database Server. Contoh dari Application server adalah IIS, WebSphere, dan sebagainya.
Kelebihan:
  • Segala sesuatu mengenai database terinstalasikan pada sisi server, begitu pula dengan pengkonfigurasiannya. Hal ini membuat harga yang harus dibayar lebih kecil.
  • Apabila terjadi kesalahan pada salah satu lapisan tidak akan menyebabkan lapisan lain ikut salah
  • Perubahan pada salah satu lapisan tidak perlu menginstalasi ulang pada lapisan yang lainnya dalam hal ini sisi server ataupun sisi client.
  • Skala besar.
  •  Keamanan dibelakang firewall.
  •  Transfer informasi antara web server dan server database optimal.
  •  Komunikasi antara system-sistem tidak harus didasarkan pada standart internet, tetapi dapat menggunakan protocol komunikasi yang lebvih cepat dan berada pada tingkat yang lebih rendah.
  •  Penggunaan middleware mendukung efisiensi query database dalam SQL di pakai untuk menangani pengambilan informasi dari database.
Kekurangan:
  •  Lebih susah untuk merancang
  •  Lebih susah untuk mengatur
  •  Lebih mahal

4.Multi Tier</li

Arsitektur Multi Tier mirip dengan Three Tier. Kelebihan arsitektur ini dilengkapi UI (User Interface) dan Data Processing. Khususnya dengan adanya Business Logic Server.
Kelebihan:
  • Dengan menggunakan aplikasi multi-tier database, maka logika aplikasi dapat dipusatkan pada middle-tier, sehingga memudahkan untuk melakukan control terhadap client-client yang mengakses middle server dengan mengatur seting pada dcomcnfg.
  • Dengan menggunakan aplikasi multi-tier, maka database driver seperti BDE/ODBC untuk mengakses database hanya perlu diinstal sekali pada middle server, tidak perlu pada masing-masing client.
  • Pada aplikasi multi-tier, logika bisnis pada middle-tier dapat digunakan lagi untuk mengembangkan aplikasi client lain,sehingga mengurangi besarnya program untuk mengembangkan aplikasi lain. Selain itu meringankan beban pada tiap-tiap mesin karena program terdistribusi pada beberapa mesin.
  • Memerlukan adaptasi yang sangat luas ruang lingkupnya apabila terjadi perubahan sistem yang besar.
  • Kekurangan
  • Program aplikasi tidak bisa mengquery langsung ke database server, tetapi harus memanggil prosedur-prosedur yang telah dibuat dan disimpan pada middle-tier.
  • Lebih mahal

TUJUAN CLIENT-SERVER

Dibentuknua CLIENT – SERVER adlaah untuk memudahkan komunikasi antara satu computer dengan komputer yang lain dalam suatu sistem jaringan kerja,dengan bantuan Server dan Jaringan.
APLIKASI CLIENT-SERVER

Pengaplikasian dari CLIENT – SERVER adalah seperti LAN . Contoh aplikasi dalam CLIENT-SERVER adalah SKYPE ,kita mengirimkan data ke SKYPE dan Server SKYPE menerima data yang CLIENT kirim dimana SERVER SKYPE menerjemahkan kode yang kita kirim ke servernya setelah diterjemahkan SERVER mengirimkan data ke CLIENT sesuai apa yang SERVER sudah terjemahkan sebelumnya dan sebaliknya,adapun contoh aplikasi client server yang lain seperti Whatsapp Messenger,We Char dan sebagainya.




Open Database Connectivity (ODBC)

Open Database Connectivity (disingkat menjadi ODBC) adalah sebuah standar terbuka untuk konektivitas antar mesin basis data. Standar ini menyediakan API yang dapat digunakan untuk menjalankan dan mengoneksikan sebuah aplikasi dengan sebuah sistem manajemen basis data (SMBD). Para desainer ODBC membuatnya dengan tujuan agar ODBC terbebas dari penggunaan bahasa pemrograman tertentu, sistem manajemen basis data tertentu, dan sistem operasitertentu.

ODBC merupakan protokol standard yang dapat menghubungkan segala jenis database eksternal server atau file eksternal server. Driver ODBC yang digunakan oleh Mesin database Microsoft Jket dapat mengakses Microsoft SQL Server dan beberapa database eksternal lainnya. ODBC dapat mengakses sumber data baik lokal maupun jarak jauh (remote) dengan menggunakan driver ODBC. Driver ODBC 16 bit atau 32 bit keduanya dapat digunakan untuk mengakses sumber data.

Open Database Connectivity (ODBC) adalah Application Programming interface (API) database yang khusus digunakan untuk mengakses database relasional. ODBC terdapat dalam setiap komputer yang menggunakan sistem operasi windows, karena ODBC merupakan bagian dari Windows Open System Architecture (WOSA). Dalam ODBC disediakan berbagai Application Programming Interface (API) yang berguna untuk menyediaan dan memberikan stkitar bagi berbagai kegiatan pemrograman. Keuntungan utama menggunakan ODBC ini adalah fleksibilitas, fleksibel disini artinya pengubahan jenis database yang dipergunakan oleh sebuah aplikasi tidak akan mempengaruhi kode program aplikasi tersebut.

ODBC terdapat dalam Control Panel Windows, yang ditunjukkan dengan icon Data Source (ODBC). Hanya saja tempat tampilan ODBC tidak sama untuk beberapa jenis windows, seperti Windows98,2000,NT,XP,Me masing-masing akan mempunyai tampilan yang berbeda untuk lokasi ODBC.

Pada ODBC terdapat 2 hal penting yang berkaitan dengan koneksi database, yaitu :

  1. Database Driver adalah software/driver yang berfungsi untuk membuat koneksi ke database yang sesuai dengan database tersebut. Setiap database memiliki driver yang spesifik, sehingga dalam sebuah ODBC data berisi lebih dari 1 database driver.
  2. Data Source Name (DSN) adalah nama/alias dari database yang digunakan oleh program, yang koneksinya melalui ODBC.

Dalam ODBC terdapat beberapa jenis Data Source Name yang akan menentukan otoritas pemakai database, yaitu :

  1. User DSN bersifat private bagi user pembuatnya, artinya DSN jenis ini hanya dapat dipergunakan/tampak oleh user yang membuatnya (yaitu user yang login dengan username pembuat DSN tersebut), yang perlu menjadi catatan adalah bahwa sifat user DSN ini hanya berjalan pada Windows NT.
  2. System DSN bersifat public dalam sebuah komputer, artinya semua user yang menggunakan komputer dimana Sistem DSN di-install dapat menggunakannya walaupun bukan pembuatnya.
  3. File DSN adalah satu-satunya yang bisa di-share dan dapat dipergunakan komputer lain yang memiliki driver database yang sama, dengan demikian setting untuk koneksi database cukup dilakukan pada 1 komputer saja dan komputer yang lain cukup me-load-nya saja. File DSN ini umumnya dipergunakan untuk aplikasi multiuser pada suatu LAN.

ODBC memiliki beberapa komponen utama, yakni sebagai berikut:

  1. ODBC API: sekumpulan panggilan fungsi, kode-kode kesalahan dan sintaksis SQL yang mendefinisikan bagaimana data dalam sebuah DBMS diakses.
  2. Driver basis data ODBC: driver (yang berupa dynamic link library) yang mampu memproses panggilan fungsi ODBC untuk sebuah DBMS tertentu.
  3. ODBC Driver Manager: yang bertugas untuk memuat driver basis data ODBC yang dibutuhkan oleh aplikasi.

Pengguna sistem operasi Windows dapat mengonfigurasikan ODBC dengan menggunakan utilitas ODBC yang terdapat di dalam Control Panel. Utilitas ini mengizinkan mereka untuk mendefinisikan DSN (Data Source Name) untuk basis data yang hendak diakses dan juga driver yang digunakan untuk mengakses basis data tersebut. Untuk mengonfigurasikan ODBC dengan utilitas ini, mereka dapat mengasosiasikan sebuah DSN dengan sebuah driver ODBC, yang mengizinkan aplikasi untuk dapat berinterakse dengan sebuah basis data yang disimpan baik secara lokal di dalam mesin yang sama maupun di dalam server jaringan.

SQL pada basis data client-server

SQL pada basis data client-server



RETERIVAL DATA DENGAN KLAUSA WHERE

Yang termasuk pada data retrieval pada SQL (Struktur Query Language) adalah select statement. Walaupun banyak sebagian pendapat bahwa select statement masuk pada DML(Data Manipulation Language).Ada 5
  1. Basic select statement
  2. Select dengan kolom alias
  3. Select dengan klausa where
  4. Select dengan klausa order by
  5. Select dengan fungsi grup

Basic select statement

Basic select statement adalah jenis yang paling dasar, yaitu hanya menampilkan data semua atau sebagian dengan tidak menampilkan suatu kondisi pada statement tersebut. Contoh Basic select statement adalah :

Select * from pegawai;

Artinya adalah menampilkan semua data pada table pegawai.

Select dengan kolom alias

Select dengan kolom alias adalah jenis select statement dengan menampilkan kolom yang diinginkan sebagai alias. Jadi nama kolom asal diubah pada saat menampilkan tetapi tida mengubah nama kolom pada table asli. Contoh Select dengan kolom alias adalah :

Select emp_name as nama_pegawai from pegawai ;
Artinya adalah menampilkan kolom emp_name yang ada pada table pegawai dan nama kolomnya diubah menjadi nama_pegawai.


Select dengan klausa where

Select dengan klausa where adalah jenis select statement dengan memberikan kon
i baris yang akan ditampilkan. Contoh Select dengan klausa where adalah :

Select emp_name from pegawai where nip = 1110023 ;

Artinya adalah menampilkan emp_name dari table pegawai dengan nip = 1110023.

Select dengan klausa Order By

Select dengan klausa Order By adalah select statement dengan memberikan pengurutan pada data yang ditampilkan. Pengurutan berupa ascending atau descending. Cntoh Select dengan klausa Order By adalah :

Select nip, emp_name from pegawai order by nip asc;

Artinya adalah menampilkan emp_name dan nip dari table pegawai diurutkan berdasarkan nip secara ascending.

Select dengan fungsi Group

Select dengan fungsi Group adalah select statement dengan mengelompokan data berdasarkan kolom tertentu. Contoh dari Select dengan fungsi Group adalah :

Select nip, emp_name from pegawai Group by nip ;
Artinya adalah menampilkan emp_name dan nip dari table pegawai di kelompokan berdasarkan nip-nya.

UPDATE DATA

Perintah UPDATE ini berfungsi untuk memperbaharui data lama menjadi data yang baru, dalam penggunaanya harus disertai dengan klausa WHERE,

Syntax : UPDATE nama_tabel SET kolom_pertama = ‘data_kolom_pertama’, kolom_kedua = ‘data_kolom_kedua’, kolom_terakhir = ‘data_kolom_terakhir’, WHERE kondisi;

Parameter : set, where

Contoh : UPDATE datapribadi SET telp=’085545323101′ WHERE Nip=’120909′;

HAPUS DATA

Anda bisa menghapus record atau data di suatu table dengan menggunakan 2 cara, yaitu:

Delete Statement

Delete Statement digunakan untuk menghapus data berdasarkan query sesuai dengan keinginan pengguna. Delete statement termasuk salah satu perintah DML (Data Manipulation Language).

Truncate Statement

Sedangkan Truncate Statement adalah perintah untuk mengosongkan isi table. Sama seperti Delete Statement, tapi Truncate Statement tanpa menggunakan Where clause. Truncate Statement merupakan salah satu perintah DDL (Data Definition Language).

Menghapus Semua Data

Untuk menghapus semua data atau record di tabel, Anda bisa menggunakan Delete statement TANPA Where clause.

Contoh:

DELETE FROM mahasiswa =Perintah diatas akan menghapus semua data di tabel MAHASISWA.

  •  Menghapus Data Atau Record Tertentu
  •  Untuk menghapus data atau record tertentu pada table, Anda dapat menggunakan WHERE clause pada Delete statement.
Contoh:

DELETE FROM mahasiswa WHERE jurusan = ‘Teknik Informatika‘ AND gender = ‘L’;

Perintah diatas akan menghapus data pada tabel Mahasiswa yang berjenis kelamin laki-lai dan mempunyai jurusan Teknik Informatika.

Mengedit Constraint :

Alter table person; add constrain uc_personID unique (P_ID, Lastname);
Membuat tabel :

Create table contoh
(
nama varchar (20)
no int (12)
alamat varchar (25)
Primary key (nama);
)

MENGEDIT STRUKTUR TABLE

Alter table contoh ADD primary key (no);

Alter table contoh modify no varchar (12) not null;

Penggabungan Data

Penggabungan Data



Pengertian Join

Join adalah penggabungan tabel yang dilakukan melalui kolom / key tertentu yang memiliki nilai terkait untuk mendapatkan satu set data dengan informasi lengkap.

Pengelompokkan Instruksi Join:

  1. Inner Join
  2. Outer Join
  3. Cross Join
  4. Equi Join
  5. Natural Join
  6. Self Join

Natural Join

Join yang menghasilkan baris-baris yang minimal ada sebuah baris di kedua tabel yang sesuai dengan kondisi join.
Contohnya:

Select FIRST_NAME.JOB_TITLE
From EMPLOYEES
Natural join JOBS;

Equi Join

Adalah Join yang menggunakan tanda equal (=) untuk membandingkan operatornya.


Self Join

Adalah join yang dilakukan antar kolom dalam 1 tabel.

Non Equi Join

Merupakan join yang menggunakan tanda selain equal (=) , misalkan tanda !=, <,>,<=, dll.
Contohnya:

Select FIRST_NAME,SALARY,TAX_RATE
from EMPLOYEES
Join TAX
On SALARY between MIN_SALARY and
MAX_SALARY;

Inner Join

Adalah default dari join , digunakan mendapatkan data dari tabel lain berdasarkan kolom yang dihubungkan, bila tidak ditemukan maka baris data tersebut dibatalkan.
Contoh:

SELECT E.FIRST_NAME, J.JOB_TITLE FROM E INNER JOIN J ON
E.JOB_ID=J.JOB_ID;


Right Outer Join

Akan menampilkan semua baris pada tabel yang terletak pada kanan syntax JOIN walaupun tidak sesuai dengan tabel yang berada pada sebelah kiri JOIN.
Contohnya:

Select E.FIRST_NAME, J.JOB_TITLE
From EMPLOYEES E
Right outer join JOBS J
On E.JOB_ID=J.JOB_ID;


Left Outer Join

Akan menampilkan semua baris pada tabel yang terletak pada kiri syntax JOIN walaupun tidak sesuai dengan tabel yang berada pada sebelah kanan JOIN.
Contohnya:

Select E.FIRST_NAME, J.JOB_TITLE
From EMPLOYEES E
Left outer join JOBS J
On E.JOB_ID=J.JOB_ID;

Data Konditional

Data Konditional

NVL

NVL adalah fungsi yang akan membandingkan apakah dalam data dalam database terdapat nilai null dan menggantinya dengan sebuah nilai yang tidak null. Hal ini dikarenakan jika dalam suatu database terdapat nilai null, maka untuk beberapa fungsi tidak bisa mengolah nilai null sehingga hasilnya akan menyebabkan data tidak konsisten. Adapun syntax penulisan NVL ini yaitu:
Dimana :
Ekspresi1: ekspresi yang mungkin mengandung null
Ekspresi2: nilai untuk mengganti nilai null tersebut.

Nvl

Jadi, jika ekspresi1 bernilai null, maka fungsi akan mengembalikan ekspresi2 dan mengganti nilai dari ekspresi1 (null) dengan nilai ekspresi2. Dan jika ekspresi1 bernilai tidak null, maka fungsi akan tetap mengembalikan nilai dari ekspresi1 tersebut (tanpa diubah). Adapun contoh penggunaan dari fungsi NVL ditunjukkan pada gambar berikut.

Nvl 2

Fungsi NVL2 ini hampir sama seperti fungsi NVL. Bedanya, pada NVL2 ini menggunakan 3 buah ekspresi. Adapun syntax penulisan NVL2 ini yaitu sebagai berikut:
Dimana :
Ekspresi1: ekspresi yang mungkin mengandung nilai null
Ekspresi2: nilai yang dikembalikan jika ekspresi1 TIDAK null
Ekspresi3: nilai yang dikembalikan jika ekspresi1 bernilai null

Nvl 2

Contoh Penggunaan NVL 2 :
Penggunaan NVL2 tanpa null

Struktur kondisi case

Fungsi CASE ini merupakan alternatif penggunaan if-then-else pada pemrograman. Sehingga dengan menggunakan fungsi case, kita dapat memberikan hasil berdasarkan pemilihan kondisi yang telah ditetapkan. Adapun syntax penulisa case secara umum ditunjukkan sebagai berikut :
Struktur kondisi case
Dalam CASE ini terbagi menjadi 2 jenis yaitu:

Nilai Skalar

Pada jenis ini setelah pernyataan CASE dituliskan langsung ekspresi dari pengkondisian yang dibutuhkan. Contoh penggunaan :

Struktur kondisi case


Predikat Subqueri dalam bentuk pencarian

Pada jenis ini setelah pernyataan CASE tidak dituliskan ekspresi dari kondisi, melainkan dituliskan setelah penulisan WHEN, oleh sebab itu pada jenis ini disebut dengan pencarian. Kelebihan dari jenis ini adalah kita bisa menggunakannya pada kondisi yang tidak sama (gabungan dari beberapa kondisi yang tidak saling berhubungan).

Struktur kondisi case

Adapun contoh dari jenis ini ditunjukkan sebagai berikut :
Substitute variabel, merupakan jenis variabel yang sifatnya dinamis. Variabel substisuti pada penggunaannya di dalam blok PL/SQL dapat menerima input nilai dari luar blok PL/SQL tersebut. Nilai yang diinputkan dapat berubah-ubah setiap kali blok PL/SQL dijalankan. Tanda bahwa variabel tersebut variabel substitusi adalah terdapat danda “&” di awal nama variabel.

Berikut ini contoh blok PL/SQL yang memiliki 2 buah variabel substisuti :

Jika blok PL/SQL tersebut dijalankan maka akan meminta diinputkan 2 buah nilai ke dalam variabel in1 dan in2. Misalkan in1 diisikan nilai 10 dan in2 diisikan nilai 20 maka hasil yang ditampilkan adalah hasil penjumlahan in1 dan in2 yaitu 30.

SubQuery ( Query Berjenjang )

SubQuery ( Query Berjenjang )



Pengertian Sub Query

Subquery adalah sebuah query (perintah Select) yang terdapat query laindidalamnya.

Fungsi Sub Query

1. Untuk menyelesaikan persoalan dimana terdapat suatu nilai yang tidak diketahui.
  • Meng-copy data dari satu tabel ke tabel lain.
  • Menerima data dari inline view
  • Mengambil data dari tabel lain untuk kemudian di update ke tabel yang dituju
  • Menghapus baris dari satu tabel berdasarkan baris dari tabel lain

Betuk Umum


Subquery bisa diletakkan pada field list atau pada klausa WHERE atau HAVING,dimana subquery tersebut menyediakan satu atau lebih nilai yang diperiksa.
Didalam WHERE dan HAVING subquery memiliki tiga bentuk yaitu:

  • comparison [ANY|ALL|SOME] (subquery)
  • expression [NOT] IN (subquery)
  • [NOT] EXISTS (subquery)

Ada Beberapa bahasa terkait penggunaan Sub Query :

1. Sub query dengan IN
Jika operator ‘=’ hanya digunakan untuk hasil yang tepat satu, maka jikaingin menampilkan yang memiliki hasil lebih dari satu maka menggunakanperintah IN. Dan struktur Query yang digunakan dalam hal ini adalah:

SELECT namakolom FROM namatabel WHERE kondisi opeatorperbandingan IN (subquery);

2. Sub query dengan ALL
Command ALL diikuti dengan operator perbandingan digunakanmemiliki arti menampilkan nilai jika perbandingan bernilai benaruntuk semua data. Operator perbandingan tersebut berupa ( <, >, =, != ). Berikut adalah query dasar dari sub query all

SELECT namakolom FROM namatabel WHERE

kondisi opeatorperbandingan ALL (subquery);

3. Sub query dengan ANY
Command ANY diikuti dengan operator perbandingan memilikiarti menampilkan nilai yang sesuai dengan apapun yang dihasilkan oleh sub query. ANY berbeda dengan IN, jika IN itu semua data, sedangkan ANY hanya beberapa data. Contoh query dasar dari sub query ANY

SELECT namakolom FROM namatabel WHERE

kondisi opeatorperbandingan ANY (subquery);