Minggu, 30 Januari 2011

PROSEDUR DAN FUNGSI

PROCEDURE


Prosedur adalah suatu program terpisah dalam blok sendiri yang berfungsi sebagai subprogram (program bagian). Diawali dengan kata cadangan “Procedure” didalam bagian deklarasi prosedur. Prosedur banyak digunakan pada program yang terstruktur karena :
  1. Merupakan penerapan konsep program modular, yaitu memecah-mecah program yang rumit menjadi program-program bagian yang lebih sederhana dalam bentuk prosedur-prosedur.
  2. Untuk hal-hal yang sering dilakukan berulang-ulang, cukup dituliskan sekali saja dalam prosedur dan dapat dipanggil atau dipergunakan sewaktu-waktu bila diperlukan.

FUNGSI

Blok fungsi hampir sama dengan blok prosedur, hanya fungsi harus
dideklarasikan dengan tipenya. Tipe deklarasi ini menunjukkan tipe
hasil dari fungsi.
Bentuk umum :

FUNCTION identifier (daftar parameter) : type ;

Blok fungsi juga diawali dengan kata cadangan Begin dan di akhiri
dengan kata cadangan End dan titik koma.

Perbedaan fungsi dengan prosedur adalah :
  1. Pada fungsi, nilai yang dikirimkan balik terdapat pada nama fungsinya ( kalau pada prosedur pada parameter yang dikirimkan secara acuan).
  2. Karena nilai balik berada di nama fungsi tersebut, maka fungsi tersebut dapat langsung digunakan untuk dicetak hasilnya. Atau nilai fungsi tersebut dapat juga langsung dipindahkan ke pengenal variable yang lainnya.
  3. Pada prosedur, nama prosedur tidak dapat digunakan lagsung, yang dapat langsung digunakan adalah parameternya yang mengandung nilai balik.
