Você está na página 1de 44

Desenvolvimento Orientado a Objetos com Java

Captulo 1 Introduo
Java and all Java-based marks are trademarks or registered trademarks of Sun Microsystems, Inc. in the U.S. and other countries.

Licena para uso e distribuio Este material est disponvel para uso nocomercial e pode ser derivado e/ou distribudo, desde que utilizando uma licena equivalente.
Atribuio-Uso No-ComercialCompatilhamento pela mesma licena, verso 2.5 http://creativecommons.org/licenses/by-nc-sa/2.5/deed.pt
Voc pode copiar, distribuir, exibir e executar a obra, alm de criar obras derivadas, sob as seguintes condies: (a) voc deve dar crdito ao autor original, da forma especificada pelo autor ou licenciante; (b) voc no pode utilizar esta obra com finalidades comerciais; (c) Se voc alterar, transformar, ou criar outra obra com base nesta, voc somente poder distribuir a obra resultante sob uma licena idntica a esta.

Maio 2006

Desenvolvimento Orientado a Objetos com Java

Sobre o curso Aulas expositivas; Exerccios de fixao; Trabalho prtico como avaliao ao final; Contedo:
Introduo Tipos, variveis e operadores Estruturas de controle Programao bsica Classes e objetos Reuso de classes Polimorfismo
Maio 2006

RTTI e Interfaces Classes Internas Excees Arquivos e Streams Utilitrios Tipos Genricos
3

Desenvolvimento Orientado a Objetos com Java

Sobre o material do curso Apostila e exerccios:


Autoria de Flvio M. Varejo (fvarejao@inf.ufes.br); Colaborao de Berilhes Garcia e Rodrigo Pessoa (captulos 1 a 6).

Slides:
Autoria de Vtor Souza (vitorsouza@gmail.com); Baseado no contedo da apostila.

4
Maio 2006 Desenvolvimento Orientado a Objetos com Java

Sobre os alunos Assume-se que os alunos:


Sabem o bsico sobre lgica de programao; Conhecem alguma linguagem de programao; No sabem nada sobre Java.

Recomenda-se aos alunos:


Perguntar SEMPRE que houver dvida; Estudar a apostila em casa; Fazer todos os exerccios; Participar de um JUG.
5
Maio 2006 Desenvolvimento Orientado a Objetos com Java

Sobre o instrutor Formao:


Graduao em Cincia da Computao, com nfase em Engenharia de Software, pela UFES; Bolsista de Mestrado em Informtica na UFES.

Java:
Desenvolvedor Java desde 1999; Especialista em desenvolvimento Web; JUG Leader do ESJUG.

Profissional:
Professor substituto no DI / UFES.
6
Maio 2006 Desenvolvimento Orientado a Objetos com Java

Objetivos do curso Tornar os alunos programadores capazes de:


Entender o paradigma orientado a objetos e construir solues neste paradigma; Utilizar Java para criar programas orientados a objeto, utilizando conceitos bsicos e avanados da plataforma; Ler e entender programas em Java escritos por outros programadores.

7
Maio 2006 Desenvolvimento Orientado a Objetos com Java

Por que Orientao a Objetos? Padro para desenvolvimento de sistemas; Vantagens sobre paradigma estruturado:
Abstrao mais prxima do mundo real; Foco na reusabilidade; Maior manutenibilidade; Maior grau de qualidade da soluo final.

8
Maio 2006 Desenvolvimento Orientado a Objetos com Java

Por que Java? Uma das linguagens OO mais usadas; Caractersticas de Java:
Simples, porm verstil, robusta e muito segura; Portvel (independente de sistema operacional); Gratuita e com cdigo disponvel para consulta; Dirigida por uma especificao aberta; Popular, rodeada por uma comunidade muito ativa; De alta aceitao e com suporte da indstria; Muitas ferramentas disponveis; Muita documentao disponvel.
9
Maio 2006 Desenvolvimento Orientado a Objetos com Java

O que Java? Uma tecnologia; Uma linguagem de programao; Uma plataforma de desenvolvimento; Um software distribudo pela Sun Microsystems; Um ambiente de execuo de programas; Uma ilha da Indonsia.

