Programação em Java Implementando um Projeto Do Projeto para

Propaganda
DCC / ICEx / UFMG
Implementando um Projeto
Assim como em outras engenharias,
o projeto não é suficiente
Programação em Java
Eduardo Figueiredo
Ninguém pode dirigir o desenho de um
carro
Ninguém pode executar o projeto de
um sistema
Por enquanto…
http://www.dcc.ufmg.br/~figueiredo
Do Projeto para Implementação
Antes do carro ficar pronto, ele deve
ser projetado
Carro
cor
velocidadeAtual
acelerar()
frear()
class Carro {
String cor;
int velocidadeAtual;
void acelerar() {}
void frear() {}
}
Projeto
Implementação
Classe Pública em Java
Declaração de uma classe pública
(public) deve ser feita em um arquivo
de mesmo nome
Com 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
Convenção de Nomes
O corpo de uma classe é delimitado
por chaves { }
Nome de classes
O corpo de um método
também é delimitado
por chaves { }
public class Carro {
String cor;
int velocidadeAtual;
void acelerar() {...}
void frear() {...}
}
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
Implementando Métodos
Modificador + Tipo de Retorno +
Nome do Método + Lista de Parâmetros
public class Carro {
String cor;
int velocidadeAtual = 0;
Modificador: public | private | protected | ...
Tipo de Retorno: void | int | String | ...
Nome:
acelerar | frear | ...
Parâmetros:
delimitado por
parênteses
public void acelerar() {
velocidadeAtual = velocidadeAtual + 1;
}
public void frear() {
velocidadeAtual = velocidadeAtual - 1;
}
public class Carro {
private String cor;
private int velocidadeAtual;
}
public void acelerar() {}
public void frear() {}
}
Executar a classe Carro ...
O Método Main
public class TesteCarro {
public class Carro {
String cor;
int velocidadeAtual = 0;
public static void main(String[] args) {
...
}
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 TesteCarro {
}
É uma boa prática colocar o método
main em uma classe separada
Implementando Métodos
public class Carro {
String cor;
int velocidadeAtual = 0;
public static void main(String[] args) {
...
}
public void acelerar() {
velocidadeAtual = velocidadeAtual + 1;
}
public void frear() {
velocidadeAtual = velocidadeAtual - 1;
}
}
O método main é automaticamente
chamado pela máquina virtual Java
public void mostrarVelocidade() {
System.out.println(“Minha velocidade é ” +
velocidadeAtual);
}
}
Testar a Classe Carro
Compilando o Programa
public class TesteCarro {
public class TesteCarro {
public static void main(String[] args) {
Carro meuCarro = new Carro();
meuCarro.mostrarVelocidade();
}
public static void main(String[] args) {
Carro meuCarro = new Carro();
meuCarro.mostrarVelocidade();
}
}
}
Compilar
javac Carro.java TesteCarro.java
ou
javac *.java
Executando o Programa
Resultado do Teste
public class TesteCarro {
public class TesteCarro {
public static void main(String[] args) {
Carro meuCarro = new Carro();
meuCarro.mostrarVelocidade();
}
public static void main(String[] args) {
Carro meuCarro = new Carro();
meuCarro.mostrarVelocidade();
}
}
}
Executar
java TesteCarro
Minha velocidade é 0
Acelerando o Carro
public class TesteCarro {
Compilar e Executar
public class Teste {
public static void main(String[] args) {
Carro meuCarro = new Carro();
meuCarro.mostrarVelocidade();
meuCarro.acelerar();
meuCarro.mostrarVelocidade();
}
}
public static void main(String[] args) {
Carro meuCarro = new Carro();
meuCarro.mostrarVelocidade();
meuCarro.acelerar();
meuCarro.mostrarVelocidade();
}
}
Compilar
Executar
Resultado do Teste
public class Teste {
Parâmetros e Instâncias
public static void main(String[] args) {
Carro meuCarro = new Carro();
meuCarro.mostrarVelocidade();
meuCarro.acelerar();
meuCarro.mostrarVelocidade();
}
}
Minha velocidade é 0
Minha velocidade é 1
Ainda a Classe Carro
Métodos para Cor
public class Carro {
String cor;
int velocidadeAtual = 0;
public class Carro {
String cor;
int velocidadeAtual = 0;
public void acelerar() {
velocidadeAtual = velocidadeAtual + 1;
}
public void acelerar() {...}
public void frear() {...}
public void mostrarVelocidade() {...}
public void frear() {
velocidadeAtual = velocidadeAtual - 1;
}
public void definirCor(String novaCor) {
cor = novaCor;
}
public void mostrarVelocidade() {
System.out.println(“Minha velocidade é ” +
velocidadeAtual);
}
public String retornarCor() {
return cor;
}
}
}
Métodos para Cor
Parâmetros de Métodos
public class Carro {
String cor;
int velocidadeAtual = 0;
public class Carro {
String cor;
int velocidadeAtual = 0;
Método com um
public void acelerar() {...}
parâmetro
public void frear() {...}
public void mostrarVelocidade() {...}
public void acelerar() {...}
public void frear() {...}
public void mostrarVelocidade() {...}
}
public void definirCor(String novaCor) {
cor = novaCor;
}
Método
“set”
public void definirCor(String novaCor) {
cor = novaCor;
Método
}
public String retornarCor() {
return cor;
}
Método
“get”
public String retornarCor() {
return cor;
}
sem
parâmetro
}
Ocultando Atributos
O método definirCor
public class Carro {
private String cor;
private int velocidadeAtual = 0;
public void definirCor(String novaCor) {
cor = novaCor;
}
public void acelerar() {...}
public void frear() {...}
public void mostrarVelocidade() {...}
Não retorna nada quando é chamado
public void definirCor(String novaCor) {
cor = novaCor;
Atributos
}
public String retornarCor() {
return cor;
}
}
Tipo de retorno: void
são
geralmente
privados (private)
ou protegidos
(protected)
Recebe um parâmetro
Parâmetro: String novaCor
O Método retornarCor
Testando definirCor
public class TesteCarro {
public String retornarCor() {
return cor;
}
public static void main(String[] args) {
Carro meuCarro = new Carro();
meuCarro.definirCor(“Vermelho”);
}
}
Retorna um objeto
Tipo de retorno: String
Não recebe nenhum parâmetro
Parâmetro: vazio
Passagem de Parâmetros
public class TesteCarro {
Criando Dois Carros
public class TesteCarro {
public static void main(String[] args) {
Carro meuCarro = new Carro();
meuCarro.definirCor(“Vermelho”);
}
public static void main(String[] args) {
Carro meuCarro = new Carro();
meuCarro.definirCor(“Vermelho”);
}
Carro seuCarro = new Carro();
seuCarro.definirCor(“Azul”);
}
}
Passando um
parâmetro (String) para
o método definirCor
Instância
“seuCarro” tem
cor Azul
Instância
“meuCarro” tem
cor Vermelho
Testando retornarCor
public class TesteCarro {
Compilando e Executando
public class TesteCarro {
public static void main(String[] args) {
Carro meuCarro = new Carro();
meuCarro.definirCor(“Vermelho”);
public static void main(String[] args) {
Carro meuCarro = new Carro();
meuCarro.definirCor(“Vermelho”);
Carro seuCarro = new Carro();
seuCarro.definirCor(“Azul”);
Carro seuCarro = new Carro();
seuCarro.definirCor(“Azul”);
System.out.println(“Meu carro é ”+ meuCarro.retornarCor());
System.out.println(“Seu carro é ”+ seuCarro.retornarCor());
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.
Resultado do Teste
Compilar
Executar
Bibliografia
public class TesteCarro {
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
DEITEL, H. M.; DEITEL P. J. Java:
Como Programar, 8a. Edição.
Pearson, 2010.
Seções 1.5 a 1.10
Capítulo 3
BOOCH, G., RUMBAUGH, J.,
JACOBSON, I. UML, Guia do Usuário.
Rio de Janeiro: Campus, 2000.
Download