Özet - Robot Birleştirme
Coddy'nin Lua Journey'sinin Object Oriented Programming bölümünün bir parçası — ders 54 / 70.
Görev
KolayAyrı bileşen parçalarından bir Robot monte edelim! Kalıtım kullanmak yerine, bir robotu her biri kendi özel davranışına sahip ayrı Arm, Leg ve Head nesnelerinden oluşturarak inşa edeceksiniz. Robot, bu parçaları delegasyon yoluyla koordine edecektir.
Kodunuzu beş dosya halinde düzenleyeceksiniz:
Arm.lua: Hangi tarafta olduğunu (örneğin, "left" veya "right") saklayan bir:new(side)yapıcı metoduna (constructor) sahip bir Arm sınıfı oluşturun.{side} arm raisedyazdıran bir:raise()metodu ve{side} arm loweredyazdıran bir:lower()metodu ekleyin.Leg.lua: Tarafı saklayan bir:new(side)yapıcı metoduna sahip bir Leg sınıfı oluşturun.{side} leg steps forwardyazdıran bir:step()metodu ekleyin.Head.lua: Bir:new()yapıcı metoduna sahip bir Head sınıfı oluşturun.Head nodsyazdıran bir:nod()metodu veHead shakesyazdıran bir:shake()metodu ekleyin.Robot.lua: Yapıcı metodu:new(name)olan, ismi saklayan ve tüm bileşen parçalarını dahili olarak oluşturan bir Robot sınıfı oluşturun: bir sol kol, bir sağ kol, bir sol bacak, bir sağ bacak ve bir kafa. Robot, parçalarına delege eden şu metodlara sahip olmalıdır::greet()—{name} says hello!yazdırır, ardından sağ kolu kaldırır, sonra indirir:walk()— sol bacağın adım atmasını, ardından sağ bacağın adım atmasını sağlar:respond(answer)— eğer cevap"yes"ise kafa sallanır (nod); eğer"no"ise kafa iki yana sallanır (shake)
main.lua: Robotun adı ve bir evet/hayır yanıtı için girdileri okuyun. Bir Robot oluşturun, onu selamlatın, yürütün ve ardından girdiye göre yanıt vermesini sağlayın.
İki girdi alacaksınız:
- Robotun adı (bir dize)
- Bir yanıt:
yesveyano
Çıktınız, robotun parçalarını koordine ettiğini göstermelidir:
{name} says hello!
right arm raised
right arm lowered
left leg steps forward
right leg steps forward
Head nodsVeya yanıt no ise:
{name} says hello!
right arm raised
right arm lowered
left leg steps forward
right leg steps forward
Head shakesÖrneğin, girdiler Robo ve yes ise, çıktı şöyle olmalıdır:
Robo says hello!
right arm raised
right arm lowered
left leg steps forward
right leg steps forward
Head nodsRobotun kolların nasıl kalktığını veya bacakların nasıl adım attığını bilmediğine dikkat edin; o sadece her parçaya ne yapacağını söyler. Her bileşen bağımsız ve yeniden kullanılabilirdir ve robot hepsini bir araya getiren bir koordinatör görevi görür!
Kendin dene
-- main.lua: Robot kompozisyon yarışması için giriş noktası
local Robot = require('Robot')
-- Girdileri oku
local name = io.read()
local answer = io.read()
-- TODO: Verilen isimle bir Robot oluştur
-- TODO: Robotun selam vermesini sağla
-- TODO: Robotun yürümesini sağla
-- TODO: Robotun cevap girdisine göre yanıt vermesini sağla
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ştirme