Ö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 oluşturalım. Farklı çalışan türlerinin ortak öznitelikleri paylaştığı, ancak kendilerine özgü davranışlara sahip olduğu bir şirket yapısı oluşturacaksın.
Kodunu dört dosyaya ayıracaksın:
Employee.java: Tüm çalışanların ortak olarak kullanacağı temel sınıfı oluştur. Her çalışanın bir adı ve maaşı vardır. Her iki alanı başlatan bir kurucu vegetDetails()adlı, şunu döndüren bir metot ekle:[name] earns $[salary]. Ayrıca şunu yazdıran birwork()metodu ekle:[name] is working.Manager.java: Employee sınıfını genişleten bir sınıf oluştur. Manager nesnelerinde, yönettikleri kişi sayısını belirten ek birteamSizealanı bulunur. Üst sınıfın başlatılmasını gerçekleştirmek içinsuperkullan.work()metodunu, şunu yazdıracak şekilde geçersiz kıl:[name] is managing a team of [teamSize]. Şunu döndürengetManagerDetails()adlı bir metot ekle:Manager: [name] earns $[salary], Team size: [teamSize].Developer.java: Employee sınıfını genişleten başka bir sınıf oluştur. Developer nesnelerinde, programlama uzmanlıklarını belirten birlanguagealanı bulunur. Yine üst sınıf kısmı içinsuperkullan.work()metodunu, şunu yazdıracak şekilde geçersiz kıl:[name] is coding in [language]. Şunu döndürengetDeveloperDetails()adlı bir metot ekle:Developer: [name] earns $[salary], Language: [language].Main.java: Her şeyi burada bir araya getir. Beş girdi alacaksın: bir çalışan adı, maaş, manager için ekip büyüklüğü, başka bir ad ve developer için bir programlama dili. Bir Manager ve bir Developer oluştur, ardından her biri için önce kendi özel ayrıntı metodunu, sonra dawork()metodunu çağır.
Beş girdiyi şu sırayla alacaksın: manager adı (String), manager maaşı (double), ekip büyüklüğü (int), developer adı (String) ve programlama dili (String). Developer için 75000.0 maaşını kullan.
Tüm maaş değerlerini String.format("%.2f", salary) kullanarak 2 ondalık basamakla biçimlendir. Çıktın toplam dört satır göstermelidir: önce manager'ın ayrıntıları ve çalışma davranışı, ardından developer'ın ayrıntıları 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ıKendi başına pratik yap: Online Java derleyicisi