Java - Paket
Paket digunakan di Java untuk mencegah konflik penamaan, untuk mengontrol akses, untuk mempermudah pencarian / penempatan dan penggunaan kelas, antarmuka, enumerasi dan anotasi, dll.
SEBUAH Package dapat didefinisikan sebagai pengelompokan jenis terkait (kelas, antarmuka, enumerasi, dan anotasi) yang menyediakan perlindungan akses dan manajemen namespace.
Beberapa paket yang ada di Java adalah -
java.lang - menggabungkan kelas-kelas dasar
java.io - kelas untuk input, fungsi output digabungkan dalam paket ini
Pemrogram dapat menentukan paket mereka sendiri untuk memaketkan grup kelas / antarmuka, dll. Merupakan praktik yang baik untuk mengelompokkan kelas terkait yang diimplementasikan oleh Anda sehingga programmer dapat dengan mudah menentukan bahwa kelas, antarmuka, enumerasi, dan anotasi terkait.
Karena paket membuat namespace baru, tidak akan ada nama yang bentrok dengan nama di paket lain. Dengan menggunakan paket, lebih mudah untuk menyediakan kontrol akses dan juga lebih mudah untuk menemukan kelas terkait.
Membuat Paket
Saat membuat paket, Anda harus memilih nama untuk paket tersebut dan menyertakan file package pernyataan bersama dengan nama itu di bagian atas setiap file sumber yang berisi kelas, antarmuka, enumerasi, dan jenis anotasi yang ingin Anda sertakan dalam paket.
Pernyataan paket harus menjadi baris pertama dalam file sumber. Hanya ada satu pernyataan paket di setiap file sumber, dan ini berlaku untuk semua jenis di file.
Jika pernyataan paket tidak digunakan maka kelas, antarmuka, enumerasi, dan jenis anotasi akan ditempatkan di paket default saat ini.
Untuk mengkompilasi program Java dengan pernyataan paket, Anda harus menggunakan opsi -d seperti yang ditunjukkan di bawah ini.
javac -d Destination_folder file_name.java
Kemudian folder dengan nama paket yang diberikan dibuat di tujuan yang ditentukan, dan file kelas yang dikompilasi akan ditempatkan di folder itu.
Contoh
Mari kita lihat contoh yang membuat sebuah paket bernama animals. Merupakan praktik yang baik untuk menggunakan nama paket dengan huruf kecil untuk menghindari konflik dengan nama kelas dan antarmuka.
Contoh paket berikut berisi antarmuka bernama hewan -
/* File name : Animal.java */
package animals;
interface Animal {
public void eat();
public void travel();
}
Sekarang, mari kita menerapkan antarmuka di atas pada hewan paket yang sama -
package animals;
/* File name : MammalInt.java */
public class MammalInt implements Animal {
public void eat() {
System.out.println("Mammal eats");
}
public void travel() {
System.out.println("Mammal travels");
}
public int noOfLegs() {
return 0;
}
public static void main(String args[]) {
MammalInt m = new MammalInt();
m.eat();
m.travel();
}
}
Sekarang kompilasi file java seperti yang ditunjukkan di bawah ini -
$ javac -d . Animal.java $ javac -d . MammalInt.java
Sekarang paket / folder dengan nama animals akan dibuat di direktori saat ini dan file kelas ini akan ditempatkan di dalamnya seperti yang ditunjukkan di bawah ini.
Anda dapat menjalankan file kelas di dalam paket dan mendapatkan hasil seperti yang ditunjukkan di bawah ini.
Mammal eats
Mammal travels
Impor Kata Kunci
Jika sebuah kelas ingin menggunakan kelas lain dalam paket yang sama, nama paket tidak perlu digunakan. Kelas dalam paket yang sama menemukan satu sama lain tanpa sintaks khusus.
Contoh
Di sini, kelas bernama Boss ditambahkan ke paket penggajian yang sudah berisi Karyawan. Bos kemudian dapat merujuk ke kelas Karyawan tanpa menggunakan awalan penggajian, seperti yang ditunjukkan oleh kelas Bos berikut.
package payroll;
public class Boss {
public void payEmployee(Employee e) {
e.mailCheck();
}
}
Apa yang terjadi jika kelas Karyawan tidak ada dalam paket penggajian? Kelas Boss kemudian harus menggunakan salah satu dari teknik berikut untuk merujuk ke kelas dalam paket yang berbeda.
- Nama kelas yang sepenuhnya memenuhi syarat dapat digunakan. Misalnya -
payroll.Employee
Paket dapat diimpor menggunakan kata kunci import dan wild card (*). Misalnya -
import payroll.*;
- Kelas itu sendiri dapat diimpor menggunakan kata kunci impor. Misalnya -
import payroll.Employee;
Note- File kelas dapat berisi sejumlah pernyataan impor. Pernyataan import harus muncul setelah pernyataan paket dan sebelum deklarasi kelas.
Struktur Direktori Paket
Dua hasil utama terjadi ketika kelas ditempatkan dalam sebuah paket -
Nama paket menjadi bagian dari nama kelas, seperti yang baru saja kita bahas di bagian sebelumnya.
Nama paket harus sesuai dengan struktur direktori tempat bytecode yang sesuai berada.
Berikut adalah cara sederhana untuk mengelola file Anda di Java -
Letakkan kode sumber untuk kelas, antarmuka, enumerasi, atau jenis anotasi dalam file teks yang namanya adalah nama sederhana dari jenis tersebut dan yang ekstensinya adalah .java.
Misalnya -
// File Name : Car.java
package vehicle;
public class Car {
// Class implementation.
}
Sekarang, letakkan file sumber di direktori yang namanya mencerminkan nama paket tempat kelas itu berada -
....\vehicle\Car.java
Sekarang, nama kelas dan nama jalur yang memenuhi syarat adalah sebagai berikut -
- Nama kelas → kendaraan. Mobil
- Nama jalur → kendaraan \ Car.java (di windows)
Secara umum, perusahaan menggunakan nama domain Internet terbalik untuk nama paketnya.
Example- Nama domain Internet perusahaan adalah apple.com, lalu semua nama paketnya akan dimulai dengan com.apple. Setiap komponen nama paket sesuai dengan subdirektori.
Example - Perusahaan memiliki paket com.apple.computers yang berisi file sumber Dell.java, itu akan dimuat dalam serangkaian subdirektori seperti ini -
....\com\apple\computers\Dell.java
Pada saat kompilasi, kompilator membuat file keluaran yang berbeda untuk setiap kelas, antarmuka dan enumerasi yang ditentukan di dalamnya. Nama dasar file keluaran adalah nama tipe, dan ekstensinya adalah.class.
Misalnya -
// File Name: Dell.java
package com.apple.computers;
public class Dell {
}
class Ups {
}
Sekarang, kompilasi file ini sebagai berikut menggunakan opsi -d -
$javac -d . Dell.java
File-file tersebut akan dikompilasi sebagai berikut -
.\com\apple\computers\Dell.class
.\com\apple\computers\Ups.class
Anda dapat mengimpor semua kelas atau antarmuka yang ditentukan di \ com \ apple \ komputer \ sebagai berikut -
import com.apple.computers.*;
Seperti file sumber .java, file .class yang telah dikompilasi harus berada dalam rangkaian direktori yang mencerminkan nama paket. Namun, jalur ke file .class tidak harus sama dengan jalur ke file sumber .java. Anda dapat mengatur direktori sumber dan kelas Anda secara terpisah, seperti -
<path-one>\sources\com\apple\computers\Dell.java
<path-two>\classes\com\apple\computers\Dell.class
Dengan melakukan ini, dimungkinkan untuk memberikan akses ke direktori kelas kepada pemrogram lain tanpa mengungkapkan sumber Anda. Anda juga perlu mengelola file sumber dan kelas dengan cara ini sehingga compiler dan Java Virtual Machine (JVM) dapat menemukan semua tipe yang digunakan program Anda.
Jalur lengkap ke direktori kelas, <path-two> \ kelas, disebut jalur kelas, dan disetel dengan variabel sistem CLASSPATH. Baik compiler dan JVM membangun jalur ke file .class Anda dengan menambahkan nama paket ke jalur kelas.
Katakanlah <path-two> \ class adalah jalur kelas, dan nama paketnya adalah com.apple.computers, maka compiler dan JVM akan mencari file .class di <path-two> \ class \ com \ apple \ komputer.
Jalur kelas dapat mencakup beberapa jalur. Beberapa jalur harus dipisahkan dengan titik koma (Windows) atau titik dua (Unix). Secara default, kompilator dan JVM mencari direktori saat ini dan file JAR yang berisi kelas platform Java sehingga direktori ini secara otomatis berada di jalur kelas.
Setel Variabel Sistem CLASSPATH
Untuk menampilkan variabel CLASSPATH saat ini, gunakan perintah berikut di Windows dan UNIX (Bourne shell) -
- Di Windows → C: \> setel CLASSPATH
- Di UNIX →% echo $ CLASSPATH
Untuk menghapus konten saat ini dari variabel CLASSPATH, gunakan -
- Di Windows → C: \> setel CLASSPATH =
- Di UNIX →% unset CLASSPATH; ekspor CLASSPATH
Untuk mengatur variabel CLASSPATH -
- Di Windows → setel CLASSPATH = C: \ users \ jack \ java \ class
- Di UNIX →% CLASSPATH = / home / jack / java / class; ekspor CLASSPATH