Özet - Kullanıcı Yöneticisi
Coddy'nin Lua Journey'sinin Nesne Yönelimli Programlama bölümünün bir parçası. Ders 68 / 70.
Görev
KolayBir kullanıcı yönetim sistemi oluşturalım: birçok gerçek dünya programında bulabileceğin pratik bir uygulama! Birlikte çalışan iki sınıf oluşturacaksın: biri bireysel kullanıcıları temsil edecek, diğeri ise bir kullanıcı koleksiyonunu verimli bir şekilde yönetecek.
Kodunu üç dosyaya ayıracaksın:
User.lua: Sistemdeki tek bir kullanıcıyı temsil eden bir User sınıfı oluştur. Her kullanıcının biridve birnamedeğeri vardır.:getInfo()metodunu ekle; bu metot"ID: {id}, Name: {name}"biçiminde bir dize döndürmelidir.UserManager.lua: Bir kullanıcı koleksiyonunu yöneten bir yönetici sınıfı oluştur. Kullanıcıları verimli bir şekilde bulmak için nasıl saklayabileceğini düşün: kullanıcının ID'sini tablo anahtarı olarak kullanmak, kullanıcıları bir listede aramaktan çok daha kolay bir şekilde bulmayı ve kaldırmayı sağlar. Yöneticinin şunlara ihtiyacı vardır::addUser(user): koleksiyona bir User nesnesi ekler:removeUser(id): bir kullanıcıyı ID'sine göre kaldırır:findUser(id): eşleşen ID'ye sahip User nesnesini döndürür; bulunamazsanildöndürür:listUsers(): tüm kullanıcıların bilgilerini satır başına bir kullanıcı olacak şekilde yazdırır
main.lua: Her şeyi bir araya getir! Bir UserManager oluştur, aldığın girdilere göre bazı kullanıcılar ekle, işlemleri gerçekleştir ve sonuçları göster.
Beş girdi alacaksın:
- İlk kullanıcının ID'si (bir sayı)
- İlk kullanıcının adı
- İkinci kullanıcının ID'si (bir sayı)
- İkinci kullanıcının adı
- Aranacak kullanıcının ID'si (bir sayı)
main dosyanda:
- Bir UserManager oluştur ve her iki kullanıcıyı ekle
- Tüm kullanıcıları yazdırmak için
:listUsers()çağrısını yap - İlk kullanıcıyı kaldır (ilk ID'yi kullanarak)
"After removal:"yazdır- Tekrar
:listUsers()çağrısını yap - Beşinci girdideki ID'ye sahip kullanıcıyı ara; bulunursa bilgilerini yazdır, bulunamazsa
"User not found"yazdır
Örneğin girdiler 101, Alice, 102, Bob ve 102 ise çıktı şu şekilde olmalıdır:
ID: 101, Name: Alice
ID: 102, Name: Bob
After removal:
ID: 102, Name: Bob
ID: 102, Name: BobGirdiler 201, Charlie, 202, Diana ve 201 ise çıktı şu şekilde olmalıdır:
ID: 201, Name: Charlie
ID: 202, Name: Diana
After removal:
ID: 202, Name: Diana
User not foundİkinci örnekte kullanıcı 201 (Charlie) kaldırıldıktan sonra bu ID aranırsa, artık sistemde bulunmadığı için "User not found" döndüğüne dikkat et!
Kendin dene
-- main.lua: Her şeyi bir araya getir
local User = require('User')
local UserManager = require('UserManager')
-- Girdileri oku
local id1 = tonumber(io.read())
local name1 = io.read()
local id2 = tonumber(io.read())
local name2 = io.read()
local searchId = tonumber(io.read())
-- TODO: Bir UserManager örneği oluştur
-- TODO: Girdi verileriyle iki User nesnesi oluştur
-- TODO: Her iki kullanıcıyı da manager'a ekle
-- TODO: Tüm kullanıcıları yazdırmak için listUsers() çağır
-- TODO: İlk kullanıcıyı kaldır (id1 kullanarak)
-- TODO: Print "After removal:"
-- TODO: listUsers()'ı tekrar çağır
-- TODO: searchId ile kullanıcıyı ara
-- If found, print their info; if not found, print "User not found"
Nesne Yönelimli Programlama bölümündeki tüm dersler
1'Self' Kavramı
Fonksiyonlu TablolarAçık 'self'İki Nokta SözdizimiNokta vs İki NoktaÖzet - Hareket Eden Nokta4Proje: Dijital Banka
Proje KurulumuPara Yatırma Metodu7Çok Biçimlilik ve Geçersiz Kılma
Metotları Geçersiz KılmaÜst Sınıf Metotlarını ÇağırmaDuck TypingOrtak ArayüzTür KontrolüÖzet - Çalışan Rolleri2Sınıf Prototip Kalıbı
Prototip Kavramı__index ile Bağlama:new() KurucusuÖznitelikleri BaşlatmaBağımsız ÖrneklerÖzet - Araba Fabrikası5OOP'de Operatör Aşırı Yükleme
Nesneleri ToplamaNesneleri ÇıkarmaNesneleri BirleştirmeNesneleri Karşılaştırma (<, >)Özet - Cüzdan Matematiği8Kapsülleme
Adlandırma KurallarıGizlilik için Closure'larClosure'lar Aracılığıyla ErişimSalt Okunur TablolarDoğrulama MantığıÖzet - Güvenli Kasa11Tasarım Kalıpları (Lite)
Fabrika FonksiyonlarıSingleton TablosuIterator KalıbıObserver (Dinleyici)Özet - Logger Fabrikası3Nesne Durumu ve Davranışı
Örnek DeğişkenleriGetter MetotlarıSetter MetotlarıHesaplanmış ÖzelliklerString BiçimlendirmeEşitlik KontrolleriÖzet - Öğrenci Notu6Kalıtımın Temelleri
Kalıtım KurulumuMetot KalıtımıConstructor'ı GenişletmeAlt Sınıf Metotları EklemePaylaşılan ve BenzersizÖzet - Şekil Hiyerarşisi9Kompozisyon ve Mixin'ler
Has-A İlişkisiDelegasyonBasit Mixin'lerBirden Fazla Mixin UygulamaMixin'ler ve KalıtımÖzet - Robot Birleştirme12Son Görevler
Özet - Envanter SistemiÖzet - Kullanıcı YöneticisiÖzet - Skor TakipçisiFinal OOP KontrolüKendi başına pratik yap: Online Lua derleyicisi