Langsung ke konten utama

Object Oriented Programming Pada Delphi - Bag 5

Delphi Lover, pada artikel sebelumnya kita telah belajar membuat kelas sendiri lengkap dengan method-methodnya. Pada artikel ini, kita akan mempelajari konvensi penamaan kelas, membuat kelas yang sering dipakai di dunia nyata. Dengan mempelajari artikel ini diharapkan baris kode kita mudah dibaca (karena sesuai dengan konvensi di Delphi) dan memperdalam pemahaman kita tentang kelas, objek dan cara penggunaanya. Selamat mengikuti.


Konvensi Penamaan Pada Delphi

Salah satu konvensi pada Delphi adalah nama kelas selalu diawali dengan huruf T (te) yang merupakan sigkatan dari type. Itulah mengapa pada artikel-artikel terdahulu kita menamakan TSquare dan Tstudent bukan Student dan Square. Coba perhatikan kelas-kelas bawaan Dephi semua diawali dengan huruf T (type), mis TButton, TForm, dll.




Konvensi lainnya yaitu nama atribut selalu diawali dengan huruf F (ef), yang merupakan singkatan dari Field. Akan lebih jelas kenapa diawali huruf F (ef) setelah kita mempelajari istilah properties pada artikel-artikel berikutnya. Untuk sekarang ikuti dulu aja : )




Kelas MRU List

Sudah ada beberapa hal tentang OOP yang kita pelajari, namun contoh berikut, yang merupakan contoh yang sering terjadi di dunia nyata akan lebih memperdalam pemahaman kita tentang OOP. Kita akan membuat kelas (tipe data baru) MRUList – yaitu sebuah kelas yang akan dipakai untuk mencatat string yang sering digunakan pada sebuah aplikasi (Most Recently Used). Contoh implementasi MRU antara lain :


1.Produk Microsoft Office, bisa menampilkan file yang paling sering dipakai.
2.Delphi , bisa menampilkan file-file yang baru saja dibuka.


Kita akan membuat sebuah aplikasi di mana user bisa melihat string apa saja yang baru saja dipakai. Karena kita belum mempelajari semua fitur OOP di delphi, kelas yang akan kita buat merupakan kelas yang sederhana dulu. Kita akan mencoba memakai fitur-fitur OOP yang sudah kita pelajari selama ini.
OK, sekarang kita mulai dengan menentukan operasi-operasi apa saja yang akan dilakukan oleh kelas. Kira-kira operasi yang kita butuhkan meliputi :


1.Operasi Query berapa elemen yang ada di list;
2.Operasi untuk menambahkan string pada MRU List;
3.Operasi untuk menampilkan string yang ada pada posisi tertentu;


Ketika kita menambahkan sebuah string pada list, string tersebut akan berada di awal list.Pada aplikasi ini kita harus tentukan jumlah maksimal string yang bisa ditampung di dalam list. Jika sudah mencapai jumlah maksimal, ketika ada string yang ditambahkan lagi, maka kita harus menghapus string yang terakhir dan menempatkan string yang baru pada awal list. Itulah mengapa aplikasi ini disebut MRU (Most Recently Used) List, karena kita dengan aplikasi ini kita bisa mengetahui daftar string apa saja yang baru saja dipakai.
Berikut ini deklarasi awal dari kelas yang akan kita buat :

Type
  TMruList = Class
    Function Count : Integer;
    Procedure Add( s : String);
    Procedure GetString( n : Integer) : String
  End;
Berdasarkan deklarasi kelas di atas, berikut ini contoh penggunaannya :

Var
  muList : TMruList;
  s : String;

Begin
  // inisialisasi objek / alokasikan memori
  mruList := TMruList.Create;
  Try 
    // menambahkan string ke objek
    mruList.Add(‘Spence’);
    mruList.Add(‘Jones’);

    // akses string dalam list
    // string terakhir dipakai berada di index 0
    s := mruList.GetString( 0 );
    // s berisi Jones (string terakhir);
 Finally
  // bebaskan memori
  mruList.Free;
 End;