Looping
for         :nilai pencacah automatis.
while     :nilai pencacah harus ada rumusnya. kondisi di chet aksi baru di kerjakan, selama kondisi benar aksi akan dikerjakan.
repeat    : Kondisi dikerjakan dulu baru aksi dikerjakan, kalo kondisi salah aksi akan dikerjakan terus.
1. For do (Pengulangan Tanpa Tanpa Kondisi)
For do merupakan struktur Pengulangan dimana aksi dilakukan sebanyak hitungan pencacah Pengulangan. Pencacah Pengulangan dapat diset sesuai dengan nilai yang ingin kita mulai.
Example:
for pencacah Pengulangan dari x sampai y do
berarti aksi dilakukan sebanyak hitungan pencacah Pengulangan, yaitu dari x sampai y sebanyak b-a+1 kali.
Sedangkan,
2.Repeat Until ( Pengulangan dengan kondisi )
Repeat berarti ulangi dan until berarti sampai. Jadi, repeat - until adalah struktur Pengulangan dimana aksi dilakukan hingga kondisi ( persyaratan ) berhenti terpenuhi.
Example: misalkan kita ingin mengetahui nilai dari mahasiswa jika data masukannya adalah NIM.
Program Pencarian
{Program mencari nilai mahasiswa didalam tabel dengan NIM= a.Tabel sudah berisi data NIM, nama dan nilai}
Algoritmanya:
tinjau entry pertama tabel
repeat
if NIM pada entry tabel sama dengan NIM yang dicari then ambil nama dari NIM tersebut
else
tinjau entry berikutnya
until nilai yang dicari ditemukan atau akhir tabel sudah terlampaui
Pada repeat - until jumlah Pengulangan tidak dapat diketahui di awal. Karena Pengulangan aksi akan terus dilakukan sampai ditemukan entry dari apa yang ditanyakan atau akhir tabel sudah terlampaui, berbeda dengan for-do yang jumlah pengulangannya dilaksanakan.
3. While do ( Pengulagan dengan Kondisi )
While berarti selagi/ selama dan do berarti lakukan. Jadi, While-do artinya struktur pengulangan dimana selama kondisi ( persyaratan ) Pengulangan masih benar, maka aksi dikerjakan.
Contohnya saja pada repeat-until tadi selama kita memasukkan NIM tidak benar/ belum ditemukan akhir tabel belum terlampaui, maka dapat dicari NIM pada entry tabel yang sama, jika sudah ditemukan mengambil nilai tersebut, selanjutnya meninjau entry berikutnya didalam tabel.
Example:
Program Pencarian
{Program mencari nilai mahasiswa didalam tabel dengan NIM= a.Tabel sudah berisi data NIM, nama dan nilai}
Algoritma
Tinjau entry pertama tabel
While NIM yang dicari belum ditemukan dan akhir tabel belum terlampaui do
If NIM pada entry tabel sama dengan NIM yang dicari then ambil nama, nilai dari NIM tersebut
Else
Tinjau entry berikutnya didalam tabel
· Pada While do kondisi pengulangan di evakuasi di awal Pengulangan, berbeda dengan repeat-until kondisi Pengulangan di evakuasi di akhir.
4. if then else
If berarti jika dan then berarti maka. Jadi, if then else adalah suatu bentuk pengkondisian bilamana kondisi bernilai benar, aksi 1 akan dikerjakan, tapi jika tidak aksi 2 yang akan dikerjakan.
if kondisi then
aksi 1
else
aksi 2
Example:
if anak berbaju hijau then
acungkan jarinya
else if anak berbaju merah then
berdiri else
diam duduk ditempat
( terdapat kelemahan karena pemrogram tidak tahu kapan harus berhenti menulis, tidak tahu berapa kali pernyataan harus ditulis sampai dengan data yang dicari ditemukan).
Example Algoritma:
1. For-do
Program cetak banyak_Belajar yang rajin oce!
{ mencetak ‘ Belajar yang rajin oce!’ sebanyak 5 kali }
Deklarasi
i : integer ( pencacah Pengulangan )
Algoritma
for i <– 1 to 5 do ( ulangi sebanyak 5 kali )
Write ( ‘Belajar yang rajin oce!’ )
endfor
· Output
Belajar yang rajin oce!
Belajar yang rajin oce!
Belajar yang rajin oce!
Belajar yang rajin oce!
Belajar yang rajin oce!
2. While do
Program cetak banyak_Belajar yang rajin oce!
{ mencetak ‘Belajar yang rajin oce!’ sebanyak 5 kali }
Deklarasi
i : integer ( pencacah Pengulangan )
Algoritma
i <– 1
While i 5 do ( ulangi sebanyak 5 kali )
write ( ‘Belajar yang rajin oce’ )
i <– i + 1
end While
· output
Belajar yang rajin oce!
Belajar yang rajin oce!
Belajar yang rajin oce!
Belajar yang rajin oce!
Belajar yang rajin oce!
3. Repeat - until
Program cetak banyak_Belajar yang rajin oce!
{ mencetak ‘ Belajar yang rajin oce!’ sebanyak 5 kali }
Deklarasi
i : integer ( pencacah Pengulangan )
Algoritma
i <– 1
repeat ( ulangi sebanyak 5 kali )
write ( ‘Belajar yang rajin oce!’ )
i <– i + 1
until i 5
· output
Belajar yang rajin oce!
Belajar yang rajin oce!
Belajar yang rajin oce!
Belajar yang rajin oce!
Belajar yang rajin oce!
While atau repeat ekivalen, tetapi pada beberapa masalah pemilihan keduanya bergantung pada natural dari persoalan. Didalam repeat, kondisi Pengulangan  diperiksa pada akhir Pengulangan, jadi instruksi didalam badan Pengulangan diperiksa pada akhir Pengulangan. Sedangkan, pada while kondisi Pengulangan diperiksa awal, jadi instruksi didalam badan Pengulangan hanya dapat dilaksanakan bila pengetesan kondisi menghasilkan nilai true, jadi jika Pengulangan pertama kali bernilai false maka badan pangulangan mungkin.
Deklarasi
Bagian deklarasi digunakan bila didalam program menggunakan pengenal (identifier) yang dapat berupa label, konstanta, tipe, variable, prosedur dan fungsi.
Deklarasi Konstanta
Definisi konstanta diawali dengan kata cadangan Const diikuti oleh kumpulan identifier
yang diberi suatu nilai konstanta. Data konstanta nilainya sudah ditentukan dan pasti,
tidak dapat dirubah didalam program.
Deklarasi Variabel
Variabel adalah identifier yang berisi data yang dapat diubah-ubah nilainya didalam
program. Menggunakan kata cadangan  Var sebagai judul didalam bagian deklarasi
variable dan diikuti oleh satu atau lebih identifier yang dipisahkan koma, diikuti dengan
titik dua dan tipe dari datanya diakhiri dengan titik koma.
Deklarasi Tipe
Pascal menyediakan beberapa macam tipe data, yaitu :
1. tipe data sederhana, terdiri dari :
  • Tipe data standar : integer, real, char, string, Boolean.
  • Tipe data didefinisikan pemakai : enumerated atau scalar, subrange
