Anda di halaman 1dari 28

Pemrograman Berorientasi Objek

Class dan Object

Team Teaching
Universitas Brawijaya
Membuat
Object
Object: Car
• Asda • Mendefinisikan Class Car
d • Apa saja atribut umum
dari mobil?
• Apa saja perilaku umum
dari mobil?
Class Car
• Contoh konsep untuk class
Car
Class name: Car
nama
class
Data Fields:
color is attributes
power is
speed is

Methods operations
: drive
stop
turn left
turn right
Class Diagram dari Class
Car
• Contoh class diagram untuk class
Car

nama class

data field (attributes,


property)

method
s

Class diagram memodelkan secara visual desain dari suatu class.


Class diagram bagian dari Unified Modeling Language (UML).
UML nantinya dipelajari lebih lanjut dalam kuliah Pemodelan
Berorientasi Objek
Penulisan Data Field, Constructor,
Method pada Class Diagram
Dari notasi Class Diagram apabila dituliskan dengan Java
maka
• Untuk data field:
dataFieldName: dataFieldType
• Untuk method:
methodName(parameterName
: parameterType):returnType
• Java menyediakan method khusus yang selalu dipanggil
saat instansiasi class, yang disebut constructor 🡪
biasanya digunakan untuk inisialisasi data
• Untuk constructor:
ClassName(parameterName:parameterType)
Syntax Java dari Class
Car
public class Car
{
// attribute declarations
public String color;
public int speed;
public int power;

// method declarations
public void drive()
{
System.out.println(“drive”);
}

public void turnRight()


{ System.out.println(“turnRight”);
}

public void turnLeft()


{ System.out.println(“turnLeft”);
}

public void stop()


{ System.out.println(“stop”);
}
}
Deklarasi Object dari Class
Car
• Suatu class dapat digunakan untuk membuat
object
• Object merupakan instance dari suatu class

