Skip to content

Hyperinflation/UstaPlatform-NYP-Projesi

Repository files navigation

UstaPlatform - Şehrin Uzmanlık Platformu

Bu proje, Arcadia şehrindeki uzmanları (tesisatçı, elektrikçi, vb.) vatandaş talepleriyle eşleştiren, dinamik fiyatlama ve rota planlama yapan bir platformdur. Nesne Yönelimli Programlama (NYP) ve İleri C# dersi kapsamında geliştirilmiştir.

Kurulum

  1. Bu depoyu klonlayın: git clone https://github.com/Hyperinflation/UstaPlatform-NYP-Projesi.git
  2. Visual Studio (2022 veya üzeri önerilir) ile UstaPlatform.sln dosyasını açın.
  3. UstaPlatform.App projesini başlangıç projesi olarak ayarlayın.
  4. Projeyi derleyin ve çalıştırın.

Tasarım Kararları

  • SOLID Prensipleri:
    • OCP (Open/Closed Principle): Fiyatlandırma motoru (PricingEngine), IPricingRule arayüzünü uygulayan yeni DLL'ler (örneğin UstaPlatform.PricingRules.Extra.dll) aracılığıyla yeni fiyat kurallarını dinamik olarak yükleyebilir. Ana uygulama kodunun (UstaPlatform.App) değişmesine gerek kalmaz.
    • SRP (Single Responsibility Principle): Her sınıfın (örneğin Usta, Talep, PricingEngine, UstaPlatformService) belirli bir sorumluluğu vardır.
    • DIP (Dependency Inversion Principle): PricingEngine gibi üst seviye modüller, somut kural sınıflarına değil, IPricingRule gibi soyutlamalara (arayüzlere) bağlıdır.
  • C# Özellikleri:
    • init-only property'ler (Usta.Id, Talep.KayitZamani gibi) nesne oluşturulduktan sonra değiştirilemez.
    • Nesne başlatıcılar (new Usta { Id = 1, Ad = "Ahmet" }) kodun okunabilirliğini artırır.
    • Schedule sınıfı bir dizinleyici (this[DateOnly date]) içerir.
    • Route sınıfı IEnumerable<(int X, int Y)> arayüzünü uygular ve koleksiyon başlatıcıları ({ (1, 2), (3, 4) }) ile kullanılabilir.
    • Statik yardımcı sınıflar (Guard, MoneyFormatter, GeoHelper) genel hizmetleri sağlar.
  • Plug-in Mimarisi: PricingEngine, belirtilen klasördeki (./Plugins) DLL'leri tarar, IPricingRule arayüzünü uygulayan sınıfları bulur ve örneklerini oluşturarak fiyat hesaplamasında kullanır. Bu, uygulamayı esnek ve genişletilebilir kılar.

Demo Akışı

  1. Uygulama başlatılır.
  2. ./Plugins klasöründe bulunan UstaPlatform.PricingRules.Extra.dll (içerisinde AcilCagriUcretiKurali) gibi DLL'ler taranır ve IPricingRule uygulayan sınıflar bulunur ve yüklenebilir.
  3. Test verileri (Vatandaşlar, Ustalar, Talepler) tanımlanır.
  4. UstaPlatformService aracılığıyla ProcessRequestAndAssignMaster metodu çağrılır.
  5. Uygun usta bulunur, fiyat PricingEngine ve yüklenen kurallarla hesaplanır, IsEmri oluşturulur ve Schedule'a eklenir.
  6. CalculateAndSetRouteForDate metodu ile belirli bir tarih için rota ve toplam mesafe GeoHelper kullanılarak hesaplanır.
  7. Sonuçlar konsola yazdırılır.

Not: Yeni bir fiyat kuralı DLL'si (YeniKural.dll) ./Plugins klasörüne kopyalandığında, uygulama yeniden başlatıldığında bu yeni kural da otomatik olarak fiyat hesaplamasına dahil edilecektir.

About

NYP ve C# ile geliştirilmiş Usta Eşleştirme Platformu

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages