Programação Orientada a Objetos em Java
Prof. Giuliano Prado de Morais Giglio, M.Sc.
[email protected] http://www.giulianoti.tk
A Plataforma Java
Programação Orientada a Objetos em Java
OBJETIVOS DO CURSO
n Fornecer uma visão geral da linguagem Java e apresentar suas potencialidades.
n Capacitar os alunos a trabalhar com a linguagem de programação Java.
n Capacitar os alunos a trabalharem com os conceitos da Orientação a Objetos.
n Introduzir as principais fundamentos de
implementação de aplicações multiplataforma.
PLANO DE CURSO
1. Introdução a linguagem JAVA;
2. Estrutura da Linguagem;
3. Java e Orientação a Objetos;
4. Classes
ü Objetos (Instanciação) ü Atributos
ü Métodos ü Construtores ü Encapsulamento;
ü Sobrecarga de Métodos;
5. Classes especiais da API Java 6. Herança
ü Sobrescrita de métodos ü Polimorfismo
ü Classes abstratas
7. Coleção de Objetos
8. Tratamento de Exceções
Introdução a Linguagem Java
Prof. Giuliano Prado de Morais Giglio, M.Sc.
A Plataforma Java
Programação Orientada a
Objetos em Java
CONCEITOS DO JAVA
Java é:
–
Uma Linguagem de Programação – Um Ambiente de Desenvlvimento – Um Ambiente de AplicativosCONCEITOS DO JAVA
n J2SE
– Contém as classes principais da plataforma Java, e é chamado às vezes de Core Java Plataform.
n J2EE
– É um conjunto de tecnologias que fornecem APIs e um ambiente para desenvolvimento e execução de aplicações coorporativas.
n J2ME
– É o Java para pequenos dispositivos, desde palms até celulares.
INTRODUÇÃO AO JAVA
n
Vantagens de Java como Linguagem de Programação:
vOrientada a Objetos (O.O)
vcódigo sem bugs: mais fácil em Java que em C++
vdesalocação manual de memória não existe vindependência de plataforma!
JAVA
n Simples
üSintaxe similar a C / C++
üNão possui os recursos “perigosos”, desnecessários ou pouco usados:
üAritmética de ponteiros (*--pt = vet+5) üEstruturas (struct)
üDefinição de tipos (typedef) üPré-processamento (#define)
üLiberação explícita de memória (free)
üEliminação de 50% dos erros mais comuns üInterpretadores pequenos (256 Kb)
COLETOR DE LIXO
n
A Linguagem Java realiza a liberação de memória, que antes era responsabilidade do programador.
JAVA
n
Orientada a Objetos
• Utiliza o paradigma atual de objetos
n
Distribuída
• Implementa os protocolos da arquitetura TCP/IP, tais como: HTTP, SMTP, TCP, UDP, RTP, FTP, etc.
JAVA
n
Robusta
üPossui checagem em tempo de compilação e execução.
üGerenciamento automático de memória (“garbage collector” ).
üAusência de recursos “perigosos”.
üExtensiva verificação do código
INDEPENDÊNCIA DE PLATAFORMA
n
Robusta e Interpretada
üO fonte é compilado para um código intermediário (“bytecode”).
üO interpretador funciona como uma Máquina Virtual Java (JVM).
üOs bytecodes são executados por um interpretador (JVM) embora existam opções de compilação.
JVM - JAVA VIRTUAL MACHINE
n Cabe ao interpretador Java de cada plataforma de hardware específica assegurar a execução do código compilado para a JVM.
Compilação e
Interpretação
AMBIENTE DE
PROGRAMAÇÃO JAVA
n Java 2 Standard Developers Kit (J2SDK)
JVM mais todas as APIs, compilador e ferramentas (tudo o que você precisa para escrever programas Java)
JVM mais as APIs (tudo o que você precisa para executar programas Java)
Documentação das APIs (Application Programming Interface)
AMBIENTE DE
PROGRAMAÇÃO JAVA
n
Java 2 Standard Developers Kit (J2SDK ou simplesmente JDK)
ØDisponível para download no Site Java da Oracle (www.oracle.com/java/index.html) ØVersão atual (J2SDK 8.40)
ØPrincipais aplicativos:
§ javac (compilador)
§ java (interpretador)
§ applet viewer (visualizador de Applets)
AMBIENTE DE
PROGRAMAÇÃO JAVA
n
Documentação das APIs (Application Programming Interface)
ØDescreve quais são as classes definidas pela linguagem, o que fazem e como elas devem ser usadas nos programas.
ØDisponível para download ou on-line no Site Java da Oracle
(https://docs.oracle.com/javase/7/docs/api/)
AMBIENTE DE
PROGRAMAÇÃO JAVA
n
Existem editores (IDEs) específicos para o desenvolvimento de Aplicativos Java
vOracle NetBeans vEclipse
vBlueJ vJCreator vJDeveloper
vBorland JBuilder
INSTALAÇÃO
n Fazer o download do J2SDK.
n Instalar o arquivo jdk-8u40-windows-i586.exe
n Instalação no estilo “next > next > next”
n Somente após o passo seguinte que poderá ser instalado a IDE de sua preferência (JCreator ou BlueJ, etc)
n Recomendado incluir as seguintes variáveis de ambiente, porém, não obrigatório:
Ø JAVA_HOME:apontará para o diretório onde o J2SDK foi instalado = C:\Arquivos programas\Java\jdk1.6.23
Ø CLASSPATH:responsável por definir um caminho de pesquisa para as classes do J2SE
=;.JAVA_HOME
Ø PATH: responsável por definir um caminho de pesquisa para arquivos executáveis. Se está variável não for configurada, o processo de compilação dos programas feitos em Java somente poderá ser executado dentro da pasta “lib” do diretório de instalação do J2SE 6.0 JDK =C:\Arquivos programas\Java\jdk1.6.23\bin
PRIMEIRO PROGRAMA JAVA
Digite o programa “Teste.java”apresentado abaixo, utilizando o BlueJ
/*** Primeiro Programa Java ***/
class Teste {
public static void main(String arg[]) {
System.out.println(“Teste em Java”);
} }
PRIMEIRO PROGRAMA JAVA
AMBIENTE DE
PROGRAMAÇÃO JAVA
Executar:
Teste.class
Teste de Java
DETALHES IMPORTANTES
n
Programa fonte tem extensão ‘.java’
n
Programa compilado tem extensão
‘.class’
n
A linguagem é “case-sensitive”, letras maiúsculas são diferentes de letras minúsculas
n
Cada programa é uma classe
DETALHES IMPORTANTES
n Nome da classe no programa tem que ser igual ao nome do arquivo físico ‘.java’
n Sintaxe similar a linguagem C/C++
n As classes podem estar agrupadas em package
• Package é um subdiretório.
n As classes podem ser compactadas (zip ou jar)
ANATOMIA DO PROGRAMA
n
Comentários
n
Os comentários em Java seguem a mesma sintaxe de c.
Ø
/* texto */
Ø
// texto
Ø
/*** Primeiro Programa Java ***/
(JavaDocs)
n
O compilador ignora estas linhas
ANATOMIA DO PROGRAMA
n
Definição de Classe
n
É a unidade básica para uma linguagem OO como Java
n
class Nome { ...
}
n
class é a palavra reservada que marca
o início da declaração de uma classe.
ANATOMIA DO PROGRAMA
n
Delimitação de Blocos
Ø
Um bloco está sempre entre chaves { }
Ø
Em Java as instruções terminam em ponto-e-vírgula (;)
ANATOMIA DO PROGRAMA
Método main
n Toda aplicação Java, (exceto Applets e Servlets), deve possuir o método main.
public static void main (String args[ ]){
System.out.println("Teste em Java!");
}
n O método main indica o início de
execução de qualquer programa Java.
ANATOMIA DO PROGRAMA
Argumentos do Método main
Ø public - é um qualificador do método que indica que este é acessível externamente a esta classe.
Ø static - é um outro qualificador que especifica o método como sendo um método de classe.
Ø void - indica que não existe retorno a este método.
Ø main - é o nome do método.
Ø String args[ ] - Armazena valores passados por linha de comando.
ANATOMIA DO PROGRAMA
n
System.out.println(“Teste em Java”);
üEscreve na tela o conteúdo nos parêntesis.
üChamada do método println para o atributo out da classe System.
üO argumento (“...”) é do tipo String.
ANATOMIA DO PROGRAMA
n
System.out.println (sequência de escape)
§ \n (nova linha)
§ \t (tabulação horizontal)
§ \r (retorno de carro)
§ \\ (barra invertida)
§ \” (aspas duplas)
ESTRUTURAS DE PROGRAMAÇÃO
n
Identificadores
ØNomeiam variáveis, funções, classes e objetos
ØPodem conter letras e/ou dígitos, “_” e “$”
ØNão podem ser iniciados por dígito ØNão podem ser palavras reservadas ØNão tem tamanho máximo
ESTRUTURAS DE PROGRAMAÇÃO
VÁLIDOS
n
Nome
n
NumDepen
n
total_geral
n
NOME
INVÁLIDOS
n
1prova
n
total geral
ESTRUTURAS DE
PROGRAMAÇÃO
ESTRUTURAS DE PROGRAMAÇÃO
n
Variáveis
n
Inicialização padrão Java
• variáveis numéricas com zero
• variáveis booleanas com false
• outras variáveis com null
ESTRUTURAS DE
PROGRAMAÇÃO
ESTRUTURAS DE PROGRAMAÇÃO
n
Inteiro
byte index = 50;
short soma = 2000;
int num carros = 5;
long valor = 0XDADAL;
ESTRUTURAS DE PROGRAMAÇÃO
n
Tipos Ponto Flutante (Real)
• float 32 bits
• double 64 bits
n
– Representações:
• 3.14
• 6.02E23
• 2.718F
• 123.4E+306D
float pi = 3.1415f;
double pi = 3.1415;
OPERADORES
n
Atenção (programadores C/C++):
• int i, j;
• float r;
• i = r / j; // ERADO!
• i = (int) r / j; // OK!
ESTRUTURAS DE PROGRAMAÇÃO
n
Declarações e atribuições de variáveis
• As declarações podem ser exibidas em qualquer posição do código-fonte.
int x, y;
float z = 3.144f;
double w = 3.1415;
boolean verdade = true;
char c, d;
c = 'A';
d = '\u0013';
x = 6;
y = 1000;
Exemplo de utilização de float, double e int
Fazer o exercício 01 da lista:
Lista_Pratica_Intro_Java.pdf disponível no site da disciplina.
TIPOS DE DADOS
Texto
n char: representa um caracter Unicode de 16 bits (exemplos: ‘a’, ‘M’, ‘\t’, ‘\u02B1’)
– retrocesso – tab
– avanço de linha – retorno de carro – aspas
– apóstrofo – barra invertida
• \b
• \t
• \n
• \r
• \”
• \’
• \\
TIPOS DE DADOS
Texto
n String: representa uma seqüência de caracteres
String frase;
frase = “Ordem e Progresso”; char opcao;
opcao = 'S';
opcao = 'N';
TIPOS DE DADOS
n boolean: representa somente dois valores:
true (verdadeiro) e false (falso)
booolean achou;
achou = false;
OPERADORES
n
Aritméticos
• Soma ( + )
• Subtração ( - )
• Multiplicação ( * )
• Divisão ( / )
• Resto ( % )
n
Relacionais
• <
• >
• <=
• >=
• ==
• !=
• !
OPERADORES
n
Lógicos
• Junção de expressões: && (or), || (and)
• Comparação de objetos: instanceof()
OPERADORES
n
Considere um operador @ qualquer
n
Expressões do tipo X = X @ Z podem ser substituídas por X @= Z
x = x + 3 x += 3
x = x * ( 9 + y ) x *= ( 9 + y )
OPERADORES
n
Atenção (programadores C/C++):
• O operador + não é apenas aritmético (por ex. pode ser utilizado para inicialização e concatenação de strings)
• Existe o tipo booleano, logo os operadores relacionais e lógicos NÃO geram inteiros
• Não há conversões automáticas (por ex.
real para inteiro)
CONVERSÃO DE TIPOS
n
Exemplos:
STRING ⇒ VALOR NUMÉRICO
String str = "34";
int num_int = Integer.parseInt(str);
float num_float = Float.parseFloat(str);
double num_double = Double.parseDouble(str);
VALOR NUMÉRICO ⇒ STRING
Integer.toString(num_int);
String valor_str = Float.toString(num_float);
Double.toString(num_double);
Estruturas Condicionais
n
Estrutura de Decisão - If / Else
if (expressão booleana)
{ instrução ou bloco de comandos } else
{ instrução ou bloco de comandos }
if (cont >= 0) {
System.out.println(“Erro !!!”);
} else {
System.out.println(“Ok !”);
}
Estruturas Condicionais
n Estrutura de Decisão - switch
switch (expressão short, int, byte ou char) {
case expressão2: comandos;
break;
case expressão3: comandos;
break;
default: comandos;
break;
}
Estruturas Condicionais
n Estrutura de Decisão - switch
switch (opcao) {
case 0:
valor = a + b; break;
case 2:
valor = (a * b) - c; break;
default:
valor = a; break;
}
n A instrução break (opcional) impede que o fluxo de execução continue pelas opções seguintes
n A cláusula default é opcional
Estruturas de Repetição
n
Estrutura de Repetição – for
for (expr_inicial; expr_booleana; expr_increm) { bloco de comandos }
for (int x=0; x<10; x++) {
System.out.println(" Valor do X : " + x);
}
Estruturas de Repetição
n
Estrutura de Repetição - while
while (expr_booleana) { bloco de comandos }
int cont = 0
while (cont < 100) {
System.out.println(" contando " + cont);
cont++;
}
Estruturas de Repetição
n
Estrutura de Repetição - do while
do
{ bloco de comandos } while (expr_booleana)
int x = 0;
do {
x++;
} while (x <10);
VETORES(Arrays)
n Declaração
• Podem ser declarados arrays de quaisquer dos tipos através dos símbolos “[” e “]”.
• A declaração não cria o array, isto é, não aloca memória. Isso é feito pela instrução new (arrays são objetos em Java).
char s[ ]; // declaração
s = new char[3]; // Criação
s[0] = ‘A’; s[1] = ‘B’; s[2] = ‘C’; // atribuição
VETORES(Arrays)
n
Declaração
• Os colchetes podem ser usados antes ou depois da variável.
• Exemplo:
üchar s[ ];
üchar [ ]s;
VETORES(Arrays)
n Declarando, criando e iniciando um array
n Em Java array é um objeto, mesmo quando é composto por tipos primitivos. Apenas a declaração não cria o objeto, sendo necessário o uso da palavra reservada new.
char s[ ] = {'A', 'B', 'C'};
// declaração, criação e incialização
int p[ ] = new int[5];
p[0] = 25;
p[1] = 32;
VETORES(Arrays)
n Arrays não podem ser dimensionados na definição:
n
Arrays não podem ser utilizados sem a criação:
int vector[5]; //ERRADO!
int vector[];
vector[0] = 4; //ERRADO!
VETORES(Arrays)
n
Para determinarmos o seu tamanho podemos usar o método length:
int lista [] = new int [10];
for (int j = 0; j < lista.length; j++) {
System.out.println(lista[j]);
}
VETORES(Matrizes)
n
Multi-dimensionais
int lista [] = new int [10];
int matriz [][] = new int [4][5];
matriz [0][0] = 300;
matriz [1][3] = 600;
For “aprimorado”
n
Esse for permite percorrer um array ou um enum
(ou ainda uma Collection – que só veremos láááá na frente)de forma mais simples
n
Definimos o tipo que é retornado pelo
array ou pelo enum, e pegamos a lista a
percorrer
Pra usar o for com array
public class TestaFor {
public static void main(String args[]) { int vet[] = {4,5,6,3,4,2,1};
for (int valor : vet) { System.out.println(valor);
} }
}
n Nesse exemplo, foi declarada uma variável de controle do FOR ( valor ) que receberá, cada elemento do vetor.
n Por isso ela foi criada inteira (pois os elementos do vetor são inteiros)
n Perceba que foi dada a ela o vetor (vet) que, em cada interação do FOR, dará um elemento à variável valor
n Nesse caso ( valor ) não é o índice e sim o elemento!