İlginizi Çekebilir
featured
  1. Ana Sayfa
  2. Java
  3. Java Interface Nedir?
Trendlerdeki Yazı

Java Interface Nedir?

OOP kavramının belki de en karmaşık yapısı olan interface(arayüz) kavramına göz atacağız. Bu konu içerisinde Java Interface Nedir, Java Interface Örnekleri ve kullanım alanları gibi sorularına cevap bulmaya çalışacağız.

Interface kavramı, kullanım yapısı olarak bir önceki konumuz olan Java Abstract Class Nedir? konusu üzerinde anlatımını gerçekleştirdiğim abstract class kavramına benzerlik gösterir. Bu benzerliği yapı olarak görmeniz aşağıdaki başlıklarda mümkün olacak olsa da teorik olarak sizler için alt başlıklarda bahsedeceğim.

Java Interface Nedir?

Java’da Interface kullanıldığı zaman içerisinde sadece kendi bünyesinden türeyen alt sınıfların kullanılması, doldurması zorunda olduğu içi boş bir metot tanımlaması gerçekleştirilen yapılardır. Biraz daha akılda kalıcılığı arttırmak için Java Interface Nedir sorusuna cevap olarak kendisinden üretilen sınıflar için bir kılavuz, yol gösterici veya gerçekleştirilmesi gereken görevler bütünü gibi örneklendirerek bu soruyu cevaplayabiliriz.

Elbette, bu denli karışık teorik bilgileri okuyarak anlamak aklımızı karıştırsa da elimizi koda bulamadan önce bazı şeyleri bilmemiz gerekiyor. Bu bilmemiz gereken kavramlardan biriside Java Interface Özellikleri olacaktır.

Java Interface Özellikleri

Java Interface nedir sorusuna daha iyi cevap verebilmek, programlarımız içerisinde nerelerde, neden kullanmamız gerektiğini anlayabilmemiz için Java Interface özellikleri hakkında bilgi sahibi olmamız gerekecektir. Bu özellikleri şu şekilde sıralayabiliriz;

  • Bir sınıf birden fazla interface ile implement (çağırılabilir) edilebilir.
  • Interface, anlık değişken içermezler. Bu yüzden interface üzerinde tanımlanan değişkenler, interface ile türetilen sınıflar tarafından değiştirilemezler.
  • Tanımlamalarını gerçekleştirirken sadece public veya default erişim belirleyici kullanabiliriz.
  • Tanımladığımız Interface’i, birden fazla sınıf çağırarak kullanabilir.
  • Interface üzerinde tanımlanan metotlar gövdesizdir. Bu yapısı ile abstract metotlara benzerlik gösterir.
  • Interface sınıfını kullanarak nesne üretemeyiz.

Java Interface Özellikleri incelendiği zaman programlarımız üzerinde kullanım alanını şu şekilde tanımlayabilirim:
Programlarımız üzerinde temel olarak kalıtım işlemini bir sınıf üzerinde birden fazla kalıtım gerçekleştirmek istiyoruz veya DRY (Don’t Repeat Yourself) prensibini kullanarak doğru bir kod dizisi yazmak istediğimiz zaman, yazdığımız koda esneklik, kod okunabilirliğini arttırmak istediğimiz zaman Java Interface kullanmamız gerekmektedir diyebiliriz.

Java Interface Kullanımı

Java Interface Kullanımı Nasıl yapılır?
Java’da Interface’in Sınıf ile Kullanımı

Programlarımız üzerinde interface kullanımı gerçekleştirmek istediğimiz zaman interface anahtar kelimesini kullanmamız gerekmektedir. Bu kullanım yapımız kod içerisinde şu şekilde olacaktır;

public interface IKullanimOrnegi {
    void metotTaimlamasi(); //Gövdesiz Metot Tanımlaması.
}

Burada interface tanımlaması yaparken yazılı olmayan fakat genel olarak herkesin bildiği bir kuralı size aktarmak istiyorum. Programımıza interface tanımlamasını gerçekleştirirken interface isimlerinin başına “I” koymamız gerekmektedir. Bunu koymamızın sebebi kodun okunurluğunu arttırmaktır, koymadığımız zaman bir sıkıntı ile karşılaşmayız.

Java Interface Örnekleri

Java Interface Nedir sorusuna cevap kısmı, kullanım alanı ve özellikleri gibi alanlardaki teorik bilgilerimizi verdikten sonra işin en eğlenceli kısmına geldik. Java Interface örnekleri başlığı altında programlarımızda nasıl kullanmamız gerektiğini ve asıl işlevini göstermeyi hedefliyorum. Bu yüzden gelin birlikte yapacağımız örneği tanıyalım.

Java Interface Nedir
Java Interface Örnekleri

Bir otomasyon geliştireceğimiz zaman birden fazla veri tabanı bağlantısı kurarak işlemler gerçekleştirmesini, istenilen veri tabanına göre uyumlu olmasını isteyebiliriz. Bunun için kullanmamız gereken işlemlerin temelinde Java Interface kullanımı yatmaktadır. Bu örneğimiz için uygulayacağımız adımlar şu şekilde olacaktır;

#1 İlk işlem olarak çeşitli veri tabanlarında ortak olarak tanımlayacağımız metotların yer alacağı interface tanımlamasını gerçekleştirmek için IDatabase isminde bir interface oluşturdum.

public interface IDatabase {
    // Databese üzerinde işlem gerçekleştirmek için gerekli metot tanımlamaları:
    void login();
    void add();
    void delete();
    void get();
    void update();
}

#2 Oluşturmuş olduğum interface’i kullanarak Mysql ve Oracle veri tabanları için alt sınıflar oluşturarak implement işlemini gerçekleştirdim. Mysql veri tabanı için oluşturmuş olduğum MysqlDatabase sınıfının içerisindeki kod satırları şu şekildedir;

