Nama : Ariocky Agustinus
Nim : 10.41010.0256
Resume Pertemuan 2 :
Nim : 10.41010.0256
Resume Pertemuan 2 :
class:
kumpulan atas definisi data dan fungsi-fungsi dalam suatu unit untuk suatu tujuan tertentu. Sebagai contoh 'class of dog' adalah suatu unit yang terdiri atas definisi-definisi data dan fungsi-fungsi yang menunjuk pada berbagai macam perilaku/turunan dari anjing. Sebuah class adalah dasar dari modularitas dan struktur dalam pemrograman berorientasi object. Sebuah class secara tipikal sebaiknya dapat dikenali oleh seorang non-programmer sekalipun terkait dengan domain permasalahan yang ada, dan kode yang terdapat dalam sebuah class sebaiknya (relatif) bersifat mandiri dan independen (sebagaimana kode tersebut digunakan jika tidak menggunakan OOP). Dengan modularitas, struktur dari sebuah program akan terkait dengan aspek-aspek dalam masalah yang akan diselesaikan melalui program tersebut. Cara seperti ini akan menyederhanakan pemetaan dari masalah ke sebuah program ataupun sebaliknya.
Hierarki class
Suatu kelas dapat dibuat sebagai kelas yang benar-benar baru atau dapat dibentuk dari kelas yang sudah ada.Baru disini dalam pengertian ,semua data dan method yang dimiliki oleh kelas tersebut Anda deskripsikan dan buat sendiri,sedangkan bila membentuk dari kelas yang sudah ada bermaknaanda menggunakan data dan method yang telah dideskripsikan dalam suatu kelas acuan (fundamen).Proses pembentukan kelas baru dari kelas yang sudah ada disebut sebagai pewarisan(inheritance).Kelas yang menjadi basis bagi pembentukan kelas lainnya disebut sebagai Kelas Super,Sedangkan kelas yang terbentuk dinamakan Kelas Sub.
Penciptaan obyek dari sebuah class
•Obyek diciptakan dengan perintahnew
•Misal akan diciptakan obyek baru dari class mobil dengan nama mobilku
•Maka perintah penciptaan obyek
mobilkudari class Mobil:
Mobil mobilku = new Mobil();
Anatomi Kelas
Bentuk umum struktur anatomi kelas sebagai berikut
(modifier1) class NamaKelas (modifier2) {
classbody
}
Classbody terdiri dari attribute, constructor, dan method.
Modifier
Adalah keyword yang digunakan sebagai pelengkap suatu unsur (kelas/method/variabel) dan berfungsi menjelaskan bagaimana hubungan diantara unsur-unsur tesebut.Misalnya bagaimana hubungan antara method dan variabel dari suatu kelas terhadap method dan variabel dari kelas yang lain,bagaimana hubungan kelas terhadap objek yang merupakan instansnya dan sebagainya.Karena bersifat melengkapi,maka modifier ini bersifat opsional.
Modifier pada anatomi kelas, sifatnya optional, digunakan berdasarkan kebutuhan. Modifier menunjukkan sifat-sifat tertentu dari : kelasnya, methodnya, atau attributenya.
Ada 10 keyword yang digunakan sebagai modifier1 dan dikelompokkan menjadi :
1. Modifier akses (public, protected, default, private)
Public
Akan membuat kelas/method/variabel yang dimiliki oleh suatu kelas bersifat available terhadap semua kelas,baik yang terletak dalam package yang sama maupun berbeda.
Protected
Bersifat membatasi akses terhadap method dan variabel suatu kelas , namun tidak bersifat total.
Private
Bersifat menyembunyikan method atau variabel dari kelas lain secara total,artinya kedua unsur itu hanya bisa diakses oleh kelas itu sendiri.Kelas yang lain ,serta objek yang diinstans dari kelas yang lain sama sekali tidak dapat memanggil method dan variabel yang dideklarasikan sebagai private.
2. Modifier final
Digunakan bila suatu unsur (kelas/method/variabel)memili nilai yang tetap (tidak dapat diubah).
3. Modifier static
Dipakai untuk menyatakan bahwa suatu method dan variabel hanya dimiliki oleh kelas yang bersangkutan dan tidak dapat diserahkan kepada objek pada saat instansiasi.maksudnya , meskipun anda dapat menciptakan objek dari kelas tersebut ,namun anda tidak dapat mengakses method dan variabel melalui objek tersebut.
4. Modifier abstract
Digunakan pada kelas atau mehod untuk menyatakan bahwa unsur-unsur tersebut tidak dapat secara langsung diinstansiasi menjadi objek.
5. Modifier synchronized
6. Modifier native
7. Modifier storage (transient, volatile)
Digunakan pada pemrograman yang mempertimbangkan faktor thread.
Modifier yang memiliki sifat saling kontradiktif yaitu static dan abstract. Sementara static tidak boleh memberi sifat pada interface, dan keyword super tidak boleh digunakan pada method static.
Ada 2 keyword yang sering digunakan sebagai modifier2, yaitu extends dan implements.
2.3. Deklarai Attribute (Variabel Anggota Data)
Deklarasi diletakkan di dalam classbody (di luar method). Bentuk umum deklarasi attribute :
[modifier] tipedata namavariabel;
[public] [static] final tipedata NAMA_KONSTANTA = nilai;
Contoh :
public class CircleClass {
public static final double PI = 3.14159265358979323846;
public double x, y, r;
// dan seterusnya
}
2.4. Method
Method merupakan tingkah laku dari suatu objek atau kelas, jika bersifat static berarti tingkah laku semua objek dalam kelas tersebut.
Method diletakkan di dalam classbody (sebaiknya tidak diletakkan dalam method lain).
Bentuk umum method :
[modifier] tipe_return_value namaMethod(tipe parameter) {
methodbody;
}
Modifier boleh lebih dari satu (dipisah oleh spasi).
Pasangan tipe dan parameter dapat lebih dari satu (dipisah oleh koma).
Bentuk umum method main() sebagai berikut :
[modifier] tipe_return_value main(String args[]) {
methodbody
}
Ada tiga sintaks pemanggilan suatu method :
namaMethod([nilaiParamater]);
namaObjek.namaMethod([nilaiParamater]);
namaKelas.namaMethod([nilaiParamater]);
Tidak semua member (class, attribute, dan method) dapat diakses method, berikut tabel aksesnya :
Method | member (class, attribute, method) |
Static | static boleh lewat objek ataupun class, boleh langsung kalau dalam kelas sendiri |
Static | non static hanya boleh lewat objek, langsung tidak boleh, lewat class tidak boleh |
Non static | static boleh lewat objek ataupun class, boleh langsung kalau dalam kelas sendiri |
Non static | non static hanya boleh lewat objek, langsung tidak boleh, lewat class tidak boleh |
Method dasar ada dua jenis yaitu getter() dan setter().
Contoh :
public class Dog {
private int weight; // information hiding
public int getWeight() { //getter
return weight;
}
public void setWeight(int newWeight) { //setter
weight = newWeight;
}
}
public class TesDog {
public static void main(String[] args) {
Dog d = new Dog(); // membuat objek d
d.setWeight(42); // input
System.out.println(”Dog d’s weight is ”+d.getWeight())
}
Constructor
• Pada prinsipnya constructor adalah method yang tidak memiliki return value (secara implisit adalah instant dari kelasnya), hanya saja namanya sama dengan nama kelas, dan dapat diberi modifier akses (public, protected, default, private).
• Ciri constructor :
– Mempunyai nama yang sama dengan nama class
– Tidak mempunyai return type
• Contoh :
public class Siswa {
private int nrp;
private String nama;
public Siswa(int n, String m) {
nrp=n;
nama=m;
}
}
Bentuk umum pendefinisian constructor :
[modifier] namaConstructor(tipe namaparameter) {
constructorBody;
}
Tujuan constructor dibuat adalah untuk melakukan inisialisasi yang diperlukan objek baru.
Contoh constructor dan overloadingnya :
class PersonToy {
String name;
String addressLine1;
String addressLine2;
String city;
int age;
public PersonToy() {
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;
}
}
Constructor lebih dari satu
• Suatu class boleh memiliki lebih dari satu constructor
• Syaratnya : daftar parameternya tidak boleh sama
• Contoh :
public class Siswa {
private int nrp;
private String nama;
public Siswa(String m) {
nrp=0;
nama=m;
}
public Siswa(int n, String m) {
nrp=n;
nama=m;
}
}
RELASI ANTAR CLASS
Kelas Inner
Java membolehkan programmer menyisipkan suatu kelas ke dalam kelas lainnya. Kelas sisipan ini disebut kelas Inner.
Kelas Inner berguna untuk mendukung suatu proses yang akan dijalankan oleh kelas luarnya.
Beberapa ketentuan kelas Inner :
a) Kelas Luar yang mengandung kelas Inner, bila dikompilasi akan menghasilkan dua file *.class, yaitu Luar.class dan Luar$Inner.class
b) Kelas Inner boleh tidak diberi nama, yang disebut Anonymous Inner.
c) Kelas Inner dapat diberi modifier akses public, atau protected, atau default, ataupun private.
d) Untuk mengakses referensi this dari kelas luar digunakan bentuk NamaKelasLuar.this.
e) 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();
f) 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).
6.2. 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
6.6. 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 :
Komponen | Interface | class |
Definisi | daftar deklarasi method | model objek |
kandungan informasi | isi/implementasi semua methodnya berada di luar interface ini | mendefinisikan attribute dan method secara rinci dan konkret |
Instansiasi | tidak boleh | boleh |
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 :
Komponen | Interface | abstract class |
Attribute | hanya berupa konstanta | bebas memilki tipe data apa saja |
Method | berupa deklarasi | boleh deklarasi, boleh berupa method lengkap |
Syntax | seluruhnya abstract (berupa deklarasi) | sebagian abstract |
0 komentar:
Posting Komentar