• Nenhum resultado encontrado

Programação Java II. Prof. Vinicius Rosalen

N/A
N/A
Protected

Academic year: 2021

Share "Programação Java II. Prof. Vinicius Rosalen"

Copied!
100
0
0

Texto

(1)

Programação

Java II

(2)
(3)

Conceitos OO

• Gap semântico

– Nossa mente é orientada a objetos;

– Se nossa LP também for OO, podemos diminuir o gap semântico:

• Os recursos oferecidos são os mesmos, porém os mecanismos de abstração são mais poderosos;

• Passamos a construir a solução em termos do domínio do problema (mundo real – objetos);

(4)

Conceitos OO - Relembrar

• Características..

– Linguagens tradicionais:

• Dados e procedimentos são consideradas entidades separadas

– Linguagens OO:

• Entidade única e indivisível – objeto

– Objeto encapsula os dados e os procedimentos (métodos)

– Dados só podem ser modificados pelos métodos que são parte do objeto – Chamar um método tem o significado de passar uma mensagem

Sistemas OO – coleção de objetos se comunicando, cooperando para atingir um resultado

(5)

Conceitos OO - Relembrar

Objeto Estado Comportamento

Cão Nome Raça Cor Caçando Comendo Balançando o ramo Bicicleta Velocidade do pedal

Marcha

Velocidade da Bike

Freiar Acelerar

Mudar de marcha

• Exemplos de

Objetos de software:

– Todo objeto no mundo real possui 2 características:

• Estado;

• Comportamento. • E identidade única

(6)

• Objetos de software:

– Estado são representados por atributos (armazenados pelas variáveis de classe modeladas);

– Comportamento são representados por métodos de

classe (funções).

(7)

Conceitos OO - Relembrar

• Classes

– Uma Classe é um Protótipo que define as variáveis e métodos comuns a todos os objetos de um determinado tipo.

• Uma classe define as propriedades (estado) e as operações (comportamento) que são comuns a um conjunto de objetos. – Uma Classe define um tipo, a partir do qual todos os

objetos são criados.

Classe Bicicleta

(8)

Conceitos OO - Relembrar

• Classes

– As classes fornecem duas potencialidades muito

importantes:

• Encapsulamento

– O poder de esconder a informação, reduzindo desse modo a quantidade de detalhes que necessitam ser lembrados, ou seja, trocados entre programadores.

• Instanciação

(9)

Conceitos OO - Relembrar

Classe Bicicleta Objetos (instâncias) da classe Bicicleta Em software, instâncias alocam um espaço de memória especificado do seu protótipo (CLASSE).

• Instâncias:

(10)

Conceitos OO - Relembrar

• Instâncias:

– Importância da nomenclatura definida:

• Conceitos de atributos e métodos de instâncias X variáveis e métodos de classe

– Instâncias

• São referencias ao objetos do problema;

– Atributos de instância:

• Conjunto de variáveis que modelam um objeto em um determinado instante. Velocidade do pedal Marcha Velocidade da bike

(11)

Conceitos OO - Relembrar

• Instâncias:

– Métodos de instância:

• Conjunto de métodos que interagem sobre uma instância.

Encapsulamento Restringe o acesso aos atributos permitindo Modularidade e Seleção de Informação Exibida Freiar Acelerar Mudar de marcha

(12)

Conceitos OO - Relembrar

Você (You) solicita

mudança de marcha para sua bicicleta (YourBicycle)

Informação necessárias:

• Objeto destino (YourBicicle); • Método (changeGears);

• Parâmetro (lowerGear).

• Mensagem

(13)

Conceitos OO - Relembrar

• Resumindo...

– Todas as linguagens orientada a objetos têm os seguintes conceitos:

• Classes (tipo do objeto)

• Instâncias (objetos)

• Mensagens (troca de informações)

• Atributos (estado do objeto)

• Métodos (comportamento do objeto)

• Herança, Subclasse, etc

– Mas como podemos codificar essas coisas??!!!

• Diferente de antes, onde tudo era feito dentro do método

(14)

Estrutura de uma classe

class Pessoa { } int qual_Idade () { return idade; }

void casar (Pessoa p) { conjuge = p; } int idade; Pessoa conjuge;

Classe

Propriedades

Métodos

• Nós precisamos aprender uma nova estrutura...

– Todos aplicados de acordo com a sintaxe da linguagem Java

(15)

Declaração de Classes