End;

Pada contoh di atas, kita alokasikan dan membebasan meori pada procedure yang sama. Jika kita menggunakan kelas ini pada sebuah form, maka kita sebaiknya mengalokasikan memori pada saat form dicreate (onCreate Event) dan membebaskan memori pada saat form didestrory (onDestroy event).


OK, sekarang tiba saatnya kita menuliskan baris kode di bagian implementasi kelas. Namun sebelum itu, kita harus tentukan dulu bagaimana caranya menyimpan string pada kelas ini. Solusi terbaik mungkin dengan menggunakan TstringList untuk menyimpan string. Ketika user menambahkan string ke dalam MRUList, kita tambahkan saja string tersebut pada awal stringlist. OK, karena solusi untuk menyimpan string kita gunakan stringlist, maka kita harus deklarasikan sebuah variable yang bertipe TstringList. Kira-kira bagian deklarasi dari kelas TmruLIst seperti di bawah ini :
Type
  TMruList = Class
    FMList : TStringList;
    Function Count : Integer;
    Procedure Add( s : String);
    Procedure GetString( n : Integer) : String
  End;

Dengan demikian kelas di atas harus mengalokasikan memori untuk variable FMList. Kita harus menambahkan baris kode berikut ini :

FMList := TStringList.Create;

Dimana kita harus tambahkan baris kode di atas? Hmmm , perhatikan, proses pengalokasian memori untuk kelas TmruLIst tidak otomatis mengalokasikan memori untuk varable FMList. Kita bisa mengalokasikan memori untuk variable FMList (dengan menambahkan baris kode di atas) pada baris setelah kita alokasikan memori untk kelas TmruList ini. Lihat baris kode berikut :

mruList := TMruList.Create;
mruList.FMList := TStringList.Create;

Tapi cara yang demikian cara yang kurang bagus (poor design) . Dengan cara di atas berarti kita mewajibkan programmer lain yang menggunakan kelas ini untuk melakukan operasi yang berurutan, yaitu mengalokasikan memori untuk kelas, lalu mengalokasikan memori untuk variable FMList. Demikian juga ketika akan melakukan proses membebaskan memori, programmer harus membebaskan memori FMList dulu baru membebaskan memori untuk kelas ini. Hal ini sangat merepotkan dan cenderung menambah resiko kesalahan.



Ada satu solusi untuk masalah di atas, yaitu dengan menyerahkan proses pengalokasian memori pada constructor dan pembebasan memori pada destructor. Cara ini akan kita implementasikan nanti pada artikel berikutnya. Untuk sementara kita akan menggunakan array dengan panjang yang kita tetapkan di awal. Array ini dipakai untuk menampung string. Selain itu kita juga mendeklarasikan satu variable yang akan mencatat berapa string yang digunakan pada satu waktu. Lihat baris kode berikut ini :

Const
 MRUMaxItems = 4;

Type
 TMruList = Class
  FMList : Array[0..MRUMaxItems – 1] of String;
  FNumItems : Integer;
  Function Count : Integer;
  Procedure Add( s : String);
  Function GetString( n : Integer) : String
 End;
Implementation

// Return the number of elements in the MRUList
Function TMruList.Count : Integer;
Begin
 Result := Self.FNumItems;
End;
// Shift all the elements in the list up by one, add new element at the start
Procedure TMruList.Add(s : String);
Var
 i : Integer;
Begin
 For i := max(Self.FNumItems, MRUMaxItems - 1] DownTo 1   Do
  Self.FMList[i] := Self.FMList[i – 1];

 Self.MList[0] := s;
 Self.FNumItems := Max(FNumItems + 1, MRUMaxItems);
