Cohorts
  • Discover
  • About Us
  • Blog
  • Patika.dev
  • Web3

Java 102

Erişim Belirleyiciler
Static Anahtar Sözcüğü
Static Kod Blokları
Final Anahtar Sözcüğü ve Sabit Tanımlama

Encapsulation (Sarmalama) İlkesi
Sınıflar Arası İlişkiler
Kalıtım (Inheritance) İlkesi
Method Overriding (Metod Ezme)
Polymorphism (Çok Biçimlilik) İlkesi
Abstraction (Soyutlama) İlkesi
Interface Kullanımı

Oyun Tanıtımı ve Sınıf Tasarımları
Karakter Sınıfları
Harita ve Bölge Tasarımları
Mağaza Eşya Sistemi
Tehlikeli Bölgeler ve Canavarlar
Savaş Algoritması
Son Bir Bakış
Ödev

Nested ve Inner Sınıflar
Wrapper Sınıflar
Autoboxing ve Unboxing
Generic Sınıflar
Generic Metotlar
Generic Interface
Generic Bounded Types
Ödev - Liste Sınıfı Yapmak

Exception Handling (Hata Yakalama)
Try-Catch-Finally Kullanımı
Throw Kullanımı
Özel Hata Ayıklama (Exception) Oluşturma

Collection Sınıfı Nedir?
Set Interface ve HashSet
LinkedHashSet
TreeSet
ArrayList
LinkedList Kullanımı ve ArrayList İle Arasındaki Farklar
Vector
Queue LinkedList
PriorityQueue
Map Interface ve HashMap
LinkedHashMap ve TreeMap
Ödev - Kitap Sıralayıcı
Ödev - Fikstür Oluşturucu

PatikaStore

Sigorta Yönetim Sistemi

I/O Veri Akışları
File Sınıfı
FileInputStream Sınıfı
FileOutputStream Sınıfı
ByteArrayInputStream ve ByteArrayOutputStream Sınıfları
Serialization ve ObjectStream Sınıfları
BufferedInputStream ve BufferedOutputStream Sınıfları
PrintStream Sınıfı
InputStreamReader Sınıfı
OutputStreamWriter Sınıfı
FileReader ve FileWriter Sınıfları
BufferedReader ve BufferedWriter Sınıfları
PrintWriter Sınıfı

JDBC Nedir ?
Veritabanı Bağlantısı
Veritabanı İşlemleri ve Statement Interface
Transaction Yöntemi

Thread’lerin Oluşturulması ve Kullanılması
Runnable Interface
Thread Durdurmak ve Bekletmek
Critical Sections ve Race Condition
Volatile Kullanımı
İş Parçacığı Havuzları (ThreadPooling)
Ödev - Threadlerin Yarışı

Tip Dönüşümleri
Lambda Expressions
Stream API
Enum Sınıfı
Ödev - Kitap Listesi

Java Swing GUI Kullanımı
Proje Dosyaları ve Kullanıcı Yönetimi
Veritabanı İşlemleri
Tablolarda Veri Arama
Patika Yönetimi
Dinamik Formlar ve Ders Yönetimi
Giriş Ekranı ve Diğer Gereksinimler
Ödev - Projenin Tamamlanması

Ödev - Turizm Acente Sistemi

Coderbyte Challenge

Ödev - Sigorta Yönetim Sistemi

Sigorta firması için bir yazılım yaptığınızı düşünün. Sigorta firmasının "Bireysel" (Individual) ve "Kurumsal" (Enterprise) olmak üzere iki tip müşteri profili bulunmaktadır. Müşteri profili için "Account" isminde soyut sınıf (abstract class) tasarlayınız. Account sınıfı müşterinin sisteme giriş sonrasında tüm bilgilerinin tutulduğu hesap bilgisidir. "Account" sınıfı içinde "User" tipinde bir nesne referansı bulunur. (Aggeration ilişkisi olarak)


"User" sınıfı müşterinin kişi bilgilerini ifade eder. "User" sınıfında müşterinin


  • isim (String),


  • soyisim (String),


  • email (String),


  • şifre (String),


  • meslek (String),


  • yaş (int),


  • adres listesi (ArrayList<Address>)


  • sisteme son giriş tarihi (Date)


bilgileri bulunur. Ayrıca, "User" sınıfında ArrayList tipinde adreslerinin tutulduğu bir liste vardır. Adres bilgisi iki tiptir. Ev adresi ("HomeAddress") ve İş adresi ("BusinessAddress") olmak üzere iki tane sınıf tasarlayınız. Bu adres sınıfları "Address" isimli bir interface'den kalıtım alacaktır. Fakat, bu interface'de hangi fonksiyonların olması gerektiğine siz karar vereceksiniz.


Müşteri adreslerinin ekleyip çıkarılma sorumluluğunu üstlenmiş olan "AddressManager" isminde bir sınıf tasarlayınız. Bu sınıfın içinde "User" nesnesinin adres listesine eleman ekleme-çıkarma yapabilen iki tane static fonksiyon tanımlayınız. Bu fonksiyon isimlerini siz belirleyiniz.


"Account" sınıfında müşteri bilgilerini ekrana yazdıran "final" tipinde, değer döndürmeyen ve ismi "showUserInfo" bir fonksiyon tanımlayınız.


"Account" sınıfında müşterilerin yaptırdıkları sigortaları liste halinde saklayınız. Sigortayı temsil eden "Insurance" isminde bir soyut sınıf tasarlayınız. Bu soyut sınıf içinde


  • sigortanın ismi (String),


  • sigortanın ücreti (double)


  • sigortanın başlangıç-bitiş tarihi (Date)


