Java’da başka bir classta tanımlanmış olan private değişkenlerin kullanılmasını sağlayarak data encapsulation durumunun sağlanmasına olanak tanıyan metodlara Setter ve Getter denir.
Dilimizdeki karşılıkları: get: almak, set: vermek anlamındadır. Get return bir değer dönerken Set return değer dönmez.
Data Encapsulation Kavramı, verilerin dış ortamdan olası aksaklıklar karşısında koruma mekanizması olarak adlandırılır.
Data Encapsulation: Kapsülleme, nesne yönelimli programlamada herhangi bir nesnenin metotlarını, verilerini ve değişkenlerini diğer nesnelerden saklayarak ve bunlara erişimini sınırlandırarak yanlış kullanımlardan koruyan bir konsepttir.
Product Class:
public class Product {
//encapsulation
private int id;
private String name;
private double unitPrice;
private String detail;
private double discount;
public Product() {
}
public Product(int id, String name, double unitPrice, String detail, double discount) {
super();
this.id = id;
this.name = name;
this.unitPrice = unitPrice;
this.detail = detail;
this.discount = discount;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double getUnitPrice() {
return unitPrice;
}
public void setUnitPrice(double unitPrice) {
this.unitPrice = unitPrice;
}
public String getDetail() {
return detail;
}
public void setDetail(String detail) {
this.detail = detail;
}
public double getDiscount() {
return discount;
}
public void setDiscount(double discount) {
this.discount = discount;
}
public double getUnitPriceAfterDiscount() {
return this.unitPrice-(this.unitPrice * this.discount / 100);
}
}
Dikkat ettiyseniz, "getUnitPriceAfterDiscount" yalnızca get için izin veriliyor. Peki neden bu şekilde yaptık?
Biz ürünün indirim miktarının hesaplanması sonrasında sonucu döndürecek bir şey istiyoruz. Yani matematiksel bir işlem sonrasında geriye değer döndürüyoruz ama herhangi bir değer ataması yapmayacağımız için setter kullanmadık.
Main içerisindeki kullanımı:
Product product2 = new Product(); //Referans oluşturma, instance
product2.setId(2);
product2.setName("Lenovo V15");
product2.setDetail("16 GB RAM");
product2.setDiscount(10);
product2.setUnitPrice(16000);
//Bir önceki class için bahsettiğimiz gibi, otomatik olarak indirimli tutar ekrana yazdırıldı.
System.out.println(product2.getUnitPriceAfterDiscount())
https://medium.com/gokhanyavas/java-oop-kavram%C4%B1-2-1e4daca08a5