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.

topo da página

<< Página Anterior | índice | Próxima Página >>
Apostilas de Ruby e RGSS

nossos tutoriais

navegue

livros recomendados