1. Encapsulation (Enkapsulasi)
Konsep:
- Membungkus data (atribut) dan metode dalam satu unit (class).
- Menggunakan access modifier (
private
,public
,protected
) untuk mengontrol akses data. - Menggunakan getter dan setter untuk mengakses/memodifikasi data.
Contoh:
public class Student {
// Atribut private (terenkapsulasi)
private String name;
private int age;
// Constructor
public Student(String name, int age) {
this.name = name;
this.age = age;
}
// Getter untuk name
public String getName() {
return name;
}
// Setter untuk age (dengan validasi)
public void setAge(int age) {
if (age > 0) {
this.age = age;
} else {
System.out.println("Umur tidak valid!");
}
}
// Method untuk menampilkan info
public void displayInfo() {
System.out.println("Nama: " + name + ", Umur: " + age);
}
}
// Penggunaan
public class Main {
public static void main(String[] args) {
Student student1 = new Student("Alice", 20);
student1.setAge(21); // Mengubah umur
student1.displayInfo(); // Output: Nama: Alice, Umur: 21
}
}
Latihan:
- Buat class
BankAccount
dengan atributprivate
:accountNumber
(String)balance
(double)
Tambahkan methoddeposit()
,withdraw()
, dangetBalance()
.
2. Inheritance (Pewarisan)
Konsep:
- Class anak (
subclass
) mewarisi atribut dan metode dari class induk (superclass
). - Menggunakan keyword
extends
.
Contoh:
// Superclass
class Vehicle {
protected String brand;
public Vehicle(String brand) {
this.brand = brand;
}
public void startEngine() {
System.out.println("Mesin " + brand + " menyala.");
}
}
// Subclass
class Car extends Vehicle {
private int numOfDoors;
public Car(String brand, int numOfDoors) {
super(brand); // Memanggil constructor superclass
this.numOfDoors = numOfDoors;
}
// Method tambahan di subclass
public void honk() {
System.out.println("Tin! Tin!");
}
}
// Penggunaan
public class Main {
public static void main(String[] args) {
Car myCar = new Car("Toyota", 4);
myCar.startEngine(); // Output: Mesin Toyota menyala.
myCar.honk();
}
}
Latihan:
- Buat superclass
Animal
dengan metodeeat()
dansleep()
.
Buat subclassCat
yang menambahkan metodemeow()
.
3. Polymorphism (Polimorfisme)
Konsep:
- Kemampuan objek untuk memiliki banyak bentuk.
- Overriding: Subclass mengubah implementasi metode dari superclass.
- Overloading: Membuat metode dengan nama sama tetapi parameter berbeda.
Contoh (Overriding):
class Animal {
public void sound() {
System.out.println("Hewan mengeluarkan suara.");
}
}
class Dog extends Animal {
@Override
public void sound() {
System.out.println("Guk! Guk!");
}
}
public class Main {
public static void main(String[] args) {
Animal myDog = new Dog();
myDog.sound(); // Output: Guk! Guk!
}
}
Contoh (Overloading):
class Calculator {
public int add(int a, int b) {
return a + b;
}
public double add(double a, double b) {
return a + b;
}
}
Latihan:
- Buat class
MathUtils
dengan metodemultiply()
yang bisa menerima 2 atau 3 parameter integer. - Override metode
toString()
di classStudent
untuk menampilkan informasi spesifik.
4. Abstraction (Abstraksi)
Konsep:
- Menyembunyikan detail kompleks dan menampilkan fungsionalitas esensial.
- Menggunakan abstract class atau interface.
Contoh (Abstract Class):
abstract class Shape {
abstract double calculateArea(); // Metode abstrak
public void display() {
System.out.println("Ini adalah bentuk geometri.");
}
}
class Circle extends Shape {
private double radius;
public Circle(double radius) {
this.radius = radius;
}
@Override
double calculateArea() {
return Math.PI * radius * radius;
}
}
Contoh (Interface):
interface Playable {
void play(); // Metode interface (otomatis public abstract)
}
class Guitar implements Playable {
@Override
public void play() {
System.out.println("Memainkan gitar...");
}
}
Latihan:
- Buat interface
Drawable
dengan metodedraw()
.
Implementasikan di classRectangle
danTriangle
.
Proyek Akhir: Sistem Manajemen Perpustakaan
Gabungkan semua konsep OOP untuk membuat sistem sederhana:
- Class
Book
dengan atributtitle
,author
, danisBorrowed
. - Class
Library
yang menyimpan daftar buku dan memiliki metode:addBook()
borrowBook()
returnBook()
- Gunakan encapsulation untuk mengontrol akses data buku.
- Buat subclass
EBook
yang mewarisiBook
dan menambahkan atributfileSize
.
Contoh Output:
Buku "Java Programming" berhasil dipinjam.
Daftar Buku Tersedia:
1. Clean Code - Penulis: Robert Martin
Tips Belajar:
- Pahami perbedaan antara class, object, dan instance.
- Latihan dengan membuat relasi antar class (misal:
Mahasiswa
memilikiDosen
). - Pelajari lebih lanjut tentang composition dan dependency injection.
Semangat belajar! 🚀