2. Tipe data terstruktur : array, record, file, set
3. Tipe data penunjuk
Deklarasi Label
Jika program menggunakan statement Goto untuk meloncat ke suatu statement yang
tertentu, maka dibutuhkan suatu label pada statement yang dituju dan label tersebut harus
di deklarasikan terlebih dahulu pada bagian deklarasi. Menggunakan kata cadangan
Label diikuti oleh kumpulan identifier label dengan dipisahkan oleh koma dan diakhiri
dengan titik koma.
Deklarasi Prosedur
Prosedur merupakan bagian yang terpisah dari program dan dapat diaktifkan dimanapun
didalam program. Prosedur dibuat sendiri bilamana program akan dibagi-bagi menjadi
beberapa blok-blok modul. Prosedur  dibuat didalam program dengan cara
mendeklarasikannya dibagian deklarasi prosedur. Menggunakan kata cadangan
Procedure.
Deklarasi Fungsi
Fungsi juga merupakan bagian program yang terpisah mirip dengan prosedur, tetapi ada
beberapa perbedaannya. Kata cadangan yang digunakan Function.

PROSEDUR ALGORITMA

   Prosedur Sederhana
Prosedur sederhana adalah sebuah subprogram yang tidak mempunyai parameter masukan maupun parameter keluaran.
Berikut ini adalah skema prosedure sederhana:

procedure A; { nama prosedur adalah A }
var varlok1, varlok2, … : tipevar;
begin
{ statement }
end;

            Pada skema di atas, terlihat bahwa dalam prosedur dapat digunakan variable yang dideklarasikan juga dalam prosedur tersebut, variable-variabel ini disebut variable local.

Contoh program


Program Perhitungan_2_bil;
uses crt;
var bil1,bil2: integer;

Procedure jumlahkan;
var hasilJum: integer;
begin
  hasilJum := bil1+bil2;
  writeln('hasil penjumlahan: ',hasilJum);
end;

BEGIN
  clrscr;
  writeln('masukan 2 bilangan');
  write('bilangan pertama: '); readln(bil1);
  write('bilangan kedua  : '); readln(bil2);
  jumlahkan;
END.

Keluaran program

masukan 2 bilangan
bilangan pertama: 5
bilangan kedua  : 7
hasil penjumlahan: 12

Penjelasan program
Bil1, bil2 adalah variable global, sedangkan hasilJum adalah variable local untuk prosedur jumlahkan


5.2.3.     Prosedur yang menerima masukan
Sebuah prosedur dapat menerima masukan yang digunkan dalam proses sesuai tugasnya. Prosedur semacam ini dikatakan prosedur yang mempunyai parameter masukan.
Berikut ini adalah skema prosedure yang menerima masukan:

procedure B(param1, param2, … : tipeparam);
var varlok1, varlok2, … : tipevar;
begin
{ statement }
end;

Contoh program


Program Perhitungan_4_bil;
uses crt;
var bil1,bil2,bil3,bil4: integer;

Procedure jumlahkan(angka1,angka2: integer);
var hasilJum: integer;
begin
  hasilJum := angka1+angka2;
  writeln('hasil penjumlahan: ',hasilJum);
end;

BEGIN
  clrscr;
  writeln('masukan 4 bilangan');
  write('bilangan pertama: '); readln(bil1);
  write('bilangan kedua  : '); readln(bil2);
  write('bilangan ketiga : '); readln(bil3);
  write('bilangan keempat: '); readln(bil4);
  writeln;
  writeln('bilangan pertama dan kedua');
  jumlahkan(bil1,bil2);
  writeln;
  writeln('bilangan ketiga dan keempat');
  jumlahkan(bil3,bil4);
END.

Keluaran program

masukan 4 bilangan
bilangan pertama: 5
bilangan kedua  : 8
bilangan ketiga : 2
bilangan keempat: 7

bilangan pertama dan kedua
hasil penjumlahan: 13

bilangan ketiga dan keempat
hasil penjumlahan: 9


5.2.4.     Prosedur yang menerima masukan dan menghasilkan keluaran
Prosedur yang paling komplek adalah yang menerima masukan dan menghasilkan keluaran. Prosedur seperti ini disebut prosedur yang mempunyai parameter masukan dan parameter keluaran.
Berikut ini adalah skema prosedur yang menerima masukan dan menghasilkan keluaran:

