Özet - Şekil Hesaplayıcı
Coddy'nin Java Journey'sinin Nesne Yönelimli Programlama bölümünün bir parçası. Ders 33 / 87.
Görev
KolayBu bölümde öğrendiğin tüm polimorfizm kavramlarını bir araya getiren bir şekil hesaplayıcı oluşturalım. Somut alt sınıflara sahip soyut bir Shape sınıfı oluşturacak, ardından alanları aynı biçimde hesaplayıp görüntülemek için polimorfizmi kullanacaksın.
Kodunu dört dosya arasında düzenleyeceksin:
Shape.java: Tüm şekillerin temeli olarak görev yapan soyut bir sınıf oluştur. Her şeklin birnamealanı (String) vardır. Bu alanı başlatmak için bir kurucu, bir getter yöntemi olangetName()ve double döndüren soyut birgetArea()yöntemi ekle. Ayrıca şunu döndüren birdescribe()yöntemi ekle:[name]: [area](burada area,String.format("%.2f", getArea())kullanılarak 2 ondalık basamakla biçimlendirilir).Circle.java: Shape sınıfını genişleten somut bir sınıf oluştur. Dairelerin birradiusalanı (double) vardır. İsim olarak "Circle" değerini geçirmek içinsuperkullan. AlanıMath.PI * radius * radiusifadesini kullanarak döndürecek şekildegetArea()yöntemini uygula.Rectangle.java: Shape sınıfını genişleten başka bir somut sınıf oluştur. Dikdörtgenlerinwidthveheightalanları (ikisi de double) vardır. Üst sınıf kurucusuna isim olarak "Rectangle" değerini geçir.getArea()yöntemini, width ile height değerlerinin çarpımını döndürecek şekilde uygula.Main.java: Polimorfizmi uygulamalı olarak gösteren bir şekil hesaplayıcı oluştur. Üç girdi alacaksın: dairenin yarıçapı, dikdörtgenin genişliği ve yüksekliği.Bir Circle ve bir Rectangle oluştur, ardından bunları
Shapereferanslarından oluşan bir dizide sakla. Dizi üzerinde döngü kur ve her şekil içindescribe()yöntemini kullanarak açıklamasını yazdır.Döngüden sonra, şu biçimde tüm şekillerin toplam alanını hesaplayıp yazdır:
Total area: [sum](bu değer de 2 ondalık basamakla biçimlendirilir). Alanları toplamak için ayrı bir döngü veya bir accumulator kullan ve her şekil referansı üzerindegetArea()çağrısı yap.
Üç girdi alacaksın: dairenin yarıçapı (double), dikdörtgenin genişliği (double) ve dikdörtgenin yüksekliği (double).
Çıktın üç satır göstermelidir: her şekil için bir açıklama ve ardından toplam alan. Her şekil kendi alanını kendi yöntemiyle hesaplarken, soyut Shape türü aracılığıyla farklı şekilleri nasıl aynı biçimde ele alabileceğine dikkat et!
Kendin dene
import java.util.Scanner;
class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// Girdileri oku
double radius = scanner.nextDouble();
double width = scanner.nextDouble();
double height = scanner.nextDouble();
// TODO: Yarıçapı kullanarak bir Circle nesnesi oluşturun
// TODO: Genişlik ve yüksekliği kullanarak bir Rectangle nesnesi oluşturun
// TODO: Shape referanslarından oluşan bir dizi oluşturun ve her iki şekli de içinde saklayın
// TODO: Dizi üzerinde döngü kurun ve describe() kullanarak her şeklin açıklamasını yazdırın
// TODO: Tüm şekillerin toplam alanını hesaplayın
// Her şekil üzerinde getArea() metodunu çağırarak alanları toplamak için bir döngü veya biriktirici kullanın
// TODO: Toplam alanı şu formatta yazdırın: "Total area: [sum]"
// Biçimlendirme için String.format("%.2f", totalArea) kullanın
}
}
Nesne Yönelimli Programlama bölümündeki tüm dersler
1OOP Temelleri
Harici DosyalarOOP'ye GirişSınıflar ve Nesnelerthis Anahtar KelimesiMetotlarAlanlar (Öznitelikler)Yapıcı MetotYapıcı Metot Aşırı YüklemeÖzet - Basit Hesap Makinesi4Kalıtım
Temel Kalıtım (extends)super Anahtar KelimesiMetot Geçersiz Kılma (@Override)Yapıcı Metot ZincirlemeObject SınıfıTekli ve Çok Seviyeli KalıtımNeden Çoklu Sınıf Kalıtımı Yok?Özet - Çalışan Hiyerarşisi7Özel Metotlar ve Object Sınıfı
toString() Metoduequals() ve hashCode()clone() MetoducompareTo() ve ComparableComparator ArayüzüÖzet - Özel Sıralama2Erişim Belirleyiciler ve Kapsülleme
Erişim Seviyelerine Genel BakışGetter ve Setter MetotlarıBilgi Gizlemefinal Anahtar KelimesiÖzet - Banka Hesabı Yöneticisi5Polimorfizm
Metot Aşırı Yükleme TemelleriMetot Geçersiz Kılma (Çalışma Zamanı)Upcasting ve Downcastinginstanceof OperatörüSoyut Sınıflar ve MetotlarÖzet - Şekil Hesaplayıcı8İleri Düzey OOP Kavramları
Kompozisyon vs KalıtımAgregasyon vs KompozisyonDahili, Yuvalanmış ve Anonim SınıflarEnum'lar ve Enum MetotlarıRecords (Java 16+)Sealed Classes (Java 17+)11Tasarım Kalıpları Bölüm 1
Tasarım Kalıplarına GirişSingleton KalıbıFactory KalıbıBuilder KalıbıObserver KalıbıStrategy Kalıbı14Final Meydan Okumaları
E-Öğrenme PlatformuBankacılık SistemiOyun Karakteri GeliştirmeAraç Kiralama Servisi3Sınıf Özellikleri ve Statik Üyeler
Instance ve Statik DeğişkenlerStatik MetotlarStatik BloklarSabitler (static final)Özet - Sayaç ve Utility6Arayüzler ve Soyut Sınıflar
Arayüzlere GirişArayüzleri UygulamaÇoklu Arayüz UygulamaArayüzlerde Default ve StaticSoyut Sınıflar ve ArayüzlerFonksiyonel ArayüzlerÖzet - Ödeme Sistemi9Generics
Generics'e GirişGeneric SınıflarGeneric MetotlarSınırlandırılmış Tip ParametreleriWildcard'lar (?, extends, super)Özet - Generic Container12Tasarım Kalıpları Bölüm 2
Komut KalıbıAdaptör KalıbıDekoratör KalıbıŞablon Metot KalıbıDurum KalıbıKompozit KalıbıYineleyici KalıbıKendi başına pratik yap: Online Java derleyicisi