• Para declarar uma nova classe, utiliza-se a seguinte

sintaxe:

<modificador-acesso> class <nome-classe> {

/* corpo da classe,com atributos e métodos */

}

Ex:

class Ponto { ...

}

– A classe cria um novo tipo, a partir do qual podemos criar e usar objetos.

Estamos definindo um tipo!!

(16)

Declaração de Variáveis

• Nas classes podemos declarar variáveis/atributos e métodos: – Variáveis definem o estado de um objeto, de acordo com seus atributos.

– Métodos define como é possível interagir com um objeto, de maneira a modificar o seu estado ou obter informações a seu respeito.

• Para declarar um atributo de classe deve-se atender a seguinte sintaxe:

<modificador de acesso><tipo><nome>;

– Exemplos:

class MinhaClasse { public int atributo1; public int atributo2; }

class Ponto {

float x, y;

(17)

Assinatura Corpo Retorno

Declaração de Métodos

• A declaração de um método deve obedecer a seguinte sintaxe:

– Exemplos:

– No exemplo abaixo, o método atributosSaoIguais retorna verdadeiro caso valores dos atributos sejam iguais

class Ponto {

int x, y;

void mover ( int dx, int dy) { x += dx; y += dy; } } <modificador-acesso><tipo-retorno><nome>(<parametros>){ /* código do método */ } class MinhaClasse {

public int atributo1; public int atributo2;

public boolean atributosSaoIguais() {

return (atributo1 == atributo2); }

(18)

Declaração de Métodos

• Retorno

– Já pudemos observar que um método pode retornar um valor usando o comando return:

– Em métodos que não retornam valores (void)

(19)

Declaração de Métodos

• Importante:

Assinatura de um método

– Define o método de uma forma única;

– Em Java, o nome e os tipos de parâmetros de um método formam sua assinatura;

– Não pode haver dois métodos com a mesma assinatura na mesma classe (mesmo que o tipo de retorno seja

diferente);

– Algumas linguagens incluem o tipo de retorno na assinatura. Java não o faz.

(20)

Manipulação de Objetos em

Java

• Blz,

– Sabemos definir uma classe e especificar seu

método e atributos…

– Mas como isso vai virar um objeto que eu possa

utilizar...???

– Como eu posso instanciar um objeto de uma

classe????

(21)

Manipulação de Objetos

em Java

• Para criar um objeto em memória, ou instanciá-lo, precisamos utilizar o operador new , da seguinte maneira:

nome = new String(“meu nome”);

• O código de criação de objeto feito anteriormente possui o seguinte significado:

• Importante: Objetos Java são manipulados por referências.

• Internamente, o Java aponta para a posição da memória que representa a variável

– No código Java abaixo, foi criada uma referência chamada nome para o objeto da classe String.

String nome;

– Ao declarar uma referência, ainda não há objeto criado em memória.

(22)

Instanciação de Objetos

• Vamos analisar com mais detalhes... As figuras a seguir ilustram o processo de instanciação do objetos

– Toda classe criada pode ser usada na declaração de variáveis (podendo futuramente se tornarem objetos).

• Exemplo:

class Editor {

public static void main (String arg[]) {

Ponto p; int a = 2; } } Declaração de uma variável p do tipo da classe Ponto. Declaração de uma variável a do tipo inteiro. X = ? Y = ? 2 class Ponto { int x, y;

void mover ( int dx, int dy) { x += dx; y += dy; } }

(23)

Instanciação de Objetos

• Dada uma classe, pode ser criada uma nova

instância desta classe usando o comando

new

.

– Aqui o objeto é criado em memória

• Exemplo:

class Editor {

public static void main (String arg[]) {

Ponto p = new Ponto(); }

}

X = 0 Y = 0

p

(24)

Instanciação de Objetos

• Quando não inicializamos explicitamente, um valor

default

é atribuído a ele:

(25)

Manipulação de Objetos

em Java

• Interessante:

Duas variáveis podem estar

referenciando o mesmo objeto em memória.

– Exemplo:

String str1;

String str2 = new String(“teste”);

str1 = str2; //str1 e str2 são o mesmo objetos na memória

– No código acima,a atribuição str1 = str2 faz com que str1

passe a referenciar o mesmo objeto em memória que str2.

teste

(26)

Manipulação de Objetos

em Java

• Vimos que para cada objeto criado em memória

será criado espaço em memória distinto para os

atributos da classe:

– Ex: A classe MinhaClasse possui as variáveis de classe atr1

e atr2

MinhaClasse o1,o2;

o1 = new MinhaClasse(); o2 = new MinhaClasse();

– Os dois atributos são chamados atributos de instância.

Qualquer objeto do tipo MinhaClasse possuirá dois atributos denominados atr1 e atr2

(27)

Manipulação de Objetos em

Java

• Blz,

– Sabemos como instanciar um objeto…

– Mas como podemos acessar os seus atributos e

comportamentos....??

(28)

Manipulação de Objetos

em Java

• Acessando membros de uma classe -

Variáveis

– As propriedades visíveis dos objetos podem ser manipuladas diretamente através do ponto (.):

Ponto p1 = new Ponto(); p1.x = 1;

p1.y = 2;

// p1 representa o ponto (1,2) Ponto p2 = new Ponto();

p2.x = 3; p1.y = 4;

// p2 representa o ponto (3,4)

• Esse acesso também depende do

controle de acesso:

público, privado, protegido

• Já já vamos falar sobre isso....

X = 1 Y = 2

p1

X = 3 Y = 4

p2

(29)

Manipulação de Objetos

em Java

• Acessando membros de uma classe –

Variáveis

(30)

Manipulação de Objetos

em Java

• Acessando membros de uma classe – Métodos Operacionais

– A troca de mensagens entre os objetos é realizada através da

chamada de métodos com passagem de parâmetros

MinhaClasse objeto1 = new MinhaClasse(); objeto1.atributo1 = 0;

objeto1.atributo2 = 1;

boolean iguais = objeto1.atributosSaoIguais();

– Métodos se comporta como funções, exceto que eles só podem ser invocados a partir de um objeto ou de uma classe (métodos estáticos da classe).

– Métodos podem acessar diretamente os atributos e demais métodos de um objeto que não possui controle de acesso.

– Métodos podem ter zero ou mais parâmetros.

– Um método que não retorna nenhum valor (como um procedimento), deverá ser declarado como retornando void (nada)

(31)

Manipulação de Objetos

em Java

• Acessando membros de uma classe –

Métodos

Operacionais

– Mensagem entre Objetos

class Editor {

void criarPonto (int x1, int y1) { Ponto p1 = new Ponto ();

p1.x = x1; p1.y = y1; p1.desenhar(); } } Troca de mensagem de um objeto da classe Editor com o

objeto da classe Ponto denominado

(32)

Manipulação de Objetos em

Java

• Acessando membros de uma classe –

Métodos

Operacionais

(33)

Manipulação de Objetos

em Java

Objeto a

Objeto f

...

float calcularBonus (Funcionario f) { float bonus = 0;

if ( f.ehChefe ( ) ) {

bonus = f.salario * 0.5; }

else bonus = f.salario * 0.2;

return bonus; }

...

true

Premissas:

Método da Classe Folha. Instância denominada a.

true

• Acessando membros de uma classe – Métodos Operacionais

(34)

Estrutura de um programa

Java -

MAIN

• Um programa OO cria objetos e interage com eles.

– Em Java um programa também é uma classe, que possui

um método main, conforme mostrado abaixo:

public class MeuPrograma {

public static void main(String [] args){

/* corpo do programa */

}

}

– A assinatura do método deve ser exatamente como a da classe acima.

– O parâmetro args é um vetor de Strings que recebe os argumentos de linha de comando passados para o

(35)

Estrutura de um programa

Java

1. Define a classe programa;

2. Adiciona o método principal (main);

3. Adiciona o código a ser executado;

• A classe abaixo implementa um programa

Hello

World

em Java:

Agora temos a visão de classes e métodos e não de procedimentos e corpo principal

(36)

Estrutura de um programa

Java

// Programa.java

public class Principal {

public static void main(String args[]) {

int numargs = args.length; String arg1 = args[0];

String arg2 = args[1]; }

}

C:\>java Principal nome endereco ...

args[0] args[1] args[2] ... args.length

• Importante

- Argumentos

Modifique o exemplo anterior para pegar e imprimir um parâmetro digitado pelo usuário

(37)

Estrutura de um programa

Java

• Blz..

– Entendemos a estrutura sintática básica e como

referenciar os atributos e métodos..

– Agora vamos analisar um exemplo, desde a

modelagem até o implementação...

(38)

Estrutura de um programa

Java

• Modelagem

– Seja a Representação gráfica da classe Carro:

(39)

Estrutura de um programa

(40)

Estrutura de um programa

Java

• Vimos que....

– Instância de uma classe é a representação de uma classe na memória do computador.

(41)

Estrutura de um programa

Java

• Podemos ter

várias

instâncias de

uma mesma

classe…

(42)

Controle de Acesso

• Blz.. Entendemos a estrutura sintática básica e como

referenciar os atributos e métodos..

• E vimos um exemplo pra entender melhor o

processo...

• Reparam que aparecia um comando public....

– Que raios é isso???....

(43)

Controle de Acesso

• O controle de acesso a variáveis e métodos é feito

por meio dos modificadores de visibilidade.

– Determinam a visibilidade de um determinado membro da classe com relação a outras classes; (modificadores-acesso)

• Public : variáveis/método pode ser acessado em qualquer classe.

• Private : variáveis/método só pode ser acessado no escopo (código) da própria classe.

• Protected : estende o controle private, permitindo que subclasses acesse o variáveis/método.

• Package : variáveis/método pode ser acessado por classes que faça parte do mesmo pacote. Aplica-se a variáveis/método sem modificador de visibilidade indicado ou amigo.

(44)

Controle de Acesso

• Variáveis e métodos públicos -

Public

– Variáveis públicas

• Permitem acesso de leitura/escrita:

– Não recomendável – o projeto do sistema deve prever métodos acessores.

• Constantes públicas:

– Somente acesso de leitura (recomendável)

– Métodos públicos

• Serviços oferecidos aos clientes da classe

– Devem formar um conjunto consistente de serviços relacionados ao conceito que a classe representa uma vez que representa o comportamento da classe para os outros objetos

• Interfaces:

(45)

Controle de Acesso

(46)

Controle de Acesso

• Variáveis e métodos privativos -

Private

– Variáveis privativas

• Permitem acesso de leitura/escrita somente na própria classe

• Não são transmitidos por herança

– Métodos privativos

• Não podem ser invocados fora da classe

• Não são transmitidos por herança • Aplicação:

– Métodos de serviço que não interessam a classes derivadas – Métodos pertinentes apenas a classe a qual pertence.

(47)

Controle de Acesso

(48)

Controle de Acesso

• Variáveis e métodos protegidos -

Protected

– Variáveis protegidos

• Permitem acesso de leitura/escrita somente na própria classe

• São transmitidos por herança

– Métodos protegidos

• Não podem ser invocados fora da classe em outro pacote

• São transmitidos por herança • Podem ser redefinidos

• Aplicação:

– Métodos de serviço que podem interessar a classes derivadas, mas que não são acessados por outros objetos.

(49)

Controle de Acesso

• Variáveis e métodos protegidos - Protected

– Permite acesso interno (à própria classe); – Permite acesso às classes do mesmo pacote;

– Permite acesso às subclasses (do mesmo ou de outro pacote);

– Não permite acesso às demais classes.

(50)

Controle de Acesso

Variáveis e métodos protegidos –

Protected

– Não permite acesso às demais classes.

(51)

Controle de Acesso

• Rapidamente:

(52)

Controle de Acesso

• Na classe abaixo, há um atributo público e outro

privado:

class MinhaClasse {

public int atributo1; private int atributo2;

public boolean atributosSaoIguais(){ return (atributo1 == atributo2);

}

}

– Qual o erro do código abaixo:

1:class Teste {

2:public static void main(String[] args){ 3:MinhaClasse obj1 = new MinhaClasse(); 4:obj1.atributo1 = 10;

5:obj1.atributo2 = 30; 6:}

7:}

(53)

Controle de Acesso

• Variáveis e métodos

package-private

Package

– É uma forma de organizar grupos de classes relacionadas

• São úteis para:

– Organizar as classes em unidades, permitindo usar apenas as necessárias em cada programa;

– Reduzem o problema de conflito de nomes;

– Permite proteger classes, variáveis e métodos de maneira mais ampla do que em cada classe de forma individual;

– Pode ser usado para identificar as classes (hierarquia diretório)

» Maneira de construir bibliotecas de classes (coleção de arquivos .class);

- Pacotes: Agrupamento de classes Pode conter subpacotes

(54)

Controle de Acesso

• Variáveis e métodos

package-private

Package

– É uma forma de organizar grupos de classes relacionadas CLASSPATH = C:\Exemplos

package tela;

public class Exemplo2 { ...

}

O comando

package diz que a classe Exemplo2

faz parte do pacote tela (o .class gerado vai

ficar dentro de tela)

(55)

• Variáveis e métodos

package-private

Package

– Pacotes e Diretórios

• Existe relação direta entre os nomes dos pacotes e a estrutura dos diretórios

– Cada pacote corresponde a um diretório

– Arquivos e classes de um mesmo pacote devem estar em um mesmo diretório

• Uso de . para indicar existência de subpacote

– Classes e arquivos do subpacote devem estar em subdiretório correspondente no diretório do pacote

– Uso de . como notação multiplataforma para definição do caminho dos diretórios

• Classes criadas em arquivos que não especificam o pacote são colocadas no pacote padrão do diretório,

– Que pode ser o mesmo onde se encontra os arquivos .java

(56)

• Convenção para Nomes de Pacotes

– Uso de pacotes obtidos na Internet ou em empresas

• Pode gerar conflito de nomes de classes

– Convenção proposta pelos projetistas de Java

• Uso do domínio do criador do pacote como prefixo do pacote na ordem inversa

• InterNIC garante que nomes de domínios são únicos

• Dentro de um mesmo domínio devem ser estabelecidas convenções

específicas

package br.uvv.inf.vinicius.pacotes.meuPacote;

– Exemplo de Pacotes do Synergia

– Implica em criar localmente uma estrutura de diretório

• Com os nomes indicados ns URL para então armazenar as classes dentre do diretório meuPacote

(57)

Controle de Acesso

• Variáveis e métodos

package-private

Package

– CLASSPATH = C:\Exemplos

package distribuidora.pedido; public class ItemPedido { ... }

ItemPedido.java

O comando package

diz que a classe

ItemPedido faz parte do pacote

distribuidora.pedido (o .class gerado vai

ficar dentro de distribuidora.pedido)

(58)

Controle de Acesso

• Outro comando importante é a declaração import

– Para importar (ou seja acesssar) classes de um pacote, é necessário utilizar a declaração import

• É possíve importar uma classe específica

– import java.util.Vector;

• Ou todas a classes do pacote, usando *

– import java.util.*;

– Uma IDE ajuda bastante nesta tarefa.

– Não se usa import para acessar classes do pacote padrão

• As classes do pacote java.lang, por exemplo, são importadas automaticamente;

– Não é necessário:

» import java.lang.String; » import java.lang.Math; » import java.lang.*;

– O import deve direcionar para o mesmo local onde se encontra as classes do pacote,

(59)

Controle de Acesso

• A declaração

import

(60)

Controle de Acesso

• A declaração

import

– Importação estática

• A partir do Java 5 é possível importar os membros estáticos de uma classe:

(61)

Controle de Acesso

• Acesso variáveis e métodos –

Resumão

– Em ordem crescente de acesso

• private

• “package-private"

– modificador ausente

• protected • public

(62)

Controle de Acesso

• Acesso variáveis e métodos –

Resumo

– public

• Acessível

– Na própria classe – Nas subclasses

– Nas classes do mesmo pacote – Em todas as outras classes

• Use para

– Construtores e métodos que fazem parte da interface do objeto – Métodos estáticos utilitários

– Constantes (estáticas) utilitárias

• Evite usar em

– Construtores e métodos de uso restrito – Campos de dados de objetos

(63)

Controle de Acesso

• Acesso variáveis e métodos –

Resumo

– private

• Acessível

– Na própria classe (nos métodos, funções estáticas, blocos estáticos e construtores)

• Use para

– Construtores de classes que só devem criar um número limitado de objetos

– Métodos que não fazem parte da interface do objeto funções estáticas que só têm utilidade dentro da classe

– Variáveis e constantes estáticas que não têm utilidade ou não podem ser modificadas fora da classe campos de dados de objetos

(64)

Controle de Acesso

• Acesso variáveis e métodos –

Resumo

– protected • Acessível

– Na própria classe – Nas subclasses

– Nas classes do mesmo pacote

• Use para

– Construtores que só devem ser chamados pelas subclasses (através de super())

– Métodos que só devem ser usados se sobrepostos

• Evite usar em

– Construtores em classes que não criam objetos

(65)

Controle de Acesso

• Acesso variáveis e métodos –

Resumo

– package-private

• Modificador ausente

– Se não houver outro modificador de acesso, o acesso é "package-private".

• Acessível

– Na própria classe

– Nas classes e subclasses do mesmo pacote

• Use para

– Construtores e métodos que só devem ser chamados pelas classes e subclasses do pacote

– Constantes estáticas úteis apenas dentro do pacote

• Evite usar em

– Construtores em classes que não criam objetos

– Métodos cujo uso externo seja limitado ou indesejável campos de dados de objetos

(66)

Controle de Acesso

• Sobreposição

– Métodos sobrepostos nunca podem ter menos acesso

que os métodos originais

• Se método original for public, novas versões têm que ser public • Se método original for protected, novas versões podem ser

protected ou public

• Se método original não tiver modificador de acesso (é "package-private"), novas versões podem ser declaradas sem modificador de acesso, com modificador protected ou public

• Se método original for private, ele não será visível da subclasse e portanto, jamais poderá ser estendido.

(67)

Controle de Acesso

private sem

modificador

protected public

Sim

Sim

Sim

Sim

Não

Sim

Sim

Sim

Não

Sim

Sim

Sim

Não

Não

Sim

Sim

Não

Não

Não

Sim

Mesma classe Subclasse mesmo pacote Não Subclasse mesmo pacote Subclasse outro pacote Não Subclasse outro pacote

(68)

Controle de Acesso

Máquina Java

?

?

Onde estão as Classes?

Variável de Ambiente CLASSPATH

• Vamos falar uma palavrinha sobre o CLASSPATH

– Variável de Ambiente usada pelas Ferramentas do JDK para encontrar classes

(69)

• CLASSPATH

CLASSPATH default

:

• Inclui diretório corrente e diretórios com bibliotecas padrão de classes de Java

CLASSPATH

definido

• O caminho dos diretórios definidos no pacote importado é concatenado a todos os caminhos de diretórios

existentes no CLASSPATH

– Seja package pacotes.meuPacote;

– Se C:\Vinicius está no CLASSPATH:

» Ao compilar ou executar MinhaAplic1, as classes do pacote

meuPacote serão procuradas no diretório

C:\Vinicius\pacotes\meuPacote e .\pacotes\meuPacote

(70)

• Cuidados com o CLASSPATH

– A busca pela classe pertencente a pacote padrão será interrompida

quando for encontrada a primeira classe com o nome da classe

procurada

• Pode provocar erro difícil de encontrar

– Erro tende a ocorrer mais frequentemente quando a variável de Ambiente CLASSPATH é modificada permanentemente

• Recomenda-se definir CLASSPATH provisoriamente usando a opção -classpath das ferramentas do JDK

– Diretório corrente deve ser incluído na opção –classpath

– Uso de IDEs:

• Utilizar uma IDE abstrai todas estas preocupações; • A IDE cuida de todo o processo de compilação.

(71)

Pacotes JAR

• Arquivos JAR permitem agrupar os arquivos e classes do programa para que eles possam ser executados em outros ambientes

• São arquivos compactados no formato ZIP e podem ser abertos por qualquer programa compatível

(72)

Exercício - Construção de

Classes

• Blz, entendemos alguma teoria...

– Vamos construir juntos um exemplo inteiro, com

duas classes

– Criação de classes A e B e acesso do objeto de uma classe A numa classe B

(73)

Exercício - Construção de

Classes

É definida uma variável local para referenciar um objeto do tipo Bicicleta b Memória

• O que a gente quer fazer....

Instanciando um NOVO objeto Bicicleta b Memória * b Memória

.

velocidade Acessando o atributo do objeto instanciado Chamando o método do objeto instanciado * b Memória

.

aumentaVelocidade( )

(74)

Exercício - Construção de

Classes

• Exercício (

Fazer no NetBeans

)

– Crie uma classe chamada Bicicleta com o atributo: • velocidade : indica a velocidade atual;

– Acrescente à classe Bicicleta os métodos:

• aumentarVelocidade

• diminuirVelocidade

– Escolha os parâmetros e tipo de retorno adequados para cada método

(75)

Exercício - Construção de

(76)

Exercício - Construção de

Classes

• Exercício

– Crie uma classe AndarBicicleta que instancia um objeto da classe Bicicleta e acesso seus atributos e métodos,

imprimindo os resultados

– AndarBicicleta.java

– Faça os seguintes testes em AndarBicicleta.java

• Brincar com os modificadores de acesso, colocando para private e ver o que acontece

(77)

Exercício - Construção de

(78)

Exercícios

• Blz... Agora é hora de exercitar...

• Tente resolver os seguintes problemas...

– Em dupla

– Apresentar ao professor no final da aula

– Pontuação em Atividades em sala de aula...

(79)

Exercício - Construção de

Classes

• Crie uma classe chamada Televisao de acordo com a

representação abaixo.

– Os métodos simplesmente imprimem um texto (String) dizendo que eles fazem

• Logo depois crie uma classe programa que utilize os

atributos e métodos implementados

(80)

Exercício

• Crie uma classe chamada Produto de acordo com a

representação abaixo.

– Crie uma classe que crie um objeto da classe Produto, atribua valores aos atributos através dos métodos e imprime seus valores também utilizando os métodos.

(81)

Exercício

• Crie a classe Retangulo de acordo com o modelo

abaixo

• Depois crie uma classe programa para executar o

cálculo da área do retângulo

(82)
(83)

Exercício - Construção de

Classes

• Crie uma classe chamada Calculus....

– Que tenha os métodos somar, subtrair, multiplicar e dividir

– Esses métodos sempre recebem 2 parâmetros – E retornam a operação solicitada...

• Logo depois crie uma classe programa UsaCalculus

que utilize os métodos implementados

(84)

Exercício - Construção de

Classes

• Crie uma classe chamada Conta de acordo com a

representação abaixo.

– Implemente os métodos...

• Logo depois crie uma classe programa que utilize os

atributos e métodos implementados

(85)

Exercício

• Crie e implemente a classe Carro com as seguintes

propriedades:

– Um veículo tem um certo consumo de combustível (medido em litros/km)

– E uma certa quantidade de litros no tanque.

– O consumo é especificado na declaração do atributo e o nível de combustível inicial é 0.

– Forneça um método andar que simule o ato de dirigir o veículo por uma certa distância, reduzindo o nível de combustível no tanque de gasolina

– E o método obterGasolina, que devolva o nível atual de gasolina e

(86)

Exercício

• Crie e implemente uma classe PopulacaoBaratas que

simule o crescimento de uma população de baratas.

– O tamanho inicial da população de baratas é definido no atributo.

– O método dobraBaratas, simula em período no qual a população dobra.

– O método spray pulveriza as baratas com um inseticida e reduz a população em 10%.

– O método obterBaratas devolve o número atual de baratas.

– Implemente também uma classe que simule uma cozinha que começa com 10 baratas.

– Utilize a dobraBaratas, utilize o spray, e imprima a contagem de baratas.

(87)

Exercício

• Projete uma classe para encontrar o menor e o maior

valor de um conjunto de números inteiros aleatórios.

– Especifique os atributos

• O conjunto de inteiros deverá ter 10 elementos.

– Utilize os recursos da classe Integer para verificar o maior e menor valor inteiro possível.

– Integer.MAX_VALUE; e Integer.MIN_VALUE;

– Os elementos do conjunto de inteiro deverá ser gerado de forma randômica

– Math.random() * 10

• O que deve ser feito para adequar o retorno desse método ao tipo do conjunto?

(88)
(89)

Exercício

Exiba o valor do empréstimo possível para um

funcionário de uma empresa.

– Sabe-se:

• Modele essa características em uma classe, junto com seus métodos, e depois crie uma outra classe principal para usá-la • Pegue as informações via Scanner

(90)

Exercício

Crie uma classe Pessoa com atributo Nome e Idade

Solicite ao usuário essas informações de um grupo

de 5 pessoas.

– Pegue as informações via Scanner

Após o término da entrada, apresente:

– a média das idades,

– a maior idade,

– a menor idade,

– a quantidade de pessoas maior de idade.

(91)

Exercício

• Crie uma classe Calculadora e UsaCalculadora que defina e usa as operações descritas abaixo.

– Operação: soma (+ )

• Parâmetro de entrada: operando 1, double. • Parâmetro de entrada: operando 2, double. • Retorno: soma de operando 1 e 2, double.

– Operação: subtracao ( - )

• Parâmetro de entrada: operando 1, double. • parâmetro de entrada: operando 2, double.

• Retorno: subtração de operando 1 pelo 2, double.

– Operação: mult iplicacao ( * )

• Parâmetro de entrada: operando 1, double. • Parâmetro de entrada: operando 2, double.

• Retorno: multiplicação de operando 1 pelo 2, double.

– Operação: divisao ( / )

• Parâmetro de entrada: operando 1, double.

• Parâmetro de entrada: operando 2, double.

• Retorno: divisão de operando 1 pelo 2, double.

– Operação: potencia ( ^ ) (não pode usar Math.pow, utilize laços for ou while)

• Parâmetro de entrada: operando 1, double. • Parâmetro de entrada: operando 2, double.

• Retorno: potência de operando 1 elevado ao operando 2, double.

– Operação: fatorial ( ! )

• Parâmetro de entrada: operando 1, int . • Retorno: fatorial de operando 1.

(92)

Exercício

Verifique a validade de uma data de aniversário

– Solicite apenas o número do dia e do mês

Além de falar se a data está ok, informe também o

nome do mês.

– Dica: meses com 30 dias: abril, junho, setembro e novembro.

(93)

Exercício

• Acrescente no exercício anterior a apresentação do

signo do horóscopo da pessoa.

• Inclua no exercício anterior a solicitação do ano de

nascimento e também da data de hoje.

– A partir destas informações, apresente a idade atual desta pessoa.

(94)

Exercício - Construção de

Classes

• Crie uma classe chamada Lampada com o atributo:

• acesa : indica se a lampada está ou não acesa;

• Acrescente à classe Lampada os métodos:

• ligar

• desligar

• Escolha os parâmetros e tipo de retorno adequados

para cada método

• Crie uma classe

TesteLampada

que instancia um objeto

da classe

Lampada

e acesso seus atributos e métodos,

imprimindo os resultados

Lampada.java

(95)

Exercício

• Estrutura de um programa Java

– Qual o resultado do código abaixo:

(96)

Exercício - Construção de

Classes

• Altere o código para que Bicicleta possa fazer parte

do pacote “veiculos”.

• O que deve ser feito na classe AndarBicicleta para

funcionar corretamente agora???

– AndarBicicletaPacote.java

(97)

Exercício - Controle de Acesso

– Declaração de Pacote (opcional) – Declarações de importação (opcional) – Declaração de classes • No máximo uma Classe Pública – Atributos – Métodos

• Estrutura da classe

(98)

Exercício - Controle de Acesso

• Acessando as classes do pacote

– Se subtituir o modificador public para protected das

variáveis de classe de ClasseTelevisaoPacoteAparelhoVideo e compilar novamente tudo o que acontece?

(99)

Exercício - Controle de Acesso

• Erro de Ambigüidade

– O que acontece se temos classes com o mesmo nome em pacotes diferentes?

• O compilador identifica classes de mesmo nome importadas por pacotes diferentes e indica onde ocorreu a ambigüidade

aparelhos.relogio Ambigua.java ./ AplicacaoClasseAmbiguaPacote.java aparelhos.video Ambigua.java

(100)

Exercício - Controle de Acesso

• Acessando as classes do pacote - Ambigüidade

Neste caso poderíamos usar todo o caminho para diferenciar a classe que vai

Referências

Documentos relacionados

(2013) avaliando o manejo da irrigação para cultura do algodoeiro com o auxílio de um software de gerenciamento desenvolvido pela fazenda onde o experimento foi conduzido,

Este trabalho possui como principais contribui¸ c˜ oes: (i) apresenta¸ c˜ ao das cau- sas atribu´ıdas no surgimento da DT de requisitos, a qual despertou nos profis- sionais

algunas de las reflexiones que estoy haciendo en estos momentos sobre un trabajo acerca de la evolución de la Historia de la Educación, como ciencia y como

1 Anais do VIII Congresso de Ecologia do Brasil, 23 a 28 de Setembro de 2007, Caxambu - MGT. Anais do VIII Congresso de Ecologia do Brasil, 23 a 28 de Setembro de 2007, Caxambu -

• Para a realização de obras em planos horizontais ou verticais ou obras com uma inclinação em uma ou duas direções • Desempenho em obras com visível laser vermelho (NL400)

Nosso objetivo foi verificar se áreas regeneradas por diferentes métodos na ARIE Morro da Vargem, Ibiraçu, Espírito Santo, apresentam diferenças na riqueza e

b. Mantenedores Empresariais: empresas em geral ligadas direta ou indiretamente às etapas de projeto, execução, manutenção e avaliação de instalações e de fornecimento de

Convencimento é um processo, possui métodos e técnicas que podem ser desenvolvidas não só para mostrar sua posição como gerar a aceitação e concordânciade sua ideiapelos