Final OOP Kontrolü
Coddy'nin Lua Journey'sinin Object Oriented Programming bölümünün bir parçası — ders 70 / 70.
Görev
KolayLua'da OOP hakkında öğrendiğiniz her şeyi bir araya getirelim! Kalıtım, isimlendirme kuralları aracılığıyla kapsülleme (encapsulation) ve isteğe bağlı yetenekler için mixin'leri gösteren bir araç sistemi oluşturacaksınız.
Kodunuzu beş dosya halinde düzenleyeceksiniz:
Vehicle.lua: Tüm araçlar için temel sınıf. Her aracın birnameözelliği ve özel-kural (private-convention) olan bir_speedözelliği (0 olarak başlatılır) vardır. Bir:getName()alıcısı (getter), bir:getSpeed()alıcısı ve negatif değerleri reddeden bir:setSpeed(value)ayarlayıcısı (setter) ekleyin (eğer negatifse,Speed cannot be negativeyazdırın ve değeri değiştirmeyin)."{name} moving at {speed}"döndüren bir:describe()metodu ekleyin.Refuelable.lua: Yakıtla ilgili davranışları içeren bir mixin tablosu.self._fueldeğerine ekleme yapan bir:refuel(amount)metodu ve mevcut yakıt seviyesini döndüren bir:getFuel()metodu ekleyin.Car.lua: Vehicle sınıfından miras alır ve Refuelable mixin'ini kullanır. Yapıcı (constructor) birnamekabul eder ve_fueldeğerini 0 olarak başlatır."{name} moving at {speed}, fuel: {fuel}"döndürecek şekilde:describe()metodunu geçersiz kılın (override). Arabalara yakıt yetenekleri kazandırmak için Refuelable mixin'ini uygulayın.Bicycle.lua: Sadece Vehicle sınıfından miras alır—yakıt işlevselliğine gerek yoktur. Yapıcı sadece birnamekabul eder. Bisikletler, miras alınan:describe()metodunu değişiklik yapmadan kullanır.main.lua: Her şeyi bir araya getirin! Girdilere dayanarak bir araba ve bir bisiklet oluşturun, farklı yeteneklerini gösterin ve ortak araç davranışlarını paylaşırken nasıl farklı özelliklere sahip olduklarını sergileyin.
Dört girdi alacaksınız:
- Araba adı
- Bisiklet adı
- Her iki araç için ayarlanacak hız (bir sayı)
- Arabaya eklenecek yakıt miktarı (bir sayı)
Ana dosyanızda (main file):
- Verilen isimlerle bir araba ve bir bisiklet oluşturun
- Üçüncü girdiyi kullanarak her iki aracın hızını ayarlayın
- Dördüncü girdi ile arabaya yakıt ikmali yapın
- Arabanın açıklamasını yazdırın
- Bisikletin açıklamasını yazdırın
Ö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 meydan okuma, kalıtımın nasıl ortak davranış sağladığını (her iki araç da hareket edebilir), mixin'lerin nasıl isteğe bağlı yetenekler eklediğini (sadece arabaların yakıta ihtiyacı vardır) ve kapsüllemenin veri bütünlüğünü nasıl koruduğunu (hız doğrulaması) göstermektedir. Her teknik, tasarımınızda 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: Arabaya belirtilen miktarda yakıt ikmali yap
-- TODO: Arabanın açıklamasını yazdır
-- TODO: Bisikletin açıklamasını yazdır
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ü