introdução a java: classes, métodos e variáveis eduardo figueiredo 24 de março de 2010 pooaula...

Post on 18-Apr-2015

103 Views

Category:

Documents

1 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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.

top related