Sei sulla pagina 1di 33

Fundamentos de Programao de Sistemas de Informao Objetos e Classes

Prof. Denise Sato denise.vecino@gmail.com

Java

Obrigatoriamente orientada a objetos

Portvel
Gratuita Robusta

Possui bibliotecas prontas para diversas aplicaes

Java

O que voc far em Java?

Cria um arquivo de cdigo-fonte seguindo a sintaxe definida pela linguagem. Compila o cdigo-fonte usando o compilador java (javac). Executa o bytecode compilado (.class) em uma mquina virtual java (JVM).

JVM Java Virtual Machine ou Mquina Virtual Java

responsvel pela interpretao e execuo dos bytecodes (programas compilados em Java).

Histrico bem resumido

Java 1.02

Java 2 (1.2 1.4)

250 classes Lenta Muitos erros Applets so o destaque

Java 1.1

500 classes Um pouco mais rpida Mais recursos, mais amiguvel Cdigo de GUI mais adequado

2.300 classes Muito mais rpida Pode (em algumas condies) ser executada em velocidades condizentes Profissional e poderosa 3 verses (J2ME, J2SE, J2EE)

Java 5.0 (1.5 e posteriores)


3.500 classes Mais recursos, mais fcil de desenvolver

Garbage Collector

A linguagem Java tem alocao dinmica de memria em tempo de execuo. Durante o ciclo de execuo do programa, o Java verifica se as variveis de memria esto sendo utilizadas, caso no estejam libera automaticamente a rea para uso atravs do Garbage Collector.

Objetos e Classes

Os objetos so criados a partir de classes. A classe descreve o tipo do objeto

Os objetos representam instanciaes individuais da classe

Exemplo : Lmpada incandescente

Possui um estado ligada ou desligada

Possui as seguintes operaes ligar ou desligar

Declarando uma classe

Uma classe em Java sempre declarada com a palavra-chave class seguida do nome da classe. O nome da classe no pode conter espaos, deve sempre ser iniciado por uma letra (incluindo _ e $).

Instanciando uma classe

O operador new responsvel por instanciar um objeto da classe especificada. Ele aloca memria para o objeto, chama o construtor e retorna uma referncia para o mesmo (que pode ser armazenada em uma varivel).

Inserindo atributos na classe

Os atributos definem o estado do objeto, atravs dos valores armazenados. Devem ser declarados dentro do corpo da class (entre o { e } ). Devem conter o tipo de dados que iro conter e o nome.

Tipos de Dados - Tipos Nativos

So dados que fazem parte da linguagem e no so instncias de classes. Exemplos:


boolean: valores lgicos (true ou false) byte: 1 byte, -128 e 127 short: 2 bytes, -32768 e 32767 int: 4 bytes, -2147483648 e 2147483647 long: 8 bytes -9223372036854775808 e 9223372036854775807 char: 2 bytes, caracteres Unicode entre 0 e 65535 float: 4 bytes, 1,4e-45 e 3,4e+38 (7 dgitos de preciso) long: 8 bytes, 4,9e-324 e 1,7e+308 (15 dgitos de preciso)

Tipos de Dados - Tipos Abstratos

So os tipos representados por instncias de classes. Um tipo caracterizado pelas operaes que voc pode realizar sobre este tipo. Exemplos:

String: representa uma cadeia de caracteres


length() retorna o tamanho da String toUpperCase() converte a String para caracteres maisculos toLowerCase() converte a String para caracteres minsculos ...

Inserindo mtodos em uma classe

Um mtodo deve conter uma assinatura que fornece informaes necessrias para invocar o mtodo. Os nomes dos mtodos devem ser iniciados por uma letra (incluindo _ e $), devem ser compostos de uma nica palavra e podem conter nmeros. Deve ser definido um tipo de dados de retorno (void caso no haja retorno).

Inserindo mtodos em uma classe

Deve ser definida uma lista de parmetros contendo tipo e nome (entre parnteses) O corpo do mtodo (ou implementao) deve ser descrito entre chaves { e }.

Escopo de atributos e variveis

Atributos de uma classe so vlidos por toda a classe. Variveis (primitivas ou de classe) declaradas de dentro de mtodos s sero vlidas dentro dos respectivos mtodos. Se uma varivel declarada dentro de um bloco de comandos (por exemplo: if, for) ela s vlida no bloco no qual foi declarada. Variveis passadas como argumentos para mtodos somente so vlidas dentro dos mtodos.

Modificadores de acesso

Permitem utilizar a tcnica do Encapsulamento.

So utilizados para classes, atributos e mtodos.


So eles:
PUBLIC: qualquer outra classe pode acessar. PRIVATE: somente a prpria classe pode acessar. PROTECTED: somente a prpria classe ou classes filhas podem acessar. (vamos trabalhar esse conceito de classes filhas mais para frente)

Exerccio 1

Crie uma classe MaquinaDeBilhetes com os seguintes atributos:

preco : int // armazena o valor do ticket que a mquina gera saldo: int // armazena o saldo atual do cliente total: int // armazena o total coletado pela mquina
retornaPreco: retorna o valor do preo do bilhete retornaSaldo: retorna o saldo atual do cliente retornaTotal: retorna o total de dinheiro coletado pela mquina insereDinheiro: permite que o cliente insira dinheiro na mquina para poder um imprimir um bilhete imprimeBilhete: imprime um bilhete (desde que o cliente tenha inserido o dinheiro suficiente)

Implemente os seguintes mtodos:


Exerccio 1

