Senin, 23 April 2012

Laporan 8 "DNS, DHCP, dan Wireless"



A.  Tujuan
1.  Mampu membangun jaringan dengan mengkombinasikan DHCP, DNS, dan wireless
2.  Mampu memahami konsep DHCP, DNS dan wireless
3.  Mampu membuat simulasi sistem kerja DHCP, DNS dan wireless pada packet tracert

B.  Dasar Teori
1.  DNS
Untuk dapat saling berkomunikasi, setiap komputer yang terhubung ke internet atau jaringan menggunakan sebuah alamat unik yang disebut dengan IP Address. Dalam perkembangan selanjutnya untuk memudahkan penamaan dikembangkan sistem penerjemah alamat IP ke nama host atau sebaliknya.
Awalnya, sistem penamaan alamat IP menggunakan sistem host table. Di dalam sistem ini, setiap komputer memiliki file host.txt yang berisi daftar daftar alamat IP dan nama host yang terhubung ke internet. Karena internet semakin berkembang, sistem host table tidak efektif mengatasi permasalahan tersebut .
Akhirnya pada tahun 1984 Paul Mockapetris mengusulkan sistem database terdistribusi dengan nama Domain Name System (DNS) yang dideskripsikan dalam RFC 882 dan 883. Sistem ini digunakan sampai sekarang pada jaringan khususnya Internet.

a)  Pengertian DNS
Domain Name System (DNS) merupakan sistem berbentuk database terdistribusi yang akan memetakan/mengkonversikan nama host/mesin/domain ke alamat IP (Internet Protocol) dan sebaliknya.
Struktur database DNS berbentuk hierarki atau pohon yang memiliki beberapa cabang. Cabang-cabang ini mewakili domain, dan dapat berupa host, subdomain, ataupun top level domain.

Domain teratas adalah root. Domain ini diwakili oleh titik. Selanjutnya, domain yang terletak tepat di bawah root disebut top level domain. Beberapa contoh top level domain ini antara lain com, edu, gov, dan lain-lain. Turunan dari top level domain disebut subdomain. Domain yang terletak setelah top level domain adalah second level domain, dan domain yang berada di bawah second level domain disebut third level domain, begitu seterusnya.
Mesin DNS bisa menggunakan Server OS Windows server yang dijadikan mesin DNS atau sebuah Server dengan OS Linux dengan menjalankan daemon seperti BIND (Berkeley Internet Name Domain) / DJBDNS yang sering digunakan, hampir 75 % implemetasi DNS menggunakan BIND.
Ada tiga belas (13) root server utama yang disebar ke seluruh dunia dan dibagi-bagi untuk melayani area negara tertentu, generic Top Level Domain (gTLD) tertentu atau blok IP Address tertentu. Antara satu root server ini dengan yang lain saling terhubung dan saling memperbaharui datanya masing-masing www.rootservers.org.

b)  Cara Kerja DNS (Domain Name System)
Secara sederhana cara kerja DNS bisa dilihat pada gambar berikut ini:
DNS menggunakan relasi client – server untuk resolusi nama. Pada saat client mencari satu host, maka ia akan mengirimkan query ke server DNS. Query adalah satu permintaan untuk resolusi nama yang dikirimkan ke server DNS.

1)  Pada komputer Client, sebuah program aplikasi misalnya http, meminta pemetaan IP Address (forward lookup query). Sebuah program aplikasi pada host yang mengakses domain system disebut sebagai resolver, resolver menghubungi DNS server, yang biasa disebut name server.
2)  Name server meng-cek ke local database, jika ditemukan, name server mengembalikan IP Address ke resolver jika tidak ditemukan akan meneruskan query tersebut ke name server root server.
3)  Terakhir barulah si client bisa secara langsung menghubungi sebuah website / server yang diminta dengan menggunakan IP Address yang diberikan oleh DNS server.

Secara sederhana cara kerja DNS bisa dilihat pada gambar berikut ini:
Jika permintaan tidak ada pada database, name server akan menghubungi server root dan server lainnya dengan cara sebagai berikut :
1)  Saat kita mengetikkan sebuah nama domain misalnya http://www. neon.cs.virginia.edu pada web browser, maka aplikasi http (resolver) akan mengirimkan query ke Name Server DNS Server local atau DNS Server Internet Service Provider.
2)  Awalnya name server akan menghubungi server root. Server root tidak mengetahui IP Address domain tersebut, ia hanya akan memberikan IP Address server edu.
3)  Selanjutnya name server akan bertanya lagi pada server edu berpa IP Address domain neon.cs.virginia.edu. Server edu tidak mengetahui IP Address domain tersebut, ia hanya akan memberikan IP Address server virginia.edu.
4)  Selanjutnya name server akan bertanya ke server virginia.edu tentang IP Address neon.cs.virginia.edu. Dan server virginia.edu hanya mengetahui dan memberikan jawaban berupa IP Address server cs.virginia.edu
5)  Selanjutnya name server akan bertanya ke server cs.virginia.edu tentang IP Address neon.cs.virginia.edu. Dan barulah cs.virginia.edu mengetahui dan menjawab berapa IP Address domain neon.cs.virginia.edu.
6)  Terakhir barulah computer client bisa secara langsung menghubungi domain neon.cs.virginia.edu dengan menggunakan IP Address yang diberikan oleh server cs.virginia.edu.
7)  IP Address milik neon.cs.virginia.edu kemudian akan disimpan sementara oleh DNS server Anda untuk keperluan nanti. Proses ini disebut caching, yang berguna untuk mempercepat pencarian nama domain yang telah dikenalnya.

