Menu
Coddy logo textTech

Çoklu Arayüz Uygulama

Coddy'nin Java Journey'sinin Nesne Yönelimli Programlama bölümünün bir parçası. Ders 36 / 87.

Yalnızca bir sınıfı genişletebildiğiniz sınıf kalıtımının aksine, Java bir sınıfın birden fazla arayüzü uygulamasına izin verir. Java, çoklu kalıtımın bir biçimini güvenli bir şekilde bu şekilde gerçekleştirir.

Birden fazla arayüzü uygulamak için bunları implements anahtar sözcüğünden sonra virgüllerle ayırarak listeleyin:

public interface Drawable {
    void draw();
}

public interface Resizable {
    void resize(int width, int height);
}

public class Rectangle implements Drawable, Resizable {
    private int width, height;
    
    public Rectangle(int width, int height) {
        this.width = width;
        this.height = height;
    }
    
    @Override
    public void draw() {
        System.out.println("Drawing rectangle " + width + "x" + height);
    }
    
    @Override
    public void resize(int width, int height) {
        this.width = width;
        this.height = height;
    }
}

Sınıf, bildirdiği her arayüzdeki tüm yöntemleri uygulamalıdır. Kalıtımı birden çok arayüzle de birleştirebilirsiniz:

public class Square extends Shape implements Drawable, Resizable {
    // Her iki arayüzden de metotları uygulamalı
    // Shape'den miras alınan üyeleri de kullanabilir
}

Bu esneklik, birden fazla rolü yerine getiren sınıflar tasarlamanı sağlar. Bir SmartPhone, telefonun desteklediği farklı yetenekleri tanımlayan Callable, Messageable ve Browsable arayüzlerini uygulayabilir.

challenge icon

Görev

Kolay

Cihazların birden fazla yeteneğe sahip olabildiği akıllı bir cihaz sistemi oluşturalım. Hem açılıp/kapatılabilen hem de ses düzeyi kontrol edilebilen bir SmartTV oluşturacaksın: böylece tek bir sınıfın farklı rolleri yerine getirmek için birden fazla arayüzü nasıl uygulayabildiğini göstereceksin.

Kodunu dört dosyaya ayıracaksın:

  • Powerable.java: Gücü açılıp kapatılabilen cihazlar için bir arayüz tanımla. Her ikisi de void döndüren iki yöntem tanımlamalıdır: powerOn() ve powerOff().
  • VolumeControl.java: Ses düzeyi kontrolüne sahip cihazlar için bir arayüz tanımla. void döndüren setVolume(int level) yöntemini ve int döndüren getVolume() yöntemini tanımlamalıdır.
  • SmartTV.java: Hem Powerable hem de VolumeControl arayüzlerini uygulayan bir sınıf oluştur. SmartTV sınıfın bir brand alanına (String), başlangıçta false olan bir isOn alanına (boolean) ve başlangıçta 0 olan bir volume alanına (int) sahip olmalıdır. Marka adını alan bir kurucu ekle. Gerekli tüm yöntemleri uygula:
    • powerOn(), isOn değerini true olarak ayarlamalı ve şunu yazdırmalıdır: [brand] TV is now ON
    • powerOff(), isOn değerini false olarak ayarlamalı ve şunu yazdırmalıdır: [brand] TV is now OFF
    • setVolume(int level), ses düzeyini güncellemeli ve şunu yazdırmalıdır: [brand] TV volume set to [level]
    • getVolume(), geçerli ses düzeyini döndürmelidir
  • Main.java: Birden fazla arayüz uygulamasını göstermek için her şeyi bir araya getir. İki girdi alacaksın: bir marka adı (String) ve bir ses düzeyi (int). Verilen marka ile bir SmartTV oluştur, ardından:
    • powerOn() yöntemini çağır
    • Verilen düzey ile setVolume() yöntemini çağır
    • getVolume() kullanarak şunu yazdır: Current volume: [volume]
    • powerOff() yöntemini çağır

İki girdi alacaksın: TV markası (String) ve ses düzeyi (int).

Çıktın, SmartTV sınıfının her iki arayüz sözleşmesini nasıl yerine getirdiğini gösteren dört satır içermelidir. Herhangi bir Powerable cihaz gibi açılabilir ve herhangi bir VolumeControl cihazı gibi ses düzeyi kontrol edilebilir!

REQUIRED OUTPUT FORMAT: [Your translated content here]

Kendin dene

import java.util.Scanner;

class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        
        // Girdileri oku
        String brand = scanner.nextLine();
        int volumeLevel = scanner.nextInt();
        
        // TODO: Verilen marka ile bir SmartTV oluştur
        
        // TODO: powerOn() çağır
        
        // TODO: Verilen seviye ile setVolume() çağır
        
        // TODO: Print: Current volume: [volume] using getVolume()
        
        // TODO: powerOff() çağır
        
    }
}
quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Nesne Yönelimli Programlama bölümündeki tüm dersler

Kendi başına pratik yap: Online Java derleyicisi