Вы находитесь на странице: 1из 119

Conceitos e Fundamentos de

Linguagem Java

Fundamentos

2014 OFICINA DO FUTURO Todos os direitos reservados

Pg. 1

Aviso de Propriedade Intelectual


Todo o contedo desta obra intelectual de propriedade intelectual nica e exclusiva do Instituto Eldorado, IBM e Flextronics. Esta obra intelectual destina-se
nica e exclusivamente a ser utilizada por instrutores e alunos de projetos cientficos, culturais e educacionais que o Instituto Eldorado, IBM e Flextronics
promovam, em conjunto ou separados, e em consonncia com o objetivo desses projetos. Qualquer outra forma de uso estritamente proibida.
Dependem de prvia e expressa autorizao dos proprietrios, por escrito, usos que impliquem em:
a) Reproduo parcial ou integral desta obra intelectual;
b) Edio desta obra intelectual;
c) Adaptao e quaisquer outras transformaes desta obra intelectual;
d) Traduo desta obra intelectual para qualquer idioma;
e) Incluso desta obra intelectual em fonograma ou produo audiovisual;
f) Distribuio desta obra intelectual, independentemente do meio utilizado;
g) A incluso desta obra em base de dados, sistema de armazenamento em computador, microfilme e demais formas de arquivamento do gnero.
Licena de uso especial para instrutores: a fim de disseminar o conhecimento contido nesta obra intelectual a terceiros, os instrutores que fizerem parte dos
Projetos realizados pelo Instituto Eldorado, IBM e Flextronics tero direito a uma licena de uso especial, nos seguintes termos:
a) A licena concedida por prazo indeterminado e em abrangncia mundial.
b) A licena permite aos instrutores utilizar o contedo desta obra intelectual, no todo ou em parte, nas suas apresentaes e aulas expositivas, sncronas ou
assncronas, tenham elas ou no finalidade lucrativa.
c) A licena no permite a excluso de quaisquer avisos de propriedade intelectual, direitos autorais, copyright e afins.
d) A licena no permite aos instrutores modificar o contedo desta obra intelectual, no todo ou em parte, qualquer que seja o motivo.
e) A licena no permite:
i. A edio desta obra intelectual;
ii. A adaptao ou transformao desta obra intelectual;
iii. A traduo desta obra intelectual para qualquer idioma;
iv. A incluso desta obra intelectual em fonograma ou produo audiovisual;
v. A distribuio desta obra intelectual, independentemente do meio utilizado;
vi. A incluso desta obra em base de dados, sistema de armazenamento em computador, microfilme e demais formas de arquivamento do gnero, para
propsitos diversos daqueles autorizados pela licena.
f) A licena no pode ser transferida a terceiros.
g) Sempre que houver o uso desta obra intelectual, dever ser feita uma meno ao Projeto pelo qual o instrutor obteve o seu contedo
h) Sempre que houver o uso desta obra intelectual, dever ser feita uma meno aos direitos de propriedade intelectual do Instituto Eldorado, IBM e
Flextronics.
2014 OFICINA DO FUTURO Todos os direitos reservados

Pg. 2

Ambiente de desenvolvimento Java

Para desenvolver aplicaes Java, ns precisamos prepara


um ambiente para:
Editar o cdigo fonte
Compilar e empacotar classes
Executar e debugar componentes
Trabalhar em grupo controlando as verses

2014 OFICINA DO FUTURO Todos os direitos reservados

Pg. 3

Eclipse

Ambiente de desenvolvimento Java


Java Platform (JDK) 8u11

2014 OFICINA DO FUTURO Todos os direitos reservados

Pg. 4

Java IDEs

Exemplos das principais IDEs:

Eclipse

NetBeans

2014 OFICINA DO FUTURO Todos os direitos reservados

Pg. 5

Como obter o Eclipse?

Eclipse um ambiente de desenvolvimento open-source e


pode ser baixado gratuitamente no seguinte endereo:

http://www.eclipse.org

2014 OFICINA DO FUTURO Todos os direitos reservados

Pg. 6

A Linguagem Java - Introduo

Nessa unidade iremos mostrar as caractersticas


da linguagem Java, a sintaxe e os passos para
criar uma aplicao simples em Java utilizando o
Eclipse.

2014 OFICINA DO FUTURO Todos os direitos reservados

Pg. 7

Java em Toda Parte

2014 OFICINA DO FUTURO Todos os direitos reservados

Pg. 8

Caractersticas do Java

Simples
Orientada a Objetos
Distribuda
Suporte a Concorrncia
Dinmica
Independente de Plataforma
Portvel
Alta Performance
Robusta
Segura

2014 OFICINA DO FUTURO Todos os direitos reservados

Pg. 9

Entendo o Funcionamento Java

Cdigo-fonte

bytecode