public class MysqlDatabase implements IDatabase{

    @Override
    public void login(){
        System.out.println("-> Mysql Veritabanına Bağlanıldı.");
    }

    @Override
    public void add() {
        System.out.println("-> Verilen İşlemler Mysql Veritabanına Kaydedildi.");
    }

    @Override
    public void delete() {
        System.out.println("-> Verilen İşlemler Mysql Veritabanından Silindi.");
    }

    @Override
    public void get() {
        System.out.println("-> İstenilen İşlemler Mysql Veritabanından Getirildi.");
    }

    @Override
    public void update() {
        System.out.println("-> İstenilen İşlemler Mysql Veritabanı Üzerinde Güncellendi.");
    }
}

#3 Aynı şekilde implement ettiğim Oracle veri tabanı için oluşturduğum OracleDatabase sınıfı içerisinde bulunan kod parçacığı ise şu şekildedir;

public class OracleDatabase implements IDatabase{
    @Override
    public void login(){
        System.out.println("-> Oracle Veritabanına Bağlanıldı.");
    }
    @Override
    public void add() {
        System.out.println("-> Verilen İşlemler Oracle Veritabanına Kaydedildi.");
    }

    @Override
    public void delete() {
        System.out.println("-> Verilen İşlemler Oracle Veritabanından Silindi.");
    }

    @Override
    public void get() {
        System.out.println("-> İstenilen İşlemler Oracle Veritabanından Getirildi.");
    }

    @Override
    public void update() {
        System.out.println("-> İstenilen İşlemler Oracle Veritabanı Üzerinde Güncellendi.");
    }
}

#4 İşlemlerimi daha rahat, esnek ve güvenli bir biçimde gerçekleştirebilmek için DatabaseManager isminde bir sınıf daha oluşturarak ilerleyen konularda göreceğimiz çok biçimlilik (polymorphism) kavramını kullandım.
#5 Kullanmış olduğum bu yapı hangi veri tabanı üzerinde işlem yapacağımızı belirledikten sonra şekillenerek çeşitli işlemleri yerine getirecek metotları kullanarak işlemlerini gerçekleştiriyor.

import java.util.Scanner;

public class DatabaseManager {
    private IDatabase database;
    DatabaseManager(IDatabase database){
        this.database = database;
    }
    public void loginDatabase(){
        database.login();
    }
    public void addDatabase(){
        database.add();
    }
    public void deleteDatabase(){
        database.delete();
    }
    public void getDatabase(){
        database.get();
    }
    public void updateDatabase(){
        database.update();
    }
    public void selectMenu(){
        int kararVer;
        Scanner scanner = new Scanner(System.in);
        System.out.print("< Gerçekleştirilecek İşlemler >\n-----------------\n[1] - Veri Ekle\n[2] - Veri Sil\n[3] - Veri Getir\n[4] - Veri Güncelle\n-----------------\n-> Kararınız:");
        kararVer = scanner.nextInt();
        switch(kararVer){
            case 1:
                System.out.println("-----------------");
                addDatabase();
                System.out.println("-----------------");
                break;
            case 2:
                System.out.println("-----------------");
                deleteDatabase();
                System.out.println("-----------------");
                break;
            case 3:
                System.out.println("-----------------");
                getDatabase();
                System.out.println("-----------------");

                break;
            case 4:
                System.out.println("-----------------");
                updateDatabase();
                System.out.println("-----------------");
                break;
            default:
                System.out.println("-----------------\n-> Tanımsız Bir Değer Girdiniz.\n-----------------");
                break;
        }
    }
}

#6 Son olarak kod parçacıklarını birleştirdiğim Main sınıfı içerisinde ise tanımlamaları gerçekleştirerek programımı başlatıyorum.

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        DatabaseManager databaseManager;
        // Değişken Tanımlaması:
        int karar;
        // Scanner Tanımlaması:
        Scanner scanner = new Scanner(System.in);
        System.out.println("-----------------\n< Interface Kullanımı >\n-----------------");
        System.out.print("[1] - MysqlDatabase Bağlan\n[2] - OracleDatabase Bağlan\n-----------------\n-> Kararınız:");
        karar = scanner.nextInt();
        switch(karar){
            case 1:
                databaseManager = new DatabaseManager(new MysqlDatabase());
                System.out.println("-----------------");
                databaseManager.loginDatabase();
                System.out.println("-----------------");
                databaseManager.selectMenu();
                break;
            case 2:
                databaseManager = new DatabaseManager(new OracleDatabase());
                System.out.println("-----------------");
                databaseManager.loginDatabase();
                System.out.println("-----------------");
                databaseManager.selectMenu();
                break;
            default:
                System.out.println("-----------------\n-> Tanımsız Bir Değer Girdiniz.\n-----------------");
                break;
        }
    }
}

Kod Çıktısı:

Java Interface Örnekleri
Java Interface Veri Tabanı Örnekleri

Java interface kavramı hakkında Oracle tarafından hazırlanmış tutorial kaynağına göz atmak isterseniz buraya tıklayarak ilgili sayfaya ulaşabilirsiniz.
Java Interface Nedir, Java Interface Örnekleri, özellikleri ve kullanım alanları gibi başlıklar altında işlediğimiz interface kavramı hakkında aklınıza takılan soruları veya konu işleyişi hakkında önerileriniz var ise aşağıda bulunan yorum yap kısmından benim ile iletişime geçebilirsiniz.

Yorum Yap

Yazar Hakkında

Yazmayı, öğrenmeyi, öğrendiklerini paylaşmayı , kodlamayı ve günün birinde Yönetim Bilişim Sistemleri Uzmanı olmanın hayalini kuran birisiyim.

Yorum Yap