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(12345, 100.00); c1.printSaldo(); c1.creditar(7.34); c1.debitar(1.00); c1.printSaldo(); c1.creditar(5.66); c1.printSaldo(); c2 = c1; c2.creditar(55.00); c2.printSaldo(); c1.printSaldo(); c3 = new Conta(10, 85.00); } }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@cin.ufpe.br)
Rodrigo Queiroz (rqcl@cin.ufpe.br) |