Özet - Özel Sıralama
Coddy'nin Java Journey'sinin Nesne Yönelimli Programlama bölümünün bir parçası — ders 46 / 87.
Görev
KolayÖzel metotlar ve sıralama hakkında öğrendiğiniz her şeyi bir araya getiren bir kitap koleksiyonu yöneticisi oluşturalım. Uygun toString(), equals(), hashCode() metotlarına ve Comparable aracılığıyla doğal sıralamaya sahip bir Book sınıfının yanı sıra, esnek sıralama seçenekleri için harici karşılaştırıcılar (comparators) oluşturacaksınız.
Kodunuzu dört dosya halinde düzenleyeceksiniz:
Book.java: Üç özel (private) alana sahip bir kitabı temsil eden bir sınıf oluşturun:title(String),author(String) veyear(int). Bir yapıcı (constructor) ve tüm alanlar için getter metotlarını ekleyin.Book sınıfınız,
yearalanına göre artan düzende (en eskiden en yeniye) doğal sıralama ileComparable<Book>arayüzünü uygulamalıdır.toString()metodunu şu formatı döndürecek şekilde geçersiz kılın (override):[title] by [author] ([year])equals()metodunu, iki kitabın aynıtitleVEauthordeğerine sahip olduklarında eşit sayılacakları şekilde geçersiz kılın.hashCode()metodunu aynı alanları kullanarakObjects.hash()ile geçersiz kılın.TitleComparator.java: Kitapları başlığa göre alfabetik olarak artan düzende (A'dan Z'ye) sıralayan bir karşılaştırıcı oluşturun.AuthorComparator.java: Kitapları yazara göre alfabetik olarak artan düzende (A'dan Z'ye) sıralayan bir karşılaştırıcı oluşturun.Main.java: Her şeyi bir araya getirin! Her biri ayrı bir satırdatitle,author,yearformatında olmak üzere üç kitap için girdi alacaksınız.Kitaplardan oluşan bir
ArrayListoluşturun ve her üç sıralama yaklaşımını da gösterin:- Doğal sıralamayı (yıla göre) kullanarak sıralayın ve her kitabı yazdırın
- Boş bir satır yazdırın
TitleComparatorkullanarak başlığa göre sıralayın ve her kitabı yazdırın- Boş bir satır yazdırın
AuthorComparatorkullanarak yazara göre sıralayın ve her kitabı yazdırın
Her biri şu formatta kitap verisi içeren üç satır girdi alacaksınız: title,author,year
Örneğin: 1984,George Orwell,1949
Book.java dosyasında java.util.Objects, karşılaştırıcı dosyalarınızda java.util.Comparator ve Main.java dosyasında java.util.ArrayList, java.util.Collections ve java.util.Scanner sınıflarını içe aktarmayı (import) unutmayın.
Kendin dene
import java.util.ArrayList;
import java.util.Collections;
import java.util.Scanner;
class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// Girişten üç kitap oku
String line1 = scanner.nextLine();
String line2 = scanner.nextLine();
String line3 = scanner.nextLine();
// TODO: Başlık, yazar ve yılı ayıklamak için her satırı ayrıştırın
// İpucu: Değerleri ayırmak için split(",") kullanın
// TODO: Ayrıştırılan verilerden Book nesneleri oluşturun
// TODO: Bir ArrayList oluşturun ve her üç kitabı da ekleyin
// TODO: Doğal sıralama (yıla göre) kullanarak sıralayın ve her kitabı yazdırın
// TODO: Boş bir satır yazdırın
// TODO: TitleComparator kullanarak başlığa göre sıralayın ve her kitabı yazdırın
// TODO: Boş bir satır yazdırın
// TODO: AuthorComparator kullanarak yazara göre sıralayın ve her kitabı yazdırı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ı