Final OOP Kontrolü
Coddy'nin Lua Journey'sinin Nesne Yönelimli Programlama bölümünün bir parçası. Ders 70 / 70.
Görev
KolayLua'da OOP hakkında öğrendiğin her şeyi bir araya getirelim! Kalıtımı, adlandırma kuralları aracılığıyla kapsüllemeyi ve isteğe bağlı yetenekler için mixin'leri gösteren bir araç sistemi oluşturacaksın.
Kodunu beş dosya arasında düzenleyeceksin:
Vehicle.lua: Tüm araçlar için temel sınıf. Her aracın birname'i ve özel kullanım kuralına sahip bir_speed'i vardır (0 olarak başlatılır). Bir:getName()alıcısı, bir:getSpeed()alıcısı ve negatif değerleri reddeden bir:setSpeed(value)ayarlayıcısı ekle (negatifseSpeed cannot be negativeyazdır ve değeri değiştirme).:describe()döndüren bir"{name} moving at {speed}"metodu ekle.Refuelable.lua: Yakıtla ilgili davranışları içeren bir mixin tablosu.:refuel(amount)'a ekleme yapan birself._fuelmetodu ve mevcut yakıt seviyesini döndüren bir:getFuel()metodu ekle.Car.lua: Vehicle'dan kalıtım alır ve Refuelable mixin'ini kullanır. Kurucu, birnamekabul eder ve_fuel'ı 0 olarak başlatır.:describe()döndürecek şekilde"{name} moving at {speed}, fuel: {fuel}"metodunu geçersiz kıl. Araçlara yakıt yetenekleri kazandırmak için Refuelable mixin'ini uygula.Bicycle.lua: Yalnızca Vehicle'dan kalıtım alır; yakıt işlevine gerek yoktur. Kurucu yalnızca birnamekabul eder. Bisikletler, kalıtılan:describe()metodunu değiştirmeden kullanır.main.lua: Her şeyi bir araya getir! Girdilere göre bir araba ve bir bisiklet oluştur, farklı yeteneklerini göster ve ortak araç davranışını paylaşırken farklı özelliklere sahip olduklarını göster.
Dört girdi alacaksın:
- Araba adı
- Bisiklet adı
- Her iki araç için ayarlanacak hız (bir sayı)
- Arabaya eklenecek yakıt miktarı (bir sayı)
Ana dosyanda:
- Verilen adlarla bir araba ve bir bisiklet oluştur
- Üçüncü girdiyi kullanarak her iki araç için hızı ayarla
- Dördüncü girdiyi kullanarak arabaya yakıt doldur
- Arabanın açıklamasını yazdır
- Bisikletin açıklamasını yazdır
Örneğin girdiler Sedan, Mountain Bike, 60 ve 45 ise çıktı şöyle olmalıdır:
Sedan moving at 60, fuel: 45
Mountain Bike moving at 60Girdiler Sports Car, Road Bike, 120 ve 80 ise çıktı şöyle olmalıdır:
Sports Car moving at 120, fuel: 80
Road Bike moving at 120Bu görev, kalıtımın ortak davranış sağladığını (her iki araç da hareket edebilir), mixin'lerin isteğe bağlı yetenekler eklediğini (yalnızca arabaların yakıta ihtiyacı vardır) ve kapsüllemenin veri bütünlüğünü koruduğunu (hız doğrulaması) gösterir. Tasarımında her teknik farklı bir amaca hizmet eder!
Kendin dene
-- main.lua: Her şeyi bir araya getir
local Car = require('Car')
local Bicycle = require('Bicycle')
-- Girdileri oku
local carName = io.read()
local bicycleName = io.read()
local speed = tonumber(io.read())
local fuelAmount = tonumber(io.read())
-- TODO: Verilen isimle bir araba oluştur
-- TODO: Verilen isimle bir bisiklet oluştur
-- TODO: Her iki araç için hızı ayarla
-- TODO: Arabayı yakıt miktarıyla doldur
-- TODO: Arabanın açıklamasını yazdır
-- TODO: Bisikletin açıklamasını yazdır
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