procedure C(param1, param2, … : tipeparam;
var paramx, paramy, … : tipeparam);
var varlok1, varlok2, … : tipevar;
begin
{ statement }
end;

Pada skema prosedur di atas didefinisikan dua macam parameter, yaitu:
-         parameter nilai (value parameter) : param1, param2
-         parameter acuan (reference parameter): paramx, paramy

Contoh program


Program Perhitungan_4_bil;
uses crt;
var bil1,bil2,bil3,bil4,bil12,bil34,bil1234: integer;

Procedure jumlahkan(angka1,angka2: integer; var hasilJum: integer);
begin
  hasilJum := angka1+angka2;
end;

BEGIN
  clrscr;
  writeln('masukan 4 bilangan');
  write('bilangan pertama: '); readln(bil1);
  write('bilangan kedua  : '); readln(bil2);
  write('bilangan ketiga : '); readln(bil3);
  write('bilangan keempat: '); readln(bil4);
  write('jumlah bilangan pertama dan kedua : ');
  jumlahkan(bil1,bil2,bil12); writeln(bil12);
  write('jumlah bilangan ketiga dan keempat: ');
  jumlahkan(bil3,bil4,bil34); writeln(bil34);
  write('jumlah semua bilangan             : ');
  jumlahkan(bil12,bil34,bil1234); writeln(bil1234);
END.

Keluaran program

masukan 4 bilangan
bilangan pertama: 5
bilangan kedua  : 8
bilangan ketiga : 2
bilangan keempat: 7
jumlah bilangan pertama dan kedua : 13
jumlah bilangan ketiga dan keempat: 9
jumlah semua bilangan             : 22

Penjelasan program
Perhatikan contoh di atas, lihat parameter angka1, angka2, hasilJum di dalam pendeklarasian prosedur jumlahkan yang sesuai dengan parameter bil1, bil2, bil12 pada pemakaian prosedur di dalam tubuh program.
Dalam hal ini dapat didefinisikan dua macam parameter, yaitu:
-         parameter formal, di dalam deklarasi prosedur: angka1, angka2, hasilJum
-         parameter actual, pada pemanggilan prosedur: bil1, bil2, bil12

Dasar-Dasar Pemrograman


Ciri penting algoritma :
• Algoritma harus berhenti setelah mengerjakan
sejumlah langkah terbatas.
• Setiap langkah harus didefinisikan dengan
tepat dan tidak berarti-dua (Ambiguitas).
• Algoritma memiliki nol atau lebih masukkan.
• Algoritma memiliki nol atau lebih keluaran.
• algoritma harus efektif (setiap langkah harus
sederhana sehingga dapat dikerjakan dalam
waktu yang masuk akal).
Memprogram dan bahasa pemrograman:
Belajar memprogram adalah belajar tentang metodologi pemecahan masalah, kemudian menuangkannya dalam suatu notasi tertentu yang mudah dibaca dan dipahami.
• Belajar bahasa pemrograman adalah belajar memakai suatu bahasa, aturan tata bahasanya, instruksi-instruksinya, tata cara pengoperasian compiler-nya untuk membuat program yang ditulis dalam bahasa itu saja.
Notasi Algoritma
• Penulisan algoritma tidak tergantung dari spesifikasi bahasa pemrograman dan komputer yang mengeksekusinya. Notasi algoritma bukan notasi bahasa pemrograman tetapi dapat diterjemahkan ke dalam berbagai bahasa pemrograman
Notasi algoritma
• Notasi algoritma dapat berupa :
– Uraian kalimat deskriptif (narasi)
Contoh
Algoritma Kelulusan_mhs
Diberikan nama dan nilai mahasiswa, jika nilai tersebut lebih besar atau sama dengan 60 maka mahasiswa tersebut dinyatakan lulus jika nilai lebih kecil dari 60 maka dinyatakan tidak lulus.
DESKRIPSI :
baca nama dan nilai mahasiswa. jika nilai >= 60 maka  keterangan = lulus tetapi jika keterangan = tidak lulus. tulis nama dan keterangan
Bagan alir (flow chart). Bagan alir (flow chart).
Keterangan = ' Lulus' Mulai  baca
Nama, nilai
Nilai >= 60
Keterangan = ' Tidak Lulus'
Selesai
Tulis
Nama, keterangan
ya
tidak
Pseudo-code.
Algoritma Kelulusan_mhs
{diberikan nama dan nilai mahasiswa, jika nilai tersebut lebih besar atau sama dengan 60 maka mahasiswa tersebut dinyatakan lulus jika tidak maka dinyatakan tidak lulus}
DEKLARASI :
Nama : string
Nilai : integer
Keterangan : string
DESKRIPSI :
read (nama, nilai)
if nilai >= 60 then
keterangan = ‘lulus’
else
keterangan = ‘tidak lulus’
write(nama, keterangan)
Aturan Penulisan Teks algoritma Aturan Penulisan Teks algoritma
• Judul algoritma
Bagian yang terdiri atas nama algoritma dan penjelasan (spesifikasi) tentang algoritma tersebut. Nama sebaiknya singkat dan menggambarkan apa yang dilakukan oleh algoritma tersebut.
• Deklarasi
Bagian untuk mendefinisikan semua nama yang digunakan di dalam program. Nama tersebut dapat berupa nama tetapan, peubah, tipe, prosedur dan fungsi.
• Deskripsi
Bagian ini berisi uraian langkah-langkah penyelesaian masalah yang ditulis dengan menggunakan notasi yang akan dijelaskan selanjutnya
Algoritma Luas_Kell_Lingkaran {<- ini judul algoritma}
{menghitung luas dan keliling lingkaran untuk ukuran jari-jari tertentu. Algoritma menerima masukan jari-jari lingkaran, menghitung luas dan kelilingnya, dan mencetak luas lingkaranke piranti keluaran <- ini spesifikasi algoritma}
DEKLARASI :
const phi = 3.14 {nilai ? }
R : real {jari-jari lingkaran}
Luas : real {luas lingkaran}
Keliling : real {keliling lingkaran}
DESKRIPSI :
read (R)
Luas <- phi * R *R
Keliling <- 2 * phi * R
write(luas, keliling)

