PEMROGRAMAN I By : Sri Rezeki Candra Nursari
Penilaian : Genap TA 2010/2011 UAS (lisan) = 30 % UTS = 25 % Tugas = 20 % Praktikum = 25 % __________________________________ Jumlah = 100%
email : 1. 2. 3. 4.
5.
6.
Meigha A. Krisnha –
[email protected] Moch. Yusuf. P –
[email protected] Jimmy k s
[email protected] Rehulina triana oktaviani t
[email protected] Prasetya Mahardhitama –
[email protected] Rr nadya risti wulandari 4510212058 –
[email protected]
Materi : nursari2010.blogdetik.com
Pengantar OOP, Tipe Data, Variabel, Array, Operator, Percabangan, Perulangan, Pendahuluan kelas, Metoda dan Kelas, Inheritance, Polymorphism, Package, Interface, Exception Handling, Multithreaded Programming, Pendahuluan I/O dan Applets
JAVA
1. Asal Mula JAVA
di perkenalkan pertama kali oleh sebuah tim Sun Microsystem dipimpin oleh Patrick Naughton dan James Gosling Tahun 1995 bahasa pemrograman yang bersifat portable dan platform independent, yang dapat digunakan untuk membuat peranti lunak yang dapat di tanamkan (embedded) pada berbagai macam peralatan elektronik
2. Perkembangan Teknologi JAVA
Saat ini Sun Microsystem membagi Java menjadi empat jenis edisi, yaitu : 1.
Java Card
2.
Teknologi Java yag digunakan pada peralatan elektronik yang memiliki memori sangat terbatas, misalnya smart card
J2ME (Java 2 Platform Micro Edition)
Merupakan teknologi Java edisi mikro, digunakan untuk penerapan teknologi Java pada peralatan elektronik seperti handphone dan PDA
2. Perkembangan Teknologi JAVA
Saat ini Sun Microsystem membagi Java menjadi empat jenis edisi, yaitu : 3.
J2SE (Java 2 Platform Second Edition)
4.
Merupakan teknologi Java edisi standar, digunakan untuk penerapan teknologi pada komputer desktop
J2EE (Java 2 Platform Enterprise Edition)
Merupakan teknologi Java edisi enterprise, digunakan untuk penerapan teknologi Java pada komputer server
2. Perkembangan Teknologi JAVA Setiap edisi Java terdiri dari dua/2 komponen utama, yaitu :
Java Application Programming Interface (Java API)
Java API terdiri atas kumpulan library yang digunakan untuk keperluan pemrograman. Dengan adanya API, tidak harus membuat program dari awal. Misalnya untuk J2SE, sudah terdapat API untuk pengolahan window dengan Swing dan AWT (Abstract Window Toolkit)
Java Run Time Environment (JRE)
JRE merupakan lingkungan yang membuat aplikasi Java dapat dijalankan. Salah satu komponen penting JRE adalah JVM (Java Virtual Machine)
Perkembangan versi pada Java adalah : Versi JAVA
Tahun
Jumlah Class
1.0 1.1 1.2 1.3 1.4 5 6
1996 1997 1998 2000 2004 2004 2005
211 477 1.524 1.840 2.723 3.279 3.777
Pada tahun 2006, Sun Microsystem menerapkan lisensi open source, yaitu GNU General Public License (GNU GPL) sehingga semua user semakin leluasa menggunakan teknologi Java
3. Standar JAVA Ada 6 standar Java, adalah sebagai berikut :
1.
Dukungan bahasa
2.
Utilitas
3.
Kumpulan kelas dan metode yang mendukung fasilitas bahasa pada Java seperti String, Array, Fungsionalitas tak tergantung sistem, Thread dan Eksepsi Kumpulan kelas yang menyediakan fungsi-fungsi utilitas seperti, bilangan acak, fungsi tanggal dan waktu, serta kelas-kelas penyimpanan vektor dan hashtable
Masukan/keluaran
Kumpulan kelas yang mengambil masukan dari berbagai sumber dan memanipulasi masukan tersebut dengan sejumlah cara serta menampilkannya ke berbagai sumber dengan cara yang bervariasi. Kelas-kelas ini meliputi kelas filter, pengakses file secara sekuensial maupun acak dan puluhan metode untuk membaca dan menulis semua jenis tipe data
3. Standar JAVA Ada 6 standar Java, adalah sebagai berikut :
4.
Jaringan
5.
Abstract Window Toolkit (AWT)
6.
Kumpulan kelas yang digunakan untuk menghubungan komputer dengan komputer lain dijaringan lokal maupun internet. Kelaskelas ini meliputi socket, Internet-Address dan pemrosesan URL (Uniform Resource Locator) Kumpulan kelas yang mengimplementasikan antar muka pengguna grafis (GUI : Graphical User Interface) yang tidak tergantung terhadap platform.
Applet
Kelas yang memungkinkan untuk membuat program Java yang nantinya didownload dari halaman WEB da dijalankan di browser klien seperti HotJava atau Netscape
Perbedaan JAVASCRIPT vs JAVA JavaScript
merupakan scripting language yang digabungkan dengan HTML, sehingga memungkinkan suatu web page berinteraksi dengan penggunanya. JavaScript, tidak memerlukan kompilasi, karena konsepnya hanya diinterpretasikan, dimana Web Browserlah yang bertanggung jawab untuk melakukannya.
Java
merupakan full programming language, yang secara esensi sama dengan bahasa pemrograman lainnya seperti VisualBasic, C++, dan lain-lain. Kode Java dibuat harus dikompilasi menjadi bentuk yang dapat dieksekusi oleh run-time system Java (Java Virtual Machine. Program Java yang dibuat sebagai applet tidak dieksekusi oleh Web Browser, tetapi Web Browser sebagi komtainer yang memungk inkan applet tersebut dieksekusi didalamnnya
JAVA Bytecode
Hasil kompilasi Java adalah berupa bytecode yang merupakan sekumpulan instruksi yang sangat teroptimasi. Agar bytecode dapat dieksekusi seperti program biasa, maka diperlukan suatu program khusus yang akan menerjemahkan dan mengeksekusi setiap baris instruksi bytecode yang ada oleh microprocesesor secara langsung. Program khusus ini kita kenal sebagai Java Virtual Machine (JVM). Jadi JVM merupakan interpreter dari bytecode
Kelebihan JAVA Bersifat portable dan platform independent
1.
Program Java yang ditulis dapat dieksekusi di paltform manapun tanpa memerlukan kompilasi ulang (portable) asalkan Java Virtual Machine untuk platform tersebut tersedia
Memiliki garbage collection
2.
Dapat mendealokasi memori secara otomatis. Anda tidak perlu secara eksplisit membebaskan suatu lokasi memori yang dipakai karena ini akan dilakukan secara otomatis oleh Java.
Menghilangkan pewarisan berganda yang terdapat pada C++
3.
Walaupun kelihatannya sebagai suatu kekurangan, namun banyak para ahli yang mengakui bahwa bahasa konsep pewarisan berganda lebih banyak mengakibatkan kerugian dari pada keuntungan. Java telah didesain sedemikian rupa sehingga Anda tidak akan memerlukan teknik ini dalam pembuatan program apapun
Kelebihan JAVA Mengurangi pointer aritmetik
4.
Pengaksesan lokasi memori secara langsung dengan menggunakan pointer memungkinkan program untuk melakukan suatu tindakan yang tidak seharusnya atau tidak boleh dilakukan. Untuk mengurangi dan menghilangkan kemungkinan kesalahan seperti ini, penggunaan pointer pada Java telah dibatasi dengan menggunakan reference
Memiliki array sejati Mengurangi kerancuan antara pemberian nilai pada statemen kondisional.
5. 6.
Contoh pengguunaan tanda ”=” dengan ”==” pada kondisi IF
Karakteristik JAVA Berorientasi objek
1.
Java telah menerapkan konsep pemrograman berorientasi objek yang modern dalam implementasinya
Robust/Kokoh
2.
Java mendorong pemrograman yang bebas dari kesalahan dengan bersifat strongly typed dan memiliki run-time checking. Perangkat lunak yang kuat tidak mudah menghentikan program karena terdapat bug atau kesalahan logika didalamnya. Pemrograman pada umumnya mempunyai keterbatasan termasuk tipe datadan penggunaan pointer. Java tidak mendukung aritmatika pointer melainkan Array.
Karakteristik JAVA Portable
3.
Program Java dapat dieksekusi di paltform manapun selama tersedia Java Virtual Machine untuk platform tersebut
Multithreading
4.
Java mendukung penggunaan multihreading yang telah diintegrasi sacara langsung dalam bahasa Java. Java dapat digunakan untuk membuat aplikasi dimana beberapa event berlangsung pada saat yang sama
Dinamis
5.
Program Java dapat melakukan suatu tindakan yang ditentukan pada saat eksekusi program dan bukan pada saat kompilasi. Tidak seperti kode dalam C++ yang memerlukan kompilasi kembali jika suatu kelas diubah, Java menggunakan metode dari interface untuk menghilangkan ketergantungan tersebut. Metode dan variabel dari instance baru dapat digunakan tanpa mempengaruhi objek pada client
Karakteristik JAVA Sederhana
6.
Java menggunakan bahasa yang sederhana dan mudah dipelajari
Terdistribusi
7.
Java didesain untuk berjalan pada lingkungan yang terdistribusi seperti halnya internet. Java secara spesifik dirancang untuk pekerjaan dalam lingkungan jaringan. Java mempunyai banyak pustaka kelas untuk komunikasi menggunakan protokol internet TCP/IP, termasuk protokol seperti HTTP dan FTP
Aman
8.
Aplikasi yang dibuat dengan bahasa Java dapat dipastikan keamanannya terutama untuk aplikasi internet. Java membatasi pada pointer sehingga developer tidak dapat mengakses memori jika tidak diijinkan. Aspek ini membuat Java cukup aman dalam lingkungan software.
Karakteristik JAVA Netral secara arsitektur
9.
Java tidak terikat pada suatu mesin atau sistem operasi tertentu. Kompiler Java membuat bytecode yang dikirim ke browser dan diterjemahkan oleh browser yang mempunyai interpreter Java. Dengan demikian dapat dijalankan pada semua komputer dengan platform yang berbeda
Interpreted
10.
Aplikasi Java dapat dieksekusi pada platform yang berbeda-beda dengan melakukan interpretasi pada bytecode. Kompiler Java menerjemahkan file sumber Java menjadi bytecode yang dapat dijalankan pada semua komputer yang menjalankan interpreter Java atau Browser
Karakteristik JAVA 11.
Berkinerja tinggi
Bytecode Java telah sangat teroptimasi sehingga eksekusi program dapat dilakukan secara cepat sekalipun dilakukan dengan cara interpretasi terhadap bytecode. Kompilasi Java termasuk kebebasan menerjemahkan bytecode ke kode mesin pada platform yang ada. Hal ini memberikan efisiensi yang sama seperti kompilasi dan pemrosesan secara tradisional.
Perbedaan JAVA dengan C/C++ 1.
2. 3.
4. 5.
6. 7.
Java tidak mendukung tipe data struct, union dan pointer Java tidak mendukung typedef atau #define Java berbeda dalam menangani operator tertentu dan tidak menginjinkan operator overloading Java tidak mendukung multiple inheritance Java mempunyai kelas String yang menjadi bagian dari paket java.lang Java menangani argumen command-line berbeda Java mempunyai sistem otomatis untuk mengalokasikan dan membebaskan memori, sehingga tidak perlu menggunakan fungsi alokasi dan dealokasi memori
Program JAVA
Ada 2 pemrograman yang dapat dibuat menggunakan bahasa pemrograman Java, yaitu : 1. Aplikasi Java
Program stand alone pada umumnya yang dibagi menjadi dua macam, adalah sebagai berikut : 1.
2.
Aplikasi konsol (console application) hanya mendukung output karakter pada screen komputer Aplikasi windows (windowed application) Dapat membuat dan mengatur banyak window, seperti penggunaan enu, toolbar, dialog dan lain-lain
Applet Java
2.
Program yang disisipkan dalam halaman WEB
FLATFORM JAVA
Platform java memiliki dua komponen : 1. 2.
Java virtual machine (JVM) Java application programming interface (Java API)
Java API merupakan kumpulan komponen perangkat lunak yang menyediakan berbagai fasilitas, sperti GUI widget. Java API dikelompokkan dalam paket (package) yang Java Program berkaitan. Java API Java Virtual Machine Hardware-based Platform
Platform Java
LINGKUNGAN BAHASA PEMROGRAMAN JAVA Source Code
Compiler
Object Code
Verifikasi object code dan di-load ke Java Virtual Machine Java Virtual Machine Eksekusi program oleh interpreter
Java Interpreter
Interpreter menangani hubungan dengan sistem operasi Operating System
Program JAVA
Enam kategori versi lingkungan JAVA : 1.
Paket lang
Tipe primitif sebagai kelas Kelas-kelas : number, character, boolean, double, long, float, integer Superkelas abstrak untuk semua objek pada Java Kelas-kelas : class, objek String Kelas-kelas : String, StringBuffer Informasi sistem Kelas-kelas : System, Process, Runtime, ClassLoader, SecurityManager Fungsi-fungsi matematika seperti: sin(), cos(), exp() dan power() Kelas-kelas : Math Thread Kelas-kelas : Thread, ThreadGroup
Program JAVA Enam kategori versi lingkungan JAVA :
Paket lang
1.
Kesalaan pada program berjalan Kelas-kelas : StackOverflowError, UnknownError, NoSuchMethodError, IncompatibleClassChangeError, OutOfMemoryError, UnsatisfiedLinkError, AbstractMethodError, IllegalAccessError, ThreadDeathVirtualMachineError, ClassCircularityError, ClassFormatError, LinkageError, NoClassDefFoundError, Error, VerifyError, InstantiationError, NoSuchFieldError Eksepsi Kelas-kelas : Throwable, ArithmeticException, ClassCastException, Exception, IllegalArgumentException, InterruptedException, ArrayStoreException, NullPointerException, NegativeArraySizeException, NumberFormatException, ArrayIndexOutOfBoundsException, RuntimeException, SecurityException, IllegalThreadStateException, StringIndexOutOfBoundsException, ClassNotFoundException, InterruptedException, NoSuchMethodException
Paket util
2.
Kontainer Kelas-kelas : HashtableEntry, Properties, Vector, VectorEnumerator, Stack, ObserverList, BitSet, Dictionary Lain-lain Kelas-kelas : Random, Date, StringTokenizer, NoSuchElementException,
Program JAVA
Enam kategori versi lingkungan JAVA : 3.
Paket io
Stream Masukan Kelas-kelas : InputStream, ByteArrayInputStream, FilterInputStream, PushbackInputStream, StringBufferInputStream, DataInputStream, , BufferedInputStream, LineNumberInputStream, SequenceInputStream, PipeInputStream, StreamTokenizer, Stream Keluaran Kelas-kelas : OutputStream, DataOutputStream, BufferedOutputStream, PrintStream, FilterOutputStream, ByteArrayOutputStream, PipedOutputStream File Kelas-kelas :File, FileInputStream, FileOutputStream, RandomAccessFile Eksepsi Kelas-kelas : IOException, InterruptedIOException, FileNotFoundException, EOFException, UTFDataFormatException
Program JAVA Enam kategori versi lingkungan JAVA : 4.
Paket net
5.
Paket awt
6.
Piranti WEB Kelas-kelas : InetAddress, URL, URLConnection, URLStreamHandler, ContentHandler, Soket Kelas-kelas : ServerSocket, Socket, SocketImpl, SocketInputStream, SocketOutputStream Eksepsi Kelas-kelas : ProtocolException, SocketException, UnknownHostException, UnknownServiceException, MalformedURLException Paket AWT merupakan kelas-kelas untuk menangani : Jendela, Tombol, Daftar, Menu
Paket applet
OOP – Object Oriented Programming
Object
Objek mempunyai 2 karakteristik, yaitu : Keadaan (state) menyatakan kondisi yang ada pada objek tersebut pada suatu saat tertentu. Kondisi ini dinyatakan dalam atribut. Dapat dianggap sebagai kata benda
Contoh :
Seekor kucing meliputi warna bulu, berat badan, lapar, haus, lelah. Sebuah mobil memiliki kecepatan, tipe transmisi, lampu menyala atau tidak, gir, ban
Perilaku (behaviour) Merupakan sekumpulan aksi yang dapat dilakukan oleh objek. Dapat dianggap sebagai kata kerja.
Contoh :
Seekor kucing perilakunya mengeong, berlari, tidur, mengendus. Sebuah mobil perilakunya berbelok, mengerem, melakukan percepatan
Object
State dan behavior suatu objek bekerja secara bersama-sama. Bagaimana seekor kucing akan mengeong apabila lapar. Apabila kucing lelah maka berperilaku tidur, etc.... Dalam PBO kita memodelkan semua objek dalam dunia nyata tersebut kedalam program. Objek yang kita modelkan dalam perangkat lunak juga memiliki 2 karakteristik yang sama yaitu state dan behaviour/perilaku. Dalam pemrograman merelasikan :
Keadaan (state) sebagai variabel Perilaku (behaviour) sebagai fungsi/method
KELAS
Kelas
Objek didefiniskan dengan sebuah kelas. Kelas merupakan sebuah model, pola atau cetak biru atau blue print yang digunakan untuk menciptakan sebuah objek Sebuah contoh, objek mobil memiliki beberapa variabel yang menyatakan state dari mobil bersama dengan implementasi dari fungsi yang menyatakan perilaku dari mobil tersebut. Untuk setiap instance kelas tersebut akan mendapat sekumpulan variabel state. Saat instance dari kelas tersebut dibuat, maka variabel yang dideklarasikan akan disimpan di memori. Variabel tersebut kemudian akan dimodifikasi dengan menggunakan fungsi yang telah disediakan.
Contoh
Class Mahasiswa State Nama Alamat Jurusan Mata kuliah IPS IPK Method Melakukan pendaftaran Mengikuti kuliah Mengikuti ujian
ENKAPSULASI
Enkapsulasi Enkapsulasi adalah suatu mekanisme untuk menyembunyikan atau memproteksi suatu proses dari kemungkinan interferensi atau penyalahgunaan dari luar sistem dan sekaligus menyederhanakan penggunaan sistem itu sendiri Menggambarkan sebuah objek sebagai sebuah ”kotak hitam”, yang tidak perlu tahu apa yang ada didalamnya.
Contoh :
Sebagai pengguna mobil, tidak perlu mengetahui secara rinci tentang mobil tersebut, misal berapa katup yang ada di mesin, proses pembakarannya Yang penting bagaimana dapat mengendarai mobil dengan benar.
PEWARISAN
Pewarisan
Bentuknya seperti hirarki, semakin ke level bawah class akan bersifat semakin spesifik sedangkan semakin ke level atas class akan bersifat semakin umum Pewarisan sering disebut sebagai bentuk spesialisasi atau generalisasi atas objek. Contoh :
Kendaraan
Kendaraan Bermotor Mobil Truk Kendaraan Tak Bermotor Sepeda Becak
Pewarisan
Semua objek diatas termasuk dalam kelompok Kendaraan. Apabila kendaraan merupakan sebuah kelas, maka kelas kendaraan mewarisi karakteristik yang dimilikinya (memiliki roda). Konsep ini disebut dengan pewarisan/inheritance
PEWARISAN Class Wanita Class Manusia (state) Berat Tinggi Usia (behavior) Makan Minum Bekerja
(state) Memiliki organ kelamin wanita (behavior) Melahirkan Menyusui Class Pria (state) Memiliki organ kelamin pria (behavior)
POLYMORPHISM/ POLIMORFISME
Polimorfisme/Polymorphism
Polymorphism berasal dari bahasa Yunani yang berarti ”banyak bentuk”. Konsep ini memungkinkan digunakannya suatu interface yang sama untuk memerintahkan suatu objek agar melakukan suatu aksi atau tindakan yang mungkin secara prinsip sama tetapi secara proses berbeda. Satu objek dengan objeklain terjadi komunikasi. Satu objek mengirimkan pesan ke objek-objek lain untuk melakukan sesuatu yang diinginkan. Dalam pemrograman berorientasi objek, polimorfisme memiliki arti, fungsi yang sama, tetapi memiliki perilaku yang berbeda pada kelas-kelas yang berbeda
TIPE DATA
Tipe Data Ada tiga bentuk data, yaitu :
Numerik
Data yang berbentuk angka atau bilangan. Data numerik terbagi menjadi dua kategori :
Karakter
Data yang berbentuk karakter atau deretan karakter. Data karakter terbagi menjadi dua kategori :
D A T A
Karakter tunggal Deretan karakter
Logika
T I P E
Bilangan bulat (integer) Yaitu bilangan yang tidak mengandung angka pecahan Bilangan pecahan (float) Yaitu bilangan yang mengandung angka pecahan
Tipe data dengan nilai benar (TRUE) atau salah (FALSE)
a. Tipe data primitif a.1. Character - char a.2. Integer - byte - short - int - long a.3. Floating point single precision - float a.4. Floating point double precision - double
a.5. Boolean - boolean b. Tipe data referensi/ komposit b.1. string b.2. array b.3. class b.4. interface
Type Data
T I P E D A T A
Batas Nilai
Ukuran Dalam Byte
char
0 s.d. 65535 Atau hexadecimal 0000 s.d. FFFF
1
byte
-128 s.d. 127
1
short
-32768 s.d. 32767
2
int
-2147483648 s.d. 2147483647
4
long
-9223372036854775808 s.d. 9223372036854775807
8
float
3.E-38 s.d. 3.4E38
4
double
1.7E-308 s.d. 1.7E308 Positif atau negatif
8
boolean
Nilai yang dinyatakan dengan true atau false
1
Konstanta Yg Dicetak
T I P E D A T A
Yang Tercetak Dilayar
“Teknik Informatika”; “A”; ‘A’; 123; 123L; 220766; -111961;
Teknik Informatika A A 123 123 220766 -111961
429496295 429496296 111.961; 111.9616; 111.96166; 1119616.6610; 111E6 111.96E6
429496295 0 111.961 111.962 111.962 1.119616e+06 111000000 111960000
Reserved Word/Kyword Abstract catch default final if static private interface
boolean char do finally
break class double float implements import long native protected public strictfp super
this void null
throw volatile
throws while
byte const else for
case continue extends goto instanceof int new package return short synchroni switch zed transient try false true
Variabel Variabel adalah unit dasar penyimpanan di program Java. Variabel harus dideklarasikan sebelum digunakan Sintaks deklarasi variabel adalah :
Contoh
int nilai1, nilai2, nilai3 int nilai1=60, nilai2=70, nilai3=90 char huruf=”x” double pi=3,14159
OPERATOR ARITMATIKA Standar Operator dari yang tertinggi sampai yang terendah * / % + -
Keterangan
Multiplication / Perkalian Division / Pembagian Remainder / Sisa Hasil Bagi Addition / Penjumlahan Subtraction / Pengurangan
OPERATOR LOGIKA Operator Fungsi &&
Logika AND
||
Logika OR
!
Logika NOT
OPERATOR RELASI Operator
By Contoh Java
Keterangan
=
==
x = = y x sama dengan y
≠
!=
x != y
x tidak sama dengan y
>
>
x>y
x lebih besar dari y
<
<
x
x lebih besar dari y
≥
>=
x >= y
≤
<=
x <= y
x lebih besar atau sama dengan y x lebih kecil atau sama dengan y
STRUKTUR BAHASA JAVA Struktur utama bahasa Java adalah public class xxxxxxxxxx (merupakan nama klas) {public static void main (String [ ] args) { statement statement } }
STRUKTUR BAHASA JAVA Sama seperti program C/C++, pada program Java, bila program java dijalankan, maka instruksi pertama yang dikerjakan adalah instruksi yang ada dalam metode main ( ). public class yyyyy { } public class xxxxxxxxxx { public static void main (String [ ] args ) { } public void zzzzz ( . . ) { } }
PENGETIKAN KODE PADA PROGRAM JAVA
Ada beberapa alternatif aplikasi yang ditawarkan untuk melakukan pengetikan program, antara lain : 1. 2.
Blue-J Forte release 2.0
BLUE-J
Tampilan pertama Blue-J
Membuat Project dan Class Baru
BLUE-J
Source Editor
BLUE-J Mengkompilasi - klik command button compile, -program tidak ada kesalahan [class compiled-no syntax error] Menjalankan / Mengeksekusi Program Untuk menjalankan program yang telah ada pada editor, pada kotak dialog BlueJ – Hello klik kanan, lalu pilih void main(args) – Ok
Hasil Program
BLUE-J
Kesalahan Program
FORTE for Java CE
Tampilan pertama Forte
FORTE for Java CE
Membuat Project dan Class Baru
FORTE for Java CE
Source Editor
FORTE for Java CE Mengkompilasi -klik icon compile -(F9) Menjalankan/Mengeksekusi Program -klik icon execute -(F6)
Hasil Program
FORTE for Java CE
Kesalahan Program