След като веднъж сме създали обектът g, той запаметява името Pat.
Какво би се случило, ако искаме да променим името директно ?
Изходът от горния пример е грешка.
Под повърхноста на обекта
Променливите на инстанциите са скрити от външно въздействие. Всъщност те
са видими при инспекция на обекта и има начини за достъп до тях, но Ruby
се старае да капсулира данните, следвайки обектно-ориентирания подход.
Може да разгледаме достъпните методи за обектите от тип Greeter лесно:
Интересно е да видим, че обектът “притежава” доста методи, въпреки, че
ние сме дефинирали само 3. Ще разбулим мистерията, като кажем, че това
са всички методи на обектът Greeter, включително и тези от наследените
класове. За да скрием от показване наследените методи ще използваме
флага false при извикването на instance_methods:
Съществува метод, който ни дава представа какви методи може да извикаме
върху обекта:
Никога не е късно за промяна на класа
Как да процедираме, ако искаме да отпечатаме или променим директно
името, зададено в клас ? Ruby предлага лесен начин за достъп до
променливите на обекта.
В Ruby лесно може да отворим класа отново за модификация. Промените ще
се отразят на наличните и новите обекти. Нека създадем нов обект.
Използването на attr_accessor дефинира два нови метода, name за
прочитане на стойността и name= за промяна на стойността.
Приветстване на всички !
В този си вид, класът ни може да приветства само един човек
едновременно. Следващия пример ни показва как може да поздравим един
човек, списък от хора или света глобално.
Нека напишем програмата в отделен файл вместо в IRB.
За да излезете от IRB, напишете “quit”, “exit” или просто натиснете
Control-D.
Съхранете този файл като “ri20min.rb” и го стартирайте, като напишете
“ruby ri20min.rb”. Изходът на програмата би изглеждал така:
Hello World!
Goodbye World. Come back soon!
Hello Zeke!
Goodbye Zeke. Come back soon!
Hello Albert!
Hello Brenda!
Hello Charles!
Hello Dave!
Hello Engelbert!
Goodbye Albert, Brenda, Charles, Dave, Engelbert. Come
back soon!
...
...