

12. Enum ve Struct Benzeri Kullanımlar
Java programlama dilinde, enum
(enumeration) ve struct
benzeri yapılar, belirli bir grup sabiti temsil etmek veya basit veri yapıları oluşturmak için kullanılır. Bu yapılar, kodun okunabilirliğini ve güvenliğini artırırken, veri yönetimini de kolaylaştırır. Bu yazıda, Java’daki enum
yapısını detaylı bir şekilde inceleyecek ve struct
benzeri kullanım senaryolarına değineceğiz.
Enum (Numaralandırma) Nedir?
Enum
, belirli bir sayıda önceden tanımlanmış sabiti temsil eden bir veri tipidir. Örneğin, bir haftanın günlerini, bir trafik ışığının renklerini veya bir ürünün kategorilerini enum
kullanarak tanımlayabiliriz. Enum
‘lar, tip güvenliği sağlar ve kodun daha okunabilir olmasını sağlar.
Enum Tanımlama ve Kullanımı
Java’da bir enum
şu şekilde tanımlanır:
enum Gun {
PAZARTESI, SALI, CARSAMBA, PERSEMBE, CUMA, CUMARTESI, PAZAR
}
Bu enum
, haftanın günlerini temsil eder. Enum
sabitlerine erişmek için, EnumAdı.SABIT_ADI
şeklinde bir sözdizimi kullanılır:
Gun bugun = Gun.SALI;
System.out.println("Bugün: " + bugun);
Enum’lara Özellik ve Metot Ekleme
Enum
‘lar sadece sabitlerden ibaret değildir. Her bir enum
sabiti için özellikler tanımlayabilir ve metotlar ekleyebiliriz. Bu, enum
‘ları daha güçlü ve esnek hale getirir.
Örneğin, her bir güne karşılık gelen bir sayısal değer (haftanın kaçıncı günü olduğu) ekleyebiliriz:
enum Gun {
PAZARTESI(1), SALI(2), CARSAMBA(3), PERSEMBE(4), CUMA(5), CUMARTESI(6), PAZAR(7);
private final int gunSirasi;
Gun(int gunSirasi) {
this.gunSirasi = gunSirasi;
}
public int getGunSirasi() {
return gunSirasi;
}
}
System.out.println("Salı gününün sırası: " + Gun.SALI.getGunSirasi());
Enum’ları Switch Deyimleri ile Kullanma
Enum
‘lar, switch
deyimlerinde sıklıkla kullanılır. Bu, belirli bir enum
değerine göre farklı işlemler yapmayı kolaylaştırır:
Gun bugun = Gun.CARSAMBA;
switch (bugun) {
case PAZARTESI:
System.out.println("Haftanın ilk günü.");
break;
case SALI:
case CARSAMBA:
case PERSEMBE:
case CUMA:
System.out.println("Hafta içi.");
break;
case CUMARTESI:
case PAZAR:
System.out.println("Hafta sonu.");
break;
}
Struct Benzeri Kullanımlar
Java’da doğrudan struct
veri tipi bulunmamasına rağmen, class
yapısı ile struct
benzeri yapılar oluşturulabilir. Struct
‘lar genellikle basit veri gruplarını temsil etmek için kullanılır. Java’da bu işlevselliği sağlamak için genellikle veri taşıma amaçlı (Data Transfer Object – DTO) sınıflar kullanılır.
DTO (Data Transfer Object) Sınıfları
DTO sınıfları, verileri farklı katmanlar arasında taşımak için kullanılır. Bu sınıflar genellikle sadece veri alanlarına sahiptir ve iş mantığı içermezler. Bu sayede, veri transferi sırasında performans optimizasyonu sağlanır ve kodun okunabilirliği artırılır.
Örneğin, bir öğrenci bilgilerini temsil eden bir DTO sınıfı şu şekilde tanımlanabilir:
public class Ogrenci {
private String ad;
private String soyad;
private int yas;
public Ogrenci(String ad, String soyad, int yas) {
this.ad = ad;
this.soyad = soyad;
this.yas = yas;
}
public String getAd() {
return ad;
}
public String getSoyad() {
return soyad;
}
public int getYas() {
return yas;
}
@Override
public String toString() {
return "Ogrenci{" +
"ad='" + ad + '\'' +
", soyad='" + soyad + '\'' +
", yas=" + yas +
'}';
}
}
Ogrenci ogrenci = new Ogrenci("Ali", "Yılmaz", 20);
System.out.println(ogrenci);
Record Sınıfları (Java 14+)
Java 14 ile birlikte gelen record
sınıfları, DTO sınıflarına benzer bir şekilde, veri taşımak için kullanılır. Record
sınıfları, daha kısa ve okunabilir bir sözdizimi sunar. Record
sınıfları, otomatik olarak equals()
, hashCode()
ve toString()
metotlarını oluşturur.
Öğrenci bilgilerini temsil eden bir record
sınıfı şu şekilde tanımlanabilir:
public record Ogrenci(String ad, String soyad, int yas) {
}
Ogrenci ogrenci = new Ogrenci("Ayşe", "Demir", 22);
System.out.println(ogrenci);
Record
sınıfları, veri odaklı uygulamalarda kodun kısalmasını ve okunabilirliğini önemli ölçüde artırır.
Sonuç
Java’da enum
ve struct
benzeri yapılar, kodun okunabilirliğini, güvenliğini ve performansını artırmak için kullanılır. Enum
‘lar, belirli bir grup sabiti temsil etmek için idealdir. DTO ve record
sınıfları ise, basit veri yapılarını tanımlamak ve veri transferi yapmak için kullanılır. Bu yapıları doğru bir şekilde kullanarak, daha sağlam ve bakımı kolay uygulamalar geliştirebilirsiniz.



“Java’da enum ve struct benzeri yapılar, modern yazılım geliştirme prensiplerine uygun, okunabilir ve bakımı kolay kod yazmanıza yardımcı olur.” – Bir Java Uzmanı
Bir yanıt bırakın