gibi değişkenlere sahip olacaktır. Ayrıca "calculate" isminde soyut bir fonksiyon tanımlanacaktır. Bu soyut fonksiyon aşağıda kalıtım alınan sınıflarda doldurulacaktır.


Bu soyut sınıftan türeyen


  • "HealthInsurance" (özel sağlık sigortasu),


  • "ResidenceInsurance" (konut sigortası),


  • "TravelInsurance" (seyahat sigortası),


  • "CarInsurance" (otomobil sigortası)


4 tane alt sınıf tasarlayınız. Her alt sınıf "calculate" isimli soyut fonksiyonu override ederek, sigorta ücretini kendine göre hesaplayacaktır.


Yukarıdaki tanımları dikkate aldığımızda soyut sınıf olan "Account" sınıfında aşağıdakiler yer almalıdır.


  • kullanıcının login olma durumu (AuthenticationStatus)


  • kullanıcı nesnesi (User)


  • kullanıcının yaptırmış olduğu sigortaların listesi (ArrayList)


  • AuthenticationStatus tipinde bir enum tanımlayınız. Enum içinde SUCCESS ve FAIL isminde iki tane sabit tanımlayın. SUCCESS login işlemi başarılı ise kullanılacaktır. FAIL ise login olmamışsa kullanılacaktır.


  • kullanıcının hesabına login olabilmesi için bir fonksiyon tanımlanacaktır. Bu fonksiyon email ve şifre bilgisi alacak ve gelen email şifre bilgisini User sınıfındaki email ve şifre ile kıyaslayacaktır. Eğer girilen bilgiler doğruysa giriş işlemi başarılı olacaktır. Ve kullanıcının login olma durumu SUCCESS'e çekilecektir. Giriş işlemi başarısız ise "InvalidAuthenticationException" tipinde bir hata fırlatacaktır. Bu hata sınıfını Exception isimli Java sınıfından kalıtım alarak sizin yazmanız gerekecektir.


  • kullanıcının adreslerine ekleme yapabileceği bir soyut olmayan fonksiyon tanımlanacaktır. kullanıcının adreslerinden çıkartma yapabileceği bir soyut olmayan fonksiyon tanımlanacaktır. kullanıcının login olma durumunu veren değer döndüren fonksiyon tanımlanacaktır.


  • kullanıcının sigorta poliçesi ekleyebilmesi için soyut (abstract) bir fonksiyon tanımlanacaktır. Bu soyut sınıf "Individual" ve "Enterprise" isimli alt sınıflarda override edilerek doldurulacaktır. Çünkü, bireysel ve kurumsal müşterilerin ekledikleri paketlerin fiyatlarına uygulanan kar marjı farklı olacaktır.


"Individual" ve "Enterprise" sınıfları "Account" sınıfından kalıtım alacaktır.


AccountManager isminde bir sınıf tasarlayınız. Bu sınıf içinde TreeSet tipinde bir veri listesi tutsun. Oluşturduğunuz bireysel ve kurumsal hesapları bu listede saklayınız. bu sınıf içinde login isminde bir fonksiyon tanımlayınız. Bu fonksiyon dışarıdan verilen email ve şifre bilgisini alıp Account listesi üzerinde dolaşıp uygun bir giriş işlemi bulursa Account nesnesini çağrıldığı yere dönecektir. Bu fonksiyon Account nesnesi üzerindeki "login" olma fonksiyonunu çağıracaktır. Unutmayın bu fonksiyon "InvalidAuthenticationException" tipinde hata fırlatabiliyordu. Bu nedenle burada try-catch mekanizması kurmayı unutmayınız.


"Account" sınıfından nesneleri TreeSet içinde tutacağımız için "Comparable" interface'den kalıtım almış olmasına dikkat edin. Ayrıca, "Account" sınıfının "hashCode" ve "equals" fonksiyonlarını doldurmayı unutmayın.


Klavyeden email ve şifre bilgisini alan bir sınıf tasarlayınız. Klavyeden alınan email ve şifre bilgisi ile AccountManager sınıfındaki "login" fonksiyonunu çağırın. Eğer geçerli bir kullanıcı ile giriş yapmışsanız bu fonksiyon size Account tipinde bir nesne dönecektir.

Ödev

Submit your work to complete this lesson.

Join the project workspace to share your solution and receive feedback.

Previous
Next

Lesson discussion

Swap insights and ask questions about “Java 102”.

Enroll to participate
Start the course to unlock the discussion. Enrolling helps us keep conversations relevant to learners.
Cohorts
WebsiteDiscoverBlogPatika.devRise In
CoursesCircleRustSoliditySolanaWeb3 FundamentalsBlockchain Basics
CompanyAbout UsTerms of UsePrivacy PolicyGDPR NoticeCookies
Don't miss any update!

Disclaimer: The information, programs, and events provided on https://cohorts.patika.dev is strictly for upskilling and networking purposes related to the technical infrastructure of blockchain platforms. We do not provide financial or investment advice, nor do we make any representations regarding the value, profitability, or future price of any blockchain or cryptocurrency. Users are encouraged to conduct their own research and consult with licensed financial professionals before engaging in any investment activities. https://cohorts.patika.dev disclaims any responsibility for financial decisions made by users based on the information provided here.

© 2026 Cohorts, All rights reserved