Java - programação orientada a objetos

Java - programação orientada a objetos

(Parte 1 de 10)

Novatec

Programação Java com Ênfase em Orientação a Objetos

Douglas Rocha Mendes capítulo 1 Introdução à linguagem Java

O capítulo 1 inclui o histórico da linguagem Java, detalhes que formam a linguagem, a plataforma Java, uma breve descrição sobre orientação a objetos, operadores matemáticos, tipos de dados primitivos e, por fim, as estruturas de controle e repetição. No final do capítulo está disponível uma lista de exercícios e o laboratório 1, que exercita a teoria apresentada no capítulo. Esse laboratório será progressivo e se estenderá até o capítulo 9.

1.1 Histórico da linguagem

A tecnologia Java foi criada como uma ferramenta de programação de um projeto da Sun Microsystems, chamado The Green Project, iniciado por Patrick Naughton, Mike Sheridan e James Gosling, em 1991. Esse projeto tinha como principal objetivo criar uma nova plataforma para a computação interativa, ou seja, a linguagem de programação não era o principal objetivo do projeto. No verão de 1992 foi gerada a primeira demonstração do projeto, que representou um sistema executando em um handheld com capacidade de controle remoto que ainda oferecia uma interface sensível ao toque (touchscreen) interativa. Esse handheld foi chamado de *7 (star seven), por esta ser a forma de atender (ou puxar) chamadas telefônicas entre os telefones dos integrantes da equipe. A figura 1.1 apresenta um exemplo da aparência do *7.

O *7 foi capaz de controlar uma grande variedade de dispositivos de uso doméstico, enquanto apresentava uma interface com animação. O sistema criado para o handheld foi executado em um novo processador independente de linguagem de programação. A linguagem utilizada nesse sistema foi chamada de Oak (“carvalho”, em inglês), com base na paisagem que James Gosling tinha de sua janela.

17Capítulo 1 ■ Introdução à linguagem Java

Figura 1.1 – Handheld *7(Star seven).

Em 23 de maio de 1995, John Gage, diretor da Sun Microsystems, e Marc

Andreessen, um executivo da Netscape, anunciaram o lançamento da plataforma Java, composta pela Java Virtual Machine (JVM) e pela API (Application Programming Interface) Java. Tal plataforma foi, então, inserida no Netscape Navigator, o principal browser de acesso à Internet usado na época.

1.2 Características da linguagem de programação Java

A linguagem de programação Java representa uma linguagem simples, orientada a objetos, multithread, interpretada, neutra de arquitetura, portável, robusta, segura e que oferece alto desempenho. É importante observar que a tecnologia Java é composta de uma linguagem de programação e de uma plataforma (API e a máquina virtual). A seguir, cada uma das características citadas é descrita.

1.2.1 Simples

A linguagem Java é considerada simples porque permite o desenvolvimento de sistemas em diferentes sistemas operacionais e arquiteturas de hardware, sem que o programador tenha que se preocupar com detalhes de infra-estrutura. Dessa forma, o programador consegue desempenhar seu trabalho de uma forma mais produtiva e eficiente.

Pensando em tornar a linguagem o mais simples possível, os projetistas da linguagem Java optaram por não implementar o uso do conceito de herança múltipla, de sobrecarga de operadores, ponteiros nem a operação aritmética com esse tipo de dado. Essas características podem ser encontradas em outras linguagens, como C ou C++.

Programação Java com Ênfase em Orientação a Objetos18 1.2.2 Orientada a objetos

A linguagem Java foi criada seguindo o paradigma da orientação a objetos e, por isso, traz de forma nativa a possibilidade de o programador usar os conceitos de herança, polimorfismo e encapsulamento. O paradigma da orientação a objetos existe desde a década de 70, mas somente após o sucesso da linguagem Java é que o paradigma ganhou credibilidade. O paradigma de orientação a objetos traz um enfoque diferente da programação estruturada, no sentido de adotar formas mais próximas do mecanismo humano para gerenciar a complexidade de um sistema. Nesse paradigma, o mundo real é visto como sendo constituído de objetos autônomos, concorrentes, que interagem entre si, e cada objeto tem seu próprio estado (atributos) e comportamento (métodos), semelhante a seu correspondente no mundo real.

Quando desenvolvemos programas orientados a objetos e estruturados temos dois paradigmas totalmente diferentes. A forma de pensar e escrever o código são diferentes. É importante observar que muitos programadores usam a linguagem Java, mas continuam pensando no formato estruturado. Essa má prática de programação é muito freqüente em estudantes e profissionais que utilizam Java diariamente. Este livro objetiva minimizar esta má prática do uso da linguagem Java. A seguir é apresentada uma comparação entre o desenvolvimento de um sistema bancário usando o paradigma da programação estruturada e o paradigma da programação orientada a objetos.

1.2.2.1 Comparação entre o paradigma da programação estruturada e paradigma da orientação a objetos

Considere o exemplo de um sistema bancário com os seguintes requisitos funcionais:

■ Manter o cliente (envolvendo inserir cliente, remover cliente, selecionar cliente e atualizar cliente).

■ Manter conta (envolvendo abrir conta, fechar conta, alterar conta, pesquisar conta e remover conta).

■ Movimentar caixa (envolvendo sacar, depositar e transferir).

■ Registrar movimento (envolvendo gerar histórico).

■ Emitir relatórios contábeis.

No paradigma utilizado pelo modelo estruturado seria necessário criar um programa para manter clientes, um programa para manter conta, um programa para movimentar caixa e um programa para emitir os relatórios. Cada programa deverá

