Özet - Çalışan Hiyerarşisi
Coddy'nin Java Journey'sinin Nesne Yönelimli Programlama bölümünün bir parçası — ders 27 / 87.
Görev
KolayBu bölümdeki tüm kalıtım kavramlarını bir araya getiren eksiksiz bir çalışan hiyerarşisi sistemi kuralım. Farklı çalışan türlerinin ortak nitelikleri paylaştığı ancak kendilerine özgü uzmanlaşmış davranışlara sahip olduğu bir şirket yapısı oluşturacaksınız.
Kodunuzu dört dosya halinde düzenleyeceksiniz:
Employee.java: Tüm çalışanların paylaştığı temel sınıfı oluşturun. Her çalışanın bir adı (name) ve maaşı (salary) vardır. Her iki alanı da başlatan bir yapıcı (constructor) ve şu sonucu döndüren birgetDetails()metodu ekleyin:[name] earns $[salary]. Ayrıca şu çıktıyı veren birwork()metodu ekleyin:[name] is working.Manager.java: Employee sınıfını genişleten bir sınıf oluşturun. Yöneticilerin, kaç kişiyi yönettiklerini temsil eden ek birteamSizealanı vardır. Üst sınıfın başlatılmasını yönetmek içinsuperkullanın.work()metodunu şu çıktıyı verecek şekilde geçersiz kılın (override):[name] is managing a team of [teamSize]. Şu sonucu döndüren birgetManagerDetails()metodu ekleyin:Manager: [name] earns $[salary], Team size: [teamSize].Developer.java: Employee sınıfını genişleten başka bir sınıf oluşturun. Geliştiricilerin programlama uzmanlıkları için birlanguagealanı vardır. Yine, üst sınıf kısmı içinsuperkullanın.work()metodunu şu çıktıyı verecek şekilde geçersiz kılın:[name] is coding in [language]. Şu sonucu döndüren birgetDeveloperDetails()metodu ekleyin:Developer: [name] earns $[salary], Language: [language].Main.java: Burada her şeyi bir araya getirin. Beş girdi alacaksınız: bir çalışan adı, maaş, yönetici için ekip boyutu, başka bir ad ve geliştirici için bir programlama dili. Bir Manager ve bir Developer oluşturun, ardından her biri için önce uzmanlaşmış detay metodunu, ardındanwork()metodunu çağırın.
Şu sırayla beş girdi alacaksınız: yönetici adı (String), yönetici maaşı (double), ekip boyutu (int), geliştirici adı (String) ve programlama dili (String). Geliştirici için 75000.0 maaşını kullanın.
Tüm maaş değerlerini String.format("%.2f", salary) kullanarak 2 ondalık basamakla biçimlendirin. Çıktınız toplam dört satır olmalıdır - yöneticinin detayları ve çalışma davranışı, ardından geliştiricinin detayları ve çalışma davranışı.
Kendin dene
import java.util.Scanner;
class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// Girdileri oku
String managerName = scanner.nextLine();
double managerSalary = scanner.nextDouble();
int teamSize = scanner.nextInt();
scanner.nextLine(); // yeni satırı tüket
String developerName = scanner.nextLine();
String language = scanner.nextLine();
// Developer maaşı 75000.0 olarak sabitlenmiştir
double developerSalary = 75000.0;
// TODO: managerName, managerSalary ve teamSize ile bir Manager nesnesi oluşturun
// TODO: developerName, developerSalary ve language ile bir Developer nesnesi oluşturun
// TODO: getManagerDetails() kullanarak yöneticinin detaylarını yazdırın
// TODO: Yöneticinin work() metodunu çağırın
// TODO: getDeveloperDetails() kullanarak geliştiricinin detaylarını yazdırın
// TODO: Geliştiricinin work() metodunu çağı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ı