programação java

  • Published on
    25-Jun-2015

  • View
    1.515

  • Download
    2

Embed Size (px)

Transcript

<p>Programao Javacom nfase em Orientao a ObjetosDouglas Rocha Mendes</p> <p>Novatec</p> <p>captulo 1</p> <p>Introduo linguagem Java</p> <p>O captulo 1 inclui o histrico da linguagem Java, detalhes que formam a linguagem, a plataforma Java, uma breve descrio sobre orientao a objetos, operadores matemticos, tipos de dados primitivos e, por fim, as estruturas de controle e repetio. No final do captulo est disponvel uma lista de exerccios e o laboratrio 1, que exercita a teoria apresentada no captulo. Esse laboratrio ser progressivo e se estender at o captulo 9.</p> <p>1.1 Histrico da linguagemA tecnologia Java foi criada como uma ferramenta de programao 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 computao interativa, ou seja, a linguagem de programao no era o principal objetivo do projeto. No vero de 1992 foi gerada a primeira demonstrao do projeto, que representou um sistema executando em um handheld com capacidade de controle remoto que ainda oferecia uma interface sensvel ao toque (touchscreen) interativa. Esse handheld foi chamado de *7 (star seven), por esta ser a forma de atender (ou puxar) chamadas telefnicas entre os telefones dos integrantes da equipe. A figura 1.1 apresenta um exemplo da aparncia do *7. O *7 foi capaz de controlar uma grande variedade de dispositivos de uso domstico, enquanto apresentava uma interface com animao. O sistema criado para o handheld foi executado em um novo processador independente de linguagem de programao. A linguagem utilizada nesse sistema foi chamada de Oak (carvalho , em ingls), com base na paisagem que James Gosling tinha de sua janela.</p> <p>16</p> <p>Captulo 1 Introduo linguagem Java</p> <p>17</p> <p>Figura 1.1 Handheld *7(Star seven).</p> <p>Em 23 de maio de 1995, John Gage, diretor da Sun Microsystems, e Marc Andreessen, um executivo da Netscape, anunciaram o lanamento da plataforma Java, composta pela Java Virtual Machine (JVM) e pela API (Application Programming Interface) Java. Tal plataforma foi, ento, inserida no Netscape Navigator, o principal browser de acesso Internet usado na poca.</p> <p>1.2 Caractersticas da linguagem de programao JavaA linguagem de programao Java representa uma linguagem simples, orientada a objetos, multithread, interpretada, neutra de arquitetura, portvel, robusta, segura e que oferece alto desempenho. importante observar que a tecnologia Java composta de uma linguagem de programao e de uma plataforma (API e a mquina virtual). A seguir, cada uma das caractersticas citadas descrita.</p> <p>1.2.1 SimplesA 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 possvel, os projetistas da linguagem Java optaram por no implementar o uso do conceito de herana mltipla, de sobrecarga de operadores, ponteiros nem a operao aritmtica com esse tipo de dado. Essas caractersticas podem ser encontradas em outras linguagens, como C ou C++.</p> <p>18</p> <p>Programao Java com nfase em Orientao a Objetos</p> <p>1.2.2 Orientada a objetosA linguagem Java foi criada seguindo o paradigma da orientao a objetos e, por isso, traz de forma nativa a possibilidade de o programador usar os conceitos de herana, polimorfismo e encapsulamento. O paradigma da orientao a objetos existe desde a dcada de 70, mas somente aps o sucesso da linguagem Java que o paradigma ganhou credibilidade. O paradigma de orientao a objetos traz um enfoque diferente da programao estruturada, no sentido de adotar formas mais prximas do mecanismo humano para gerenciar a complexidade de um sistema. Nesse paradigma, o mundo real visto como sendo constitudo de objetos autnomos, concorrentes, que interagem entre si, e cada objeto tem seu prprio estado (atributos) e comportamento (mtodos), 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 cdigo so diferentes. importante observar que muitos programadores usam a linguagem Java, mas continuam pensando no formato estruturado. Essa m prtica de programao muito freqente em estudantes e profissionais que utilizam Java diariamente. Este livro objetiva minimizar esta m prtica do uso da linguagem Java. A seguir apresentada uma comparao entre o desenvolvimento de um sistema bancrio usando o paradigma da programao estruturada e o paradigma da programao orientada a objetos.</p> <p>1.2.2.1 Comparao entre o paradigma da programao estruturada e paradigma da orientao a objetosConsidere o exemplo de um sistema bancrio com os seguintes requisitos funcionais:</p> <p>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 histrico). Emitir relatrios contbeis.</p> <p>No paradigma utilizado pelo modelo estruturado seria necessrio criar um programa para manter clientes, um programa para manter conta, um programa para movimentar caixa e um programa para emitir os relatrios. Cada programa dever</p> <p>Captulo 1 Introduo linguagem Java</p> <p>19</p> <p>ser executado por um programa principal, ou seja, um programa com o mtodo main(). Cada programa e tambm o programa principal tm um conjunto de variveis especficas para suas necessidades. Cada varivel 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 varivel como extern em outro programa) para outros programas. Um ambiente estruturado nos limita apenas a identificar os programas que sero envolvidos na implementao do sistema. Neste modelo de programao, a reutilizao pequena, e a redundncia grande. No paradigma procedural, quando existe alguma modificao, muitas vezes pelo alto acoplamento entre os programas, necessrio alterar vrios programas e novamente testar todo o sistema. No modelo estruturado ficamos limitados a identificar os programas necessrios e, no mximo, a criar funes que possam ser reutilizadas em outros programas. No paradigma da orientao a objetos temos outras possibilidades, tais como o uso de encapsulamento para oferecer segurana classe, herana que permite a reutilizao de cdigo, polimorfismo e padres de projeto, todos explorados de forma detalhada neste livro. No caso do paradigma da orientao a objetos, inicialmente precisamos identificar nossas classes com seus atributos e mtodos. Como tcnica para identificar classes temos a anlise dos substantivos e locues substantivas (dois substantivos juntos), listados pelos requisitos funcionais (Use Cases). Assim, para o exemplo apresentado, teramos as classes Conta, Pessoa, Cliente, Gerente de Relacionamento, Contabilidade, Movimentao e Histrico, entre outras. Percebam que nesta abordagem identificamos os substantivos e locues substantivas descritos pelos requisitos funcionais. importante observar que no paradigma da programao orientada a objetos no nos preocupamos em definir quantos programas seriam necessrios 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 orientao a objetos a possibilidade de usar uma ferramenta de modelagem para a gerao de cdigo.</p> <p>1.2.3 MultithreadA plataforma Java permite a criao de programas que implementam o conceito multithread, incluindo sofisticados mecanismos de sincronizao entre processos. O multithreading uma tcnica de programao concorrente, que permite projetar e implementar aplicaes paralelas de forma eficiente.</p> <p>20</p> <p>Programao Java com nfase em Orientao a Objetos</p> <p>1.2.4 InterpretadaA linguagem Java interpretada, ou seja, aps a compilao gerado um arquivo intermedirio (nem texto nem executvel) no formato bytecode, que poder ser executado em qualquer arquitetura (Windows, Linux, Mac e Unix) que tenha uma mquina virtual Java instalada. A linkedio do programa no formato bytecode realizada no momento de sua execuo de forma simples e totalmente gerenciada pela JVM (Java Virtual Machine).</p> <p>1.2.5 Independncia de arquiteturaA linguagem Java est projetada para dar suporte a sistemas que sero implementados em plataformas heterogneas (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 situao de interoperabilidade, o compilador Java gera os programas em um formato conhecido por bytecode (um formato intermedirio de cdigo projetado para permitir que mltiplos hardwares e softwares executem o mesmo cdigo), permitindo que um programa Java seja executado em qualquer arquitetura.</p> <p>1.2.6 PortabilidadeO que garante a portabilidade dos programas desenvolvidos em Java a Mquina Virtual Java (Java Virtual Machine JVM). Trata-se de uma especificao na qual o compilador Java de cada plataforma ir se basear para gerar o cdigo em bytecode. Na linguagem de programao Java, todo cdigo-fonte deve ser primeiramente escrito em um arquivo no formato de texto e ser gravado em um arquivo com a extenso .java. Aps a compilao desse arquivo pelo compilador (javac.exe), um novo arquivo ser automaticamente criado com o mesmo nome do arquivo-fonte, entretanto, com a extenso .class. O arquivo com extenso .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 possvel executar o programa com o arquivo java.exe. O programa java.exe executa um programa Java como uma instncia da JVM. A figura 1.2 apresenta as etapas para compilao e execuo de um programa Java. Na figura 1.2 h um programa Java sendo submetido ao compilador que ir gerar um arquivo bytecode com a extenso .class independente da arquitetura do sistema operacional utilizado. Esse .class poder ser executado por qualquer JVM em qualquer ambiente operacional.</p> <p>Captulo 1 Introduo linguagem Java0100101...</p> <p>21Mquina Virtual JavaMeuPrograma.class</p> <p>Compilador</p> <p>MeuPrograma.java</p> <p>MeuPrograma.class</p> <p>Meu Programa</p> <p>Compilao</p> <p>Execuo</p> <p>Figura 1.2 Etapas para compilao e execuo de um programa Java.</p> <p>Devido JVM estar disponvel em inmeras plataformas, o mesmo arquivo com extenso .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 execuo em mltiplos sistema operacionais.Programa Java class OlaMundo { public static void main(String[] args) { System.out.print1n("Hello World!"); } } OlaMundo.java Compilador</p> <p>Mquina Virtual Java</p> <p>Mquina Virtual Java</p> <p>Mquina Virtual Java</p> <p>Windows</p> <p>UNIX</p> <p>MacOS</p> <p>Figura 1.3 Etapas para compilao e execuo de um programa Java.</p> <p>1.2.7 Alto desempenhoO desempenho sempre foi um fator de comparao entre a linguagem Java, que interpretada, e as linguagens compiladas. A plataforma Java oferece um bom desempenho, pois executa um cdigo que foi previamente analisado e convertido para um formato intermedirio. Outro elemento que auxilia no bom desempenho o recurso de garbage collector (coletor de lixo), que executado em segundo plano</p> <p>22</p> <p>Programao Java com nfase em Orientao a Objetos</p> <p>como uma thread com baixa prioridade, procurando liberar memria que no est sendo mais utilizada. Isso faz com que a memria liberada seja reutilizada por outra parte do sistema, gerando um bom desempenho do sistema. A linguagem Java tambm permite que um programa seja compilado em uma plataforma (Windows, Linux ou Unix) especfica. Entretanto, nesse caso o programa no poder ser portado em outra plataforma automaticamente, exigindo a necessidade de uma nova compilao.</p> <p>1.2.8 RobustaA linguagem Java foi projetada para gerar sistemas confiveis, pois fornece j em tempo de compilao, por exemplo, uma checagem para identificar cdigo no-alcanvel. Entenda-se como cdigo no-alcanvel uma linha de cdigo que por algum motivo na lgica de programao nunca ser executada. Como exemplo podemos ter um comando return e logo abaixo a impresso de uma string. Nesse caso, a string nunca seria impressa, por isso o compilador java gera um erro. A linguagem java tambm oferece uma checagem para identificar variveis que foram definidas, porm no foram inicializadas. O modelo de gerenciamento de memria extremamente simples, sendo que aps a alocao de memria por meio do operador new no necessrio que o programador libere esse espao alocado, pois o garbage collector realiza essa atividade. Outros fatores que contribuem para o rtulo de linguagem robusta so:</p> <p>Sistema de tipo rgido que, em tempo de compilao, verifica erros comuns, como if (cpf = 1). Nesse caso estamos atribuindo um valor, e no realizando a comparao. O correto seria apresentar o comando if (cpf == 1). Inicializao das variveis e atributos inteiros com o valor 0 automaticamente ou com vazio no caso de variveis ou atributos do tipo string. Manipulao de excees parte integrante da linguagem.</p> <p>1.2.9 SeguraA linguagem Java foi criada para operar em ambientes distribudos, o que significa que segurana de extrema importncia. Com as caractersticas projetadas na linguagem Java, e principalmente na JVM, podemos garantir que em um ambiente de rede nenhum programa Java permitir que outro programa escrito em qualquer outra linguagem possa se esconder em um cdigo Java a fim de se instalar automaticamente.</p> <p>Captulo 1 Introduo linguagem Java</p> <p>23</p> <p>1.3 Plataforma JavaO termo genrico plataforma representa o hardware e o software onde um programa Java pode ser executado. Como exemplo de plataformas temos: o Windows, HPUX Unix da HP, AIX Unix da IBM, Linux, Solaris e Mac OS. Muitas plataformas podem ser descritas como uma combinao do sistema operacional e do hardware que oferece o suporte. No caso do Java o termo plataforma refere-se somente ao software onde so executados os programas Java. A plataforma Java composta de Java Virtual Machine (JVM) e Java Application Programming Interface (API). A JVM representa a base da plataforma Java e pode ser instalada na maioria dos sistemas operacionais disponveis no mercado. A API Java representa uma grande coleo de classes prontas que fornecem uma grande quantidade de facilidades ao programador. Esse conjunto de classes deve ser instalado no computador por meio do download do J2SDK na verso desejada. Tais classes so agrupadas em bibliotecas co...</p>