2.  DHCP
a)  Pengertian DHCP
DHCP (Dynamic Host Configuration Protocol) adalah protokol yang berbasis arsitektur client/server yang dipakai untuk memudahkan pengalokasian alamat IP dalam satu jaringan. Sebuah jaringan lokal yang tidak menggunakan DHCP harus memberikan alamat IP kepada semua komputer secara manual. Jika DHCP dipasang di jaringan lokal, maka semua komputer yang tersambung di jaringan akan mendapatkan alamat IP secara otomatis dari server DHCP. Selain alamat IP, banyak parameter jaringan yang dapat diberikan oleh DHCP, seperti default gateway dan DNS server.

b)  Cara Kerja DHCP
DHCP didefinisikan dalam RFC 2131 dan RFC 2132 yang dipublikasikan oleh Internet Engineering Task Force. DHCP merupakan ekstensi dari protokol Bootstrap Protocol (BOOTP). Karena DHCP merupakan sebuah protokol yang menggunakan arsitektur client/server, maka dalam DHCP terdapat dua pihak yang terlibat, yakni DHCP Server dan DHCP Client.

        • DHCP server merupakan sebuah mesin yang menjalankan layanan yang dapat "menyewakan" alamat IP dan informasi TCP/IP lainnya kepada semua klien yang memintanya. Beberapa sistem operasi jaringan seperti Windows NT Server, Windows 2000 Server, Windows Server 2003, atau GNU/Linux memiliki layanan seperti ini.
        • DHCP client merupakan mesin klien yang menjalankan perangkat lunak klien DHCP yang memungkinkan mereka untuk dapat berkomunikasi dengan DHCP Server. Sebagian besar sistem operasi klien jaringan (Windows NT Workstation, Windows 2000 Professional, Windows XP, Windows Vista, atau GNU/Linux) memiliki perangkat lunak seperti ini.

DHCP server umumnya memiliki sekumpulan alamat yang diizinkan untuk didistribusikan kepada klien, yang disebut sebagai DHCP Pool. Setiap klien kemudian akan menyewa alamat IP dari DHCP Pool ini untuk waktu yang ditentukan oleh DHCP, biasanya hingga beberapa hari. Manakala waktu penyewaan alamat IP tersebut habis masanya, klien akan meminta kepada server untuk memberikan alamat IP yang baru atau memperpanjangnya.
DHCP Client akan mencoba untuk mendapatkan "penyewaan" alamat IP dari sebuah DHCP server dalam proses empat langkah berikut:

        • DHCPDISCOVER: DHCP client akan menyebarkan request secara broadcast untuk mencari DHCP Server yang aktif.
        • DHCPOFFER: Setelah DHCP Server mendengar broadcast dari DHCP Client, DHCP server kemudian menawarkan sebuah alamat kepada DHCP client.
        • DHCPREQUEST: Client meminta DCHP server untuk menyewakan alamat IP dari salah satu alamat yang tersedia dalam DHCP Pool pada DHCP Server yang bersangkutan.
        • DHCPACK: DHCP server akan merespons permintaan dari klien dengan mengirimkan paket acknowledgment. Kemudian, DHCP Server akan menetapkan sebuah alamat (dan konfigurasi TCP/IP lainnya) kepada klien, dan memperbarui basis data database miliknya. Klien selanjutnya akan memulai proses binding dengan tumpukan protokol TCP/IP dan karena telah memiliki alamat IP, klien pun dapat memulai komunikasi jaringan.

Empat tahap di atas hanya berlaku bagi klien yang belum memiliki alamat. Untuk klien yang sebelumnya pernah meminta alamat kepada DHCP server yang sama, hanya tahap 3 dan tahap 4 yang dilakukan, yakni tahap pembaruan alamat (address renewal), yang jelas lebih cepat prosesnya.
Berbeda dengan sistem DNS yang terdistribusi, DHCP bersifat stand-alone, sehingga jika dalam sebuah jaringan terdapat beberapa DHCP server, basis data alamat IP dalam sebuah DHCP Server tidak akan direplikasi ke DHCP server lainnya. Hal ini dapat menjadi masalah jika konfigurasi antara dua DHCP server tersebut berbenturan, karena protokol IP tidak mengizinkan dua host memiliki alamat yang sama.
Selain dapat menyediakan alamat dinamis kepada klien, DHCP Server juga dapat menetapkan sebuah alamat statik kepada klien, sehingga alamat klien akan tetap dari waktu ke waktu.

Catatan: DHCP server harus memiliki alamat IP yang statis.

3.  Wireless, SSID dan Channel

C.  Skenario Praktik

Dalam sebuah perusahaan terdapat sebuah server yang memberikan layanan DHCP dan DNS server yang disimulasikan seperti pada gambar diatas. Terdapat 1 buah server yang berfungsi untuk DHCP dan DNS Server, 2 buah PC Client yang mensimulasikan sebagai jaringan LAN, 2 buah Access Point mensimulasikan 2 buah perangkat wireless, 2 buah laptop mensimulasikan pengguna dari jaringan wireless yang dibangun.

Perintah Ping :

Perintah Tracert :

D.  Alat dan Bahan
1.  Software Paket Tracert 5.3
2.  PC/Laptop

E.  Langkah Kerja

1.  Pengaturan atau setting IP Address pada Server
a)  Double click komputer server
b)  Pilih config > FastEthernet > kemudian isikan IP Address dan Subnet Mask-nya
c)  Selesai dan server tersebut telah di-setting ip address 192.168.10.254 dengan netmask 255.255.255.0