package
public class {
Logger.get

0101010101010
1101010101010
1010101010101
0101101011110

JVM

2014 OFICINA DO FUTURO Todos os direitos reservados

Pg. 10

A Linguagem Java

ByteCode
Cdigo intermedirio (*.class), entre o cdigo fonte (*.java) e o cdigo de
mquina.

Compilador
Responsvel pela gerao do bytecode (*.class) atravs da traduo do cdigo
fonte.

JVM
Mquina virtual do Java, responsvel pela leitura do bytecode, traduo para a
linguagem de mquina e execuo do programa.

Classpath
Conjunto de caminhos especificado para a JVM encontrar as classes
necessrias para a execuo do programa.

2014 OFICINA DO FUTURO Todos os direitos reservados

Pg. 11

Os arquivos fontes
Arquivos fontes devem obrigatoriamente seguir a seguinte
estrutura e ordem:
Definio do Pacote
Lista de imports
Declarao de Classe (s)
Corpo da Classe
permitido que haja uma nica classe pblica por arquivo
fonte
A classe pblica deve conter o mesmo nome que o arquivo
fonte.
Se o nome da classe Aluno ento o nome do arquivo
fonte deve ser Aluno.java
2014 OFICINA DO FUTURO Todos os direitos reservados

Pg. 12

Pacotes

A primeira linha indica o nome do pacote que a sua classe


pertence. Se voc no especificar, ser assumido que sua
classe pertence ao pacote default.
O nome do pacote pode ser com.oficina.app e ser
representado por uma estrutura de diretrios como:
com/oficina/app.

2014 OFICINA DO FUTURO Todos os direitos reservados

Pg. 13

Pacotes

Forma de organizar grupos de classes em unidades.


Pode conter qualquer nmero de classes que se
relacionam, seja pelo mesmo objetivo ou por escopo.
Reduz problemas de conflitos de nome.
O nome de uma classe no apenas aquele usado
em sua declarao, mas sim o conjunto: nome do
pacote + nome usado na definio da classe.
Permite a proteo de classes, variveis e mtodos
atravs dos modificadores.

2014 OFICINA DO FUTURO Todos os direitos reservados

Pg. 14

Pacotes

O Eclipse mostra a estrutura dos


pacotes dentro do mdulo da
aplicao.
uma boa prtica no deixar as
classes no pacote default.
Pacotes so usados para agrupar
classes relacionadas.

2014 OFICINA DO FUTURO Todos os direitos reservados

Pg. 15

Adicionando comentrios

uma boa prtica adicionar comentrios significativos para


as classes e mtodos.

2014 OFICINA DO FUTURO Todos os direitos reservados

Pg. 16

Sintaxe
Statement:
Uma ou mais linhas terminadas por ;
Blocos:
Conjuntos de statements delimitados por { e }
Comentrios:
// comentrio simples, de uma linha
/* */ comentrio simples, de uma ou mais
linhas
/** */ comentrios para documentao
(Javadoc)
2014 OFICINA DO FUTURO Todos os direitos reservados

Pg. 17

A Linguagem Java
Utiliza-se o import para declarao de classes que so referenciadas
no arquivo fonte mas que no pertencem ao pacote onde este
arquivo se encontra.
Imports podem referenciar:
Outras classes no mesmo projeto
Classes da API Java, como java.util.List
Classes contidas nas bibliotecas utilizadas pelo projeto, ou seja,
nos arquivos *.jar referenciados no classpath do projeto
Sintaxe:
import java.util.Date;
import java.util.*;
2014 OFICINA DO FUTURO Todos os direitos reservados

Pg. 18

Declarao da classe
Todo arquivo Java precisa ter uma classe pblica e seu
nome precisa ser igual ao nome dessa classe.

2014 OFICINA DO FUTURO Todos os direitos reservados

Pg. 19

Declarando uma classe


Definio de uma classe:
[modificadores] class NomeDaClasse
{
....
}
Exemplos:
public class Curso
{
}
public class Turma
{
}
public class Aluno
{
}
2014 OFICINA DO FUTURO Todos os direitos reservados

Pg. 20

O corpo da classe
O corpo da classe definido entre chaves { e }. Se no
fecharmos uma chave aberta, um erro de compilao ser
mostrado.

2014 OFICINA DO FUTURO Todos os direitos reservados

Pg. 21

O corpo da classe

Podemos ver a descrio dos erros na aba Problems no


Eclipse.

2014 OFICINA DO FUTURO Todos os direitos reservados

Pg. 22

O mtodo main

Dentro do corpo da classe, ns podemos ter a declarao


dos membros da classe, mtodos e outras classes. Para o
exemplo do Aluno, ns teremos somente o mtodo main.
Repare que temos os modificadores public, static e void
junto com os parmetros em forma de array chamado args.

2014 OFICINA DO FUTURO Todos os direitos reservados

Pg. 23

O mtodo main

O modificador public significa que qualquer outra classe


Java pode chamar esse mtodo.
O modificador static significa que este mtodo no faz
parte do estado da classe.
O modificador void indica que o mtodo no ir retornar
nada e o resultado somente a execuo do mesmo.

2014 OFICINA DO FUTURO Todos os direitos reservados

Pg. 24

O mtodo main

O String[] args entre parnteses indica os argumentos de


entrada para esse mtodo.
Toda classe que tem um mtodo parecido com:
public static void main(String[] args)
chamada classe executvel, porque a JVM sabe o que
fazer quando os usurios querem executar essa classe
diretamente.

2014 OFICINA DO FUTURO Todos os direitos reservados

Pg. 25

Arquivos fontes

// Declarao de Pacote
package de pessoal.meuPacote;
// Declarao imports
import java.util.Random; //Importao de uma classe
import java.sql.*;
//Importao de um pacote inteiro
// Definies de Classes
public class MinhaClasse
{
... // Corpo da Classe
}

2014 OFICINA DO FUTURO Todos os direitos reservados

Pg. 26

Declarando atributos de uma classe

Definio de um Atributo:
[modificadores] tipo nomeDoAtributo [ = inicializao ];

Exemplos:
private static int numero;
public final String tamanhoMaximo = 15;
private String nome = Maria da Silva;
double raio = 6.5;
Object o = new Object();

2014 OFICINA DO FUTURO Todos os direitos reservados

Pg. 27

Declarando mtodos
Definio de um mtodo:
[modificadores] retorno nomeDoMetodo ( [Argumentos] ) [ throws Exees ]
{
...
[ return varRetorno; ]
}
Exemplos:
private void obtemNumeroAlunosTurma ( long codigoTurma ) { ... }
public String getNomeAluno( int codigoAluno ) { ... }
public void insereAluno ( String nomeAluno ) throws Exception { ... }
public static long getNumeroInstancias () { ... }

2014 OFICINA DO FUTURO Todos os direitos reservados

Pg. 28

Exemplo de classe
public class Aluno
{
String nomeAluno;
int codigoAluno;
public String getNomeAluno()
{
return nomeAluno;
}
public void setNomeAluno( String param )
{
nomeAluno = param;
}
public int getCodigoAluno()
{
return codigoAluno;
}
public void setCodigoAluno( int param )
{
codigoAluno = param;
}
}
2014 OFICINA DO FUTURO Todos os direitos reservados

Pg. 29

Programando em Java

Nessa unidade iremos trabalhar com:


Tipos de dados
Operadores
Estruturas de controle
Arrays

2014 OFICINA DO FUTURO Todos os direitos reservados

Pg. 30

Tipo de dados

A linguagem Java oferece diversos tipos de dados que


podem ser divididos em duas categorias:
Tipos Primitivos dados mais simples ou escalares
Tipos de Referncias Estruturas mais complexas como
arrays, classes e interfaces.

2014 OFICINA DO FUTURO Todos os direitos reservados

Pg. 31

Tipos primitivos

Tipo

Contedo

Default

Tamanh
o (bits)
8

Mnimo

Mximo

--

--

16 \u0000

\uFFFF

boolean

Valor lgico

False

char

Caracter Unicode

\u0000

byte

Inteiro com sinal

-27

27 1

short

Inteiro com sinal

16

-215

215 1

int

Inteiro com sinal

32

-231

231 1

long

Inteiro com sinal

64

-263

263 1

float

Ponto flutuante

0.0

32

IEEE 754*

IEEE 754*

double

Ponto flutuante

0.0

64

IEEE 754*

IEEE 754*

2014 OFICINA DO FUTURO Todos os direitos reservados

Pg. 32

Programando em Java
Podemos declarar as variveis dentro da classe (varivel
Global) ou dentro de um mtodo.
Seguindo a sintaxe: tipo + nomeVarivel;
Exemplos:

2014 OFICINA DO FUTURO Todos os direitos reservados

Pg. 33

Programando:

Crie as seguintes variveis na classe Aluno:


-

nota1 e nota2 do tipo double;

idade do tipo int;

sexo do tipo char;

2014 OFICINA DO FUTURO Todos os direitos reservados

Pg. 34

Programando:
Atribua valores para essas variveis e imprima usando o
comando:
System.out.println(variavel);

2014 OFICINA DO FUTURO Todos os direitos reservados

Pg. 35

Identificadores

So os nomes dados a uma classe, mtodo, atributo, varivel ou parmetro.

Comeam sempre por um caractere Unicode, (_) ou ($).

Diferenciam maisculas e minsculas

No podem coincidir com uma palavra reservada.

Identificadores Vlidos - exemplos:


x
y
Amrica
_9_i$to_EH_meio_esquisito
total_1+2+3
$4outroExemplo
exemploCOMmuitasPALAVRAS

2014 OFICINA DO FUTURO Todos os direitos reservados

Pg. 36

Identificadores Convenes da Linguagem

Na linguagem Java utilizada a seguinte conveno para formao de


identificadores:
Constantes com todas as letras em maisculo: CONSTANTE;
public static final int QUANTIDADE_MAXIMA = 100;
Variveis comeam com letra minscula: varivel;
String nomeUsuario;
Classes comeam com letra maiscula: Classe;
public class Usuario { ...}
Mtodos comeam com letra minscula: metodo(), metodo2(int a);
public void recuperaUsuario( int codigoUsuario ) {...}
Se nome for composto, cada nome comea com letra maiscula:
variavelComNomeComposto.
String nomeUsuario;

2014 OFICINA DO FUTURO Todos os direitos reservados

Pg. 37

Palavras reservadas

abstract

boolean

break

byte

case

catch

char

class

const

continue

default

do

double

else

extends

false

final

finallly

float

for

goto

if

implements

import

instanceof

int

interface

long

native

new

null

package

private

protected

public

return

short

static

super

synchronized

this

throw

throws

transient

true

try

void

volatile

while

2014 OFICINA DO FUTURO Todos os direitos reservados

Pg. 38

Operadores
Operador

Operao

++ , --

In/decremento unrio

+,-

Mais/menos unrio (sinal)

Complemento de 1

Complemento lgico (not)

(tipo)

cast

*, /, %

Multiplicao, diviso, modulo

+,-

Adio, subtrao

Concatenao de strings

<<

Shift left

>>

Shift right

>>>

Shift right sem sinal

<, <=

Menor que, menor ou igual a

> , >=

Maior que, maior ou igual a

Instanceof

Comparao de tipos

2014 OFICINA DO FUTURO Todos os direitos reservados

Pg. 39

Operadores - continuao
Operador

Operao

==, !=

Igual/diferente (valores)

==, !=

Igual/diferente (referncia ao objeto)

&

E (bits)

&

E (lgico)

XOR (bits)

XOR (lgico)

OU (bits)

OU (lgico)

&&

E (lgico)

||

OU (lgico)

?:

Operador condicional (ternrio)

Atribuio

*=, /=, %=, +=, =, <<=, >>=,


>>>=, &=,
^=, |=

Atribuio com operao

2014 OFICINA DO FUTURO Todos os direitos reservados

Pg. 40

Exerccio:

Crie uma varivel chamada media do tipo double.


Calcule a media na nota1 e nota2 e atribua para a varivel
media.
Imprima na tela o resultado.

Dica:

2014 OFICINA DO FUTURO Todos os direitos reservados

Pg. 41

Estruturas de controle - deciso


A linguagem Java prov duas estruturas de deciso:
if() / else
switch
if() / else
if ( expressao_boolean ) {
....
} [ else {
...
}]
switch
switch (key) {
case value:
<bloco de comandos>
break;
default :
<bloco de comandos>
break;
}

2014 OFICINA DO FUTURO Todos os direitos reservados

Pg. 42

Estruturas de controle - deciso


Exemplos:

2014 OFICINA DO FUTURO Todos os direitos reservados

Pg. 43

Estruturas de controle - lao

Existem trs estruturas de controle em Java


while()
while(expressao_booleana)
{
<bloco de comandos>
}

do/while()
do
{
<bloco de comandos>
} while(expressao_booleana)

for
for (<statement_inicializacao> [, <statement_inicializacao n>];
<condicao_parada>;
<expressao_incremento> [, <expressao_incremento n>])
{
<bloco de comandos>
}

2014 OFICINA DO FUTURO Todos os direitos reservados

Pg. 44

Estruturas de controle - lao


Exemplos:

2014 OFICINA DO FUTURO Todos os direitos reservados

Pg. 45

Exerccios:

Crie uma varivel do tipo int para armazenar as faltas.

Atribua a quantidade de faltas = 12.

Crie uma estrutura que imprima na tela se o aluno est


aprovado ou reprovado com base na mdia do aluno
(dever ser acima de 5.0) e nas faltas (abaixo de 10).

Atribua a quantidade de faltas = 4 e verifique


novamente se o aluno est aprovado ou no.

2014 OFICINA DO FUTURO Todos os direitos reservados

Pg. 46

Desafio:

Programe para que saia a seguinte sada na tela:

Um aluno do sexo feminino com 10 anos de idade teve


2 faltas e tirou 6.0 de mdia, ou seja, foi aprovado.

Obs: Utilize as variveis existentes e crie novas se achar


necessrio.

2014 OFICINA DO FUTURO Todos os direitos reservados

Pg. 47

A classe String

String uma classe da linguagem java e no um tipo


primitivo.
Exemplo:
String nome = Carolina;
String sobreNome = Silva;
Podemos usar para sada de dados na tela:

2014 OFICINA DO FUTURO Todos os direitos reservados

Pg. 48

Arrays

Array uma estrutura de tamanho fixo que armazena mltiplos valores do mesmo tipo.

Qualquer tipo permitido em Java pode ser armazenado em um Array


Arrays de tipos primitivos
Arrays de referncias de objetos
Arrays de outros arrays

O tamanho de um Array precisa ser definido quando este criado.

Um elemento um array correspodente a um dos elementos armazenados no array e


pode ser acessado por sua posio.

2014 OFICINA DO FUTURO Todos os direitos reservados

Pg. 49

Utilizando Arrays

Para utilizar um array necessrio seguir os trs passos


abaixo:
Declarao
tipo [ ] nomeArray
Construo
nomeArray = new tipo[numElementos]
Inicializao
nomeArray[posicao] = valor

2014 OFICINA DO FUTURO Todos os direitos reservados

Pg. 50

Utilizando Arrays

Exemplos:
Declarao
String[ ] nomes;
Construo
nomes = new String[20];
Inicializao
nomes[0] = Maria;

2014 OFICINA DO FUTURO Todos os direitos reservados

Pg. 51

Exerccios:

Faa um array de Strings com os nomes das disciplinas


do aluno (Matematica, Portugues, Ciencias, Historia,
Geografia e Artes). O array dever ter 7 posies.
Faa um segundo array de faltas, considerando que a
posio 0 (zero) ser Janeiro, atribua faltas para cada
ms do ano.
Na ltima posio do Array de disciplinas, concatene
todas as displinas.
Imprima os dois arrays da tela.
2014 OFICINA DO FUTURO Todos os direitos reservados

Pg. 52

Referncias

Java How to Program Deitel & Deitel


Thinking in Java Bruce Eckel
Core Java Vol. 1 Hortsman & Cornell
Java API documentation
http://java.sun.com/j2se/1.5.0/docs/api/

2014 OFICINA DO FUTURO Todos os direitos reservados

Pg. 53

Conceitos e Fundamentos da
Linguagem Java

Conceitos de Orientao a
Objetos

2014 OFICINA DO FUTURO Todos os direitos reservados

Pg. 54

Histria da POO

Nessa unidade, veremos um resumo da Histria da


Programao Orientada a Objetos e seus benefcios.

2014 OFICINA DO FUTURO Todos os direitos reservados

Pg. 55

Histria da POO

Primeira linguagem orientada a objetos: Simula 67.


Foi a primeira linguagem a incorporar facilidades para definir
classes de objetos genricos na forma de hierarquia de
classes e subclasses.
Uma classe em Simula um mdulo que engloba a definico
da estrutura e do comportamento comuns a todas as suas
instncias (objetos)

2014 OFICINA DO FUTURO Todos os direitos reservados

Pg. 56

Histria da POO
Primeira gerao: linguagem de mquina
Segunda gerao: linguagem de montagem (assembly)
Terceira gerao: linguagem de alto nvel
Quarta gerao: linguagens para gerao de aplicaes
Gerao Orientada a Objetos: linguagens voltadas para reuso
e manuteno.
A quinta gerao enfrenta o desafio de efetuar a manuteno
e o reuso das milhares de aplicaes desenvolvidas pelas
geraes anteriores e atual.

2014 OFICINA DO FUTURO Todos os direitos reservados

Pg. 57

Paradigma Orientado a Objetos X Estruturado

Paradigma Estruturado:
foco na ao;
Executa funes ou procedimentos.
Paradigma Orientado a Objetos:
foco no modelo;
representa o modelo de entidades agrupando os dados e
seus comportamentos correspondentes.

2014 OFICINA DO FUTURO Todos os direitos reservados

Pg. 58

Benefcios:

Possibilita ao usurio implementar um modelo realista das


caractersticas e capacidades;
Facilita a modularizao e o reuso de cdigo;
Prov flexibilidade nas modificaes de um sistema
existente;
Facilita a manuteno do cdigo.

2014 OFICINA DO FUTURO Todos os direitos reservados

Pg. 59

Conceitos

Nessa unidade, veremos quais so os conceitos gerais da


Programao Orientada a Objetos.

2014 OFICINA DO FUTURO Todos os direitos reservados

Pg. 60

Abstrao

Considerar somente a informao essencial,


desconsiderando detalhes desnecessrios, definindo os
limites conceituais de um objeto.
Ou seja, identificar os aspectos relevantes sem se perder
nos detalhes.

2014 OFICINA DO FUTURO Todos os direitos reservados

Pg. 61

Encapsulamento

Mostrar somente o necessrio, escondendo detalhes da


implementao e informao desnecessria.

2014 OFICINA DO FUTURO Todos os direitos reservados

Pg. 62

Herana

Habilidade de uma classe compartilhar e extender


caractersticas existentes e comportamentos de
uma outra classe, definindo ento, uma hierarquia
de classes.

2014 OFICINA DO FUTURO Todos os direitos reservados

Pg. 63

Herana

2014 OFICINA DO FUTURO Todos os direitos reservados

Pg. 64

Herana

2014 OFICINA DO FUTURO Todos os direitos reservados

Pg. 65

Polimorfismo

Habilidade de provr diferentes comportamentos para o


mesmo mtodo, dependendo do tipo ou classes das quais
os mtodos foram invocados.

2014 OFICINA DO FUTURO Todos os direitos reservados

Pg. 66

Polimorfismo

Em outras palavras, polimorfismo a implementao


diferenciada de operaes nas classes filhas.
Uma operao deve manter a assinatura na hierarquia das
classes.

2014 OFICINA DO FUTURO Todos os direitos reservados

Pg. 67

Conceitos chaves da POO:

Classe
Um modelo que descreve um objeto
Objetos
Representam entidades existentes no mundo real
Mensagens
Mensagens so as aes dos objetos. Em outras
palavras, so as chamadas para os mtodos dos
objetos.
2014 OFICINA DO FUTURO Todos os direitos reservados

Pg. 68

Exemplos:

A classe Pessoa
Quais itens descrevem caractersticas de uma
pessoa?
Quais itens descrevem comportamentos de uma
pessoa?

2014 OFICINA DO FUTURO Todos os direitos reservados

Pg. 69

Exemplos:

Objetos da Classe Pessoa

2014 OFICINA DO FUTURO Todos os direitos reservados

Pg. 70

Relacionamentos

Nessa unidade, veremos quais so os tipos de


relacionamentos da Orientao a Objetos.

2014 OFICINA DO FUTURO Todos os direitos reservados

Pg. 71

Relacionamento entre Classes:


Herana
Classes filhas herdam o comportamento e
atributos da classe pai.
Composio
Formao do todo pelas partes.
Generalizao
Comportamento e caractersticas generalizados.
Especializao
Particularizao do Comportamento das subclasses.
2014 OFICINA DO FUTURO Todos os direitos reservados

Pg. 72

Herana, Generalizao, Especializao

Generalizao

Especializao

2014 OFICINA DO FUTURO Todos os direitos reservados

Pg. 73

Composio

2014 OFICINA DO FUTURO Todos os direitos reservados

Pg. 74

Exerccio

Com base nos modelos apresentados anteriormente,


desenhe um modelo, com as classes, atributos, mtodos e
relacionamentos para um sistema que calcula o salrio de
um funcionrio e deposita na sua conta bancria. Sabendo
que, existem dois tipos de funcionrios: Professores (que
ganham por hora) e diretores (slario fixo).

2014 OFICINA DO FUTURO Todos os direitos reservados

Pg. 75

Exerccio

Dica:
Esse diagrama deve conter todos os tipos de
relacionamentos aprendidos nessa lio.

2014 OFICINA DO FUTURO Todos os direitos reservados

Pg. 76

Vantagens

Nessa unidade, veremos quais so as vantagens da


Programao Orientada a Objetos.

2014 OFICINA DO FUTURO Todos os direitos reservados

Pg. 77

Vantagens

Reuso
- Acontece devido aos possveis relacionamentos
entre as classes: Herana e Composio.
Abstrao
- Atributos e comportamentos bem encapsulados, o
que torna o cdigo mais manutenvel e robusto.

2014 OFICINA DO FUTURO Todos os direitos reservados

Pg. 78

Reuso

Para entregar um software de qualidade necessrio


reuso.
Reuso no copy & paste!

2014 OFICINA DO FUTURO Todos os direitos reservados

Pg. 79

Abstrao

O conceito de abstrao pode ser implementado com:


- Interfaces
- Classes Abstratas
- Encapsulamento

2014 OFICINA DO FUTURO Todos os direitos reservados

Pg. 80

Interfaces

No so classes
No possuem mtodos implementados
Possuem apenas definio de comportamento:
Mtodos abstratos
Constantes
No podem ser instanciadas
Para qu servem???
2014 OFICINA DO FUTURO Todos os direitos reservados

Pg. 81

Classes Abstratas
Classes abstratas so classes que podem possuir
mtodos implementados, mas que possuem ao menos
um mtodo abstrato.
Mtodo abstrato aquele em que no existe
implementao, apenas sua definio.
So teis quando definem a implementao de mtodos
comuns a todas as classes que as estendem, mas
obrigam que cada uma destas classes definam a
implementao dos outros mtodos abstratos.
Classes abstratas no so instanciadas.
2014 OFICINA DO FUTURO Todos os direitos reservados

Pg. 82

Classes Abstratas x Interfaces

Interfaces possuem somente mtodos abstratos


Classes abstratas possuem mtodos abstratos,
mas tambm possuem tantos mtodos
implementados quantos for necessrio.
Interfaces so usadas para determinar como lidar
e no como fazer uma tarefa ou grupo de tarefas.

2014 OFICINA DO FUTURO Todos os direitos reservados

Pg. 83

Exerccios

Identifique nas classes a seguir, que atributos e/ou mtodos


no pertecem ao escopo do problema.

2014 OFICINA DO FUTURO Todos os direitos reservados

Pg. 84

Conceitos e Fundamentos da
Linguagem Java

Java e Programao Orientada


a Objetos

2014 OFICINA DO FUTURO Todos os direitos reservados

Pg. 85

Classes e Mtodos

Nessa unidade, entenderemos a estrutura de uma classe


feita em Java, seus atributos e mtodos.

2014 OFICINA DO FUTURO Todos os direitos reservados

Pg. 86

Classes e Mtodos

2014 OFICINA DO FUTURO Todos os direitos reservados

Pg. 87

Declarao da Classe

Baseado na estrutura vista anteriormente, ns podemos


identificar os elementos que formam a delcarao:
Nveis de acesso (veremos na prxima unidade)
Modificadores
Tipos de Retorno
Nomes

2014 OFICINA DO FUTURO Todos os direitos reservados

Pg. 88

Modificadores

O modificador de um mtodo especifica como as


subclasses da classe me ir interagir com o mtodo. Ou
seja, o jeito que os atributos e mtodos sero usados pelas
outras classes.
Possveis valores para os modificadores so: abstract, final,
native, nenhum valor, static, synchronized, etc.
Para classes os nicos aplicados so abstract e final.

2014 OFICINA DO FUTURO Todos os direitos reservados

Pg. 89

Tipos de Retorno

O tipo de retorno de um mtodo determina que tipo de valor


esperado quando o mtodo chamado.
Possveis tipos de retorno: todos os tipos bsicos do Java,
todas as classes e void. O retorno void representa a
ausncia de um tipo de retorno para um mtodo.
Sempre que escolhemos um tipo de retorno, o mtodo
requere que a palavra return seja usada, exceto quando
usamos o void.

2014 OFICINA DO FUTURO Todos os direitos reservados

Pg. 90

Nomes

Os nomes de classes, atributos e mtodos so a critrio do


programador. Entretanto, importante atender as
Convenes de Cdigo Java (Java Code Conventions).
Maiores informaes nesse assunto podem ser
encontradas no site:
http://java.sun.com/docs/codeconv

2014 OFICINA DO FUTURO Todos os direitos reservados

Pg. 91

Assinatura dos Mtodos

A assinatura de um mtodo o identifica na classe.


composta pelo seu nome e parmetros.
public static void falarAlgo (String algo )
public static void falarAlgo (StringBuffer algo )

2014 OFICINA DO FUTURO Todos os direitos reservados

Pg. 92

Mtodos de Acesso

Os mtodos de acesso so utilizados para alterar e pegar


informaes dos atributos da classe.
Pela conveno Java so dois tipos: getters e setters.
O mtodo get pega o valor do atributo.
O mtodo set altera o valor do atributo.

2014 OFICINA DO FUTURO Todos os direitos reservados

Pg. 93

Getters e Setters

Exemplos:

2014 OFICINA DO FUTURO Todos os direitos reservados

Pg. 94

Exerccios
Crie um novo pacote chamado Escola;
Crie uma classe pblica chamada Aluno;
Crie os seguintes atributos:
- matricula (String)
- nome (String)
- curso (String)
- idade (int)
Crie os mtodos de acesso para esses atributos;
Controlar no mtodo que pega a idade se o usario entrou
com a idade menor que 1, nesse caso, atribuir o valor 0
(zero).
2014 OFICINA DO FUTURO Todos os direitos reservados

Pg. 95

Construtor da Classe

Para que um objeto exista necessrio contru-lo, isto , dizer para a JVM
que necessrio espao de memria para criao do objeto.

Para contruir um objeto usa-se o construtor da classe.


Aluno o1 = new Aluno();
Object o2 = new Object();

Toda classe possui, por default, um construtor padro: pblico e sem


argumentos.

O construtor default somente criado quando nenhum outro construtor for


definido pelo programador.

Uma classe pode ter quantos contrutores desejar.

Implicitamente, ou mesmo explicitamente, o construtor sempre chama o


contrutor da sua super classe.

2014 OFICINA DO FUTURO Todos os direitos reservados

Pg. 96

Declarando Construtores da Classe


Definio de um mtodo:
[modificador] nomeDaClasse ( [Argumentos] ) [ throws Exees ]
{
...
}
Exemplos:
public Turma () { ... }
public Turma ( long codigoTurma ) { ... }
public Curso( int codigoCurso ) throws Exception { ... }
public Curso ( String nomeCurso, int codigoCurso ) { ... }
2014 OFICINA DO FUTURO Todos os direitos reservados

Pg. 97

Exemplo de Classe
public class Aluno
{
String nomeAluno;
int codigoAluno;
public Aluno()
{}

//construtor vazio

public Aluno(String nomeAluno, int codigoAluno)


{
this.nomeAluno = nomeAluno;
this.codigoaluno = codigoAluno;
}
public String getNomeAluno()
{
return nomeAluno;
}

public int getCodigoAluno()


{
return codigoAluno;
}
}

2014 OFICINA DO FUTURO Todos os direitos reservados

Pg. 98

Exerccio

Para a classe Aluno criada anteriormente, crie um


construtor vazio e um cheio (com todos atributos);
Faa um mtodo main, crie um objeto aluno usando o
construtor vazio;
Imprima na tela os valores dos atributos utilizando o
mtodo get;
Crie um segundo objeto aluno usando o construtor cheio;
Imprima na tela os valores dos atributos utilizando o
mtodo get.

2014 OFICINA DO FUTURO Todos os direitos reservados

Pg. 99

Exerccio Continuao

Crie um novo objeto aluno com o construtor vazio;


Utilize o mtodo set para alterar os valores do atributos;
Imprima na tela os valores dos atributos usando o
mtodo get.

2014 OFICINA DO FUTURO Todos os direitos reservados

Pg. 100

Controle de Acessos

Nessa unidade, veremos quais so os tipos de controle de


acessos que o Java disponibiliza.

2014 OFICINA DO FUTURO Todos os direitos reservados

Pg. 101

Nveis de Acesso

O primeiro componente da declarao de uma classe ou


mtodo o modificador do nvel de acesso.
Os modificadores de nvel de acesso determinam se outras
classes podem usar os atributos ou invocar um mtodo
particular da classe.
Os possveis valores para os especificadores de acesso
so: private, protected, default (nenhum valor) e public.

2014 OFICINA DO FUTURO Todos os direitos reservados

Pg. 102

Modificadores de nvel de acesso


Public: visvel para qualquer classe sem restries
-Pode ser usado por classes, atributos e mtodos.
Protected: visvel para todas as classes do mesmo
pacote e para as subclasses
-Pode ser usado apenas por atributos e mtodos.
Nenhum modificador definido (default): visvel para
todas as classes do mesmo pacote
-Pode ser usado por classes, atributos e mtodos.
Private: visvel somente para as subclasses
-Pode ser usado por classes internas, atributos e
mtodos.
2014 OFICINA DO FUTURO Todos os direitos reservados

Pg. 103

Exerccio

Crie uma classe chamada TestaAcesso, com o mtodo


main;
Crie um objeto da classe Aluno utilizando o construtor
cheio;
Mude o nvel de acesso do mtodo getNome para private e
veja o que acontece.

2014 OFICINA DO FUTURO Todos os direitos reservados

Pg. 104

Desafio

Crie uma classe Teste no pacote ooJavaEscola;


Crie um objeto da classe Aluno do pacote Escola usando o
construtor cheio e chame os mtodos para pegar os
valores dos atributos.
Altere a classe Aluno do pacote Escola e veja o que
acontece.

2014 OFICINA DO FUTURO Todos os direitos reservados

Pg. 105

Varivel This
A varivel this Diferenciando Atributos de
Variveis Locais
public class Pessoa
{
private String nome;
public void setNome( String nome )
{
// this.nome -> atributo da classe
// nome -> varivel local ao mtodo
this.nome = nome;
}
}

2014 OFICINA DO FUTURO Todos os direitos reservados

Pg. 106

Classe Object e String

Nessa unidade, entenderemos como funcionam as classes


String e Object e quais so seus principais mtodos.

2014 OFICINA DO FUTURO Todos os direitos reservados

Pg. 107

A Classe String

String uma classe da linguagem java e no um tipo primitivo.


Exemplo:
String nome = Carolina;
String sobreNome = Silva;
Alguns mtodos utilitrios da classe String:
boolean equals(...)
equalsIgnoreCase(...)
int length(...)
substring(...)
toLowerCase(...)
toUpperCase(...)
Referncia para a classe String:
API Java: http://java.sun.com/j2se/1.4.2/docs/api/

2014 OFICINA DO FUTURO Todos os direitos reservados

Pg. 108

A Classe Object

Topo da Hierarquia de classes do Java


Toda classe em Java filha da classe Object.
Mesmo que um classe no use a palavra reservada
extends, o compilador gera a classe extendendo
diretamente de Object.

2014 OFICINA DO FUTURO Todos os direitos reservados

Pg. 109

Garbage Collector

Em Java, no preciso fazer alocao dinmica explcita para criar


objetos, tambm no preciso desalocar memria.

O Garbage Collector um processo interno da JVM que de tempos


em tempos executa seu processo e faz desalocao de objetos que
no possuem mais referncias.
No possvel saber quando os objetos sero enviados para o
Garbage Collector.
Algumas classes precisam defnir como suas instncias devem ser
excludas da memria.
Para isto, o GC utiliza o mtodo finalize() da classe Object.
possvel extender o mtodo para fazer a desalocao
personalizada para uma subclasse.

2014 OFICINA DO FUTURO Todos os direitos reservados

Pg. 110

Herana

Nessa unidade, iremos saber como implementar Herana


na linguagem Java.

2014 OFICINA DO FUTURO Todos os direitos reservados

Pg. 111

Herana - Conceitos
A implementao do conceito de herana em Java
feito com a palavra extends.
Em Java possvel extender SOMENTE uma classe.
Um classe que extende a outra chamada de sub
classe, e a classe extendida chamada de super
classe.
A sub classe uma especializao da super
classe.
A super classe uma generalizao da sub classe.
2014 OFICINA DO FUTURO Todos os direitos reservados

Pg. 112

Herana - Sintaxe

public class Pessoa


{
public void getNome()
{
}
public void getCPF() {
}
}

2014 OFICINA DO FUTURO Todos os direitos reservados

public class Funcionario


extends Pessoa
{
public void getSalario()
{
}
}

Pg. 113

Sobreescrita de Mtodos
Usado quando preciso modificar o comportamento de um mtodo da
classe pai.
Para sobreescrever um mtodo as condies abaixo devem ser
satisfeitas:
O nome do mtodo assim como o tipo e a ordem dos paramtros
devem ser idnticos aos do mtodo da classe pai.
O tipo de retorno tambm deve ser idntico.
A visibilidade no deve ser mais restritiva que a visibilidade do
mtodo original.
O mtodo no dever lanar checked exceptions que no so
lanadas pelo mtodo original.
2014 OFICINA DO FUTURO Todos os direitos reservados

Pg. 114

Herana e Super

Quando um mtodo sobreescreve um mtodo da super classe, o


comportamento normal da subclasse executar o novo mtodo.
Existe uma maneira de executar o mtodo da super classe
atravs da palavra reservada super, que uma referncia
super classe.
public void metodoSobreescrito {
super.metodoSobreescrito();
// outras coisas especficas da classe filha
}

2014 OFICINA DO FUTURO Todos os direitos reservados

Pg. 115

Sobrecarga de mtodos

Usada quando preciso vrios mtodos que desempenham papis semelhantes


em diferentes condies.

Para sobrecarregar um mtodo as seguintes condies devem ser satisfeitas:


A identidade de um mtodo determinada pelo nome completo da classe a
que pertence, pelo seu nome, pelo seu tipo, ordem e quantidade de
parmetros.
Dois ou mais mtodos na mesma classe (incluindo mtodos da super classe)
com o mesmo nome mas com uma lista de parmetros diferentes so mtodos
sobrecarregados.
O tipo de retorno do mtodo, sua visibilidade, e lista de parmetros pode variar
livremente.
Mtodos sobrecarregados podem chamar um ao outro, utilizando uma
chamada comum de mtodo com lista de parmetros apropriada.

2014 OFICINA DO FUTURO Todos os direitos reservados

Pg. 116

Sobrecarga de mtodos
public class ExemploSobrecarga()
{
public void metodoSobrecarregado(int param1){ }
public void metodoSobrecarregado(String param1){ }
public void metodoSobrecarregado(int param1,
String param2){ }
public void metodoSobrecarregado(String param1,
int param2){ }
public void metodoSobrecarregado(double param1,
String param2, int param3){ }
}
2014 OFICINA DO FUTURO Todos os direitos reservados

Pg. 117

Sobrecarga de mtodos
class Base {
public base( String s ) {
// inicializa o objeto usando s
}
public base( int i ) {
// inicializa o objeto usando i
}
}
class Derived extends Base {
public Derived( String s ) {
// passa o controle para o construtor de Base na linha 2
super( s );
}
Public Derived( int i ) {
// passa o controle para o construtor de Base na linha 5
super( i );
}
}
2014 OFICINA DO FUTURO Todos os direitos reservados

Pg. 118

Exerccio

Codifique as
seguintes classes:

2014 OFICINA DO FUTURO Todos os direitos reservados

Pg. 119

Вам также может понравиться