Pemrograman Berorientasi Objek PACKAGE Pemrograman Berorientasi Objek
Pengantar Many times when we get a chance to work on a small project, one thing we intend to do is to put all java files into one single directory. It is quick, easy and harmless. However if our small project gets bigger, and the number of files is increasing, putting all these files into the same directory would be a nightmare for us. In java we can avoid this sort of problem by using Packages. CS 3213
Apa yang Disebut Package ? Paket A Paket B Paket C Paket D You Package Pro Package CS 3213
Apa yang Disebut Package ? A package is a grouping of related classes and interfaces providing access protection and name space management. Packages are nothing more than the way we organize files into different directories according to their functionality, usability as well as category they should belong to. CS 3213
Apa yang Disebut Package ? ( lanjutan ) file-file yang mewakili kelas-kelas yang “dipaketkan” nama package CS 3213
Apa yang Disebut Package ? ( lanjutan ) Packaging help us to avoid class name collision when we use the same class name as that of others. Packaging also help us to make types easier to find and use class names, and to control access. CS 3213
Membuat Package Buat directory yang merepresentasikan tempat package yang akan dibuat. CS 3213
Membuat Package ( lanjutan ) Buat kelas (atau interface) yang akan menjadi isi package dengan susunan: // Deklarasi package package namapaket; // Deklarasi kelas public class namakelas { ... } CS 3213
Membuat Package ( lanjutan ) Deklarasi Package Menggunakan kata kunci package yang ditulis di baris pertama pada file sumber (.java). package namapaket; Contoh: package MyPackage; package MyPackage.Poligon; Hanya boleh ada satu pernyataan package pada setiap file sumber. CS 3213
Membuat Package ( lanjutan ) Deklarasi Kelas Dinyatakan secara public supaya bisa diakses oleh semua kelas yang berada didalam dan diluar package yang dibuat. Jika ada beberapa kelas pada file sumber, hanya boleh ada satu kelas yang dinyatakan secara public, yaitu kelas yang namanya sama dengan nama file sumber. CS 3213
Membuat Package ( lanjutan ) Atur variabel lingkungan CLASSPATH sehingga menunjuk directory tempat dimana package disimpan: Melalui Control Panel Melalui perintah set path di command line SET CLASSPATH = .; D:\Lecture\PBO 2007\Minggu 11\Program; Kompilasi kelas (atau interface) yang menjadi isi package. CS 3213
Membuat Package ( lanjutan ) Gunakan package kelas (atau interface) yang sudah dikompilasi melalui: Pernyataan import import MyPackage.Poligon.*; import MyPackage.Poligon.SegiEmpat; Nama qualified dari kelas (atau interface) MyPackage.Poligon.SegiEmpat S; S = new MyPackage.Poligon.SegiEmpat(17, 8); CS 3213
Contoh Penggunaan Package Diagram Kelas: SegiEmpat SegiTiga Lingkaran Balok Silinder <<MyPackage.Poligon>> CS 3213
Contoh Penggunaan Package ( lanjutan ) Nama package: MyPackage.Poligon Kelas yang menjadi isi package: SegiEmpat.java SegiTiga.java Lingkaran.java Balok.java Silinder.java Kelas yang menggunakan package: TestPackage.java CS 3213
Diagram UML Package
Access Specifier Friendly (Default) Dalam deklarasinya, sebuah kelas, variabel, atau method dengan access specifier default tidak memiliki specifier di depan nama kelasnya. Kelas, variabel, dan method yang memiliki akses default berarti hanya dapat diakses oleh kelas yang berada di dalam package yang sama. Contoh, jika kelas A dan B terletak di dalam package yang berbeda, dan kelas A memiliki akses default, maka kelas B tidak dapat membuat instance (objek) dari kelas A atau bahkan tidak dapat mendeklarasikan variabel yang bertipe kelas A. Perhatikan contoh berikut:
import packageOne.Animal; class Human {} package packageOne; class Animal {} package packageTwo; import packageOne.Animal; class Human {} kelas Animal berada di dalam package yang berbeda dengan Human. Pernyataan import di dalam kelas Human berusaha mengimpor kelas Animal. Ketika proses kompilasi dijalankan, kelas Animal dapat dikompilasi, tetapi tidak dengan kelas Human. Hal ini disebabkan karena Animal mempunyai akses default dan terletak di dalam package yang berbeda.