od Podstaw
5 godz. 10 min · Ruby · Full-stack i Programowanie
Małgorzata ŁyczywekSoftware engineerW pierwszych lekcjach Kursu przejdziemy do omówienia konfiguracji środowiska, by następnie poznać tryb interaktywny Rubiego. Stworzymy pierwsze programy oraz poznamy składnię języka. Dowiesz się między innymi tego, czym są zmienne, jakie istnieją typy danych, jak przekazywać własne dane do programu i jak na nich operować.
Programy oraz instrukcje potrafią w znaczny sposób przyspieszyć i ułatwić pracę w Ruby. Mogą wykonywać za nas powtarzające się czynności i podejmować decyzje. Dlatego też kolejnym, naturalnym krokiem nauki języka Ruby jest poznanie struktur sterujących kodem, takich jak instrukcje warunkowe if, case, pętle while, until, for, each czy inne iteratory.
W kolejnych lekcjach poznasz następne, bardziej rozbudowane zagadnienia. Będziemy korzystać z zaawansowanych struktur danych i metod, jakie możemy na nich wykonywać. Są to metody wbudowane, a więc dostępne domyślnie w Ruby. Przejdziemy do pisania własnych metod dbając, by nasz kod był zgodny z regułą DRY. Poznamy zagadnienia związane ze strukturami specyficznymi dla języka Ruby a także praktykami, jakie są w tym języku stosowane.
Dane do programów najczęściej dotaczane są z zewnętrznego źródła, jak na przykład pobierane z pliku. Przekonasz się jak wykonywać operację na plikach w Ruby - odczytywać, zapisywać, a także w jaki sposób radzić sobie z dużymi plikami w wydajny sposób. Dowiemy się również co zrobić, gdy nasz program spotka niespodziewany błąd. Zajmiemy się przewidywaniem i zapobieganiem błędów w kodzie.
Kolejna, najbardziej obszerna część kursu to dokładne omówienie podstaw paradygmatu programowania obiektowego. Nawet jeżeli wydaje Ci się to bardzo skomplikowane - niedługo wszystko stanie się jasne. Programowanie obiektowe pozwala nam na lepsze odwzorowanie rzeczywistości, czyli tworzenie bardziej praktycznego kodu. Przyjrzymy się jak obiektowość jest realizowana w Ruby oraz jak tworzyć obiekty, klasy i jakich zasad warto przestrzegać. Na koniec dowiemy się jak rozszerzać funkcjonalność istniejących klas za pomocą modułów.
Ten kurs został przygotowany z myślą o wszystkich, którzy chcą zacząć naukę programowania Ruby od podstaw. Stworzono go szczególnie dla osób, które z pisaniem kodu nie miały jeszcze styczności. Nie jest wymagana żadna wcześniejsza wiedza na temat programowania. Jeśli chcesz szybko nauczyć się programowania i myślisz, że twoim kierunkiem jest tworzenie aplikacji webowych, to Ruby jest świetnym wyborem na start.
2.6+
Wróciliśmy do naszej klasy student która ma trochę uproszczoną formę
czyli składa się z konstruktora i dodatkowej metody wyświetlania
do tej pory cały czas korzystaliśmy z symbolu małpki która
oznacza że mamy do czynienia ze zmienną instancji w ten
sposób za każdym razem kiedy wywołujemy show pytamy się o dokładnie tę
zmienną instancji występującą tutaj przez przypisanie
w konstruktorze ale moglibyśmy zrobić self kropka name
i każdą małpę tu zamienić na słowo kluczowe self
taka niepozorna zmiana sprawia że nie pytamy już o
zmienną instancji ale o metodę instancji na pewno pamiętacie getter
def name zwracający małpa name
end teraz kiedy mamy self odpytujemy
o właśnie ten gatter a nie musimy go pisać bo korzystamy z akcesora
tutaj na górze tak możemy zapytać o name które jest tak w ukryciu
generowany przez ruby dla nas w
ten sposób za każdym razem dla danej instancji będziemy korzystać z metody getter
dostępnej przez atrybut na obiekcie myślę że tego etapu
jest to dosyć zrozumiałe zróbmy więc sobie dodatkową
metodę która tam z tym jeszcze pomoże zrobię sobie definicję show
id i w tej metodzie wyświetlę
po kolei id obiektu korzystając ze specjalnej
metody którą można wywołać właśnie na selfie object id a
dodatkowo też wyświetlę sobie self name żeby było wiadomo też
gdzie jestem czy zrobię też hash self
name teraz dzięki self odezwę się do gettera
name i ponownie na
johnie wywołam show id oraz na annie tak
samo anna show id
pojawił nam się id obiektu i
imię id obiektu i imię możemy to self jednak
usunąć zobaczmy jeszcze raz po
uruchomieniu nadal pojawia nam się id obiektu i anna
kiedy jesteśmy wewnątrz naszego obiektu i próbujemy się odwołać po
nazwie to w tym momencie object id zawsze
jest metodą a name chociaż mamy też taką zmienną
instancji to samo name odwołuje się do metody gettera w
tym momencie do obu tych elementów możemy odezwać
się bez self gdyż wiadomo że przecież i tak jesteśmy wewnątrz naszego obiektu i
nie potrzebujemy żadnego słowa kluczowego self by do każdego elementu
do każdej metody odezwać się tutaj w środku i
teraz nadal możemy wywolać sobie john show i
kiedy wyświetlimy to pojawi nam się john smith 23
oraz jego university bez najmniejszego problemu nadal
to działa ponieważ za każdym razem odwołujemy się do metody
gettera jeżeli to nie byłoby zrozumiałe możemy spróbować jeszcze
z nowym przykładem na prostszej klasie usunę sobie to co do
tej pory mieliśmy i stworzę klasę psa stworzę
też do niego konstruktor dosyć taki prosty podstawowy on będzie miał initialize
i będzie miał tylko wiek a nasz pies będzie miał tutaj age
równa się age z zewnątrz podany przy tworzeniu obiektu
i utworze sobie przykładowy obiekt który będzie odpowiadał instancji
psa czyli stworzę sobie psa maxa będzie dog oczywiście słowo
kluczowych new do tworzenia i potrzebuję dla psa jakiś
wiek załóżmy 4 lata teraz stworzę sobie
metodę która pokaże mi wiek psa
w przeliczeniu na ludzkie lata czy stworzę sobie def age
i to age będziemy zwracać jako mniej
więcej tutaj wiek psa razy 6.1 bo
to jest taki przelicznik gdzieś znalazłam że mniej więcej razy 6
jak chcemy dokładniej no to właśnie 6.1 czyli sobie wezmę age
6.1 i
to będzie przypisanie dla wieku czy możemy od razu zwracać w ten
sposób wiek naszego psa w przeliczeniu na lata ludzkie czyli
teraz jeżeli sobie zrobię jeszcze jakąś metodę ładnego wyświetlania
to bym chciała tego psa sobie wyświetlić i sobie zrobię def
show i bym pokazała
na przykład twój pies ma ileś lat czyli your
dog z dużej litery bo to początek zdania has
jakiś wiek tu zaraz go sobie wpiszemy i tutaj
jeżeli w pierwszym momencie użyję zmiennej instancji tak jak zazwyczaj byśmy robili
to kiedy zobaczę sobie lata psa czyli sobie zrobię
max kropka show to
nie pojawi mi się zaktualizowany wiek pojawi mi się to co zawiera zmienna age
zmienna instancji a chcę zobaczyć to co zostało ustawione
co powinien zwracać getter czyli tak jak tutaj mogę zrobić max
kropka age i uzyskać po prostu wiek psa tak
chcę żeby tutaj również pojawił się po prostu wiek czyli to self age a
ponieważ jesteśmy wewnątrz instancji mogę podać po prostu age i teraz
pojawi mi się 24 lata że to jest wiek maxa w przeliczeniu
na lata ludzkie i to samo pojawi mi się w zdaniu myślę
że morał z tego jest dosyć krótki zawsze kiedy możemy wybierajmy getter do
ustawienia jakiejś do wyświetlenia jakiejś wartości zamiast odwoływać
się bez do zmiennej instancji
Klasa dog · 1 min
class Dog
def initialize(age)
@age = age
end
def age
@age * 6.1
end
def show
"Your dog has #{age} in human age"
end
end
max = Dog.new(4)
p max.age
p max.show