2.  Membuat DNS Server
a)  Double click komputer server
b)  Kemudian pilih config > DNS > isikan nama domain yang diinginkan pada kolom Name > kemudian isikan IP Address server tersebut dalam kolom Address seperti terlihat pada gambar dibawah ini > kemudian klik tombol Add untuk menambahkan konfigurasi DNS-nya. Jika sudah tersimpan akan muncul pada kolom dibawahnya.
c)  Selesai dan server tersebut telah memiliki domain name uny.ac.id dan www.uny.ac.id

3.  Membuat DHCP Server
a)  Double click komputer server
b)  Kemudian pilih config > DHCP > Default Gateway diisikan IP Address dari server tersebut > DNS Server diisikan IP Address dari server tersebut > kemudian klik tombol Add
c)  Selesai dan server tersebut telah dikonfigurasi sebagai DHCP Server.

4.  Pengaturan Access Point
Jika dalam satu jaringan terdapat 2 buah Access Point atau lebih maka harus dibedakan channel yang digunakannya agar tidak terjadi interferensi gelombang yang dipancarkan. Jika terjadi interferensi gelombang maka kekuatan sinyal yang sampai ke client juga tidak akan sempurna 100%. Untuk menguji coba teori tersebut lakukan langkah berikut ini,
a)  Double click Access Point0 > pilih Config > pilih Port 1
b)  Double click Access Point1 > pilih Config > pilih Port 1
Ubah nama SSID (Service Set Identifier) kedua Access Point tersebut agar mudah untuk dibedakan dalam jaringan. Tidak diperbolehkan dalam 1 area 2 atau lebih perangkat wireless menggunakan SSID yang sama. Pemilihan Channel yang digunakan juga harus dipertimbangkan jaraknya. Semakin dekat jarak Channel yang digunakan maka akan semakin besar kemungkinannya untuk terjadi interferensi pada sinyal yang dipancarkan.
c)  Selesai dan access point sudah bisa digunakan

5.  Pengaturan pada Laptop Client
a)  Double click laptop0, perhatikan kotak warna merah, laptop tersebut masih menggunakan perangkat NIC untuk jaringan kabel, belum menggunakan Wireless. Matikan terlebih dahulu laptop tersebut dengan mengklik tombol power, kemudian lepaskan NIC yang ada pada laptop tersebut dan gantikan dengan module wireless yang ada dibagian bawah
b)  Pemasangan wireless telah selesai, langkah berikutnya adalah mengkoneksikan atau menyambungkan laptop tersebut ke Access Point yang kita inginkan
c)  Double click laptop kemudian masuk ke Desktop
d)  Pilih PC Wireless > Connect, jika masih belum muncul SSID dari AP yang kita buat tadi, disarankan untuk menekan tombol Rfress untuk men-scan ulang keberadaan AP disekitar laptop tersebut. Jika sudah selesai maka akan muncul seperti tampilan dibawah ini,
e)  Pilih salah satu AP kemudian klik tombol Connect untuk menyambungkan laptop ke AP. Kemudian cek hasilnya, apakah laptop tersebut sudah tersambung ke AP yang kita pilih.

6.  Pengaturan pada PC Client
a)  Konfigurasi IP Address pada PC Client. Klik PC > Desktop > IP Configuration > DHCP.

F.  Diskusi
Buatlah gambar desain seperti pada gambar dibawah ini

Buatlah agar laptop dan PC yang ada di network 192.168.11.0/24 bisa berkomunikasi dengan server yang ada di network 192.168.9.0/24. Dengan syarat kekuatan signal seperti pada gambar dibawah ini untuk masing-masing Access Point. Semua client yang ada di network 192.168.11.0/24 mendapatkan IP DHCP dari Server DHCP yang ada di network tersebut.

Sedangkan server yang berada di ujung berfungsi sebagai server DNS untuk domain uny.ac.id sehingga nantinya semua client yang ada di network 192.168.11.0 bisa mengakses situs uny.ac.id dari web browsernya


Jawab :

Rabu, 18 April 2012

Laporan7 "Dynamic ROuting"

A.  Tujuan
1.  Mampu membangun LAN dan VLAN dalam jaringan
2.  Mampu membuat inter-VLAN Routing.
3.  Mampu memahami konsep routing dan table routing
4.  Memahami konsep kemanan jaringan

