Altbilgi içeriğine atla
Iron Academy Logo
C# Uygulaması
C# Uygulaması

Diğer Kategoriler

C# WinForms Turnuva Mantık Eğitimi — Tim Corey ile Tam Ders 18 Açıklaması

[[academy-video-youtube({"vid": "i5IAClElyBQ", "start_time": "0", "title": "C# Uygulama Baştan Sona Ders 18 - Turnuva Formu Yaratma Bölüm 4", "creator": "Tim Corey", "length": "1h 15m 39s"})]]

Tim Corey'nin C# Başlangıçtan Bitişe Uygulama serisinin Ders 18'inde, odak ağırlıklı olarak C# WinForms (Windows Forms) içinde mantık güdümlü geliştirme üzerine kayar. Önceki derslerin kullanıcı arayüzüne, WinForms kontrollerine ve görsel düzenlerine vurgu yaptığı yere karşı, bu ders perde arkasında doğru bir şekilde çalışan bir sistem inşa etmeyle ilgilidir.

Tim tekrar tekrar bunun gerçek geliştirme çabasının başladığı yer olduğunu açıklar. Düğmeler, metin kutuları ve ortak kontroller, her olası senaryo için çalışması gereken mantığı tasarlamakla kıyaslandığında kolaydır. Bu ders, uygulamanın sadece bir demo gibi değil, gerçek bir Windows masaüstü uygulaması gibi hissettirmeye başladığı bir dönüm noktasıdır.

Tüm ders Visual Studio kullanılarak öğretilir, .NET Framework'tan yararlanır, büyümeyi destekleyen bir sınıf kitaplığı ve bir WinForms proje türü içerir.

Kullanıcı Arayüzünden Uzaklaşarak Mantık Tasarlama

Dersin başlarında Tim önemli bir noktayı belirtir: hemen kodlamaya başlamayın. Karmaşık mantığın asla bir formun kod arkasında başlamaması gerektiğini açıklar. Bunun yerine, Windows Forms uygulamasını durdurur, kağıt ve kalemi alır ve turnuva yapısını görsel olarak tasarlamaya başlar.

Bu, tasarımcıdan, araç kutusundan ve özellikler ızgarasından kasıtlı bir uzaklaşmadır. Tim, WinForms'un kapsamlı bir kullanıcı arayüzü araç seti sağladığını kabul etse de, mantığın sürüklenemeyeceğini veya bırakılamayacağını — tasarlanması gerektiğini vurgular.

Bu mantığı zaten birkaç kez yeniden yazdığını belirtir, hata düzeltmenin ve yaklaşımı yeniden düşünmenin geliştirmenin normal bir parçası olduğunu pekiştiren.

Turnuva Yapısını Kavramsal Olarak Anlamak

Tim, sistem tasarımı perspektifinden bir turnuvanın gerçekten ne olduğunu açıklar. Şunları tanımlar:

  • Takımlar

  • Eşleşmeler

  • Eşleşme kayıtları

  • Turlar

  • Baylar

Her eşleşme, eşleşme girişlerini içerir ve her giriş, hangi takımı temsil ettiğini bilmeyebilir. Gelecekteki turları uygularken bu fikir kritik hale gelir.

Tim, üç takımla basit bir örnek kullanarak neden turnuvaların iki kuvvetine ihtiyaç duyduğunu gösterir. Bunun nedeniyle, baylar özel bir özellik değildir — matematiksel bir zorunluluktur.

Bu bölüm, kodla ilgili olmak yerine, daha çok bir geliştirici gibi düşünmek üzerine ve Tim, dizinin tümüne tekrar tekrar bu noktayı vurgu yapar.

Neden Bazı Takımların Null Olması Gerekiyor

Bu noktada, Tim Visual Studio'ya geçer, Çözüm Gezginini açar ve veri tabanı projesine girer. Tablo tasarımına çift tıklar ve ince ancak kritik bir gerekliliği açıklar: gelecekteki turlar henüz takımları bilemez.

Bunun sonucu olarak, TeamCompetingId alanının null değerlerine izin vermesi gerekir.

Tim, Özellikler penceresini açar, SQL Server'ın güvenlik uyarısını açıklar ve Tablo yeniden oluşturma gerektiren değişikliklerin kaydedilmesini engellemeyi geçici olarak nasıl devre dışı bırakacağını gösterir. Bu sadece tablonun boş olması nedeniyle güvenli olduğunu özenle belirtir.

Bu, geliştirme hızı, veri bütünlüğü ve gerçek dünya kısıtlamalarını dengelemenin klasik bir örneğidir.

Formları Temiz ve Odaklı Tutma

WinForms projesine dönerken, Tim bir kuralı tekrar ediyor: Formlar, iş mantığı içermemelidir.

WinForms'un düğmeye tıklama olayları içinde doğrudan mantık yazmayı kolaylaştırdığını kabul etse de, bunu yapmanın zarar verdiğini açıklar:

  • Bakımı

  • Yeniden kullanılabilirliği

  • Testi

  • Gelecekteki platform uyumluluğu

Bunun yerine, formun sorumlulukları şunlarla sınırlıdır:

  • Kullanıcı arayüzünden girdi toplama

  • Metotlar çağırma

  • Sonuçları gösterme

Bu ayrım, Windows masaüstü uygulamasını temiz ve profesyonel tutar.

TournamentLogic Sınıfını Oluşturma