10
Maio 2006 Desenvolvimento Orientado a Objetos com Java

Java como linguagem de programao

o principal foco deste curso; Para entendermos e avaliarmos melhor Java como linguagem, veremos alguns conceitos da rea de LP:
Propriedades desejveis de LPs; Traduo de programas; Alocao de memria; Abstrao.

11
Maio 2006 Desenvolvimento Orientado a Objetos com Java

Propriedades desejveis em LPs Foco no programador e no no programa; Legibilidade; Redigibilidade; Confiabilidade; Eficincia; Facilidade de aprendizado; Reusabilidade de cdigo; Flexibilidade; Harmonia com a metodologia de projeto.
12
Maio 2006 Desenvolvimento Orientado a Objetos com Java

Funcionamento das linguagens O computador um hardware que s entende operaes muito bsicas (zeros e uns); Programa executvel = coleo de instrues em linguagem de mquina; Criar programas em linguagem de mquina extremamente difcil e improdutivo; Usamos linguagens de programao de alto nvel; Precisamos de um programa que transforme uma linguagem em outra: um tradutor.
13
Maio 2006 Desenvolvimento Orientado a Objetos com Java

Traduo de programas Existe duas maneiras de se traduzir um programa: compilao e interpretao. Compilao:
Compilador

Cdigo-fonte
Maio 2006

Programa Executvel
14

Desenvolvimento Orientado a Objetos com Java

Traduo de programas Interpretao:


Mquina Virtual

Interpretador

Cdigo-fonte
Maio 2006 Desenvolvimento Orientado a Objetos com Java

15

Compilao x Interpretao Compilao:


Execuo mais rpida; Somente o executvel carregado em memria.

Interpretao:
Portabilidade.

Compilao + Interpretao = Hbrido


Une as vantagens de ambos.

16
Maio 2006 Desenvolvimento Orientado a Objetos com Java

Traduo Hbrida Forma utilizada por Java:


Mquina Virtual Java

Cdigo-fonte

Interpretador

Compilador Java

Cdigo Intermedirio (byte code)

17

Maio 2006

Desenvolvimento Orientado a Objetos com Java

Alocao de memria Estratgias de alocao:


Alocao esttica; Alocao dinmica.
z y x a b 19 9 10 9 10 Pilha a f b p Monte
18
Maio 2006 Desenvolvimento Orientado a Objetos com Java

Ponteiros

Decises sobre alocao de memria Qual estratgia utilizar?


Por que usar pilha e monte? Modelo de memria ALGOL-like.

Quem responsvel pela alocao?


O programador (mais controle); A prpria linguagem (mais facilidade).

O que o programador pode fazer com ponteiros?


Aritmtica de ponteiros; Ponteiros somente como referncias.
19
Maio 2006 Desenvolvimento Orientado a Objetos com Java

Abstrao Conceito fundamental em LPs:


Linguagem de mquina abstrai o hardware; Linguagem de alto nvel abstrai a de mquina; Etc.

O objetivo escrever as solues em termos cada vez mais prximos do mundo real.
Problema (Mundo Real) Desenvolvimento Soluo (Mundo Computacional)
20

Gap Semntico
Maio 2006

Desenvolvimento Orientado a Objetos com Java

Abstrao e Orientao a Objetos Dentre os paradigmas existentes, a Orientao a Objetos destaca-se pelo nvel de abstrao:
Elementos do mundo real so modelados como objetos no mundo computacional; Objetos possuem propriedades e comportamento, assim como no mundo real; O cdigo expressa a soluo em termos mais prximos do problema.

21
Maio 2006 Desenvolvimento Orientado a Objetos com Java

Para um estudo mais aprofundado... Linguagens de Programao Conceitos e Tcnicas


Editora Elsevier (Campus); Coleo Campus SBC; Flvio Miguel Varejo; 2004.

22
Maio 2006 Desenvolvimento Orientado a Objetos com Java

Histria de Java 1995: Patrick Naughton e Sun Microsystems; Projeto Green busca por inovao: *7; James Gosling e a linguagem Oak; Projeto Green muda de rumo depois que *7 no deslancha: a aposta na Internet; Oak vira Java, graas a um caf; Nascem as Applets, Java includa no Netscape, disponibilizada ao pblico e deslancha; Java fez 10 anos em 2005.
23
Maio 2006 Desenvolvimento Orientado a Objetos com Java

A plataforma Java Plataforma = SO + Hardware:


Windows + PC (Intel / AMD); Linux + PC; MacOS X + Macintosh.

Java situa-se um nvel acima do SO, formando uma nova plataforma de computao:
Portvel (WORA - Write Once Run Anywhere); Baseada na Mquina Virtual Java (JVM); Linguagem Java a parte central da plataforma.
24
Maio 2006 Desenvolvimento Orientado a Objetos com Java

Caractersticas de Java Orientada a objetos:


Quase pura, pois possui tipos primitivos.

Baseada em C++:
Sintaxe semelhante; Porm mais simples.

Portvel:
Compilao para bytecode e interpretao na JVM; Especificao rgida (JCP).

25
Maio 2006 Desenvolvimento Orientado a Objetos com Java

Caractersticas de Java Confivel:


Verificaes na compilao e execuo; Incentiva-nos a escrever cdigos melhores; No h aritmtica de ponteiros, que so tratados como referncias a objetos; A gerncia de memria feita pela JVM (coletor de lixo), facilitando a tarefa do programador.

Dinmica:
Classes so carregadas sob demanda (class loader).

26
Maio 2006 Desenvolvimento Orientado a Objetos com Java

Caractersticas de Java Projetada para ambientes distribudos:


Suporte de alto nvel para construo de aplicaes em rede (sockets, RMI, etc.); Com carregamento dinmico, classes podem ser obtidas da rede e acionadas em tempo de execuo; The network is the computer.

Segura:
Verificaes em tempo de execuo; Verificao de bytecode; Modelo sandbox (caixa de areia); Assinatura digital e criptografia.
Maio 2006 Desenvolvimento Orientado a Objetos com Java

27

Caractersticas de Java Possui bom desempenho:


Linguagens hbridas no tm o mesmo desempenho de linguagens compiladas; No entanto, existem diversas otimizaes (ex.: JIT), com melhorias a cada nova verso; Em ltima instncia, integra-se com cdigos em C.

Facilita a programao concorrente:


Dispe de elementos que facilitam a programao de sistemas com uso intensivo de threads paralelas.

28
Maio 2006 Desenvolvimento Orientado a Objetos com Java

Edies de Java Java distribuda em trs edies:


Java Standard Edition (Java SE); Java Enterprise Edition (Java EE); Java Mobile Edition (Java ME).

29
Maio 2006 Desenvolvimento Orientado a Objetos com Java

Java SE Ferramentas de desenvolvimento e API ncleo da plataforma (base para as demais); Permite o desenvolvimento de aplicaes desktop, com interface grfica, acesso bancos de dados, I/O, acesso rede, etc.; Dividida em:
JDK = Java Development Kit; JRE = Java Runtime Environment.

30
Maio 2006 Desenvolvimento Orientado a Objetos com Java

Java Development Kit Somente para programadores; Contm:


Ferramentas de desenvolvimento; Ambiente de execuo (JRE); API Java SE (compilada e cdigo-fonte); Programas de demonstrao; Bibliotecas adicionais; Documentao (obtida separadamente).

31
Maio 2006 Desenvolvimento Orientado a Objetos com Java

Java Runtime Environment Necessria para rodar programas Java (bytecodes compilados); a nica parte da plataforma Java que os clientes precisam instalar; Em alguns SOs j vem instalada (ex.: MacOS X); A Sun prov suporte oficial s plataformas Windows, Solaris e Linux; H suporte no-oficial a diversas outras plataformas (a Apple suporta a plataforma Mac).
32
Maio 2006 Desenvolvimento Orientado a Objetos com Java

A API Java SE

33
Maio 2006 Desenvolvimento Orientado a Objetos com Java

A API Java SE AWT/Swing: interfaces grficas; Java2D: desenho; JDBC: acesso a bancos de dados; JNDI: acesso a servidores de nomes; RMI: invocao remota de mtodos ; i18n: suporte internacionalizao; I/O: entrada e sada (arquivos); JNI: integrao com linguagens nativas; Math: clculos matemticos;
34
Maio 2006 Desenvolvimento Orientado a Objetos com Java

A API Java SE Networking: transmisso de dados via rede; Security: segurana; Serialization: persistncia por serializao; XML: processamento de XML e afins; Lang & Util: ncleo da linguagem, utilitrios; Concurrency: programao concorrente; Logging: funes de relatrio (log); Reflection: RTTI (reflexo, introspeco).
35
Maio 2006 Desenvolvimento Orientado a Objetos com Java

Java EE Permite o desenvolvimento de aplicaes corporativas:


Multi-camadas, distribudas, centradas em servidores, altamente robustas, estveis e escalveis.

Inclui as especificaes para desenvolvimento Web: Servlets, JSP, Web Services, JSF, etc.; Inclui especificaes da plataforma Enterprise Java Beans (EJB):
Componentes gerenciados integrados a outras tecnologias Java EE para prover acesso remoto, persistncia e transaes transparentes, etc.
36
Maio 2006 Desenvolvimento Orientado a Objetos com Java

Java EE Outras tecnologias relacionadas:


RMI/IIOP e Java IDL: conectividade; JDNI: servidor de nomes; JAC e JNI: acesso a sistemas legados; JAAS: segurana; JTA: transaes em bancos de dados; JMS e JavaMail: envio de mensagens; E tudo o mais que temos no Java SE...

37
Maio 2006 Desenvolvimento Orientado a Objetos com Java

Java ME Permite o desenvolvimento de aplicaes para dispositivos mveis:


Telefones celulares; PDAs (Palm, iPaq, etc.); Dispositivos embarcados (embedded); Etc.

Java Card: aplicaes para Smart Cards e outros dispositivos muito limitados.

38
Maio 2006 Desenvolvimento Orientado a Objetos com Java

Um primeiro programa Escreva o seguinte programa:


Comentrios

/* Meu primeiro programa. */ public class Eco { // Mtodo principal. public static void main(String[] args) { for (int i = 0; i < args.length; i++) System.out.print(args[i] + " "); System.out.println(); } Comandos terminam com ; }

Salve como Eco.java (case sensitive).


Bloco de instrues
39
Maio 2006 Desenvolvimento Orientado a Objetos com Java

Compilando o programa
Cdigo fonte: Eco.java public class Eco { /* ... */ }

Bytecode: Eco.class ca 1d 00 14 fe ba be 00 00 00 31 00 0a 00 06 00 0f 09 00 10 11 08 00 12 0a 00 13 00 ...

javac Eco.java

40
Maio 2006 Desenvolvimento Orientado a Objetos com Java

Executando o programa java Eco Al


Java Virtual Machine (JVM)
Class Loader Classe remota?

Bytecode verifier

N
Ambiente de Execuo

ca fe ba be 00 00 00 31 00 ... Bytecode

Interpretador

JIT Compiler Cdigo Nativo

Sistema Operacional / Hardware 41


Maio 2006 Desenvolvimento Orientado a Objetos com Java

Programas Java Um programa Java uma classe pblica com o mtodo main(), como no nosso exemplo; O nome do arquivo deve coincidir com o nome da classe que possui o mtodo main(); Pode haver mais de uma classe no mesmo arquivo fonte, mas somente uma pode ser pblica; Veremos estes conceitos ao longo do curso.

42
Maio 2006 Desenvolvimento Orientado a Objetos com Java

IDEs Ambientes integrados de desenvolvimento facilitam o trabalho de programao:


Eclipse (http://www.eclipse.org); NetBeans (http://www.netbeans.org); IntelliJ IDEA (http://www.jetbrains.com/idea); JBuilder (http://www.borland.com/br/products/jbuilder/); Dentre outras...

43
Maio 2006 Desenvolvimento Orientado a Objetos com Java

Recursos para aprendizado de Java Comunidades virtuais:


http://www.portaljava.com http://www.guj.com.br http://www.javafree.com.br

JUGs Grupos de Usurios Java


http://esjug.dev.java.net

Revistas:
Mundo Java; Java Magazine.

Livros.
Maio 2006 Desenvolvimento Orientado a Objetos com Java

44

Você também pode gostar