B.  Dasar Teori
Router adalah sebuah alat yang mengirimkan paket data melalui sebuah jaringan atau Internet menuju tujuannya, melalui sebuah proses yang dikenal sebagai routing. Proses routing terjadi pada lapisan 3 dari protokol tumpukan (stack protocol) tujuh-lapis OSI. Router berfungsi sebagai penghubung antar dua atau lebih jaringan untuk meneruskan data dari satu jaringan ke jaringan lainnya. Router berbeda dengan switch. Switch merupakan penghubung beberapa alat untuk membentuk suatu Local Area Network (LAN). Sebagai ilustrasi perbedaan fungsi dari router dan switch merupakan suatu jalanan, dan router merupakan penghubung antar jalan. Masing-masing rumah berada pada jalan yang memiliki alamat dalam suatu urutan tertentu. Dengan cara yang sama, switch menghubungkan berbagai macam alat, dimana masing-masing alat memiliki alamat IP sendiri pada sebuah LAN.
Router sangat banyak digunakan dalam jaringan berbasis teknologi protokol TCP/IP, dan router jenis itu disebut juga dengan IP Router. Selain IP Router, ada lagi AppleTalk Router, dan masih ada beberapa  jenis  router  lainnya.  Internet  merupakan  contoh  utama  dari  sebuah jaringan yang memiliki banyak router IP. Router dapat digunakan untuk menghubungkan banyak jaringan kecil ke sebuah jaringan yang lebih besar, yang disebut dengan internetwork, atau untuk membagi sebuah jaringan  besar  ke  dalam  beberapa  subnetwork  untuk  meningkatkan  kinerja  dan  juga mempermudah manajemennya. Router juga kadang digunakan untuk mengoneksikan dua buah jaringan yang menggunakan media yang berbeda (seperti halnya router wireless yang pada umumnya selain ia dapat menghubungkan komputer dengan menggunakan radio, ia juga mendukung penghubungan komputer dengan kabel UTP), atau berbeda arsitektur jaringan, seperti halnya dari Ethernet ke Token Ring.
Router juga dapat digunakan untuk menghubungkan LAN ke sebuah layanan telekomunikasi seperti halnya telekomunikasi leased line atau Digital Subscriber Line (DSL). Router yang digunakan untuk  menghubungkan  LAN  ke  sebuah  koneksi  leased  line  seperti  T1,  atau  T3,  sering  disebut sebagai access server. Sementara itu, router yang digunakan untuk menghubungkan jaringan lokal ke sebuah koneksi DSL disebut juga dengan DSL router. Router-router jenis tersebut umumnya memiliki fungsi firewall untuk melakukan penapisan paket berdasarkan alamat sumber dan alamat tujuan paket tersebut, meski beberapa router tidak memilikinya. Router yang memiliki fitur penapisan paket  disebut  juga  dengan packet-filtering router.  Router  umumnya  memblokir  lalu lintas data yang dipancarkan secara broadcast sehingga dapat mencegah adanya broadcast storm yang mampu memperlambat kinerja jaringan.

Minggu, 08 April 2012

Dasar-Dasar OOP (Object Oriented Programming)


1.    Apa yang dimaksud dengan kelas, konstruktor, atribut, dan method ? jelaskan dan beri contoh dalam program java !
Jawab :
-       Kelas.
·         Kelas merupakan sarana pengkapsulan kumpulan data dan kumpulan method java. Kumpulan data dan method tersebut berwujud baris-baris program java. Kumpulan method berfungsi untuk mengoperasikan kumpulan data dalam kelas tersebut. Kelas digunakan untuk membuat objek, dan berperan sebagai tipe data dari objek.
·         Contoh program :
public class MyClass {
      //Deklarasi Anggota Kelas(member)
 int             var1;
 double     var2;
 String      var3;
 void metoda1 (parameter…) {
    …
 }
 int metoda2 (parameter…) {
    …
 }
}

-       Konstruktor
·         Konstructor adalah method yang tidak memiliki return value (secara implisit adalah instant dari kelasnya). Nama constructor sama dengan nama kelas, dan dapat diberi modifier akses (public, protected, default, private).
·         Contoh program :
class PersonToy {
    String name;
    String addressLine1;
    String addressLine2;
    String city;
    int age;
    public PersonToy() {                            // constructor
        name = ” ”;
        addressLine1 = ” ”;
        addressLine2 = ” ”;
        city = ” ”;
        age = 0;
    }

    public PersonToy(String newName,
                                  String newAddress1,
                                  String newAddress2;
                                  String newCity;
                                  int newAge) {
       name = newName;
       addressLine1 = newAddressLine1;
       addressLine2 = newAddressLine2;
       city = newCity;
       age = newAge;
    }
}



-       Atribut
·         Atribut merupakan data atau bisa juga berupa fungsi-fungsi yang dimiliki oleh kelas tersebut
Contoh program:
               public class Mahasiswa{
                       String nim; //nim,nama,jurusan adalah atribut.
                       String nama;
                       String jurusan;

               public void tampilInfo(){
                System.out.println("Nim mahasiswa "+nim);
                System.out.println("Nama mahasiswa "+nama);
                System.out.println("Jurusan mahasiswa "+jurusan);
               }

               public void ikutUjian(){
               System.out.println("Mahasiswa ini sedang ikut ujian");
                       }
               }

-       Method
·         Method merupakan tingkah laku dari suatu objek, jika bersifat static berarti tingkah laku semua objek dalam kelas tersebut. Method terpisah dari kode yang akan dipanggil oleh program utama dan beberapa method lainnya untuk menunjukkan beberapa fungsi spesifik.
·         Contoh program :
public class Method{

            public static double luas_lingkaran(int jari){
            double luas=3.14*jari*jari;
            return luas;
            }

            public static void main(String[]args){
            int jari_jari=10;
            double hasil_luas;
            hasil_luas=luas_lingkaran(jari_jari);
            System.out.println("LUAS LINGKARAN="+hasil_luas);
            }
}
2.    Apa yang dimaksud dengan accessor method, mutator method, overloading method dan overriding method ? jelaskan dan beri contoh dalam program java !
Jawab:
·         Accessor method adalah method yang digunakan untuk membaca nilai variabel pada class, baik berupa instance maupun static. Sebuah accessor method umumnya dimulai dengan penulisan get. Method ini juga mempunyai sebuah return value.
·         Mutator method adalah method yang dapat memberi atau mengubah nilai variable dalam class, baik itu berupa instance maupun static. Sebuah mutator method umumnya tertulis set.
·         Overloading method adalah sebuah method yang mendefinisikan dua atau lebih method di dalam kelas sama, nama sama, deklarasi parameter berbeda. Sehingga mempunyai implementasi dan return value yang berbeda pula.
·         Overriding method adalah Sebuah method yang menyatakan suatu keadaan dimana method pada subclass menolak pada parent classnya. Cirinya adalah nama method, parameter, return type harus sama.
Contoh program overloading method:
public void print( String temp ){
System.out.println("Name:" + name);
System.out.println("Address:" + address);
System.out.println("Age:" + age);
}
public void print(double eGrade, double mGrade, double sGrade)
System.out.println("Name:" + name);
System.out.println("Math Grade:" + mGrade);
System.out.println("English Grade:" + eGrade);
System.out.println("Science Grade:" + sGrade);
}
Jika kita panggil pada method utama (main) :
public static void main( String[] args )
{
StudentRecord annaRecord = new StudentRecord();
annaRecord.setName("Anna");
annaRecord.setAddress("Philippines");
annaRecord.setAge(15);
annaRecord.setMathGrade(80);
annaRecord.setEnglishGrade(95.5);
annaRecord.setScienceGrade(100);
/
/overloaded methods
annaRecord.print( annaRecord.getName() );
annaRecord.print( annaRecord.getEnglishGrade(),
annaRecord.getMathGrade(),
annaRecord.getScienceGrade());
}
Kita akan mendapatkan output pada panggilan pertama sebagai berikut :
Name:Anna
Address:Philippines
Age:15
Kemudian akan dihasilkan output sebagai berikut pada panggilan kedua :
Name:Anna
Math Grade:80.0
English Grade:95.5
Science Grade:100.0
Contoh program overriding method:
class Coba {
public void Yes() {
System.out.println(“ini class parent”);
}
class Cobi extends Coba {
public void Yes() {
System.out.println(“ini class child”);
}
3.    Apa yang dimaksud dengan modifier ? ada 10 keyword yang digunakan sebagai modifier dan dikelompokkan menjadi :
  • modifier akses (public, protected, default, private)
  • modifier final
  • modifier static
  • modifier abstract
  • modifier synchronized
  • modifier nativem
  • modifier storage (transient, volatile)
jelaskan pengertian masing-masing modifier tersebut dan berikan contoh penggunaannya dalam program java !
Jawab :
-       Modifier untuk menentukan hubungan suatu unsur kelas dengan unsur kelas lainnya, contohnya hubungan kepemilikan antara kelas dan objek.
-       10 keyword yang digunakan sebagai modifier :
·         modifier akses (public, protected, default, private) :
*      Public
Menyatakan bahwa kelas/method/attribute tersebut dapat diakses oleh kelas lain dimanapun.
Contoh program :
*      Protected
Menyatakan bahwa kelas/method/attribute tersebut dapat diakses oleh kelas lain yang berada dalam satu package atau kelas lain tersebut merupakan turunannya.
Contoh program :
*      Private
Menyatakan bahwa kelas tersebut tidak dapat diakses sama sekali oleh kelas lain bahkan juga tidak dapat diturunkan.
Contoh program :
package prak01_11520241015;
public class Ok {
   private boolean x;
   public static void main(String[] args){
       Ok yes = new Ok();
       System.out.println(yes.x);
       System.out.println(yes.convert());
   }
   private int convert(){
       return x ? 1 : -1;
   }
}
*      Default
Modifier yang dapat diakses oleh program yang memiliki kelas yang sama maupun program yang memiliki kelas yang berbeda namun memiliki package yang sama.
·         Modifier Final
·         Menyatakan bahwa suatu kelas tidak dapat menurunkan (extend) kelas lain.
·         Menyatakan bahwa suatu method tidak dapat dioverride oleh method lain.
·         Membentuk suatu attribute menjadi konstanta.
·         Contoh program :
·         Modifier Static
Modifier static artinya method dan attribute milik kelas, menjadi sifat bersama dari semua objek dalam kelas tersebut (tidak memerlukan instansiasi objek untuk menjalankannya).
Contoh program :
·         Modifier Abstract
Abstract class adalah kelas murni (tanpa objek) dan tidak boleh memiliki objek (tidak boleh ada instansiasi) serta method-method yang abstract harus disempurna-kan oleh kelas turunannya melalui override.
Contoh program :
·         Modifier Syncronized
Pada lingkungan multithread, dimungkinkan lebih dari satu jalui eksekusi yang berjalan di kode yang sama, kondisi tersebut dapat diatur sehingga pada selang waktu tertentu hanya ada satu jalur eksekusi yang diijinkan di method yang synchronized (eksekusi dilakukan secara mutual exclusive).
Contoh program :
·         Modifier Nativem
Modifier ini digunakan untuk memanggil/mengakses method yang ditulis dalam bahasa C/C++. Seperti method yang abstract, method yang native hanya berupa prototype, implementasi method ini berada di file external (dalam folder yang sama).
Contoh program :
·         Modifier Storage (transient and volatile)
*      Transient (khusus modifier attribute)
Java memiliki konsep serialisasi, yaitu kemampuan untuk mentransformasikan objek menjadi suatu stream, sehingga objek dapat ditransfer dari suatu aplikasi ke aplikasi lainnya, atau dari suatu workstation ke workstation lainnya. Prinsip ini digunakan dalam aplikasi client-server. Salah satu ketentuan serialisasi adalah tidak boleh ada perubahan nilai attribute suatu objek, saat objek tersebut ditransformasikan menjadi stream, dan sebaliknya, namun suatu objek dapat memiliki nilai attribute yang boleh berubah (bersifat transient).
contoh program :
*      Volatile (khusus modifier attribute)
Dalam manajemen thread, java dapat menyimpan nilai suatu attribute (yang sering diakses thread) menjadi cache value, sehingga tidak perlu selalu merujuk ke lokasi memori aslinya.
Attribute tersebut bersifat volatile, karena nilainya rentan berubah bila diakses oleh lebih dari satu thread.
Contoh program :

4.    Apa yang dimaksud dengan objek pada pemrograman oop di java ? jelaskan dan beri contoh objek dalam program java !
Jawab :
Objek adalah kesatuan entitas (benda), baik yang berwujud nyata ataupun hanya suatu system atau konsep yang memiliki sifat karakteristik dan fungsi.  Dalam OOP objek adalah unit terkecil pemograman yang masih memilki data (sifat karakteristik) dan fungsi.
Contoh program:
5.    Apa yang dimaksud dengan Immutable Objects dan Immutable Classes? jelaskan dan beri contoh dalam program java !
Jawab:
·           Immutable Object adalah object yang ketika sudah di instantiated maka objek tersebut tidak dapat dirubah isinya. Contoh paling umum adalah objek String.
·           Immutable Classes adalah kebalikan dari Mutable, ketika sudah di instantiated maka objek tersebut tidak dapat dirubah isinya. Contoh paling umum adalah objek String.
Contoh pada Java, kita harus berhati-hati dalam menggunakan String karena objek ini sifatnya immutable. Pada saat anda mendeklarasikan String kata = "Saya immutable", JVM akan membuat 1 objek immutable.
Ketika anda melakukan perubahan: kata = "Saya mutable" anda sebenarnya melakukan pembuatan objek baru lagi dengan variable "kata" dan isi "Saya mutable" namun pada alokasi memori yang berbeda dari variable sebelumnya. Jika terlalu banyak operasi seperti itu, dapat mempengaruhi performance.
6.    Apa yang dimaksud dengan keyword this dan super ? jelaskan dan beri contoh objek dalam program java !
Jawab :
·         This adalah digunakan untuk mengakses instance variable yang dibiaskan oleh parameter, dapat digunakan untuk merepresentasikan suatu current objek dan mengakses variabel-variabel kelas serta method. This merupakan besaran referensi yang digunakan dalam method yang dirujuk untuk objek yang sedang berlaku. Nilai this merujuk pada objek di mana method yang sedang berjalan dipanggil. This digunakan jika  utrid e local menggunakan nama yang sama dengan instance  utrid e. Keyword “this” digunakan saat Method yang kita ciptakan menggunakan parameter/argumen yang namanya sama dengan variabel instans di kelas atasnya.
Contoh :
·         Super. digunakan untuk mengakses member kelas yang diturunkan (kelas induk).Terkadang method di child yang menggoverride perlu memanggil method parent. Misalnya kita memiliki satu class Ortu dengan satu method.
Contoh :
package prak01_11520241015;
public class Super {
     public void salam() {
           System.out.println("Ini Kelas E PTI 2011 FT UNY");
     }
}
 Kemudian ada class anak sebagai subclass Ortu yang menggoveride method salam. Perhatikan penggunaan keyword super.
Contoh :
package prak01_11520241015;
public class Super2 extends Super {
    @Override
     public void salam() {
           super.salam(); //panggil Ortu.salam
           System.out.println("Salam dari kelas E");
     }
     public static void main(String[] args) {
           Super2 a = new Super2();
           a.salam();
     }
}
7.    Apa yang dimaksud dengan package ? jelaskan dan beri contoh programnya!
Jawab :
Package adalah mengelompokkan kelas-kelas yang saling berelasi dan interfaces yang memberikan proteksi terhadap access kelas yang tidak boleh diakses oleh kelas lain karena tidak berelasi,dan manajemen nama.
Packages tidak lebih dari sekedar cara untuk mengorganisir file kedalam direktori yang berbeda berdasarkan fungsionalitas dan kegunaannya.
Packaging membantu kita untuk menghindari terjadinya collision ketika kita menggunakan nama kelas yang sama dengan yang sudah ada. Packaging juga membantu programmer dalam mencari dan menggunakan nama kelas dan mengontrol akses. Dalam java versi awal ada 6 package besar , yaitu :
         java.io
         java. java.lang
         java.applet
         awt
         java.net
         java.util

8.    Apa yang dimaksud dengan information hiding, encapsulation, inheritance, dan polymorphism ? jelaskan dan beri contoh programnya !
Jawab :
·         Information hiding
Information Hiding adalah menyembunyikan attribute dan method suatu objek dari objek lain.
·         Encapsulation
Enkapsulasi adalah pembungkus, pembungkus disini dimaksudkan untuk menjaga suatu proses program agar tidak dapat diakses secara sembarangan atau di intervensi oleh program lain. Konsep enkapsulasi sangat penting dilakukan untuk menjaga kebutuhan program agar dapat diakses sewaktu-waktu, sekaligus menjaga program tersebut. Attribute maupun method disembunyikan dengan cara memberikan modifier private. Method dalam kelas yang sama, yang memberikan nilai pada attribute private disebut method setter, sedangkan method masih dalam kelas yang sama, yang mengambil nilai dari attribute private disebut getter.
Di bawah ini adalah contoh program Information Hiding dan Encapsulation
class PersegiPanjang{
private double panjang; // attribute yg di encapapsulasi
private double lebar; // attribute yg di encap
private double tinggi; // attribute yg di encap
public PersegiPanjang() {
panjang = 0;
lebar = 0;
}
private double luas(double p, double l) { // di hide
return p*l;
}
public void setPanjang(double panjang) {
this.panjang = panjang;
}
public void setLebar(double lebar) {
this.lebar = lebar;
}
public double getPanjang() {
return panjang;
}
public double getLebar() {
return lebar;
}
public double getLuas() {
return luas(panjang, lebar);
}
}

public class MainPersegiPanjang {
public static void main(String[] srgs) {
PersegiPanjang pp = new PersegiPanjang();
pp.setPanjang(10);
pp.setLebar(20);
System.out.println("Panjang : "+ pp.getPanjang());
System.out.println("Lebar : "+ pp.getLebar());
System.out.println("Luas : "+ pp.getLuas());
}
}
·         Inheritance
Inheritance atau pewarisan pada pemrograman berorientasi objek merupakan suatu hubungan dua buah kelas atau lebih. Dalam hal ini ada kelas yang memiliki atribut dan metode yang sama dengan kelas lainnya beserta atribut dan metode tambahan yang merupakan sifat khusus kelas yang menjadi turunannya.
Keterkaitan antara kelas Titik dan Titik3D adalah kelas Titik3D merupakan kelas turunan dari kelas Titik. Dalam hal ini kelas Titik disebut dengan kelas dasar atausuper classatau base classsedangkan kelas Titik3D disebut sebagai kelas turunan atau derived classatau subclass.
Keuntungan dari pewarisan adalah tidak perlu mengutak atik kode kelas yang membutuhkan tambahan atribut atau metode saja, karena tinggal membuat kelas turunannya tanpa harus mengubah kode kelas dasarnya. Kelas dasar akan mewariskan semua atribut dan kodenya kecuali konstruktor dan destruktor yang memiliki izin akses publicdan protectedke kelas turunannya dengan izin akses yang sama dengan pada kelas dasar.
Contoh program :

·         Polymorphism
Polymorphism, suatu aksi yang memungkinkan pemrogram menyampaikan pesan tertentu keluar dari hirarki obyeknya, dimana obyek yang berbeda memberikan tanggapan/respon terhadap pesan yang sama sesuai dengan sifat masing-masing obyek.
Atau Polymorphic dapat berarti banyak bentuk, maksudnya yaitu kita dapat menimpa (override), suatu method, yang berasal dari parent class (super class) dimana object tersebut diturunkan, sehingga memiliki kelakuan yang berbeda.
Contoh program java nya :
package java.pkg2;
public class poly2 {

