Mais características
Aqui estão mais duas coisas sobre nossa classe AddressBook.
Métodos privados ou públicos
Observe o AddressBook#by_name. Este método é diferente dos outros métodos em um aspecto importante: é utilizada apenas dentro do objecto. Trata - se de um método interno.
Quando você tem um método como este, é melhor declará-la como private (privado). Um método privado só pode ser acessado pelo próprio objeto, e nunca pelo usuário. Um método regular, que está disponível para o utilizador, é chamado público.
Você pode declarar métodos como públicos ou privados com as palavras (surpresa!) public e private . Quando você coloca a palavra private, você informa que todos os métodos definidos a partir dele são privados, até trocar de novo com a palavra public.
class SomeClass
def method1 # default to public
...
end
private # subsequent methods are private.
def method2 # private method
...
end
def method3 # private method
...
end
public # Set back to public.
def method4 # public method
...
end
end
|
Portanto, no nosso caso, vamos apenas colocar a palavra private antes de definir o método by_name.
class AddressBook
#
# Fundamental methods: initialize, add, remove
#
def initialize
@persons = []
end
def add(person)
@persons += [person]
@persons = @persons.sort{|a,b| by_name(a,b)}
end
...
private # Start private methods
#
# Sorting function.
#
def by_name(a,b)
if a.first_name == b.first_name
a.last_name <=> b.last_name
else
a.first_name <=> b.first_name
end
end
end
|
Reuso de códico com require
Já passamos muito tempo escrevendo essas três classes. Não queremos copiar e colar o código de cada vez que quisermos usá-la em um programa. Felizmente, não temos que fazer isso.
Coloque as três classes em um arquivo e salve-o como addressbook.rb. Agora, crie um novo arquivo (no mesmo diretório) e digite:
require "addressbook"
# Sandy
addr = Address.new
addr.street = "324 Campus Dr."
addr.city = "College Park"
addr.state = "MD"
addr.zip = "23659"
puts addr
|
Rode o programa e você terá :
$ ruby prog.rb
324 Campus Dr.
College Park
MD, 23659
$
|
A linha require possibilita reutilizar seu código em outros programas que você escreva.