ne
w
public class Test{

public static void main(String[] args) {

Car car1 = new Car();

car1.color=“Merah”;

car1.power=1000;

car1.speed=150;

car1.drive();

System.out.println(“Warna”+ car1.color);

System.out.println(“Power”+ car1.power);

System.out.println(“Speed”+ car1.speed);

Car car2 = new Car();

car2.drive();

Car car3 = new Car();

car3.drive();

}
Class Diagram dari Class
Circle

Clas
s

Objec
t
Class Circle

class Circle {
/** The radius of this circle */ Data field
double radius = 1;

/** Return the area of this circle */


double getArea() {
return radius * radius * Math.PI;
}
/** Return the perimeter of this circle */
double getPerimeter() {
return 2 * radius * Math.PI; Method
}
/** Set new radius for this circle */
void setRadius(double newRadius) {
radius = newRadius;
}
}
Deklarasi Object dari Class
Circle
public class TestSimpleCircle {
/** Main method */
public static void main(String[] args) {
// Create a circle with radius 1 Circle
circle1 = new Circle(); Perhatikan keyword
circle1.setRadius(1);
System.out.println("The area of the circle of radius "
new
+ circle1.radius + " is " + circle1.getArea());

// Create a circle with radius 25 Circle


circle2 = new Circle();
circle2.setRadius(25);
System.out.println("The area of the circle of radius "
+ circle2.radius + " is " + circle2.getArea());

// Create a circle with radius 125 Circle


circle3 = new Circle(125);
circle3.setRadius(125);
System.out.println("The area of the circle of radius "
+ circle3.radius + " is " + circle3.getArea());

// Modify circle radius


circle2.radius = 100; // or circle2.setRadius(100)
System.out.println("The area of the circle of radius "
+ circle2.radius + " is " + circle2.getArea());
}
}
Pemanggilan Data,
Method
• Class Circle adalah konsep dari kelas lingkaran, sedangkan
TestSimpleCircle adalah class utama, digunakan untuk
menguji class Circle melalui object circle1,circle2, circle3.
• Kata kunci new digunakan untuk membuat object dari suatu
class, mis.
circle1 = new Circle();
• Tiga object di atas (dengan reference circle1, circle2,
circle3) memiliki method sama tapi data field berbeda
• Data field dapat diakses melalui reference dari object dgn
operator .
• Mis. circle1.radius, circle2.radius, circle3.radius
• Method dapat diakses melalui reference dari object dgn
operator
• Misalnya circle1.setRadius(), circle1.getArea()
Hasil eksekusi
The area of the circle of radius 1.0 is 3.141592653589793
The area of the circle of radius 25.0 is 1963.4954084936207
The area of the circle of radius 125.0 is 49087.385212340516
The area of the circle of radius 100.0 is 31415.926535897932

Catatan: Dalam satu file .java bisa memiliki banyak class, tapi hanya satu yang
bisa menjadi public class 🡪 nama public class = nama file .java

Tiap class .java akan dikompilasi menjadi file .class: Circle.class,


TestSimpleCircle.class
Mengakses Object via
Reference Variable
Reference Variables dan Reference
Types
• Seperti dijelaskan sebelumnya, data dan method dari object dapat
diakses lewat operator dot ( . ) melalui reference variable dari
object
• Reference Type
• Class adalah programmer-defined type 🡪 reference type artinya variabel
dengan tipe class dapat mereferensi ke object (instance dari class)
• Reference Variable
• Object dapat diakses melalui reference variable yang berisi referensi dari
object. Deklarasi variable:
ClassName objectRefVar
Circle myCircle Deklarasi variable myCircle bertipe
Circle
• Variable myCircle dapat mereferensi ke object Circle
• Untuk membuat object dan meng-assign reference ke
myCircle
myCircle = new Circle()
• Ditulis dalam satu statement
Circle myCircle = new Circle()
Object Reference Variable vs
Object
• Catatan
• Object reference variable bukan berisi suatu object tapi
sebenarnya berisi reference ke object tsb
• Object reference variable berbeda dengan object
• Tapi di sini kita dapat mengabaikannya dan dapat dikatakan
myCircle adalah sebuah object Circle
Mengakses Data dan Metode dari
Object
• Data field dan method adalah anggota object
• Data dan method dapat diakses setelah object
dibuat mereferensi data field
•objectRefVar.dataField pada
object
memanggil
•objectRefVar.method(arguments) method
dalam object
• Data field radius disebut instance variable, karena
(isinya) tergantung dari instance tertentu
• Begitu juga method getArea disebut instance method,
karena dipanggil dari instance tertentu
Reference Data Field dan Nilai
null
• Apabila data field bertipe reference tidak berisi reference ke
object, maka nilai default adalah null. Misalnya:
String name; 🡪 apabila ditampilkan hasilnya null
• Data field dalam object akan diberi nilai default
• Reference type 🡪 null, numeric type 🡪 0, boolean 🡪 false, char type
🡪\u0000
• Local variable dalam method tidak diberi nilai default
Jalankan program berikut, apa
hasilnya?
class Student {
String name; // name has the default value null
int age; // age has the default value 0
boolean isScienceMajor; // isScienceMajor has default value false
char gender; // gender has default value '\u0000'
}

public class Test {


public static void main(String[] args) { Student
student = new Student();
System.out.println("name? " + student.name);
System.out.println("age? " + student.age);
System.out.println("isScienceMajor? " + student.isScienceMajor);
System.out.println("gender? " + student.gender);
}
}

public class Test {


public static void main(String[] args) { int x; //
x has no default value String y; // y has no
default value System.out.println("x is " + x);
System.out.println("y is " + y);
}
}
Perbedaan Variable Bertipe
Primitif dan Tipe Reference
• Tiap variabel berisi lokasi memori yang memuat suatu value
• Variabel bertipe primitif berisi nilai primitif
• Variable bertipe reference berisi reference ke object (di
mana disimpan dalam memori)
• Bila di-assign, misal i=j maka isi dari j dikopi ke i
• Untuk variabel bertipe primitif maka yang dikopi adalah nilai
sebenarnya, berbeda dengan variable bertipe reference
Garbage
• Pada object type assignment c1 = c2, c1 akan menunjuk
ke object yang direferensikan oleh c2
• Object yang sebelumnya direferensikan c1 tidak lagi dipakai,
disebut
garbage.
• Garbage mengisi ruang memori, Java runtime mendeteksi
garbage tsb dan berusaha mengembalikan memori yang
terpakai tadi. Proses ini disebut garbage collection.
• Bila memang tidak dipakai lagi kita bisa saja isi dengan nilai
null. JVM yang nanti mengurusnya
Ruang Lingkup
Variable
Ruang Lingkup Variable
• Sebelumnya kita kenal variabel lokal dan ruang lingkupnya
• Variabel lokal hanya bisa diakses di dalam method dan
blok dia dideklarasikan
• Variabel di dalam class disebut data field atau variabel dari
class
• Ruang lingkup dari variabel dari class dapat diakses di
manapun di dalam class
• Terserah letaknya dan dideklarasikan di mana
• Kecuali, apabila nilainya dari variabel lain, maka variabel lain
public class F {
letaknya didahulukan
private int i ;
private int j = i + 1;
}
Deklarasi Variabel
• Kita hanya dapat membuat nama variabel dari class satu kali
• Tapi kita bisa gunakan nama yang sama di dalam method berkali-kali
(tapi ini bisa membuat ambigu)
• Apabila variabel lokal punya nama sama dengan variabel dari
class

public class F {
private int x = 0;// Instance variable
• variabel lokal private int y = 0;
public F() {
punya prioritas }
lebih tinggi public void p() {
int x = 1; // Local variable
• variabel dari class System.out.println("x = " + x);
tidak dipanggil System.out.println("y = " + y);
}
}
Variabel Class vs Variabel
Lokal
public class Test {
private int i = 0;
private int j = 0;
public void P() {
int i = 2;
int k = 3;
{
int j = 3;
System.out.println("i + j is " + (i + j));
i + j is
5
}
k = i + j;
System.out.println("k is " + k); k is 2
System.out.println("j is " + j); j is 0
}
public static void main(String[] args) {
Test t = new Test();
t.P();
}
}
Reference this
• Keyword this digunakan untuk menunjuk dirinya sendiri
• Untuk memanggil method/variable milik dirinya sendiri (dalam
class)
• Bisa juga digunakan di dalam constructor untuk
memanggil
constructor lain
• Biasanya digunakan untuk menghindari ambiguitas
memanggil variabel di class dan variabel lokal
• Misalnya ubah code sebelumnya (i + j) jadi (this.i + j)
this untuk Reference Data Field Tersembunyi

• Keyword this digunakan juga untuk memanggil data


field/method
yang tersembunyi (mis. private)

public class F {
private int i= 5;

public void setI(int i) {


this.i = i;
}
}

Anda mungkin juga menyukai