Tim yeni bir sınıf kitaplığı oluşturur ve statik TournamentLogic sınıfını tanıtır. Bu sınıf, kullanıcı arayüzü, veri erişimi veya model değildir — sadece uygula mantığı için var.

Bu tasarım seçiminin aynı mantığın daha sonra yeniden kullanılmasına izin verdiğini açıklar:

  • WPF

  • ASP.NET

  • Diğer .NET masaüstü veya web platformları

Bu an, WinForms'un neden hala ilgili olduğunu sessizce gösterir: doğru kullanıldığında, modern mimariyle düzgün bir şekilde entegre olur.

Takımları Adil Şekilde Rastgeleleştirme

Tim, takımların sırasını rastgeleleştirmek için bir yöntem uygular:

OrderBy(x => Guid.NewGuid())

Bu yöntem kriptografik olarak mükemmel olmadığını kabul eder, ancak açıklar ki:

  • Basittir

  • Okunabilir

  • Desteklenir

  • Daha sonra değiştirmesi kolaydır

Bu dersin yinelenen temasını şu şekilde destekler: önce doğruluğu elde edin, sonra optimize edin.

Orijinal listenin değiştirilmediğini, istenmeyen yan etkilerden kaçınarak önemle belirtir — ince ama önemli bir programlama alışkanlığı.

Toplam Turları Hesaplama

Bu bölüm beklenenden daha uzun sürer ve Tim açıkça nedenini belirtir: mantığı anlamak kolaydır.

Turları hesaplamanın yollarını döngü kullanarak formülere güvenmek yerine niyetini bulanıklaştırır. Amaç, zekadan ziyade netliktir.

Tim her durumu doğrular:

  • 2 takım → 1 tur

  • 3 takım → 2 tur

  • 4 takım → 2 tur

  • 8 takım → 3 tur

İzleyicileri tekrar tekrar durdurmaya, test etmeye ve izole mantığı doğrulamaya davet eder ve güvenmeden önce test eder.

Bay Sayısını Belirleme

Math.Pow kullanmak yerine, Tim kasten iki kuvvetini hesaplamak için manuel bir mantık yazar. Çiftleri önlemenin hataları azalttığını ve okunabilirliği artırdığını açıklar.

Bu bölüm, deneyimli geliştiricilerin genellikle sıkıcı, açık kodu seçmelerinin nasıl hata ayıklama ve bakımını kolaylaştırdığını gösterir.

İlk Turu Oluşturma

İlk tur benzersizdir çünkü:

  • Takımlar bilinir

  • Baylar uygulanır

  • Ebeveyn eşleşmeleri yoktur

Tim, eşleşmelerin nasıl yaratıldığını, bir eşleşmenin tamamlandığında nasıl işlendiğini ve bayların bir takımı otomatik olarak nasıl ileri taşıdığını dikkatle açıklar.

Her kararın neden verildiğini açıklamak için sık sık duraklayarak, adım adım bu mantığı uygular.

İzleyen Turları Oluşturma

Daha sonraki turlar çok farklı şekilde oluşturulur. Takımlar bilinmez, bu yüzden ebeveyn eşleşmeleri kullanılır.

Tim, önceki turdan gelen eşleşmelerin bir sonraki tura nasıl aktığını, tek bir oyun oynanmadan tam bir turnuva ağacı oluşturduğunu açıklar.

Bu, tüm uygulamadaki en önemli mimari kararlardan biridir ve şunları mümkün kılar:

  • Skor takibi

  • Kazanan ilerlemesi

  • Gelecekte otomasyon

Son Gözden Geçirme ve Doğrulama

Dersin son dakikalarında, Tim tam akışı gözden geçirir:

  • Takımlar rastgeleleştirilir

  • Turlar hesaplanır

  • Baylar atanır

  • Eşleşmeler oluşturulur

  • Turnuva yapısı tamamlanır

Hataların beklenebilir, zamanla mantığın geliştirilebilir olduğunu ve profesyonel geliştiricilerin sürekli olarak önceki kodu daha iyi hale getirmek için geri döndüğünü vurgular.

Kapanış Düşünceleri

Ders 18, WinForms kontrolleri, sürükle-bırak kullanıcı arayüzü veya alımlı özelliklerle ilgili değildir. İşin özü, düşünmek, tasarlamak ve gerçek kullanımda hayatta kalacak kod yazmaktır.

Videonun sonunda, uygulama basit bir Windows Forms uygulamasından yapılandırılmış, ölçeklenebilir bir .NET masaüstü programına dönüştü - gerekirse WinForms'un çok ötesine geçebilir.

Bu, öğrenmenin akademik olmayı bırakıp, profesyonel olmaya başlandığı anda gelinen yerdir.

Hero Worlddot related to C# WinForms Turnuva Mantık Eğitimi — Tim Corey ile Tam Ders 18 Açıklaması
Hero Affiliate related to C# WinForms Turnuva Mantık Eğitimi — Tim Corey ile Tam Ders 18 Açıklaması

Sevdiğiniz Şeyleri Paylaşarak Daha Fazla Kazanın

.NET, C#, Java, Python veya Node.js ile çalışan geliştiriciler için içerik oluşturuyor musunuz? Uzmanlığınızı ek gelire dönüştürün!

Iron Destek Ekibi

Haftada 5 gün, 24 saat çevrimiçiyiz.
Sohbet
E-posta
Beni Ara