Classes descrevem os tipos de objetos que constituem os sistemas computacionais. Assim um programa (isto é, a descrição de um sistema) deve conter um conjunto de classes associadas. Mas o que é exatamente um programa em Java? Em particular, como podemos especificar as ações iniciais a serem tomadas por um sistema?
As perguntas acima podem ser facilmente respondidas usando as idéias básicas do paradigma de orientação a objetos: um sistema também pode ser visto como um objeto! De fato, um sistema nada mais é do que um objeto tendo um método especial que é responsável pela execução das ações iniciais do sistema. Naturalmente, estas ações iniciais correspondem a criação dos outros objetos que fazem parte do sistema, bem como o envio de mensagens para estes objetos, o que eventualmente resulta em ativação de menus e interfaces gráficas, requisição para entrada de dados, etc.
Como o sistema também é representado por um objeto, o mesmo tem que ter uma classe associada. Podemos ver os objetos desta classe como instâncias diferentes do sistema que desejamos implementar. Por exemplo, a seguinte declaração em Java define uma classe de sistemas de contas que simplesmente exemplificam a utilização de contas bancárias:
class SistemaContas { public static void main(String argv[]) { Conta c1, c2, c3; c1 = new Conta(100.00,12345); c1.printSaldo(); c1.credito(7.34); c1.debito(1.00); c1.printSaldo(); c1.credito(5.66); c1.printSaldo(); c2 = c1; c2.credito(55.00); c2.printSaldo(); c1.printSaldo(); c3 = new Conta(85.00,10); } }Java assume que o método especial main especifica as ações a serem tomadas pelos sistema. De fato, quando executamos o interpretador de Java com o nome de uma classe tendo um método main no formato acima, é criado um objeto da classe (no nosso caso, um sistema de contas) e automaticamente invocado o método main deste objeto. Note que os objetos de uma classe representando instâncias de um sistema são bem peculiares, não tendo atributos, mas apenas o método main.
Agora podemos dizer o que é um programa em Java: um conjunto de classes, incluindo uma classe especial na forma apresentada acima representando as possíveis instâncias do sistema sendo descrito.
Nada impede que o método especial main seja utilizado em outras classes também. Na verdade, uma boa estratégia para se testar um sistema por partes é definir um método main para cada classe e testar a classe individualmente. O corpo do método main deve conter os testes que desejamos realizar, como ilustrado no exemplo acima. O teste pode então ser realizado executando-se o interpretador Java com o nome da classe que desejamos testar como argumento.
Paulo Borba (phmb@di.ufpe.br) |