Programas

Programação 3: Orientação a Objetos e Java


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)