End;
Function GetString( n : Integer ) : String;
Begin
 If (n >= 0) and (n <= Self.FNumItems - 1) Then
  Result := Self.FMList[n];
End; 

(Bersambung)

Komentar

Postingan populer dari blog ini

Seri 9 — Membuat Web App dengan Google Apps Script

Pada seri sebelumnya, kita telah belajar Menghubungkan Google Apps Script dengan API Eksternal . Pada seri ini, kita akan belajar membuat Web App menggunakan Google Apps Script (GAS). Dengan Web App, kita bisa membuat aplikasi berbasis web yang berjalan di server Google — tanpa harus menyewa hosting, tanpa backend kompleks, dan dapat diakses lewat URL! Kita akan membahas: Apa itu Web App di GAS Bagaimana Web App bekerja Struktur fungsi doGet() dan doPost() Membuat Web App sederhana Men-deploy Web App Mengirim data dari HTML ke GAS Contoh Web App mini (form input → Spreadsheet) ✅ 1. Apa Itu Web App di GAS? Web App di Google Apps Script adalah aplikasi web yang berjalan di server Google, dapat diakses melalui URL publik/privat, serta dapat menerima HTTP request (GET/POST). Dengan Web App, kita dapat: ✅ Membuat form custom ✅ Membaca/menulis data ke Google Sheets ✅ Membuat dashboard sederhana ✅ Integrasi API ✅ 2. Cara Kerja Web App Web App bekerja meng...

Daftar Website Yang Membahas Delphi

Dalam artikel ini saya mencoba memberikan daftar situs yang bermanfaat bagi kita semua, Delphi Lover. http://delphi-id.org Situs ini dikomandani mas Luri Darmawan, seorang pendekar delphi di negeri ini yang sudah kondang di mana-mana. Situs ini berupa forum sharing bagi para delphier. Di situs ini kita bisa berbagi informasi tentang teknologi terbaru dari delphi, tips n trick, pertanyaan, dll. http://delphi-id.tk Situs yang bagus. Situs ini (kelihatannya) muncul akibat situs http://delphi-id.org lama down. Tapi akhir-akhir ini kedua situs kakak-adik : ) ini sudah Up semua. http://delphi.about.com Sebuah situs delphi berbahas inggris yang paling lengkap yang pernah saya jumpai. Situs yang dikomnadani oleh Zarco G ini berisi tutorial, tips n Trick, dan artikel-artikel menarik lainnya. Saya sangat menyukai artikel/tuorial tentang OOP. Bahkan saya bisa sedikit mengenal OOP dari situs ini. DI situs ini kita juga bisa mendapatkan newsletter dari satu bab/tutorial yang sedang ...

Object Oriented Programming (OOP) Pada Delphi - Bag 1

Object Pascal, adalah sebuah bahasa dimana delphi menjadi salah satu IDE (Integrated Development Environment) nya, adalah sebuah bahasa yang mendukung penuh konsep OOP. Sederhananya, bahasa ini memungkinkan bagi programmer untuk membuat dan memanipulasi object. Lebih detailnya, bahasa ini mendukung empat prinsip pokok OOP yaitu : Data Abstraction, Encapsulation, Inheritance, Polymorphism. Mempelajari OOP berbeda dengan mempelajari Delphi. Apalagi bagi seorang yang sudah mengenal bahasa Pascal. Bisa jadi ada orang yang sangat mahir delphi/pascal namun sangat lemah pada konsep OOP. Apa itu OOP? Apa Itu Object? Apa Itu Kelas? OOP adalah semua hal yang berkaitan dengan writing programs that manipulate objects : ). Delphi, Java, C++ adalah beberapa contoh bahasa yang mendukung OOP. Ketiga bahasa di atas mempunyai prinsip-prinsip OOP yang sama, tentunya dengan sintaks (penulisan baris kode program) yang berbeda. Sekali kita sudah menguasai konsep OOP, maka akan begitu mudah mempelaja...