Özet - Kullanıcı Yöneticisi
Coddy'nin Lua Journey'sinin Object Oriented Programming bölümünün bir parçası — ders 68 / 70.
Görev
KolayGerçek dünyadaki pek çok programda bulabileceğiniz pratik bir uygulama olan bir kullanıcı yönetim sistemi kuralım! Birlikte çalışan iki sınıf oluşturacaksınız: biri bireysel kullanıcıları temsil eden, diğeri ise bunların bir koleksiyonunu verimli bir şekilde yöneten bir sınıf.
Kodunuzu üç dosya halinde düzenleyeceksiniz:
User.lua: Sistemdeki tek bir kullanıcıyı temsil eden bir User sınıfı oluşturun. Her kullanıcının biridve birnamedeğeri vardır."ID: {id}, Name: {name}"formatında bir dize döndüren bir:getInfo()metodu ekleyin.UserManager.lua: Bir kullanıcı koleksiyonunu yöneten bir yönetici sınıfı oluşturun. Kullanıcıları verimli bir şekilde aramak için nasıl saklayacağınızı düşünün; kullanıcı kimliğini (ID) tablo anahtarı olarak kullanmak, kullanıcıları bulmayı ve kaldırmayı bir liste içinde aramaktan çok daha basit hale getirir. Yöneticinizin ş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 veya bulunamazsanildöndürür:listUsers()— tüm kullanıcıların bilgilerini her satıra bir tane gelecek şekilde yazdırır
main.lua: Her şeyi bir araya getirin! Bir UserManager oluşturun, aldığınız girdilere göre bazı kullanıcılar ekleyin, işlemleri gerçekleştirin ve sonuçları görüntüleyin.
Beş girdi alacaksınız:
- İ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ı)
Ana dosyanızda:
- Bir UserManager oluşturun ve her iki kullanıcıyı da ekleyin
- Tüm kullanıcıları yazdırmak için
:listUsers()metodunu çağırın - İlk kullanıcıyı kaldırın (ilk ID'yi kullanarak)
"After removal:"yazdırın:listUsers()metodunu tekrar çağırın- Beşinci girdi olan ID'ye sahip kullanıcıyı arayın; bulunursa bilgilerini yazdırın, bulunamazsa
"User not found"yazdırın
Ö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, 201 (Charlie) kullanıcısını kaldırdıktan sonra, bu ID'yi aramanın artık sistemde olmadığı için "User not found" döndürdüğüne dikkat edin!
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şturun
-- TODO: Giriş verileriyle iki User nesnesi oluşturun
-- TODO: Her iki kullanıcıyı da yöneticiye ekleyin
-- TODO: Tüm kullanıcıları yazdırmak için listUsers() fonksiyonunu çağırın
-- TODO: İlk kullanıcıyı kaldırın (id1 kullanarak)
-- TODO: "After removal:" yazdırın
-- TODO: listUsers() fonksiyonunu tekrar çağırın
-- TODO: searchId ile kullanıcıyı arayın
-- Bulunursa bilgilerini yazdırın; bulunamazsa "User not found" yazdırın
Object Oriented Programming 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ü