    public static void main(String[] args) {
    m(new kelas());
    m(new Student());
    m(new Person());
    m(new Object());
    }

    public static void m(Object x) {
      System.out.println(x.toString());
    }
 
}
    class kelas extends Student2 {
  }


class Student2 extends aku2 {
    @Override
    public String toString() {
      return "Student";
    }
  }

 class aku2 extends Object{
    @Override
    public String toString() {
      return "Person";
    }
}
9.    Apa yang dimaksud dengan kelas inner, kelas abstrct, dan interface ? jelaskan dan beri contoh programnya !
Jawab :
·         Kelas inner
Kelas Inner berguna untuk mendukung suatu proses yang akan dijalankan oleh kelas luarnya.
Beberapa ketentuan kelas Inner :
Ø  Kelas Luar yang mengandung kelas Inner, bila dikompilasi akan menghasilkan dua file *.class, yaituLuar.class dan Luar$Inner.class
Ø  Kelas Inner boleh tidak diberi nama, yang disebut Anonymous Inner.
Ø  Kelas Inner dapat diberi modifier akses public, atau protected, atau default, ataupun private.
Ø  Untuk mengakses referensi this dari kelas luar digunakan bentuk NamaKelasLuar.this.
Ø  Kelas Luar ikut bertanggung-jawab dalam instansiasi kelas Inner (yang non static). Kalau objek kelas Luar adalah a, dan objek kelas Inner adalah b, maka sintaks yang benar adalah :
Luar a = new Luar();
Luar.Inner b = a.new Inner();
Ø  Jika kelas Inner bersifat static, maka objek milik kelas Inner dapat dibuat sendiri tanpa melalui kelas Luarnya, (Artinya kelas Inner tidak dapat mengakses attribute ataupun method non static milik kelas Luarnya).
Menggunakan Kelas Inner
Kelas Inner lazim digunakan untuk membuat handler di method main() pada suatu aplikasi GUI.
Handler merupakan bagian program yang akan memproses event-event yang dipicu ketika user berinteraksi dengan komponen-komponen GUI.
Contoh program berikut adalah aplikasi Button sederhana dengan handlernya dari kelas Inner :
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class DemoJButtonInner extends JFrame {
private JButton btn;
public DemoJButtonInner {
super(”Demo JButton Inner Class”);
Container c = getContentPane();
c.setLayout(new FlowLayout());
btn = new JButton(”Button”);
c.add(btn);
// membuat event handler
ButtonHandler handler = new ButtonHandler();
btn.addActionListener(handler);
setSize(275, 100);
show();
}
public static void main(String args[]) {
DemoJButtonInner app = new DemoJButtonInner();
app.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent we) {
System.exit(0);
}
});
}
// kelas Inner untuk Event Handling pada button
private class ButtonHandler implements ActionListener {
public void actionPerformed(ActionEvent ae) {
JOptionPane.showMessageDialog(null,”anda telah menekan”+ae.getActionCommand()+”\n”+”Handler button ini pakai kelas Inner”);
}
}
}
·         Kelas abstract
Kelas abstract adalah kelas murni yang tidak boleh memiliki objek, dan satu/lebih method-methodnya yang abstract harus diimplementasikan (override) oleh kelas turunannya.
Bentuk umum :
[modifier] abstract class NamaKelas {
// deklarasi attribute
// definisi/prototype method
}
Analogi Kelas yang Abstract
Suatu kelas dapat diinstansiasi menjadi objek, misal kelas Dosen dapat diinstansiasi menjadi budi, heri, heru, namun tidak mungkin dapat menginstansiasi kelas MahlukHidup, kelas Hewan, dan kelas Manusia, sebab kelas tersebut terlalu umum (abstract), kelas seperti inilah yang disebut kelas abstract. Dibutuhkan kelas turunan yang lebih khusus.
Analogi Method yang Abstract
Bila kelas MahlukHidup mempunyai method bernafas, maka tidak dapat ditentukan cara suatu mahluk hidup tersebut bernafas (dengan paru-paru, insang, atau stomata), method seperti inilah yang disebut method abstract. Dibutuhkan kelas turunan yang khusus dan method  override dari method yang abstract.
·         Interface
Interface adalah kelas yang paling abstract, yang berisi daftar deklarasi method (seluruh method belum memiliki implementasi).
Analogi Interface
Interface dapat dianalogikan sebagai kontrak yang dapat dipakai oleh setiap kelas.
Dalam kehidupan nyata dapat diketahui ada manusia yang bekerja sebagai da’i, dosen, tentara, penyanyi, pengacara, dan sebagainya, tentunya manusia-manusia tersebut selain harus memiliki method standard sebagai seorang manusia, juga harus memiliki method yang sesuai dengan pekerjaannya.
Dengan demikian untuk membuat objek seorang budi bekerja sebagai dosen, harus dibuat kelas yang merupakan turunan kelas manusia yang meng-implementasikan interface dosen.
Deklarasi Interface
Bentuk umum deklarasi:
[modifier] interface NamaInterface {
// deklarasi konstanta
// deklarasi method
} // catatan : modifier static tidak boleh digunakan dalam interface
Implementasi Interface
Bentuk umum implementasi :
[modifier] class NamaKelas implements NamaInterface {
// penggunaan konstanta
// implementasi method
}
Contoh Abstract Class dan Interface
abstract class Hewan {
protected String nama;
protected int jumKaki;
protected boolean bisaTerbang = false;
public Hewan(String nama, int kaki, boolean terbang) {
this.nama = nama;
jumKaki = kaki;
bisaTerbang = terbang;
}
public abstract void bersuara();
public void static makan() {
System.out.println(”nyam, nyam, nyam”);
}
public void isHewan() {
System.out.println(”nama : ”+nama);
System.out.println(”jumlah kaki : ”+jumKaki);
System.out.println(”bisa terbang : ”+bisaTerbang);
}
}
interface Manusia {
public void menyanyi();
public void ketawa();
}
class Perkutut extends Hewan {
public Perkutut()
super(”perkutut”,2,true);
}
public void bersuara() {
System.out.println(”\ncuit, cuit, cuit”);
}
public static void main(String[] args) {
Perkutut p = new Perkutut();
p.isHewan();
p.bersuara();
}
}
//**************************************
class Sapi extends Hewan {
public Sapi() {
super(”sapi”, 4, false);
}
public void bersuara() {
System.out.println(”\nemoh…,emoh…”);
}
public static void main(String[] args) {
Sapi s = new Sapi();
s.isHewan();
s.bersuara();
}
}
class SpongeBob extends Hewan implements Manusia {
public SpongeBob() {
super(”sponge bob”, 2, false);
}
public void bersuara() {
System.out.println(”\nhallo patrict…..”);
}
public void menyanyi() {
System.out.println(”nye, nye, nye, wik, wik, wik”);
}
public void ketawa() {
System.out.println(”kek, kek, kek”);
}
public static void makan() {
System.out.println(”uenak tenan…”);
}
public void makan2() {
super.makan();
}
public static void main(String[] args) {
SpongeBob = s new SpongeBob();
s.isHewan();
s.bersuara();
s.menyanyi();
s.ketawa();
s.makan2();
Hewan.makan();
makan()
}
}
Interface vs Class
Perbandingan interface dengan class :