Tipe data dalam Java:
n      Primitive types: tipe boolean, char, numerik
n      Reference types: class (termasuk String, Integer), array.
n      Apa perbedaan antara primitive and reference type?
 








n      Apakah operator?

n      Berdasarkan jumlah dari operands:
n      Unary
n      Binary

n      Berdasarkan operasi yang dilakukannya:
n      Arithmatic
n      Logical
n      Apakah itu expression?

n      Apakah output dari potongan program berikut?
int ii = 1;
int jj = 2;
double a = (ii + 1) / (jj + 1);
double b = (double) (ii + 1) / (jj + 1);
double c = (ii + 1) / (double) (jj + 1);
double d = (ii + 1.0) / (jj + 1.0);
System.out.println (a + " " + b);
System.out.println (c + " " + d);
Perlu diingat:
n      Tipe data dari sebuah ekspresi bergantung pada operator dan tipe data dari operands.
n      Urutan evaluasi sebuah ekspresi bergantung pada tingkat precedence operator. Jika dua buah operators memiliki tingkat precedence yang sama, lihat pada associativity operatornya:
       LR: Left to Right
       RL: Right to Left
n      Branch (cabang)
n      Digunakan untuk memilih perintah mana yang akan dijalankan berdasarkan kondisi tertentu.

n      Loop (pengulangan)
n      Suatu kelompok program dijalankan secara berulang. Kondisi berhenti menyatakan berapa kali pengulangan dijalankan.
if (condition)                                           
{
    statement; if (condition)
{
    statement1
}
else
{
    statement2
}
next statement

}
next statement
n      Kesalahan umum:
if (x == 0);
    System.out.println (“x is zero”);

if (x > 0)‏
    System.out.println (“x = “);
    System.out.println (x);
testExpr ? yesExpr : noExpr
n      Berguna untuk menyederhanakan perintah if-then-else sederhana
n      Contoh:
if (x > 100){
    y = x * 0.9;
} else {
    y = x;
}
n      Setara dengan:
y = (x > 100) ? (x * 0.9) : x;
while (condition){
      statement;
  }
  /* Post condition: ~condition */

n      Selama nilai ekspresi condition true, maka statement akan dijalankan, kemudian ekspresi condition akan dievaluasi lagi.
n      Saat nilai expression condition false, pengulangan berhenti. Perintah statement tidak lagi dijalankan.
n      Ingat: condition dievaluasi lebih dulu!
do {
      statement;
      ...
  } while (condition);
  /* Post condition: ~condition */
