POO
Aula 05
Introdução a Java:
Classes, métodos e variáveis
Eduardo Figueiredo
24 de Março de 2010
Exercício UML

Favor me entregar os exercício até o
final desta aula

Modelar “Primeirão” em UML usando
diagrama de classes
Avaliação

Duas provas: 35 pts cada



Prova 1 (P1): 06/Maio
Prova 2 (P2): 08/Julho
Dois trabalhos: 15 pts cada


Trabalho 1 (T1): Abril
Trabalho 2 (T2): Junho
Avaliação

Duas provas: 35 pts cada



Prova 1 (P1): 06/Maio
Prova 2 (P2): 08/Julho
Exercícios serão
contados como
pontos extras
Dois trabalhos: 15 pts cada


Trabalho 1 (T1): Abril
Trabalho 2 (T2): Junho
Páginas (6ª)
Páginas (8ª)
Aula 2
Antes de Começar
XXXIII a XL
XXII a XXIX
Seções 1.6 a 1.10
5a7
5a7
Aula 5
Livro Texto: 6ª x 8ª edição
Conteúdo
Seção 1.16
14 a 17
15 a 17
Seções 3.1 a 3.5
58 a 68
57 a 67
Aulas em Laboratório

Reservado laboratório IV (Bloco 1B)
para a aula de amanhã

Proposta


Aulas teóricas às quartas
Aulas práticas às quintas
Aula de Hoje
Tópicos da Aula

Conceitos de POO em Java

Elementos principais de um objeto
Método
 Atributos (ou variáveis)


Transformando um projeto UML em
um programa Java
Visão Geral

Um programa OO é geralmente
constituído de várias classes



Cada classe possui vários métodos
(comportamento)
Classes também possuem variáveis
(atributos)
Classes trocam mensagens entre si

Chamada de métodos
Analogia: Carro

Funcionalidades



Andar mais rápido: acelerador
Andar mais devagar: freio
Atributos


Cor, número de portas, capacidade do
tanque, ...
Quantidade atual de combustível,
velocidade atual, ...
Do Projeto para o Produto

Antes do carro ficar pronto, ele deve
ser projetado
Projeto
Produto
Ocultando os Detalhes

Os pedais freio e acelerador
“ocultam” do motorista os reais
mecanismos que fazem o carro
andar mais rápido ou mais devagar

Pessoas com pouco ou
nenhum conhecimento
de mecânica / hidráulica
podem dirigir um carro
Envio de Mensagens

Acelerar


O pedal acelerador envia uma
mensagem para o carro aumentar a
velocidade
Frear

O pedal de freio envia
uma mensagem para o
carro diminuir a velocidade
Conhecendo a Si Próprio

Um carro sabe a sua velocidade atual

Mas, não sabe a velocidade de outros
carros
Minha velocidade
atual é 60 Km/h
Implementando um Projeto

Assim como em outras engenharias,
o projeto não é suficiente


Ninguém pode dirigir o desenho de um
carro
Ninguém pode executar o projeto de
um sistema
Do Projeto para Implementação

Antes do carro ficar pronto, ele deve
ser projetado

Lembra do nosso trabalhinho UML?
Carro
cor
velocidadeAtual
acelerar()
frear()
Projeto
class Carro {
String cor;
int velocidadeAtual;
void acelerar() {}
void frear() {}
}
Implementação
Classe Pública em Java

Declaração de uma classe pública
(public) deve ser feita em um arquivo
de mesmo nome


Mais a extensão
“.java”
Modificador public
permite acesso /
chamadas de qualquer
outra classe do programa
public class Carro {
String cor;
int velocidadeAtual;
void acelerar() {}
void frear() {}
}
Arquivo Carro.java
Corpo de Classes e Métodos


O corpo de uma classe é delimitado
por chaves { }
O corpo de um método
também é delimitado
por chaves { }
public class Carro {
String cor;
int velocidadeAtual;
void acelerar() {...}
void frear() {...}
}
Convenção de Nomes

Nome de classes