Interface vs Inheritance
Inheritance adalah proses pewarisan attribute dan method dari satu kelas super kepada satu/lebih subkelas.
Bagaimana kalau dibutuhkan suatu kelas yang attribute dan methodnya berasal dari lebih dari satu kelas super ? disinilah keterbatasan inheritance, namun interface berperan, karena dalam interface bisa dimasukkan method-method dari beberapa library referensi tanpa harus menurunkannya.
Syntax kelas yang menggunakan lebih dari satu interface :
[modifier] class NamaKelas implements NamaInterface1, NamaInterface2, … {
//interfaceBody
}
Nama-nama interface tersebut dapat dijadikan tipe data attribute ataupun tipe data parameter dalam kelas yang menggunakan.
Interface vs Abstract Class
Interface dan kelas abstract memilki kesamaan sama-sama tidak boleh instansiasi objek.
Perbedaan interface dangan kelas abstract adalah sebagai berikut :

Aplikasi Interface
Interface sering digunakan untuk menambah event handling pada program aplikasi GUI, perhatikan contoh berikut :
//membuat aplikasi JButton implementasi interface :
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class AppJButton extends JFrame implements ActionListener {
private JButton btn;
public AppJButton() // constructor
super(”Demo JButton Interface”);
Container c = getContentPane();
c.setLayout(new FlowLayout());
btn = new JButton(”Button”);
c.add(btn);
btn.addActionListener(this);
setSize(275, 100);
show();
}
public static void main(String args[]) {
AppJButton app = new AppJButton();
App.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent we) {
System.exit(0);
}
});
}
public void actionPerformed(ActionEvent ae) {
JOptionPane.showMessageDialog(null,
”Anda telah menekan : ”+
e.getActionCommand()+”\n”+
”Handler Button ini mengimplementasikan interface”);
}
}