19Capítulo 1 ■ Introdução à linguagem Java ser executado por um programa principal, ou seja, um programa com o método main(). Cada programa e também o programa principal têm um conjunto de variáveis específicas para suas necessidades. Cada variável que precisar ser compartilhada com outros programas deve ser criada como global e, se estivermos usando a linguagem C, esta deveria ser externalizada (definir a variável como extern em outro programa) para outros programas. Um ambiente estruturado nos limita apenas a identificar os programas que serão envolvidos na implementação do sistema.

Neste modelo de programação, a reutilização é pequena, e a redundância é grande. No paradigma procedural, quando existe alguma modificação, muitas vezes pelo alto acoplamento entre os programas, é necessário alterar vários programas e novamente testar todo o sistema. No modelo estruturado ficamos limitados a identificar os programas necessários e, no máximo, a criar funções que possam ser reutilizadas em outros programas. No paradigma da orientação a objetos temos outras possibilidades, tais como o uso de encapsulamento para oferecer segurança à classe, herança que permite a reutilização de código, polimorfismo e padrões de projeto, todos explorados de forma detalhada neste livro.

No caso do paradigma da orientação a objetos, inicialmente precisamos identificar nossas classes com seus atributos e métodos. Como técnica para identificar classes temos a análise dos substantivos e locuções substantivas (dois substantivos juntos), listados pelos requisitos funcionais (Use Cases). Assim, para o exemplo apresentado, teríamos as classes Conta, Pessoa, Cliente, Gerente de Relacionamento, Contabilidade, Movimentação e Histórico, entre outras. Percebam que nesta abordagem identificamos os substantivos e locuções substantivas descritos pelos requisitos funcionais.

É importante observar que no paradigma da programação orientada a objetos não nos preocupamos em definir quantos programas seriam necessários e sim quais seriam os substantivos utilizados pelo sistema. Cada substantivo representa um objeto no mundo real e uma classe em nosso sistema. Cada classe seria representada por um novo programa Java. Outra vantagem do paradigma da orientação a objetos é a possibilidade de usar uma ferramenta de modelagem para a geração de código.

1.2.3 Multithread

A plataforma Java permite a criação de programas que implementam o conceito multithread, incluindo sofisticados mecanismos de sincronização entre processos. O multithreading é uma técnica de programação concorrente, que permite projetar e implementar aplicações paralelas de forma eficiente.

Programação Java com Ênfase em Orientação a Objetos20 1.2.4 Interpretada

A linguagem Java é interpretada, ou seja, após a compilação é gerado um arquivo intermediário (nem texto nem executável) no formato bytecode, que poderá ser executado em qualquer arquitetura (Windows, Linux, Mac e Unix) que tenha uma máquina virtual Java instalada. A linkedição do programa no formato bytecode é realizada no momento de sua execução de forma simples e totalmente gerenciada pela JVM (Java Virtual Machine).

1.2.5 Independência de arquitetura

A linguagem Java está projetada para dar suporte a sistemas que serão implementados em plataformas heterogêneas (hardware e software), como ambiente Unix, Linux e Mainframe. Nesses ambientes, o sistema deve ser capaz de ser executado em diferentes hardwares, como servidor Unix da HP ou servidor Unix da IBM. Para acomodar essa situação de interoperabilidade, o compilador Java gera os programas em um formato conhecido por bytecode (um formato intermediário de código projetado para permitir que múltiplos hardwares e softwares executem o mesmo código), permitindo que um programa Java seja executado em qualquer arquitetura.

1.2.6 Portabilidade

O que garante a portabilidade dos programas desenvolvidos em Java é a Máquina Virtual Java (Java Virtual Machine – JVM). Trata-se de uma especificação na qual o compilador Java de cada plataforma irá se basear para gerar o código em bytecode.

Na linguagem de programação Java, todo código-fonte deve ser primeiramente escrito em um arquivo no formato de texto e ser gravado em um arquivo com a extensão .java. Após a compilação desse arquivo pelo compilador (javac.exe), um novo arquivo será automaticamente criado com o mesmo nome do arquivo-fonte, entretanto, com a extensão .class. O arquivo com extensão .class gerado representa um arquivo no formato bytecode e poderá ser executado em qualquer plataforma que tiver uma JVM instalada. Uma vez gerado o arquivo no formato bytecode, será possível executar o programa com o arquivo java.exe. O programa java.exe executa um programa Java como uma instância da JVM. A figura 1.2 apresenta as etapas para compilação e execução de um programa Java.

Na figura 1.2 há um programa Java sendo submetido ao compilador que irá gerar um arquivo bytecode com a extensão .class independente da arquitetura do sistema operacional utilizado. Esse .class poderá ser executado por qualquer JVM em qualquer ambiente operacional.

21Capítulo 1 ■ Introdução à linguagem Java

Compilação

MeuPrograma.java MeuPrograma.class Execução

Compilador MeuPrograma.class Meu Programa

Máquina Virtual Java

Figura 1.2 – Etapas para compilação e execução de um programa Java.

Devido à JVM estar disponível em inúmeras plataformas, o mesmo arquivo com extensão .class poderá ser executado em diferentes sistemas operacionais, como Windows, Solaris, Linux ou Mac OS. A figura 1.3 apresenta um ambiente onde o mesmo programa .class poderia estar em execução em múltiplos sistema operacionais.

Compilador Windows MacOSUNIX

Programa Java class OlaMundo { public static void main(String[] args) {

(Parte 1 de 10)

Comentários