Substantivo
Iniciar com letra maiúscula
CamelCase (MeuCarro)
Nome de métodos



public class Carro {
String cor;
int velocidadeAtual;
Verbo
}
Iniciar com minúsculo
camelCase (acelerarCarro)
void acelerar() {...}
void frear() {...}
Assinatura de Métodos

Modificador + Tipo de Retorno +
Nome do Método + Lista de Parâmetros




Modificador: public | private | protected | ...
Tipo de Retorno: void | int | String | ...
Nome:
acelerar | frear | ...
Parâmetros:
delimitado por
parênteses
public class Carro {
private String cor;
private int velocidadeAtual;
public void acelerar() {}
public void frear() {}
}
Implementando Métodos
public class Carro {
String cor;
int velocidadeAtual = 0;
public void acelerar() {
velocidadeAtual = velocidadeAtual + 1;
}
public void frear() {
velocidadeAtual = velocidadeAtual - 1;
}
}
Executar a classe Carro ...
public class Carro {
String cor;
int velocidadeAtual = 0;
Exception in
...
public void acelerar() {
thread
main
velocidadeAtual = velocidadeAtual
+ 1;
}
public void frear() {
velocidadeAtual = velocidadeAtual - 1;
}
}
Um programa Java começa
pelo método main
O Método Main
public class Teste {
public static void main(String[] args) {
...
}
}
É uma boa prática colocar o método
main em uma classe separada
O Método Main
public class Teste {
public static void main(String[] args) {
...
}
}
O método main é automaticamente
chamado pela máquina virtual Java
Implementando Métodos
public class Carro {
String cor;
int velocidadeAtual = 0;
public void acelerar() {
velocidadeAtual = velocidadeAtual + 1;
}
public void frear() {
velocidadeAtual = velocidadeAtual - 1;
}
public String mostrarVelocidade() {
System.out.println(“Minha velocidade é ” +
velocidadeAtual);
}
}
Testar a Classe Carro
public class Teste {
public static void main(String[] args) {
Carro meuCarro = new Carro();
meuCarro.mostrarVelocidade();
}
}
Compilando o Programa
public class Teste {
public static void main(String[] args) {
Carro meuCarro = new Carro();
meuCarro.mostrarVelocidade();
}
}
Compilar
javac Carro.java Teste.java
ou
javac *.java
Executando o Programa
public class Teste {
public static void main(String[] args) {
Carro meuCarro = new Carro();
meuCarro.mostrarVelocidade();
}
}
Executar
java Teste
Resultado do Teste
public class Teste {
public static void main(String[] args) {
Carro meuCarro = new Carro();
meuCarro.mostrarVelocidade();
}
}
Minha velocidade é 0
Acelerando o Carro
public class Teste {
public static void main(String[] args) {
Carro meuCarro = new Carro();
meuCarro.mostrarVelocidade();
meuCarro.acelerar();
meuCarro.mostrarVelocidade();
}
}
Compilar e Executar
public class Teste {
public static void main(String[] args) {
Carro meuCarro = new Carro();
meuCarro.mostrarVelocidade();
meuCarro.acelerar();
meuCarro.mostrarVelocidade();
}
}
Compilar
Executar
Resultado do Teste
public class Teste {
public static void main(String[] args) {
Carro meuCarro = new Carro();
meuCarro.mostrarVelocidade();
meuCarro.acelerar();
meuCarro.mostrarVelocidade();
}
}
Minha velocidade é 0
Minha velocidade é 1
Parâmetros e Instâncias
Voltando a Classe Carro
public class Carro {
String cor;
int velocidadeAtual = 0;
public void acelerar() {
velocidadeAtual = velocidadeAtual + 1;
}
public void frear() {
velocidadeAtual = velocidadeAtual - 1;
}
public String mostrarVelocidade() {
System.out.println(“Minha velocidade é ” +
velocidadeAtual);
}
}
Métodos para Cor
public class Carro {
String cor;
int velocidadeAtual = 0;
public void acelerar() {...}
public void frear() {...}
public String mostrarVelocidade() {...}
public void definirCor(String novaCor) {
cor = novaCor;
}
public String retornarCor() {
return cor;
}
}
Métodos para Cor
public class Carro {
String cor;
int velocidadeAtual = 0;
public void acelerar() {...}
public void frear() {...}
public String mostrarVelocidade() {...}
}
public void definirCor(String novaCor) {
cor = novaCor;
}
Método
“set”
public String retornarCor() {
return cor;
}
Método
“get”
Parâmetros de Métodos
public class Carro {
String cor;
int velocidadeAtual = 0;
Método com um
public void acelerar() {...}
public void frear() {...}
parâmetro
public String mostrarVelocidade() {...}
public void definirCor(String novaCor) {
cor = novaCor;
Método
}
sem
parâmetro
public String retornarCor() {
return cor;
}
}
Ocultando Atributos
public class Carro {
private String cor;
private int velocidadeAtual = 0;
public void acelerar() {...}
public void frear() {...}
public String mostrarVelocidade() {...}
public void definirCor(String novaCor) {
cor = novaCor;
}
public String retornarCor() {
return cor;
}
}
Atributos são
geralmente
privados (private)
O método definirCor
public void definirCor(String novaCor) {
cor = novaCor;
}

