Wednesday 27 November 2013

82. Records dan Object Types

1.        Records

Kita dapat menggunakan attribute %ROWTYPE untuk mendeklarasikan record yang merepresentasikan baris data di dalam table atau baris data yang dihasilkan dari sebuah cursor. Tetapi, dengan record yang didefinisikan oleh user (user-defined record), kita dapat mendeklarasikan field-field milik kita.
Records mengandung field-field bernama yang unik, yang mana dapat memiliki tipe-tipe data yang berbeda. Bayangkan kita memiliki berbagai macam data employee, seperti name, salary, dan hire date. Item-item ini tidak sama tetapi secara logikal saling terkait. Record yang mengandung field untuk setiap item mengijinkan kita untuk memperlakukan data sebagai unit logikal.
Perhatikan contoh berikut ini:
DECLARE
TYPE TimeRec IS RECORD (hours SMALLINT, minutes SMALLINT);
TYPE MeetingTyp IS RECORD (
date_held DATE,
duration TimeRec, -- nested record
location VARCHAR2(20),
purpose VARCHAR2(50));
Perhatikan bahwa kita dapat menyarangkan records. Sehingga, sebuah record dapat menjadi komponen dari record yang lain.


2.         Object Types

Di dalam PL/SQL, object-oriented programming adalah berbasiskan pada object types. Object type meng-enkapsulasi struktur data yang berhubungan dengan functions dan procedures yang diperlukan untuk memanipulasi data tersebut. Variable-variable yang membentuk struktur data disebut attributes. Functions dan procedures yang mengkaraktersisasi kelakuan (behavior) dari object type dinamakan methods.
Object type menekan kompleksitas dengan memecah sistem yang besar ke dalam entity-entity logikal. Hal ini mengijinkan kita untuk menciptakan komponen-komponen software yang modular, maintainable, dan reusable.
Ketika kita mendefinisikan object type menggunakan perintah CREATE TYPE (di dalam SQL*Plus sebagai contoh), kita menciptakan template yang abstrak untuk sebuah objek di dunia nyata (real-word object). Seperti pada contoh tentang rekening bank berikut ini, template menentukan hanya attributes dan behaviors yang akan dibutuhkan oleh objek di dalam lingkungan aplikasi.
CREATE TYPE Bank_Account AS OBJECT (
acct_number INTEGER(5),
balance REAL,
status VARCHAR2(10),
MEMBER PROCEDURE open (amount IN REAL),
MEMBER PROCEDURE verify_acct (num IN INTEGER),
MEMBER PROCEDURE close (num IN INTEGER, amount OUT REAL),
MEMBER PROCEDURE deposit (num IN INTEGER, amount IN REAL),
MEMBER PROCEDURE withdraw (num IN INTEGER, amount IN REAL),
MEMBER FUNCTION curr_bal (num IN INTEGER) RETURN REAL
);
Pada saat runtime, ketika struktur data diisi dengan nilai, kita harus menciptakan instance dari rekening bank yang abstrak. Kita dapat menciptakan instances (disebut objects) sebanyak yang kita butuhkan. Setiap object memiliki nomor, saldo dan status dari rekening bank sesungguhnya.



No comments:

Post a Comment