0Pricing
Java Academy · Ders

Çok Biçimli Davranışlar

Karışık şekilleri yazdırmak, sıralamak ve toplamak için çok biçimliliği kullanın. Algoritmaları mobil kullanım için küçük ve okunabilir tutun.

Çok Biçimli Davranışlar, CoddyKit'te ücretsiz bir Java Academy dersidir. Bu, 3 dersinin 3. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Java Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Java Academy kursu toplamda 3 dersten oluşur.

Genel bakış

Çok biçimli davranışlar, her şekil kendi matematiğini çalıştırırken tüm şekilleri aynı şekilde ele almamızı sağlar. Şunları yapacağız: (1) farklı şekillerden oluşan bir listeyi tek biçimde yazdırmak, (2) area değerine göre sıralamak ve (3) tek bir döngüyle toplamları hesaplamak.

Temel uygulama programlama arayüzü denetim listesi

Temel uygulama programlama arayüzü, her yerde kullanılan işlemleri içerir:

  • area() ve perimeter() — her şekil tarafından uygulanmalıdır.
  • Düzenli yazdırma için label() veya info() gibi küçük, isteğe bağlı bir yardımcı kullanılabilir.
  • Alanları somut şekillerin içinde tutun.

Kod: tek biçimli yazdırma

Tek biçimli yazdırma: Döngü yalnızca Shape uygulama programlama arayüzünü kullanır. Her nesne, matematik için kendi uygulamasını çalıştırır.

public class Main {
  static abstract class Shape {
    abstract double area();
    abstract double perimeter();
    String label() { return getClass().getSimpleName(); }
    String info() { return String.format("area=%.2f, per=%.2f", area(), perimeter()); }
  }
  static class Circle extends Shape {
    double r; Circle(double r) { this.r = (r < 0) ? 0 : r; }
    double area() { return Math.PI * r * r; }
    double perimeter() { return 2 * Math.PI * r; }
  }
  static class Rectangle extends Shape {
    double w, h; Rectangle(double w, double h) { this.w = Math.max(0, w); this.h = Math.max(0, h); }
    double area() { return w * h; }
    double perimeter() { return 2 * (w + h); }
  }
  public static void main(String[] args) {
    Shape[] list = { new Circle(2.0), new Rectangle(3.0, 4.0), new Circle(1.0) };
    for (int i = 0; i < list.length; i = i + 1) {
      Shape s = list[i];
      System.out.println(s.label() + " -> " + s.info());
    }
  }
}

area değerine göre sıralama (fikir)

Sıralama fikri:

  • Karşılaştırma: iki şeklin area() değerini kıyaslayın.
  • Küçük veriler için basit kabarcık/seçmeli sıralama yeterlidir.
  • Yalnızca Shape yöntemlerini kullanın; tür denetimi yapmayın.

Kod: area değerine göre sıralama

Basit sıralama: yalnızca area() çağrısı gerektirir. Tür denetimi yoktur; bu da çok biçimliliğin gücüdür.

public class Main {
  static abstract class Shape { abstract double area(); abstract double perimeter(); String label(){ return getClass().getSimpleName(); } }
  static class Circle extends Shape { double r; Circle(double r){ this.r = Math.max(0, r);} double area(){return Math.PI*r*r;} double perimeter(){return 2*Math.PI*r;} }
  static class Rectangle extends Shape { double w,h; Rectangle(double w,double h){ this.w=Math.max(0,w); this.h=Math.max(0,h);} double area(){return w*h;} double perimeter(){return 2*(w+h);} }

  // Very small bubble sort for beginners (ascending by area)
  static void sortByArea(Shape[] arr){
    for(int pass=0; pass<arr.length-1; pass=pass+1){
      for(int i=0; i<arr.length-1; i=i+1){
        if(arr[i].area() > arr[i+1].area()){
          Shape tmp = arr[i]; arr[i] = arr[i+1]; arr[i+1] = tmp;
        }
      }
    }
  }

  public static void main(String[] args) {
    Shape[] a = { new Rectangle(3,4), new Circle(2), new Circle(1) };
    sortByArea(a);
    for(int i=0;i<a.length;i=i+1){
      System.out.println(a[i].label() + " area=" + String.format("%.2f", a[i].area()));
    }
  }
}

Kod: total area hesaplama

total area hesaplama: Tek döngüde area() çağrıları toplanır. Her öğe kendi hesaplamasını yapar; kodumuz basit kalır.

public class Main {
  static abstract class Shape { abstract double area(); abstract double perimeter(); }
  static class Circle extends Shape { double r; Circle(double r){ this.r=Math.max(0,r);} double area(){return Math.PI*r*r;} double perimeter(){return 2*Math.PI*r;} }
  static class Rectangle extends Shape { double w,h; Rectangle(double w,double h){ this.w=Math.max(0,w); this.h=Math.max(0,h);} double area(){return w*h;} double perimeter(){return 2*(w+h);} }

  static double totalArea(Shape[] arr){
    double sum = 0.0;
    for(int i=0;i<arr.length;i=i+1){
      sum = sum + arr[i].area(); // polymorphic call
    }
    return sum;
  }

  public static void main(String[] args) {
    Shape[] list = { new Circle(1), new Rectangle(2,3), new Circle(0.5) };
    System.out.println("Total area = " + String.format("%.2f", totalArea(list)));
  }
}

Çok biçimlilik kullanım biçimi denetimi

Hızlı kontrol: Burada çok biçimliliği en iyi kullanan kod yazım biçimi hangisidir?

Özet

Özet: Aynı uygulama programlama arayüzüyle yazdık ve her şekil kendi sonucunu üretti. Yazdırma, sıralama ve toplam gibi işlemler, tek tip kodla çalıştı.

Sıkça Sorulan Sorular

“Çok Biçimli Davranışlar” dersi ücretsiz mi?

Evet — “Çok Biçimli Davranışlar” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Java Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Java Academy kursu toplamda 3 dersten oluşur.

“Çok Biçimli Davranışlar” dersinde ne öğreneceğim?

Karışık şekilleri yazdırmak, sıralamak ve toplamak için çok biçimliliği kullanın. Algoritmaları mobil kullanım için küçük ve okunabilir tutun. Java Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

Java Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Java Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 3 dersinin 3. dersidir.

“Çok Biçimli Davranışlar” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu Java Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Java Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Tasarım
  2. Uygulama
  3. Çok Biçimli Davranışlar
← Java Academy Sayfasına Dön