Skip to content

beratugurcann/OPP-Homework

Repository files navigation

UstaPlatform

UstaPlatform, Arcadia şehrinde yaşayan vatandaşların ihtiyaç duyduğu uzmanları (tesisatçı, elektrikçi, vb.) hızlıca bulmasını sağlayan, dinamik fiyatlandırma ve akıllı rota planlama yeteneklerine sahip modüler bir sistemdir. Amaç, hem vatandaş hem de usta tarafında verimliliği artıran, geliştirilebilir ve sürdürülebilir bir altyapı sunmaktır.

Öne Çıkan Özellikler

Eklenti Tabanlı Mimari: Yeni fiyat kuralları (“Hafta Sonu Ücreti”, “Acil Talep Fiyatı”, “Bayram İndirimi” vb.) eklemek için uygulamayı yeniden derlemene gerek yok. Yeni bir .dll dosyası eklemen yeterli — sistem bunu otomatik olarak algılar ve entegre eder.

Dinamik Fiyat Motoru: Her iş emrinin ücretini; aciliyet, tarih ve özel durumlara göre art arda uygulanan kurallarla otomatik hesaplar.

Akıllı Eşleştirme Sistemi: Gelen talepleri yalnızca ustanın uygunluğuna göre değil, GeoHelper üzerinden konum analizine dayanarak en yakın ustayı atar.

SOLID Prensipleriyle Geliştirilmiş Kod: Tek sorumluluk, açık/kapalı prensibi ve bağımlılıkların tersine çevrilmesi gibi yazılım mimarisi prensipleri her katmanda gözetilmiştir.

Modern C# Özellikleri: init-only property’ler, özel IEnumerable koleksiyonları, indexer’lar ve static helper sınıflar aktif olarak kullanılmıştır.

Tasarım Mantığı

Açık/Kapalı Prensibi (OCP): PricingEngine, yeni fiyat kuralları için değiştirilmeye gerek kalmadan genişletilebilir. Sistem, çalışma anında klasördeki tüm .dll dosyalarını tarayıp uygun kuralları otomatik yükler.

Tek Sorumluluk Prensibi (SRP): Her sınıf yalnızca bir iş yapar:

-GeoHelper → Konum hesaplar

-ParaFormatlayici → Fiyatları biçimlendirir

-PricingEngine → Fiyat hesaplamasını yürütür

Bağımlılıkların Tersine Çevrilmesi (DIP): PricingEngine, doğrudan kural sınıflarına değil, IPricingRule arayüzüne bağımlıdır. Bu da sistemi esnek, test edilebilir ve genişlemeye açık hale getirir.

Kurulum ve Çalıştırma Adımları

1.Bu repoyu klonla veya ZIP olarak indir.

2.UstaPlatform.sln dosyasını Visual Studio ile aç.

3.Build > Build Solution menüsünü kullanarak projeyi derle. Bu işlem gerekli .dll dosyalarını oluşturur.

4.En kritik adım:

-UstaPlatform.Pricing projesinin bin/Debug/netX.X/ dizinindeki UstaPlatform.Pricing.dll dosyasını kopyala.

-Kopyaladığın dosyayı ana uygulamanın Rules klasörüne yapıştır: .../UstaPlatform/UstaPlatform.App/bin/Debug/netX.X/Rules/

5.UstaPlatform.App projesini Startup Project olarak seç ve F5 tuşuyla çalıştır.

Proje Yapısı

UstaPlatform │ ├── UstaPlatform.App │ ├── Program.cs │ └── PricingEngine.cs │ ├── UstaPlatform.Domain │ ├── Cizelge.cs │ ├── IPricingRule.cs │ ├── IsEmri.cs │ ├── Rota.cs │ ├── Talep.cs │ ├── Usta.cs │ └── Vatandas.cs │ ├── UstaPlatform.Infrastructure │ ├── Guard.cs │ ├── GeoHelper.cs │ └── ParaFormatlayici.cs │ ├── UstaPlatform.Pricing │ ├── AcilCagriUcretiKurali.cs │ └── HaftaSonuEkUcretiKurali.cs │ └── UstaPlatform.Tests ├── CizelgeTests.cs └── PricingEngineTests.cs

Kullanılan Teknolojiler

Dil: C#

Framework: .NET 9.0+

Proje Tipi: Konsol Uygulaması

About

OPP Homework c# UstaPlatform

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages