JAVA. e Orientação a Objetos



Documentos relacionados
CURSO DE PROGRAMAÇÃO EM JAVA

Programação de Computadores - I. Profª Beatriz Profº Israel

Linguagens de. Aula 02. Profa Cristiane Koehler

PROGRAMAÇÃO ORIENTADA A OBJETOS -TRATAMENTO DE EXCEÇÕES. Prof. Angelo Augusto Frozza, M.Sc. frozza@ifc-camboriu.edu.br

Curso Adonai QUESTÕES Disciplina Linguagem JAVA

2 Orientação a objetos na prática

Java. Marcio de Carvalho Victorino

Linguagem de Programação JAVA. Técnico em Informática Professora Michelle Nery

Aula 09 Introdução à Java. Disciplina: Fundamentos de Lógica e Algoritmos Prof. Bruno Gomes

FBV - Linguagem de Programação II. Um pouco sobre Java

Orientação a Objetos

Algoritmos I Aula 13 Java: Tipos básicos, variáveis, atribuições e expressões

Sintaxe Básica de Java Parte 1

Java Laboratório Aula 1. Divisões da Plataforma. Introdução a Plataforma Java. Visão geral da arquitetura da

Universidade da Beira Interior Cursos: Matemática /Informática e Ensino da Informática

Lógica de Programação

Especialização em desenvolvimento para web com interfaces ricas. Tratamento de exceções em Java Prof. Fabrízzio A. A. M. N. Soares

Prof. Esp. Adriano Carvalho

CONVENÇÃO DE CÓDIGO JAVA

AULA Uma linguagem de programação orientada a objetos

Introdução a Java. Hélder Nunes

Introdução à Linguagem Java

CONCEITOS DE LINGUAGEM DE PROGRAMAÇÃO CARACTERÍSTICAS. João Gabriel Ganem Barbosa

Programação Orientada a Objetos

Aula 2. Objetivos. Encapsulamento na linguagem Java; Utilizando a referência this.

Desenvolvimento Web TCC Turma A-1

Algoritmos e Programação Estruturada

Um pouco do Java. Prof. Eduardo

JSP - ORIENTADO A OBJETOS

ARRAYS. Um array é um OBJETO que referencia (aponta) mais de um objeto ou armazena mais de um dado primitivo.

Introdução à Programação

A Linguagem Java. Alberto Costa Neto DComp - UFS

Programação de Computadores II TCC Turma A-1

Resumo da Matéria de Linguagem de Programação. Linguagem C

Aula 2. Objetivos Conceitos; Instalação do Text Pad; Entendendo o código java do AloMundo1 Codificação do AloMundo2,AloMundo3 e AloMundo4.

JavaScript 2.0X X

Java - Introdução. Professor: Vilson Heck Junior. vilson.junior@ifsc.edu.br

Algoritmos em Javascript

Orientação a Objetos em Java. Leonardo Gresta Paulino Murta leomurta@ic.uff.br

Java 2 Standard Edition Como criar classes e objetos

NOVIDADES DO JAVA PARA PROGRAMADORES C

OPERADORES E ESTRUTURAS DE CONTROLE

Guia de Fatores de Qualidade de OO e Java

Prototype, um Design Patterns de Criação

Curso: Ciência da Computação Disciplina: Construção de Compiladores Período: Prof. Dr. Raimundo Moura

Sintaxe Geral Tipos de Dados. Prof. Angelo Augusto Frozza, M.Sc.

Algoritmia e Programação APROG. Linguagem JAVA. Básico. Nelson Freire (ISEP DEI-APROG 2012/13) 1/31

Sobre o Professor Dr. Sylvio Barbon Junior

Técnicas de Programação II

JAVA. Introdução. Marcio de Carvalho Victorino. Page 1 1/40 2/40

Programação WEB I Estruturas de controle e repetição

Curso de Java. Orientação a objetos e a Linguagem JAVA. TodososdireitosreservadosKlais

2. OPERADORES ALGORITMOS, FLUXOGRAMAS E PROGRAMAS FUNÇÕES... 10

EMENTA DO CURSO. Tópicos:

UNIVERSIDADE FEDERAL DO PARANÁ

AULA 4 VISÃO BÁSICA DE CLASSES EM PHP

Linguagem de Programação Introdução a Linguagem Java

Orientação a Objetos com Java

Orientação a Objetos com Java

Reuso com Herança a e Composiçã

POO Programação Orientada a Objetos. Classes em Java

PROGRAMAÇÃO ESTRUTURADA. CC 2º Período

2 echo "PHP e outros.";

Primeiro programa em Java (compilação e execução)

Programação Orientada a Objetos em Java

Módulo 06 Desenho de Classes

Java Como Programar, 8/E

Programação online em Java

LP II Estrutura de Dados. Introdução e Linguagem C. Prof. José Honorato F. Nunes honorato.nunes@ifbaiano.bonfim.edu.br

Criar a classe Aula.java com o seguinte código: Compilar e Executar

Programação por Objectos. Java

DEFINIÇÃO DE MÉTODOS

insfcanceof new public switch transient while byte continue extends for int null

Componentes da linguagem C++

INTRODUÇÃO AO JAVA PARA PROGRAMADORES C

Lista de Contas: Assinatura. Lista de Contas. Listas de Contas: Descrição. Listas de Contas: Descrição. Listas de Contas: Descrição

A Linguagem Algorítmica Estrutura de Repetição. Ex. 2

Tutorial de instalação do Java 7 no Windows 7.

Projeto de Software Orientado a Objeto

Universidade da Beira Interior Cursos: Engenharia Informática, Matemática /Informática e Ensino da Informática

Objetivos: Entender o funcionamento dos programas Java via linha de comando

3 Classes e instanciação de objectos (em Java)

Programação por Objectos. Java

Introdução à Linguagem

Desenvolvendo Websites com PHP

O código JavaScript deve ser colocado entre tags de comentário para ficar escondido no caso de navegadores antigos que não reconhecem a linguagem.

Bacharelado em Ciência e Tecnologia Processamento da Informação. Equivalência Portugol Java. Linguagem Java

Programação Básica em Arduino Aula 2

Unidade IV: Ponteiros, Referências e Arrays

Programação de Computadores - I. Profª Beatriz Profº Israel

Fundamentos de Java. Prof. Marcelo Cohen. 1. Histórico

Os objetivos indicados aplicam-se a duas linguagens de programação: C e PHP

Algoritmos e Programação

Desenvolvimento OO com Java Orientação a objetos básica

Programação Orientada a Objetos Prof. Rone Ilídio UFSJ/CAP

Java Básico. Aula 1 por Thalles Cezar

Transcrição:

JAVA e Orientação a Objetos

Agenda Tecnologia Java JVM, Java e suas versões Java - Instalação e configuração Fundamentos Orientação a Objetos Classe Object Tratamento de erros Wrapper classes Pacotes JDBC 2

Agenda Como funciona o Ambiente WEB Conceitos básicos de HTML Práticas Inicias / Servlets Diretivas JSP e Objetos implícitos JavaBeans Conectividade com Banco de Dados Projeto completo em JSP: Definição, Criação dos Objetos e Menu Principal Projeto completo em JSP: Cadastro Projeto completo em JSP: Consultas e Relatórios Diversos exemplos práticos com JSP 3

O que é Java? Java não é apenas uma linguagem de programação, é uma plataforma, introduzida no mercado em 1995 pela Sun Microsystems. Porque Java está tão em evidência atualmente? Porque é o resultado de um trabalho consistente de pesquisa e desenvolvimento de mais do que uma simples linguagem de programação, mas de todo um ambiente de desenvolvimento e execução de programas, orientado a objetos, portável e seguro. 4

O que é Java? É sempre importante destacar que Java e Javascript são linguagens distintas. Javascript é uma linguagem elaborada pela Netscape que geralmente está embutida em códigos HTML. Java é uma linguagem completa e distinta do Javascript. O maior erro foi dar o nome parecido as duas. 5

Por que Java? É uma linguagem completa (e não apenas uma linguagem para Internet) Não é um produto, é uma especificação É totalmente Orientada a Objetos (o que permite maior legibilidade do código, bem como grande reuso do mesmo) É uma linguagem simples se comparada com outras É multiplataforma (portável) É segura e robusta É multi-tarefa por padrão 6

Por que Java? Vasta biblioteca disponível por padrão Vasta biblioteca disponível na Internet Padrão conciso, não muda radicalmente há cada nova versão, mantendo a compatibilidade com a versão anterior Com a mesma linguagem você pode programar aplicações stand-alone, aplicações client-server, aplicações para dispositivos móveis (celulares, Palms, javacards, etc) e aplicações para Internet (applets, JSP e servlets) 7

Principais usos Área bancária Serviços web distribuídos Biotecnologia Jogos Processamento de imagens Sistemas legados Sistemas embutidos 8

Histórico Início dos anos 90 A Sun propõe uma linguagem para uso em qualquer dispositivo eletrônico. Tal linguagem deveria ser: Simples, porém completa Robusta Portável Compacta Independente de Plataforma Em 1991, a Linguagem Oak é projetada por James Gosling e a equipe Green Já em 1993, com a explosão da Internet, o projeto foi direcionado à aplicações voltadas para esta. Em 1994, devido a problemas de patente, a linguagem Oak passa a se chamar Java (nome de uma ilha asiática que produz um dos melhores cafés do mundo) discovery.com 9

Princípios da Computação O software é responsável por controlar o hardware, e nada mais é do que um conjunto de instruções na linguagem em que o computador entende (0s e 1s) Tipos de Software: Sistema Operacional Aplicações Stand-Alone Aplicações Cliente-Servidor Aplicações para Web 10

Linguagens de Programação As linguagens de programação agem como tradutoras. Elas traduzem uma linguagem próxima da linguagem humana para a linguagem que os computadores entendem (0s e 1s). Com a evolução das linguagens, elas foram distanciando-se cada vez mais da linguagem de máquina e aproximando-se da linguagem natural. Evolução das linguagens: Linguagem de Máquina Linguagens Não-Estruturadas Linguagens Estruturadas (Ansi C, Pascal) Linguagens Orientadas a Objeto (Small Talk, C++, Java) 11

Linguagens de Programação As linguagens de programação ainda diferem quanto a serem COMPILADAS ou INTERPRETADAS. Linguagens Geração do Programa Execução do Programa Interpretada Escrever o código fonte O S.O. precisa do Interpretador da linguagem que vai ler o programa Compilada Escrever o código fonte e compilar/linkeditar (gerar executável) O S.O. carrega direto o programa As linguagens compiladas tem a vantagem de possuir execução mais rápida, porém sempre tem-se o trabalho de compilar o código após sua escrita. 12

Linguagens de Programação Java utiliza uma técnica intermediária. Um código-fonte Java gera um código intermediário chamado BYTE-CODE. Este código é interpretado pela JAVA VIRTUAL MACHINE, que traduz o byte-code para o S.O. Linguagens Interpretada Java Compilada Geração do Programa Escrever o código fonte Escrever o código fonte e compilar (gerar byte code) Escrever o código fonte e compilar/linkeditar (gerar executável) Execução do Programa O S.O. precisa do Interpretador da linguagem que vai ler o programa O S.O. precisa da JVM para interpretar o byte-code O S.O. carrega direto o programa Este processo é mais rápido que uma linguagem puramente interpretada, porém mais lento que uma linguagem compilada. A vantagem é a portabilidade, uma vez que existe JVM para vários S.Os. 13

Princípios da Programação Em Orientação a Objetos funções são chamadas de métodos variáveis são chamadas de atributos É mais natural quando definimos qualquer objetos pensarmos em termos de atributos do que pensarmos em variáveis, embora na prática sejam a mesma coisa 14

Por que Orientação a Objetos? A idéia principal da Orientação a Objetos é diminuir o abismo entre o mundo real e a modelagem que usamos na programação Vamos supor como exemplo um simulador, onde devemos descrever uma pessoa comum: essa pessoa tem um nome, anda, fala. Dirije um carro. aqui identificamos dois objetos: a pessoa o carro 15

Por que Orientação a Objetos? Na Orientação a Objetos, diretamente já definiríamos em nosso programa: um objeto Pessoa e um objeto Carro. Em qualquer paradigma de programação, em qualquer tipo de programa, de uma forma ou de outra sempre utilizamos objetos. 16

Por que Orientação a Objetos? Numa linguagem procedural agrupamos blocos de códigos para uma determinada tarefa em funções. Estas funções são colocadas em uma biblioteca independente, o que geralmente não garante organização, e torna muito difícil a reutilização do código. Numa possível aplicação bancária teríamos, por exemplo as seguintes funções agrupadas numa biblioteca: ObterExtrato, TransferirDinheiro, AbrirBancoDados, EnviarParaImpressora, SincronizarAgencias, ImprimirNaTela, ComunicarOutroBanco, ComunicarOutraAgencia 17

Por que Orientação a Objetos? Numa linguagem orientada a objetos tentaríamos primeiro definir cada Objeto do programa (Conta, Agência, Banco, Tela, Banco de Dados) e definir o que cada um destes Objetos faria. Conta Agência Banco Tela BancodeDados Extrato Sincronizar Comunicar Imprimir Abrir TransferirDinheiro Comunicar Fechar Além da organização mais natural, o código ficaria muito mais legível. É muito mais natural entender uma função com o nome de Conta.Extrato() do que uma função perdida no código com o nome ObterExtrato() ou então Obter_Extrato_Conta(). Mas o mais importante, são muitas novas características que a OO traz para a programação, dentre as principais: Herança, Polimorfismo e Encapsulamento, que serão visto adiante. Um Objeto é definido por uma CLASSE. 18

Por que Orientação a Objetos? A Orientação a Objetos não exclui a Programação Procedural. A OO engloba a PP, acrescentando muitas características poderosas e úteis a programação, poupando tempo e esforço do programador. Orientação a Objetos P. Procedural 19

Java e suas edições J2SE Java 2 Standard Edition Plataforma Java para computadores de mesa, com suas funções padrões. J2ME Java 2 Micro Edition Plataforma Java para dispositivos portáteis, como celulares, Palms, Javacards, etc. Possui um conjunto de funções menor do que o J2SE. J2EE Java 2 Enterprise Edition Plataforma Java para servidores e computadores de grande porte. Possui um conjunto de funções maior do que o J2EE, visando integração em rede, aplicações web, etc. 20

Java Virtual Machine Atualmente temos a JVM disponibilizada em diversas formas (JRE, Javacards, etc). A maioria dos navegadores também inclui ou suporta a JVM. Quando um programa é executado, a JVM é quem controla as instruções da CPU, registradores, o controle de pilhas, controle de garbage collector e área de memória. Garbage collector é automático, ou seja, a memória que não está mais em uso é desalocada automaticamente - ao contrário do C/C++ em que o programador é responsável por esta tarefa. 21

Java Virtual Machine A JVM implementa internamente a segurança. Por exemplo, ela não permite que applets executem códigos maliciosos, como apagar arquivos do computador. A JVM é quem carrega os arquivos.class (arquivos gerados pela compilação do código de um programa Java) para a memória class loader. Também é a JVM quem verifica a integridade de um arquivo.class 22

Java - Ferramentas necessárias Para rodar qualquer aplicativo Java: Java Virtual Machine Para desenvolver um aplicativo Java é preciso: Editor de texto para desenvolver e escrever o código Compilador e bibliotecas (SDK) para compilar o código JVM para testar e executar o código gerado Help (opcional) 23

Qual obter? Existem ambientes integrados (possuem tudo em um único produto) vendidos por terceiros, como: Borland Jbuilder Symantec Visual Café IBM WebSphere Kawa Um ambiente de desenvolvimento proporciona maior facilidade para a escrita do código, depuração e construção de telas gráficas. Iremos utilizar as ferramentas mais simples possíveis, gratuitas e fornecidas pela própria SUN. Existe ainda o ambiente integrado da Sun, o Java One (antigamente conhecido como Forte), disponível para Windows, Linux e Solaris. Porém é extremamente pesado! 24

JVM - Onde obter Somente a JVM: http://java.sun.com 25

SDK - Onde obter J2SE SDK (inclui JVM): http://java.sun.com 26

Help - Onde obter J2SE API Specification ONLINE: http://java.sun.com/j2se/1.4.1/docs/api/ 27

Help - Onde obter J2SE API Specification DOWNLOAD: http://java.sun.com/j2se/1.4/download.html 28

Editor de textos - Onde obter Qualquer editor de textos simples pode ser utilizado. O ideal é que tal editor apresente pelo menos o número das linhas em sua interface, o que facilitará a detecção de erros. Java JEdit (http://www.jedit.org) Windows Notepad / Wordpad Editpad Lite (http://www.editpadlite.com) Linux Vi / Emacs Gedit / Kedit 29

Instalação O ideal é que o diretório de instalação seja o sugerido pelo instalador, que irá criar um diretório logo acima do diretório raiz. No Windows, será algo do tipo: C:\jdk1.4\ No Linux e demais UNIX: /jdk1.4/ Embora nos dois sistemas existam diretórios específicos para a instalação de programas, a maioria dos programas que utiliza a JVM irá procurá-la neste diretório. Deixar o SDK neste diretório padrão poupará esforços com configurações adicionais de outros softwares que utilizem Java. 30

Configuração Variáveis de Ambiente Variáveis de ambiente são valores guardados pelo Sistema Operacional e usados por qualquer programa que precise usá-los. Como exemplo, vários programas que precisam usar um diretório temporário para criar arquivos perguntam ao Sistema Operacional o valor da variável de ambiente TEMP ou TMP. O Windows irá responder C:\windows\temp O Linux, por sua vez, /var/tmp 31

Configuração Variáveis de Ambiente O Java precisa de que duas variáveis de ambiente estejam corretamente configuradas: PATH e CLASSPATH PATH essa variável de ambiente informa o caminho (path em inglês) para vários programas poderem ser acessados diretamente, sem que seja preciso estar no diretório em que os mesmos foram instalados. CLASSPATH essa variável informa onde estão as classes utilizadas pelo Java para seu funcionamento. 32

Exercício 1. Fazer o download, e instalar o SDK da Sun. Utilizando os passos já descritos: Configurar o PATH Configurar o CLASSPATH Caso seja Win98, carregar o DOSKEY na inicialização do sistema. 33

Olá Mundo! Orientado a Objetos class HelloWorld { public static void main(string[] args) { Objeto1 meuobjeto = new Objeto1(); meuobjeto.imprimanatela(); } } class Objeto1 { public void imprimanatela() { System.out.println( Ola, mundo! ); } } 34

Exercício 1. Copiar separadamente o código Orientado a Objetos em dois arquivos de texto com o seguintes nomes: HelloWorld.java Objeto1.java Compilar o código digitando na linha de comando: javac HelloWorld.java Para chamar a linha de comando, clique no botão Iniciar, em seguida Programas, e finalmente clique em MS-DOS ou Prompt de Comando Executar o código e verificar se está correto: java HelloWorld 35

Importante! Don t panic! Raramente a compilação dá certo sem erros! Geralmente os programas apresentam erros de sintaxe. Isso é normal! 36

JAVAC E JAVA Utilizamos o comando JAVAC para chamar o compilador Java. Ele irá transformar o código fonte (arquivo com a extensão.java em bytecode (arquivo com a extensão.class). Utilizamos o comando JAVA para chamar a JVM, que irá interpretar o byte-code (arquivo.class). 37

Erros de compilação Durante a compilação, o compilador irá listar 1 ou mais erros (caso eles existam). Caso isso aconteça, devemos sempre olhar e corrigir sempre o primeiro erro desta lista. Um erro simples de sintaxe (por exemplo esquecer o ponto-e-vírgula ) pode fazer o compilador entender que existam vários outros erros. Após corrigir este erro, compilar de novo e verificar se existem outros. 38

Erros de compilação erros comuns Erros que externos ao código fonte javac' não é reconhecido como um comando interno ou externo, um programa operável ou um arquivo em lotes. java' não é reconhecido como um comando interno ou externo, um programa operável ou um arquivo em lotes. O PATH não está configurado corretamente e o sistema operacional não consegue achar o compilador e a jvm. Solução: configurar corretamente a variável de ambiente PATH. 39

Erros de compilação erros comuns error: cannot read: Teste.java 1 error O compilador não está achando o arquivo fonte. Possíveis causas: o nome foi digitado incorretamente o arquivo fonte não está no diretório atual o CLASSPATH não está configurado corretamente Soluções: verificar se o nome do arquivo foi digitado corretamente verificar se o arquivo está no diretório atual verificar se o CLASSPATH está configurado com o diretório atual (.) 40

Erros de compilação erros comuns Para localizarmos a maioria dos erros que pertencem ao código fonte, o compilador avisa em qual arquivo o erro está localizado, e em qual linha. Em seguida mostra qual o erro cometido. Erro no arquivo Teste.java Teste.java:4: ';' expected ^ 1 error Na linha 4 O compilador esperava (expected) achar um ponto-e-vírgula no final da linha O mesmo tipo de erro (<simbolo> expected) acontece quando no código está faltando algum símbolo de parênteses ou chaves. 41

Formato de uma classe class <nome> { int x; char c; Atributos do objeto funcao <nome>() { }... Métodos } 42

Fundamentos da Linguagem Java é sensível a letras maiúsculas e minúsculas (case-sensitive) Ex: maria Maria MAria MARIA Formatação livre de código Os dois exemplos abaixo produzem o mesmo efeito: x = 1 + 5; x = 1 + 5 ; 43

Fundamentos da Linguagem Ao final de cada comando é obrigatório o uso do ponto-e-vírgula Ex: x = 1 + 5; Blocos de código são colocados entre chaves int soma() { x = a + b; return x; } 44

Fundamentos da Linguagem Identificadores nomes de classes, variáveis e funções devem: iniciar com os seguintes caracteres: A até Z (maiúscula ou minúscula) _ (undescore) $ (cifrão) os próximos caracteres podem ser qualquer um dos acima e também números 45

Fundamentos da Linguagem Comentários são textos colocados dentro de um código fonte apenas como forma de identificar trechos do código, como um lembrete. No momento da compilação o compilador ignora os trechos que estão em comentário Java suporta os seguintes tipos de comentários Dentro de uma mesma linha (inline): // comentário Várias linhas (multi-line): /* comentário */ Multi-line com Javadoc: /** comentário */ Javadoc são comentários colocados em uma formatação específica dentro do código que depois podem ser extraídos em formato HTML, o que torna desnecessária a escrita da documentação externa. 46

Fundamentos da Linguagem Palavras reservadas palavras que não podem ser utilizadas como nome de variáveis, nome de classes, etc Em Java: abstract, boolean, break, byte, byvalue, case, catch, char, class, continue, default, do, double, else, extends, false, final, finally, float, for, goto, if, implements, import, instanceof, int, interface, long, native, new, null, package, private, protected, public, return, short, static, super, switch, synchronized, this, threadsafe, throw, transient, true, try, void e while 47

Fundamentos da Linguagem Um programa Java é composto por uma ou mais classes. Cada classe deve estar em um arquivo diferente (em princípio). Este arquivo deve ter o exatamente o mesmo nome da classe (inclusive maiúsculas e minúsculas) com a extensão.java 48

Fundamentos da Linguagem Uma aplicação stand-alone em Java precisa ter em sua classe principal um método também principal, que indica onde o programa começa. Este é o método main (principal em português) public static void main(string[] args) { } //inicialização A classe principal é a classe que será chamada pela JVM: java ClassePrincipal 49

Variáveis em Java Para declararmos uma variável, utilizamos a seguinte instrução: <tipo da variável> <nome da variável> Exemplo: int media; char teste; A variável também já pode ser inicializada durante sua declaração, o que sempre é um bom modo de programar. Exemplo: int media = 0; 50

Variáveis em Java Variáveis para números inteiros: Tipo byte -128 até +127 Variação Espaço em memória 1 byte short -32.768 até +32.767 2 bytes int long -2.147.483.648 até +2.147.483.637-922.337.203.685.475.808 até +922.337.203.685.475.807 4 bytes 8 bytes Obs: não temos o tipo unsigned como em C++ 51

Variáveis em Java Variáveis para números decimais (ou ponto flutuante): O Java possui 2 tipos de variáveis para números decimais. A diferença entre elas é a sua precisão. Tipo float Variação -3.4 x 10 38 até +3.4 x 10 38 Espaço em memória 4 bytes double -1.7 x 10 308 até +1.7 x 10 308 8 bytes 52

Variáveis em Java Tipo caracter Diferentemente de outras linguagens, o Java utiliza o padrão Unicode ao invés do padrão ASCII. Isso torna possível o suporte a línguas como árabe e japonês. Isso faz com que o tipo caracter em Java ocupe 2 bytes ao invés de 1 byte como em outras linguagens. Exemplo: char meucaracter = 'a'; 53

Variáveis em Java Tipos booleanos Utilizados para expressões lógicas, ocupam 1 bit, e possuem somente dois valores: true false Exemplo: boolean controle = false; 54

Variáveis em Java Todas as variáveis vistas até agora são ditas primitivas. Ou seja, não é preciso declarar nenhum objeto para utilizá-las. O tipo String (cadeia de caracteres) embora seja uma classe é declarado como se fosse um tipo primitivo: String nome = Joao da Silva ; Por ser uma classe, temos vários métodos já embutidas (que serão vistos adiante). Por ser um objeto, deve ser comparada usando o método equals. Exemplo: if(nome.equals( Joao da Silva )) System.out.println( iguais ); 55

Literais São os valores propriamente ditos, escritos no código Exemplo: meuint = 10; nome = "Maria"; meuint é uma variável do tipo int, e nome é uma String 10 é uma literal "Maria" é uma literal 56

Literais Literais para Inteiros Toda literal inteira será tratada como: int caso o valor esteja dentro da capacidade do tipo int long caso seja maior que a capacidade do int Supondo as duas linhas de código abaixo: se (x > 10) se (x > 2147483638) A literal 10 será tratada como tipo int A literal 2147483638 será tratada como tipo long 57

Literais Para forçar um literal int a ser tratado como long podemos utilizar os modificadores de tipo: Exemplo de código: se (x > (long) 10) O mesmo serve para forçarmos uma literal int a ser tratada como byte ou short: byte x = (byte) 10; 58

Literais Números com ponto flutuante todos os números com ponto flutuante são tratados como double para utilizarmos o tipo float devemos utilizar os modificadores de tipo 59

Literais Booleanos somente dois valores possíveis true false String deve estar entre aspas duplas Exemplo de linha de código: String nome = "Maria"; Literais char deve estar entre aspas simples Exemplo de linha de código: char c = 'a'; 60

Literais Para caracteres não expressáveis: '\t' '\b' '\n' '\r' = tab = backspace = nova linha = voltar ao começo da linha (retorno do carro) Exemplo de linha de código: System.out.println("Hoje o dia esta com\n Sol"); Sairia na tela como: Hoje o dia esta com Sol 61

Constantes Constantes são variáveis que possuem um valor fixo, que não pode ser alterado. Geralmente usamos constantes no lugar de uma literal que é muito usada no código. Para declarar uma constante devemos utilizar o modificador de tipo final. Para facilitar a identificação, as constantes devem ser declaradas em letra maiúscula. Exemplo: final int MEDIA = 5; 62

Convenções Convenções utilizadas Nome de Classes: primeiro caracter de todas as palavras maiúsculo e o restante minúsculo. Ex.: HelloWorld, MeuProgramaEmJava, BancoDeDados Variáveis e funções: idem as classes, porém o primeiro caracter é minúsculo. Ex.: minhafuncao, minhavariavelint Constantes: Tudo maiúsculo Tabulações: devem ser abertas após a chave de abertura { e retroceder após a chave de fechamento } 63

Escopo de Variáveis Escopo de uma variável define em qual lugar podemos acessar tal variável. Uma variável que está definida dentro de um método não pode ser acessada fora deste método. Variáveis dentro de um método são conhecidas como variáveis locais. Variáveis locais devem ter um valor de inicialização, senão o compilador acusará um erro. 64

Escopo de Variáveis Podemos ter dentro de um bloco de código outro bloco de código. Exemplo: { } int x = 0; x = 1; { // novo bloco de código int y = 0; } y = 3; y = 2; x = 2; Acesso normal as variáveis do escopo Acesso normal as variáveis do escopo principal ERRO: a variável não existe mais 65

Operadores Em Java temos os seguintes operadores: + Soma - Subtração / Divisão * Multiplicação % Resto da Divisão ++ Auto-incremento pré e pós-fixado -- Auto-decremento pré e pós-fixado op= Pode ser utilizado com qualquer operador Exemplo: var = var + 1; Pode ser representado como: var += 1; 66

Operadores - Precedência No exemplo abaixo: x = 10 + r * 4 / 11-5; Qual operação seria realizada primeiro? Java possui uma tabela de precedência que indica qual operação seria realizada primeiro. Um bom código ignora esta tabela e coloca parêntesis adequadamente, o que melhora a sua legibilidade: x = ((10 + (r * 4)) / 11) - 5; 67

Exercício 1. Criar uma classe chamada Calculo, que contenha um método chamado expressao (void expressao()) que calcule a seguinte expressão e atribua o resultado a uma variável chamada Result: 87 + ((156 * 2) / 4) Imprimir na tela o resultado utilizando a função System.out.println(); Criar uma classe chamada Principal, e dentro dela criar o método principal da seguinte forma: public static void main(string[] args){ Calculo calc = new Calculo(); calc.expressao(); } Execute o código. Altere o código para que 2 seja dividido por 4 antes de ser multiplicado por 156. 68

Expressões Condicionais Uma expressão condicional serve para controlar o fluxo do nosso programa Exemplo: Poderíamos imaginar um programa que calcule a média dos alunos de uma sala e diga se o mesmo foi aprovado ou não: se (notaaluno > 5) imprimanatela( Aprovado! ); senão imprimanatela( Reprovado! ); Formato no Java: if (<condicao>) <expressao1> else <expressao2> Onde o uso do else não é obrigatório 69

Expressões Condicionais if (<condicao>) <expressao1> else <expressao2> A condição da sentença acima geralmente envolve Operadores Lógicos, que em Java são: == é igual if (i == 1)!= diferente if (i!= 1) < menor <= menor ou igual > maior >= maior ou igual Operadores boleanos: && e if ((i == 1) && (g >= 6)) ou! negação if (!(i < 1)) Java também admite if na forma ternária: Imprima( (media > 5)? "Aprovado" : "Reprovado" ) 70

Exercício 1. Criar uma classe chamada Bissexto, com um método chamado verifica que irá utilizar expressão condicional para verificar se um ano é bissexto ou não: Um ano é bissexto caso seu valor seja divisível por 4. Copiar o código abaixo. Preencher o conteúdo do if. class Bissexto { void verifica() { int ano = 1999; if () System.out.println( Ano + ano + eh bissexto ); else System.out.println( Ano + ano + nao eh bissexto ); } } Criar uma classe chamada UsaBissexto, que irá conter um método main, e dentro deste método chamar o método verifica. 71

Expressões Condicionais Considere o seguinte código com if: int diasemana = 2; if (diasemana==1) { System.out.println( Domingo"); } else if (diasemana==2) { System.out.println( Segunda-feira"); } else if (diasemana==3) { System.out.println( Terça-feira"); } else if (diasemana==4) { System.out.println( Quarta-feira"); } else if (diasemana==5) { System.out.println( Quinta-feira"); } else if (diasemana==6) { System.out.println( Sexta-feira"); } else { System.out.println( Sábado"); } 72

Expressões Condicionais Uma outra forma de expressão condicional é o switch, que permite executar expressões condicionalmente baseadas em um valor inteiro. int diasemana = 7; switch (diasemana) { case 1: System.out.println("Domingo"); break; case 2: System.out.println("Segunda-Feira"); break; case 3: System.out.println("Terça-Feira"); break; case 4: System.out.println("Quarta-Feira"); break; case 5: System.out.println("Quinta-Feira"); break; case 6: System.out.println("Sexta-Feira"); break; case 7: System.out.println("Sábado"); break; } O switch executa a expressão case correspondente ao valor de sua expressão (nesse caso, diasemana). 73

Expressões Condicionais No fim de cada case, se coloca um break para terminar o switch, e o programa continuar a partir do fim do bloco do switch. Sem o break, o controle passa aos case subseqüentes. int diasemana = 2; switch (diasemana) { case 2: System.out.println("Segunda é um dia chato."); case 3: case 4: case 5: case 6: System.out.println("É dia de trabalho!"); break; case 1: case 7: System.out.println("É dia de dormir!"); break; default: System.out.println("Dia inválido!"); } Se não houver um case correspondente, é executada a expressão default caso esta exista, senão nada é executado. 74

Laços Laços são códigos de bloco que queremos repetir várias vezes. Por exemplo, poderíamos querer que nosso programa calcule todas as médias dos alunos enquanto ainda houverem alunos sem notas calculadas. Isso torna o código mais legível e muito menor do que ficar reescrevendo o mesmo código várias vezes para cada aluno. 75

Laços Como na maioria das linguagens, em Java temos 3 tipos de laços: while Em português, ENQUANTO. Executará o bloco de código apenas se uma condição for verdadeira. do-while Semelhante ao while, com a diferença de que executará o bloco de código pelo menos uma vez. for Executará o bloco de código um número de vezes determinado por uma variável. 76

Laços Sintaxe: while (<condicao>) <codigo> do <codigo> while (<condicao>); int i = 0; while (i < 5) { System.out.println(i); i++; } int i = 0; do { System.out.println(i); i++; } while(i < 5); for (<valor inicial>; <condicao>; <atualizacao>) <codigo> for (int i = 0; i < 5; i++) { System.out.println(i); System.out.println("Teste de laço"); } 77

Exercício 1. Escrever um programa que utilize while para inverter um número inteiro. Utilizar a seguinte estrutura class Inverte{ } void invertenumero(){ int numero=123456789; int numeroinvertido=0; while(<condicao>){ //Logica para inversao do numero } System.out.println(numeroInvertido); } 78

Ramificações Os comandos de ramificação permitem um controle mais avançado do fluxo nos laços. O Java suporta 3 comandos: break Permite sair no meio de um laço (break significa quebrar) continue Permite pular para a próxima iteração de um laço return Permite terminar a execução de um método 79

Ramificações O comando break é utilizado para se sair de um laço. String palavra = "guarda-chuva"; boolean achou = false; for (int i = 0; i < palavra.length(); i++) { if (palavra.charat(i) == '-') { achou = true; break; } } if (achou) System.out.println("Palavra composta"); else System.out.println("Palavra simples"); 80

Ramificações O comando break pode ser utilizado com um label (rótulo), para sair de laços aninhados. String[] palavras = {"disco-voador", "ufo"}; boolean achou = false; busca: for (int j = 0; j < palavras.length; j++) { for (int i = 0; i < palavras[j].length(); i++) { if (palavras[j].charat(i) == '-') { achou = true; break busca; } } } if (achou) System.out.println("Possui palavra composta"); else System.out.println("Nao possui palavras comp."); 81

Ramificações O comando return é utilizado para sair de uma função, retornando um valor (quando o tipo da função não for void). Quando usado antes do fim da função, return a interrompe, e não executa o resto. O controle volta para a linha seguinte à que chamou a função. 82

Classes Objetos são definidos através de classes. Objetos possuem características e funcionalidades, o que em OO chamamos de atributos e métodos. Uma aplicação é formada por um conjunto de classes que desenvolvemos ou já estão desenvolvidas. Cada classe deve estar em um arquivo diferente, a princípio. 83

Classes Uma aplicação stand-alone deve conter um método main. A classe que contiver o método main deverá ser a classe compilada pelo javac e depois chamada pela JVM. Quando o compilador encontrar uma classe que referencie outra, primeiro ele procura um arquivo.java da classe referenciada. Caso não haja, o compilador procura o arquivo compilado (.class). E, caso o.class não seja achado, o compilador acusará erro. 84

Classes e atributos Como exemplo vamos definir um objeto Carro através da classe Carro com os seguintes atributos: class Carro { } String modelo; String combustivel; boolean arcondicionado; Para utilizarmos esta classe, ou seja, criarmos um objeto carro, devemos declarar na classe que irá utilizar o objeto Carro (em nosso caso, é a classe UsaCarro) a seguinte instrução: Carro <nome do objeto> = new Carro(); Exemplo: Carro fusca = new Carro(); 85

Classes e atributos Utilizar um objeto é semelhante a declararmos uma variável dentro do código. Criar um objeto de um determinado tipo dentro do código chama-se instanciar um objeto. Em nosso exemplo, instanciamos um objeto do tipo Carro. Para acessarmos as variáveis (ou atributos) dentro da classe UsaCarro utilizamos o nome do objeto seguido de ponto (.) e o nome da variável. Em nosso exemplo: fusca.modelo = 2004"; 86