Pelajaran modul (1/2)
Kelas dan Objek
Java adalah bahasa yang berfokus pada Pemrograman Berorientasi Objek (OOP). Dalam OOP, kita memodelkan dunia nyata menggunakan objek. Suatu objek memiliki keadaan (data) dan perilaku (tindakan).
Kelas dan Objek
- Kelas: Ini adalah cetak biru (atau templat) yang mendefinisikan properti dan perilaku suatu jenis objek.
- Objek: Ini adalah instance konkret yang dibuat dari sebuah kelas.
Misalnya, jika Car adalah kelasnya, mobil Anda di garasi adalah objek sebenarnya.
Bidang Instance dan Konstruktor
Data di dalam kelas disebut bidang instance (atau atribut). Untuk menginisialisasi keadaan suatu objek pada saat pembuatannya, kami menggunakan metode khusus yang disebut konstruktor.
Konstruktor memiliki nama yang sama dengan kelas dan tidak memiliki tipe pengembalian (bahkan void).
class Dog {
// Instance fields
String name;
int age;
// Constructor
public Dog(String name, int age) {
this.name = name; // 'this' refers to the current object's field
this.age = age;
}
}Membuat Objek dengan new
Untuk membuat objek di memori, kita menggunakan kata kunci new diikuti oleh konstruktor kelas:
public class Main {
public static void main(String[] args) {
// Creating a Dog object
Dog myDog = new Dog("Fido", 3);
// Accessing fields
System.out.println(myDog.name + " is " + myDog.age + " years old.");
}
}Referensi this
Kata kunci this di Java mengacu pada objek saat ini di mana konstruktor atau metode sedang dieksekusi. Hal ini terutama digunakan untuk menghindari ambiguitas ketika parameter konstruktor memiliki nama yang sama dengan bidang instance objek (variabel membayangi):
class User {
String username;
public User(String username) {
this.username = username; // this.username is the instance field, username is the parameter
}
}Alokasi Memori: Stack vs Heap
Memahami bagaimana Java mengalokasikan memori sangatlah penting:
- Stack: Ini adalah area memori yang cepat dan terorganisir tempat variabel primitif dan referensi objek (alamat memori) lokal ke metode disimpan.
- Heap: Ini adalah area memori yang lebih besar dan dinamis tempat objek sebenarnya dialokasikan (menggunakan kata kunci
new).
Saat kami mendeklarasikan Dog myDog = new Dog("Fido", 3);:
- Referensi
myDogdibuat di Stack. - Objek
Dogsebenarnya dengan datanya dibuat di Heap. - Variabel
myDogmenunjuk ke lokasi objek di Heap.
Cobalah sendiri
Lengkapi kelas Person dengan menambahkan nama field dan konstruktor yang sesuai. Kemudian, pada metode utama, buat objek Person bernama p dengan nama Alice.
Tunjukkan petunjuk
Tulis `String name;` di dalam kelas, deklarasikan konstruktor `public Person(String name) { this.name = name; }` dan buat instance-nya dengan `Orang baru('Alice')`.
Solusi tersedia setelah 3 upaya
Buat kelas Buku dengan bidang judul (String) dan halaman (int), konstruktor lengkap, dan buat instance dalam metode utama sebuah buku bernama b dengan judul Moby Dick dan 600 halaman.
Tunjukkan petunjuk
Ingatlah untuk mendefinisikan kedua bidang di Buku, memetakannya di konstruktor menggunakan `ini.judul = judul;` dan `halaman ini = halaman;`, dan menggunakan `Buku baru('Moby Dick', 600)`.
Solusi tersedia setelah 3 upaya
Buat kelas Produk dengan nama bidang (String) dan harga (ganda), dan konstruktor yang menginisialisasi kedua bidang. Pada metode utama, buat objek Produk bernama p dengan nama Laptop dan harga 999.99.
Tunjukkan petunjuk
Deklarasikan kolom `String name;` dan `double price;` di Produk, tetapkan bidang tersebut di konstruktor dengan `this.name = name;` dan `this.price = price;`, dan terakhir buat objek di metode utama.
Solusi tersedia setelah 3 upaya