n      statement dijalankan lebih dulu, kemudian condition dievaluasi.
n      Jika kondisi true Þ statement dijalankan lagi.
n      Jika kondisi false Þ loop berhenti.
n      Minimal statement dijalankan sekali.
for (initialization; condition; update) {
      statement;
  }

n      setara dengan perintah while berikut:
 initialization;
 while (condition) {
    statement;
    update;
 }
n      for digunakan bila kita sudah tahu berapa banyak pengulangan yang akan dilakukan.
Class
·        Class memiliki:
n      Detail implementasi (blue print) dari sebuah object yang akan dibuat Þ bayangkan sebuah object factory.
n      Class juga menyimpan static methods dan static variables dari object yang akan dibuat.
n      Class menyatakan detail implementasi object
n      Seluruh method dan fields
n      code untuk method yang akan menentukan perilaku dari object.
n      Berdasarkan definisi class Þ object dibuat
Field
n      Menyimpan status dari object atau class
n      Terdapat dua jenis field:
n      Instance variable
       Tiap object punya nilai variable masing-masing Þ object variable
n      Static variable
       Satu class hanya punya satu nilai variable, walaupun class tersebut memiliki beberapa object Þ class variable
Array
n      Deklarasi Array (array adalah object juga)
int [] array1;
n      ingat: mendeklarasikan sebuah reference variable tidak berarti mengalokasikan memory dan membuat object.
n      Membuat array
array1 = new int[100];
int[] array2 = { 2, 3, 7, 5 };
n      Untuk mengakses element dalam array, gunakan index
array1[0] = 20;
n      Karena array adalah object juga, operator = tidak mengcopy(clone) array.
int[] lhs = new int[100];
int[] rhs = new int[100];
...
lhs = rhs;
Exceptions
n      Exception menyatakan bahwa sebuah “kejadian aneh” telah terjadi.
n      Sebuah object Exception menyimpan informasi tentang keanehan tersebut.
n      throw Þ “menandakan” keanehan
n      catch Þ tindakan “mengatasi” keanehan
n      Error vs. Exception
n      Error Þ kesalahan fatal, mis: out of memory
n      Exception Þ masih bisa “dibetulkan”, mis: EOFException, ArrayIndexOutOfBoundException.
Overloading
n      Memakai nama sama untuk method berbeda
n      Method-method ini dibedakan berdasarkan signature-nya:
n      Jumlah parameter
n      Tipe parameter
n      Urutan parameter
n      Perhatikan bahwa signature tidak tergantung
n      Nama parameter
n      Return type
n      Overloading ditangani pada saat kompilasi (static binding)
Overriding
n      Sebuah method yang memiliki nama dan signature yang sama dengan method dari superclass.
n      Method dari subclass dikatakan meng-override method dari superclass.
n      Ditangani pada saat runtime (dynamic binding): instance type menentukan method mana yang digunakan.
Polymorphism
n      Dalam mendefinisikan method untuk sebuah subclass, ada  tiga kemungkinan:
n      override a method from the superclass: Nama dan signature sama dengan method milik superclass.
n      inherit method from the superclass: Methods yang tidak ditulis ulang otomatis akan diturunkan kepada seluruh subclass.
n      create a new method: Nama dan signature berbeda dengan method milik superclass
Interface
n      Sebuah class hanya boleh meng-extend satu superclass, tapi boleh meng-implement banyak interface.
n      Ketika meng-extend superclass, sebuah class mewarisi interface (definisi method) dan juga implementasinya.
n      Ketika meng-implement interface, sebuah class hanya mewarisi interface (definisi method).
n      Contoh: sifat generik “comparable” didefinisikan di dalam sebuah interface:
public interface Comparable {
    public int compareTo (Object ob);
}
n      compareTo mengembalikan:
       <0: object this “lebih kecil” dari parameter ‘ob’
       0: object this sama nilainya dengan parameter ‘ob’
       >0: object this “lebih besar” dari parameter ‘ob’
Contoh: interface
public class CircleComparable extends Circle
    implements Comparable
{
    public CircleComparable (double r)
    {super (r);}
    public int compareTo (Object other)
    {
        CircleComparable otherCircle =
           (CircleComparable) other;
        if (radius < otherCircle.getRadius ())
        {return -1;}
        else if (radius > otherCircle.getRadius ())
        {return 1;}
        else
        {return 0;}
    }
}