Não retorna nada quando é chamado


Tipo de retorno: void
Recebe um parâmetro

Parâmetro: String novaCor
O Método retornarCor
public String retornarCor() {
return cor;
}

Retorna um objeto


Tipo de retorno: String
Não recebe nenhum parâmetro

Parâmetro: vazio
Testando definirCor
public class Teste {
public static void main(String[] args) {
Carro meuCarro = new Carro();
meuCarro.definirCor(“Vermelho”);
}
}
Passagem de Parâmetros
public class Teste {
public static void main(String[] args) {
Carro meuCarro = new Carro();
meuCarro.definirCor(“Vermelho”);
}
}
Passando um
parâmetro (String) para
o método definirCor
Criando Dois Carros
public class Teste {
public static void main(String[] args) {
Carro meuCarro = new Carro();
meuCarro.definirCor(“Vermelho”);
Carro seuCarro = new Carro();
seuCarro.definirCor(“Azul”);
}
}
Instância
“seuCarro” tem
cor Azul
Instância
“meuCarro” tem
cor Vermelho
Testando retornarCor
public class Teste {
public static void main(String[] args) {
Carro meuCarro = new Carro();
meuCarro.definirCor(“Vermelho”);
Carro seuCarro = new Carro();
seuCarro.definirCor(“Azul”);
System.out.println(“Meu carro é ”+ meuCarro.retornarCor());
System.out.println(“Seu carro é ”+ seuCarro.retornarCor());
}
}
Cada instância da classe Carro
(meuCarro e seuCarro) tem sua cor.
Compilando e Executando
public class Teste {
public static void main(String[] args) {
Carro meuCarro = new Carro();
meuCarro.definirCor(“Vermelho”);
Carro seuCarro = new Carro();
seuCarro.definirCor(“Azul”);
System.out.println(“Meu carro é ”+ meuCarro.retornarCor());
System.out.println(“Seu carro é ”+ seuCarro.retornarCor());
}
}
Compilar
Executar
Resultado do Teste
public class Teste {
public static void main(String[] args) {
Carro meuCarro = new Carro();
meuCarro.definirCor(“Vermelho”);
Carro seuCarro = new Carro();
seuCarro.definirCor(“Azul”);
System.out.println(“Meu carro é ”+ meuCarro.retornarCor());
System.out.println(“Seu carro é ”+ seuCarro.retornarCor());
}
}
Meu carro é Vermelho
Seu carro é Azul
Referências


DEITEL, H. M.; DEITEL P. J. Java:
Como Programar, 6a. Edição.
Pearson, 2005.
BOOCH, G., RUMBAUGH, J.,
JACOBSON, I. UML, Guia do Usuário.
Rio de Janeiro: Campus, 2000.
Download

Carro - Facom