A Orientação a Objetos (OO) é uma terminologia utilizada amplamente em programação que procura associar a lógica dos algoritmos com as estruturas de dados que esses utilizam. Para tanto, as operações e os dados de algoritmos são agrupadosem entidades chamadas classes. Cada classe estabelece um conceito a ser implementado pelo algoritmo. Portanto, algoritmos implementados sob a ótica da OO definem classes de acordo com os conceitos que esses devem implementar; obviamente, quanto mais conceitos o algoritmo deve tratar, mais classes terão que ser definidas. Observe que, ao definir os conceitos de algoritmos, as classes acabam por definir a própria estrutura de dados deles. Pode-se, então, pensar em classes como estruturas de dados, com as funções associadas.
As variáveis de classes recebem o nome de atributos e as funções, por sua vez, recebem o nome de métodos. Por exemplo, um programa que precisar representar automóveis pode estabelecer como conceitos:
- Rodas.
- Motor.
- Volante.
- Acelerador, etc.
Cada um desses conceitos será implementado com uma classe em Java, da seguinte forma:
Arquivo Motor.java
public class Motor {
private double cilindrada;
private int potencia;
private int temperatura;
Motor(double _cilindrada) {
cilindrada = _cilindrada;
temperatura = 0;
}
public int getTemperatura() {
return temperatura;
}
}
É bom para a prática de programação iniciar os nomes de classes com letras maiúsculas, isso para diferenciar nomes de classes com nomes de instâncias (as instâncias, por convenção, são iniciadas sempre com letras minúsculas). Uma instância é a declaração de uma classe: instâncias são também chamadas de objetos, daí o nome de orientação a objetos a esse paradigma de programação.
Por exemplo, um objeto para motor pode ser declarado como:
Motor motor = new Motor(2.0); // declaração de um objeto do tipo Motor, passando o parâmetro 2.0 para o construtor.
Motor motorP; // declaração de uma referência para um objeto do tipo Motor.
motorP = new Motor(3.6); // alocação de memória para o ponteiro e passagem de parâmetro para o construtor.
Os acessos aos atributos e métodos se dão pelo operador ponto "."
motor.getTemperatura();
Observe que a classe Motor tem um método com o mesmo nome. Esse é particularmente chamado de método construtor da classe. Esse método serve para inicializar os atributos das instâncias da respectiva classe. O construtor é executado apenas uma vez, preenchendo os atributos com os valores passados por parâmetro para ele (é o caso dos valores 2.0 e 3.6 nos exemplos acima).
Outro ponto que deve ser observado é que existem as palavras public e private na declaração dos métodos e atributos. Você deve recordar da disciplina de programação OO que esses modificadores definem a maneira como são acessados os métodos e atributos. Por exemplo, atributos e métodos privados (private) somente podem ser acessados por métodos da própria classe. Já os atributos e métodos públicos (public) podem ser acessados em qualquer lugar e a qualquer momento da execução do programa.
A ideia principal por trás da OO é separar claramente os conceitos dos algoritmos em entidades atômicas, de modo a tornar o código mais organizado, legível e fácil de manter. Entende-se aqui por entidades atômicas aquelas que são autossuficientes, ou seja, podem existir por si só. Justamente por serem atômicas é que o acesso aos atributos internos das classes, se bem controlados, deixam o código mais seguro.
No exemplo anterior, a seguinte instrução, quando implementada em uma classe diferente da classe Motor, resultaria em erro:
motor.potencia = 10; // erro porque o atributo potencia é privado.
Mas, então, você poderia perguntar: como modificar e acessar o conteúdo de potência? A resposta mais apropriada, mantendo a atomicidade da classe, seria: por meio de métodos específicos para isso, como, por exemplo:
public int GetPotencia() { // obtem potencia
return(potencia);
}
e
public void SetPotencia(int _p) { // atribui potencia
potencia = _p;
}
Para modificar o valor do atributo potencia, faríamos:
motor.SetPotencia(10); // Maneira correta de atribuir um valor a uma variável privada.
Dessa forma, somente métodos da classe podem acessar seus atributos, garantindo maior segurança na execução do algoritmo.
Normalmente, os atributos são declarados como privados e os métodos como públicos. Atente para o fato de que pelo menos um método da classe, necessariamente, precisa ser público; caso contrário, os objetos dessas classes não poderão interagir com o resto do programa. Assim como para atributos, métodos privados somente podem ser acessados por outros métodos da mesma classe.
Obviamente, como conceitos não existem sozinhos, as classes necessitam se relacionar com outras classes. Por exemplo, os conceitos apresentados anteriormente para a criação/definição de carros (rodas, motor, carenagem, volante e acelerador) necessitam se relacionar de modo a conceitualizar corretamente um carro e colocá-lo em funcionamento.
Relacionamentos: podem ser implementados por meio do instanciamento de um objeto internamente a uma classe ou de um ponteiro para esse objeto.
Por exemplo, poderia ser declarada uma classe chamada Valvula e um objeto dessa classe ser instanciado dentro da classeMotor, estabelecendo-se, assim, um relacionamento entre motor e um de seus componentes internos: as válvulas. Veja o exemplo a seguir:
public class Motor {
private float cilindrada;
private int potencia;
private int temperatura;
private Valvula v; // instância da classe Valvula
Motor(int _cilindrada) {
cilindrada = _cilindrada;
temperatura = 0;
v = new Valvula();
}
public int getTemperatura() {
return temperatura;
}
Observe que somente os métodos da classe Motor podem acessar o objeto "v", uma vez que esse atributo é declarado como privado. Ainda, os atributos privados de Valvula também somente poderão ser acessados pelos métodos dessa classe. Por exemplo, imagine que a classe Valvula possui um atributo booleano e privado chamado "executa" e que inicia (no método construtor de Valvula) como false. Se algum método de Motor quiser atribuir true para o atributo "executa" de Valvula, então, terá que ser feito da seguinte forma:
v.SetExecuta(true);
Obviamente, o método SetExecuta (boolean valor) deverá estar implementado na classe Valvula e deverá ser público (public).
Herança é um princípio do paradigma de Programação Orientada a Objetos que permite criar uma classe a partir de outra já existente. Intuitivamente, o nome herança vem do fato de uma classe gerada a partir de outra conter (herdar) todos os atributos e métodos da superclasse (classe mãe). A ideia principal da herança é acrescentar novos atributos e métodos à classe filha, que vem a acrescentar-se aos já herdados. Tal característica serve para a diminuição de código duplicado.
É possível representar a hierarquia existente entre as classes através de uma imagem onde as classes herdeiras se posicionam abaixo das herdadas, indicando uma relação de derivação, assim como mostra a Figura 1.
No caso da Figura 1, a classe JComponent é a classe mãe das classes JPanel, JTextComponent, JLabel e AbstractButton. Já as classes JTextField e JTextArea herdam de JTextComponent, e assim sucessivamente.
Em Java, a herança é implementada por meio da palavra-chave extends. Para indicar que determinada classe é uma subclasse, ou seja, que ela deriva (ou ainda, herda) de outra classe, dizemos que ela “extende” a classe mãe, como mostrado no exemplo a seguir:
public class MotorEletrico extends Motor {
private float tensão_maxima;
private float tensao_minima;
}
No caso acima, declaramos uma classe MotorEletrico que herda os atributos e os métodos da classe mãe Motor, definida anteriormente nesta aula.
A partir de agora começaremos a segunda parte da aula. Vamos falar sobre um ambiente de desenvolvimento integrado que auxilia o programador nas tarefas básicas que compõe o desenvolvimento de um software.
O NetBeans é um ambiente de desenvolvimento multiplataforma que disponibiliza várias ferramentas de maneira integrada. Ele é utilizado pelos programadores para escrever, compilar, debugar (detectar erros no código) e instalar aplicações profissionais, sejam estas desktop, empresariais, para a web ou para dispositivos móveis (como celulares e tablets).
Esse tipo de ambiente de programação é conhecido como IDE (Integrated Development Environment – Ambiente de Desenvolvimento Integrado). No caso do Netbeans IDE, trata-se de um ambiente gratuito e de código aberto para desenvolvedores de software que utilizam as linguagens Java, C/C++, PHP, entre outras. Por ser multiplataforma, o NetBeans IDE pode ser executado em muitos sistemas operacionais, entre eles: Windows, Linux, Solaris e MacOS, por exemplo.
O NetBeans foi iniciado em 1996 por dois estudantes tchecos na Universidade de Charles, em Praga, quando a linguagem de programação Java ainda não era tão popular como atualmente. Primeiramente, o nome do projeto era Xelfi, em alusão ao Delphi, pois a pretensão deste projeto era ter funcionalidades semelhantes aos IDE´s (ambientes de desenvolvimento integrado), então populares como o Delphi que eram mais atrativos por serem ferramentas visuais e mais fáceis de usar, porém com o intuito de ser totalmente desenvolvido em Java. Em 1999, o projeto já havia evoluído para um IDE proprietário, com o nome de NetBeans DeveloperX2, nome esse que veio da ideia da reutilização de componentes que eram a base do Java. Nessa época, a empresa Sun Microsystems havia desistido de seu IDE Java Workshop e, procurando por novas iniciativas, adquiriu o projeto NetBeans DeveloperX2, incorporando-o à sua linha de softwares.
Por alguns meses a Sun mudou o nome do projeto para Forte for Java e o manteve por um bom tempo como softwareproprietário; porém, em junho de 2000, a Sun disponibilizou o código fonte do NetBeans IDE, tornando-o uma plataforma Open Source. Desde então a comunidade de desenvolvedores que utilizam e contribuem com o projeto não parou de crescer, tornando-se um dos IDE´s mais populares atualmente.
O NetBeans é totalmente escrito em Java, mas pode suportar o desenvolvimento em outras linguagens de programação, como o C, C++, Ruby ou o PHP. Também suporta linguagens de marcação como XML e HTML. Atualmente, está distribuído em diversos idiomas, inclusive o Português, e isso o tem tornado cada vez mais popular, facilitando o acesso a iniciantes em programação e possibilitado o desenvolvimento de aplicativos em diversas línguas.
Como o NetBeans é escrito em Java, ele é independente de plataforma, funcionando em qualquer sistema operacional que suporte a máquina virtual Java (JVM – ferramenta que executa o aplicativo em Java).
O NetBeans tem muitas vantagens e, além disso, é uma das mais poderosas ferramentas para o desenvolvimento de aplicações robustas e profissionais, fácil de usar e seu ambiente visual facilita a interação com o desenvolvedor, auxiliando-o na criação do código.
Para instalar e trabalhar com o NetBeans de forma eficiente, você deverá possuir o seguinte equipamento mínimo:
No sistema Windows, Windows XP (com Service Pack 2), Windows Vista ou Windows 7:
No sistema Linux:
Fazer o download de um programa significa baixar esse programa para o disco rígido do seu computador a partir do site do fabricante ou do desenvolvedor. Você também poderia baixar um programa qualquer através de sites de downloads públicos, como o Superdownloads ou o Baixaki, por exemplo, caso o programa desejado esteja disponível neles. Mas em alguns casos, como o nosso, é aconselhável baixar certos programas diretamente do site do fabricante. Além de ser mais seguro, encontra-se as últimas versões e atualizações. Então, vejamos como fazer o download da versão mais recente do NetBeans. Acompanhe-nos nessa tarefa.
OBS.: Se no disco do seu computador não houver uma pasta específica para armazenar o NetBeans, crie uma nova com um nome sugestivo, compatível com o que você vai armazenar, de forma que você possa identificar, no futuro, qual o conteúdo daquela pasta. Veja nossa sugestão na figura acima. Quanto ao nome do arquivo, nesse caso, não é necessário alterá-lo.
Dependendo da sua conexão, o tempo de download desse arquivo poderá variar de alguns segundos a alguns minutos, mas, como o arquivo é pequeno (cerca de 54 MB), não demorará muito
Terminado o processo de download do NetBeans, e considerando que não houve nenhum contratempo na realização dessa tarefa, passaremos agora à sua instalação. Da mesma forma que o processo anterior, você será orientado passo a passo, de forma que a instalação do NetBeans ocorra sem problemas.
Considerando que o seu computador se encontra de acordo com as especificações exigidas, vamos lhe orientar passo a passo no processo de instalação dessa poderosa ferramenta de desenvolvimento, de forma que você não tenha nenhuma dificuldade nessa operação. Para isso, basta seguir atentamente as nossas orientações que você chegará lá. Vejamos, então, como fazer isso:
Partiremos agora para a próxima etapa, que é a sua execução.
Após a instalação, o NetBeans IDE 6.9 deve ter criado um ícone na área de trabalho, como também um atalho no menu 'Iniciar'. Para executá-lo, você poderá utilizar qualquer uma das opções. Para facilitar as coisas, iremos executá-lo a partir do ícone na área de trabalho. Para isso:
Quando você tiver mais experiência, poderá utilizar os vários recursos disponíveis no NetBeans através dessas abas. A maioria desses recursos são links para várias páginas, e grande parte está em Inglês. Por enquanto, vamos fechar essa página e conhecer o ambiente de desenvolvimento do NetBeans. Isso é o que nos interessa.
Vamos agora explorar o NetBeans e, assim, desenvolver as nossas aplicações de forma eficiente e produtiva. Agora criaremos um pequeno projeto, bem simples por sinal, apenas para mostrar uma frase na tela, utilizando o NetBeans. Vejamos como fazer isso:
Você deve ter observado que o ambiente do NetBeans foi dividido em quatro áreas, que chamaremos de janelas, para facilitar.
A primeira janela
Essa primeira janela possui três abas. Vamos conhecê-las?
Todas essas pastas, arquivos e serviços são criados automaticamente pelo NetBeans toda vez que criarmos um novo projeto.
A segunda janela
Chamada de 'Main.java', é a janela do código propriamente dito. É como se fosse um editor de textos do tipo bloco de notas. Só que esse é específico para a criação de projetos em Java, pois ele dispõe de recursos que os editores de textos convencionais não possuem. Esse código que você vê foi criado automaticamente pelo NetBeans. Qualquer projeto que você criar terá pelo menos essas linhas de código. Veja essa janela em destaque na Figura 14, além de algumas características dela.
Observe que todas as linhas são numeradas. Isso facilita a procura por possíveis erros que possam ser detectados no código durante a compilação e execução do projeto. Você fica sabendo exatamente onde ocorreu o erro, o que é comum acontecer. Observe também a diferença de cores entre as diversas partes do código, tais como nomes de classes, variáveis, funções etc. Isso facilita muito quando você estiver digitando o seu algoritmo. Você ficará sabendo de imediato se o seu comando está certo ou não de acordo com a cor que foi configurada para ele. Essas cores podem ser modificadas de acordo com as suas necessidades. Posteriormente falaremos desse assunto.
Os pequenos quadrados com um sinal de subtração (-) em seu interior (linhas 1, 8, 14 e 17) são utilizados para esconder/mostrar o código de acordo com sua necessidade, principalmente se o projeto tiver uma grande quantidade de linhas. Quando você clica em um quadradinho desses, o sinal de subtração é alterado para um sinal de adição (+), informando que o conteúdo se encontra oculto.
Alguns dos ícones localizados acima do editor são utilizados para navegar dentro do código, outros não são importantes no momento. Você conhecerá a utilidade deles gradativamente, à medida que forem sendo necessários.
A terceira janela
Essa janela, chamada de 'Navegador%