Özet - Robot Birleştirme
Coddy'nin Lua Journey'sinin Nesne Yönelimli Programlama bölümünün bir parçası. Ders 54 / 70.
Görev
KolayBireysel bileşen parçalarından bir Robot oluşturalım! Kalıtım kullanmak yerine, robotu ayrı Arm, Leg ve Head nesnelerinden bir araya getirerek oluşturacaksın: her birinin kendine özgü davranışı olacak. Robot, bu parçaları delegasyon yoluyla koordine edecek.
Kodunu beş dosyaya ayıracaksın:
Arm.lua::new(side)yapıcısına sahip bir Arm sınıfı oluştur; bu yapıcı kolun hangi tarafta olduğunu (örneğin "left" veya "right") saklasın.:raise()yazdıran bir{side} arm raisedmetodu ve:lower()yazdıran bir{side} arm loweredmetodu ekle.Leg.lua::new(side)yapıcısına sahip bir Leg sınıfı oluştur; bu yapıcı tarafı saklasın.:step()yazdıran bir{side} leg steps forwardmetodu ekle.Head.lua::new()yapıcısına sahip bir Head sınıfı oluştur.:nod()yazdıran birHead nodsmetodu ve:shake()yazdıran birHead shakesmetodu ekle.Robot.lua::new(name)yapıcısı adı saklayan ve tüm bileşen parçalarını dahili olarak oluşturan bir Robot sınıfı oluştur: bir sol kol, bir sağ kol, bir sol bacak, bir sağ bacak ve bir baş. Robotun, parçalarına delegasyon yapan şu metotları olmalı::greet():{name} says hello!yazdırır, ardından sağ kolu kaldırır ve sonra indirir:walk(): önce sol bacağın, sonra sağ bacağın adım atmasını sağlar:respond(answer): answer"yes"ise baş başını sallar;"no"ise başını iki yana sallar
main.lua: Robotun adı ve evet/hayır yanıtı için girdileri oku. Bir Robot oluştur, selam vermesini ve yürümesini sağla, ardından girdiye göre yanıt vermesini sağla.
İki girdi alacaksın:
- Robotun adı (bir dize)
- Bir yanıt:
yesveyano
Çıktın, robotun parçalarını koordine ettiğini göstermeli:
{name} says hello!
right arm raised
right arm lowered
left leg steps forward
right leg steps forward
Head nodsYanı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ı:
Robo says hello!
right arm raised
right arm lowered
left leg steps forward
right leg steps forward
Head nodsRobotun kolların nasıl kaldırıldığını veya bacakların nasıl adım attığını bilmediğine dikkat et. Robot yalnızca her parçaya ne yapacağını söyler. Her bileşen bağımsız ve yeniden kullanılabilir; robot ise hepsini bir araya getiren bir koordinatör olarak görev yapar!
Kendin dene
-- main.lua: Robot composition challenge 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
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ştirmeKendi başına pratik yap: Online Lua derleyicisi