12.Enum ve Struct Benzeri Kullanımlar

Java logo
Java logo
image text

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:

Java

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:

Java

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:

Java

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:

Java

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:

Java

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:

Java

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 Enum Example
Java Record Class
Data Transfer Object Diagram



“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ı

İlk yorum yapan olun

Bir yanıt bırakın

E-posta hesabınız yayımlanmayacak.


*