Crie uma classe para testar a MaquinaDeBilhetes. Utilize o mtodo insereDinheiro para simular a insero de uma quantidade de dinheiro na mquina e depois use o mtodo retornaSaldo para verificar se a mquina tem o registro correto da quantidade inserida. Voc pode inserir vrias quantidades separadamente de dinheiro na mquina, exatamente como inseriria vrias moedas ou notas em uma mquina real. Insira a quantidade de dinheiro exata necessria para um bilhete. Como essa uma mquina muito simples, o bilhete no ser emitido automaticamente; portanto chame o mtodo imprimeBilhete.

Exerccio 1

Qual valor retornado se voc verificar o saldo da mquina aps imprimir o bilhete? Experimente inserir quantidades diferentes de dinheiro antes de imprimir o bilhete. Voc consegue imprimir um bilhete com valor inferior ao preo? O que acontece? Crie outra mquina de imprimir bilhetes com um preo diferente. Compre um bilhete dessa mquina. O bilhete impresso diferente?

Exerccio 2

Desenvolva uma classe Java chamada Apolice com os seguinte atributos:

nomeSegurado: String idade: int valorPremio: float


imprimir(): no retorna valor e deve mostra na tela todos os atributos da classe Apolice. calcularPremioApolice(): no retona valor e deve calcular o valor do prmio seguindo as regras:

A classe Apolice dever conter os seguinte mtodos:


Idade maior ou igual a 18 anos e menor ou igual a 25 anos: valorPremio deve conter o valorPremio atual acrescido de 20%

Exerccio 2

Idade superior a 25 anos e menor ou igual a 36 anos: valorPremio deve conter o valorPremio atual acrescido de 15% Idade superior a 36 anos: valorPremio deve conter o valorPremio atual acrescido de 10%

oferecerDesconto(): no retorna valor, mas recebe o parmetro cidade, que ir conter o nome da cidade para clculo do desconto (use equals() para comparar Strings)

Curitiba 20% de desconto Rio de Janeiro 15% de desconto So Paulo 10% de desconto Belo Horizonte 5% de desconto Demais cidades no possuem desconto.

Exerccio 2

Desenvolve uma segunda classe chamada TestaApolice com o mtodo main de acordo com a descrio abaixo:

Crie um objeto do tipo Apolice; Execute o mtodo imprimir; Execute o mtodo calcularPremioApolice; Execute o mtodo imprimir; Execute o mtodo oferecerDesconto passando como parmetro Curitiba; Execute o mtodo imprimir novamente.

Exerccio 3

Implemente um programa que imprima na tela os fatoriais de 1 a 10. O fatorial de um nmero n n * n-1 * n-2 ... at n = 1. Se possvel utilize recurso para resolver o problema. Devem ser criadas 2 classes, uma para teste e outra para clculo do Fatorial.

Qual mesmo a diferena entre classe e objeto?

Uma classe no um objeto (mas usada para constru-lo). Uma classe um projeto de um objeto. Ela informa a mquina virtual como criar um objeto desse tipo especfico. Cada objeto criado a partir dessa classe ter seus prprios valores para as variveis de instncia da classe.

Como projetar uma classe?

Estado Pense nas coisas que o objeto conhece sobre si prprio

Atributos ou variveis de instncia


Comportamento

Pense nas coisas que o objeto faz

Mtodos

Abandonando a main

Se voc estiver codificando na sua funo main ainda no est realmente trabalhando de forma orientada a objetos. adequado executar um programa de teste dentro da main, mas em um aplicativo OO real, voc precisar de objetos que se comuniquem com outros objetos e no de um mtodo main() esttico criando e testando objetos. As duas finalidades da main so:

Testar sua classe real Acionar/iniciar seu aplicativo Java

Exerccio 4 Jogo de Adivinhao

O jogo de adivinhao envolve um objeto jogo e trs objetos jogador. O jogo gera um nmero aleatrio entre 0 e 9 e os trs objetos jogador tentam adivinh-lo. Classes:

JogoDeAdivinhacao, Jogador e CarregadorDeJogo

Lgica:

na classe CarregadorDeJogo que o aplicativo iniciado, ela possui o mtodo main. No mtodo main, um objeto JogoDeAdivinhacao criado e seu mtodo iniciaJogo chamado.

Exerccio 4 Jogo de Adivinhao

Lgica:

No mtodo iniciaJogo do objeto JogoDeAdivinhacao que o jogo inteiro se desenrola. Ele cria os trs jogadores e, em seguida, pensa em um nmero aleatrio (aquele que deve ser adivinhado). Depois solicita a cada jogador que adivinhe, verifica o resultado e exibe informaes sobre o(s) jogador(es) vencedor(es) na tela ou pede que adivinhem novamente.

Obs.: Para que o programa gere um nmero aleatrio use:


int numero = (int) (Math.random() * 10);

Exerccio 4 - Classes

Relembrando...

Todo cdigo Java definido em classes.

Uma classe descreve como criar um objeto desse tipo de classe. Uma classe como um projeto. Um objeto deve saber cuidar de si prprio. No necessrio conhecer com a maneira como ele age internamente.
Um objeto conhece coisas e faz coisas.

Relembrando...

As coisas que o objeto conhece sobre si prprio se chamam atributos. Eles representam o estado de um objeto. As coisas que um objeto faz so chamadas de mtodos. Eles representam o comportamento de um objeto. Quando uma classe criada, talvez voc queria criar uma classe de teste separada, para criar objetos do seu novo tipo de classe. Em tempo de execuo, um programa Java nada mais do que objetos comunicando-se com outros objetos.

Potrebbero piacerti anche