Upload
internet
View
103
Download
1
Embed Size (px)
Citation preview
Introdução a Java:Classes, métodos e variáveis
Eduardo Figueiredo
24 de Março de 2010
POO Aula 05
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
Dois trabalhos: 15 pts cada Trabalho 1 (T1): Abril Trabalho 2 (T2): Junho
Exercícios serão contados como pontos extras
Livro Texto: 6ª x 8ª edição
Conteúdo Páginas (6ª) Páginas (8ª)
Antes de Começar XXXIII a XL XXII a XXIX
Seções 1.6 a 1.10 5 a 7 5 a 7
Seção 1.16 14 a 17 15 a 17
Seções 3.1 a 3.5 58 a 68 57 a 67
Au
la 2
Au
la 5
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
carrosMinha 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
corvelocidadeAtual
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 Mais a extensão
“.java”
public class Carro { String cor; int velocidadeAtual;
void acelerar() {} void frear() {}}
Arquivo Carro.java
Modificador public permite acesso / chamadas de qualquer outra classe do programa
Corpo de Classes e Métodos
O corpo de uma classe é delimitado por chaves { }
public class Carro { String cor; int velocidadeAtual;
void acelerar() {...} void frear() {...}}
O corpo de um método também é delimitado por chaves { }
Convenção de Nomes
Nome de classes Substantivo Iniciar com letra maiúscula CamelCase (MeuCarro)
public class Carro { String cor; int velocidadeAtual;
void acelerar() {...} void frear() {...}}
Nome de métodos Verbo Iniciar com minúsculo camelCase (acelerarCarro)
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 | ...
public class Carro { private String cor; private int velocidadeAtual;
public void acelerar() {} public void frear() {}}
Nome: acelerar | frear | ...
Parâmetros:delimitado por parênteses
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 ...
Um programa Java começa pelo método main
public class Carro { String cor; int velocidadeAtual = 0;
public void acelerar() { velocidadeAtual = velocidadeAtual + 1; } public void frear() { velocidadeAtual = velocidadeAtual - 1; }}
Exception in thread main ...
O Método Main
É uma boa prática colocar o método main em uma classe separada
public class Teste { public static void main(String[] args) { ... }
}
O Método Main
O método main é automaticamente chamado pela máquina virtual Java
public class Teste { public static void main(String[] args) { ... }
}
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
Compilar
public class Teste { public static void main(String[] args) { Carro meuCarro = new Carro(); meuCarro.mostrarVelocidade(); }}
javac Carro.java Teste.javaou
javac *.java
Executando o Programa
Executar
public class Teste { public static void main(String[] args) { Carro meuCarro = new Carro(); meuCarro.mostrarVelocidade(); }}
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 é 0Minha 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; }
public String retornarCor() { return cor; }}
Método“set”
Método“get”
Parâmetros de Métodos
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étodo com um parâmetro
Método sem parâmetro
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
Não retorna nada quando é chamado Tipo de retorno: void
Recebe um parâmetro Parâmetro: String novaCor
public void definirCor(String novaCor) { cor = novaCor; }
O Método retornarCor
Retorna um objeto Tipo de retorno: String
Não recebe nenhum parâmetro Parâmetro: vazio
public String retornarCor() { return cor; }
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 “meuCarro” tem
cor VermelhoInstância
“seuCarro” tem cor Azul
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 é VermelhoSeu 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.