SlideShare ist ein Scribd-Unternehmen logo
1 von 71
Downloaden Sie, um offline zu lesen
Engenharia da Computação
Prof. Cícero Quarto – cicero.uema@gmail.com
1
Capítulo 3
Introdução a classes e
objetos
PROGRAMAÇÃO ORIENTADA A OBJETOS
POO
Engenharia da Computação
Prof. Cícero Quarto – cicero.uema@gmail.com
Sumário
Classes, objetos,
métodos e variáveis
de instâncias
Declarando um
método com um
parâmetro
Variáveis de instância,
métodos set e get
Tipos primitivos vs.
Tipos por referência
Inicializando objetos
com construtores
Números de ponto
flutuante e tipo double
Estudo de caso de GUI e
imagens gráficas
utilizando caixas de
diálogo
Declarando uma classe
com um método e
instanciando um objeto de
uma classe
2
Engenharia da Computação
Prof. Cícero Quarto – cicero.uema@gmail.com
Classes, objetos, métodos e variáveis de
instância
O que é uma classe na LPOO?
Conjunto de objetos com características afins;
Define o comportamento dos objetos através de
seus métodos, e quais estados ele é capaz de manter
através de seus atributos.
Classes
objetos
atributos
métodos
Exemplo: Os seres humanos 3
Engenharia da Computação
Prof. Cícero Quarto – cicero.uema@gmail.com
Para ajudar a entender classes e seu conteúdo, consideremos o
contexto abaixo:
“Suponha que você queira guiar um carro e fazê-lo andar
mais rápido pisando no pedal acelerador”.
O que deve acontecer antes que você possa fazer isso?
Alguém tem que projetá-lo (desenho de engenharia,
semelhantes às plantas utilizadas para projetar uma casa).
Os desenhos de engenharia incluem o projeto
de um pedal acelerador para aumentar a velocidade do carro.
O pedal acelerador “oculta” do motorista os complexos
mecanismos que realmente fazem o carro ir mais rápido, assim como o
pedal de freio “oculta” os mecanismos que diminuem a velocidade do
carro e a direção “oculta” os mecanismos que mudam a direção do
carro. Isso permite que as pessoas com pouco ou nenhum conhecimento
de como os motores funcionam dirijam um carro facilmente.
Classes, objetos, métodos e variáveis de
instância
4
Engenharia da Computação
Prof. Cícero Quarto – cicero.uema@gmail.com
Classes, objetos, métodos e variáveis de
instância
O carro acelerará
por conta própria?
5
Engenharia da Computação
Prof. Cícero Quarto – cicero.uema@gmail.com
Classes, objetos, métodos e variáveis de
instância
Introdução
aos
conceitos da
POO
O carro acelerará por
conta própria?
6
Engenharia da Computação
Prof. Cícero Quarto – cicero.uema@gmail.com
Classes, objetos, métodos e variáveis de
instância
Para realizar uma tarefa em um programa é
necessário um método.
O método descreve os mecanismos que
realmente realizam suas tarefas.
O método oculta de seu usuário as tarefas
complexas que ele realiza, assim como o pedal
acelerador de um carro oculta do motorista os
complexos mecanismos que fazem o carro andar mais
rápido.
Em Java, primeiro criamos uma unidade de
programa chamada classe para abrigar um método,
assim como os desenhos de engenharia do carro
abrigam o projeto de um pedal acelerador.
7
Engenharia da Computação
Prof. Cícero Quarto – cicero.uema@gmail.com
Classes, objetos, métodos e variáveis de
instância
Em uma classe, você fornece um ou mais métodos que são
projetados para realizar as tarefas da classe.
Exemplo: uma classe que representa uma conta
bancária poderia conter um método para fazer depósitos de
dinheiro em uma conta, outro para fazer saques e um
terceiro para perguntar qual é o saldo atual.
Assim como você não pode dirigir um desenho de
engenharia de um carro, você não pode “dirigir” uma classe.
Assim como alguém tem de construir um carro a partir de
seus desenhos de engenharia antes de poder realmente
guiar o carro, você deve construir um objeto de uma classe
antes de fazer um programa realizar as tarefas que a classe
descreve como fazer.
8
Engenharia da Computação
Prof. Cícero Quarto – cicero.uema@gmail.com
Classes, objetos, métodos e variáveis de
instância
Ao dirigir um carro, o ato de pressionar o acelerador
envia uma mensagem para o carro realizar uma tarefa –
isto é, fazer o carro andar mais rápido.
De maneira semelhante, você envia mensagens para
um objeto – cada mensagem é implementada como uma
chamada de método que instrui um método do objeto a
realizar sua tarefa.
Um carro, além de suas capacidades, também tem
muitos atributos, como cor, número de portas, a
quantidade de gasolina no tanque, a velocidade atual e o
total de quilômetros percorridos.
Cada carro mantém seus próprios atributos.
9
Engenharia da Computação
Prof. Cícero Quarto – cicero.uema@gmail.com
Classes, objetos, métodos e variáveis de
instância
Um objeto tem atributos que são carregados com o
objeto quando ele é utilizado em um programa.
Os atributos do objeto são especificados como
parte da classe do objeto.
Por exemplo, um objeto conta bancária
tem um atributo ‘saldo’ que representa a quantidade
de dinheiro na conta.
Cada objeto ‘conta bancária’ sabe o saldo
da conta que ele representa, mas não sabe os saldos de
outras contas no banco.
Os atributos são especificados pelas
variáveis de instância da classe.
10
Engenharia da Computação
Prof. Cícero Quarto – cicero.uema@gmail.com
Classes, objetos, métodos e variáveis de
instância
Resumo dos exemplos para demonstrar os conceitos de OO
1. O primeiro exemplo apresenta uma classe GradeBook
com um método que simplesmente exibe uma mensagem
de boas-vindas quando é chamado. Então é mostrado
como criar um objeto dessa classe e chamar o método
para ele exibir a mensagem de boas-vindas.
2. O segundo exemplo aprimora o primeiro para permitir ao
método receber o nome de um curso como argumento e
exibe o nome como parte da mensagem de boas-vindas.
3. O terceiro exemplo mostra como armazenar o nome do
curso em um objeto GradeBook. Para essa versão da
classe, é mostrado como utilizar métodos para configurar
o nome do curso e obter seu nome. 11
Engenharia da Computação
Prof. Cícero Quarto – cicero.uema@gmail.com
Classes, objetos, métodos e variáveis de
instância
Resumo dos exemplos para demonstrar os conceitos de OO
4. O quarto exemplo demonstra como os dados em um
objeto GradeBook podem ser inicializados quando o objeto é
criado.
O último exemplo apresenta uma classe Account
que reforça os conceitos apresentados nos quatro primeiros
exemplos e introduz número de ponto flutuante.
A classe Account representa uma conta
bancária e mantém seu saldo como um número de ponto
flutuante. A classe contém dois métodos – um que credita
um depósito à conta, aumentando assim o saldo, e outro
número que recupera o saldo.
12
Engenharia da Computação
Prof. Cícero Quarto – cicero.uema@gmail.com
Classes, objetos, métodos e variáveis de
instância
Resumo dos exemplos para demonstrar os conceitos de OO
O construtor da classe permite que o saldo
de cada objeto Account seja inicializado quando o objeto é
criado.
São criados dois objetos Account e são
feitos depósitos em cada um para mostrar que cada objeto
mantém seu próprio saldo.
O exemplo também demonstra como
inserir e exibir números de ponto flutuante.
13
Engenharia da Computação
Prof. Cícero Quarto – cicero.uema@gmail.com
14
Declarando uma classe com um método e
instanciando um objeto de uma classe
Em seções anteriores, aprendeu-se como criar um objeto
da classe Scanner e, então, utilizar esse objeto para ler
dados a partir do teclado.
Nesta seção, criar-se-á uma nova classe e usar-se-á para
criar um objeto. Iniciaremos com um exemplo que consiste
em classes GradeBook (Figura 3.1) e GradeBookTest (Figura
3.2).
A classe GradeBook (declarada no arquivo
GradeBook.java) será utilizada para exibir uma mensagem
na tela (Figura 3.2) que dá boas-vindas ao instrutor do
aplicativo livro de notas.
Engenharia da Computação
Prof. Cícero Quarto – cicero.uema@gmail.com
15
A classe GradeBook
A declaração de classe GradeBook (Figura 3.1) contém
um método displayMessage (linha 17) que exibe uma
mensagem na tela. Lembre-se que uma classe é como uma
planta arquitetônica – precisamos criar um objeto dessa
classe e chamar seu método para executar a linha 18 e
exibir a mensagem.
Figura 3.1 | Declaração de classe com um método.
Engenharia da Computação
Prof. Cícero Quarto – cicero.uema@gmail.com
16Figura 3.1 | Declaração de classe com um método.
Comentando o código da classe GradeBook
Declaração de classe inicia na linha 15;
A palavra-chave public é um modificador de acesso;
Par de chaves { e } – corpo de cada classe (linhas 15-22);
A declaração do método começa com a palavra-chave
public (linha 17) para indicar que o método está “disponível
para o público” – ele pode ser chamado a partir de métodos
de outras classes.
Engenharia da Computação
Prof. Cícero Quarto – cicero.uema@gmail.com
17Figura 3.1 | Declaração de classe com um método.
Comentando o código da classe GradeBook
Palavra-chave void (linha 17) especifica o tipo de retorno
do método, que define o tipo de dados que o método
retorna depois de realizar sua tarefa;
O tipo de retorno void indica que esse método (linha 17)
realizará uma tarefa, mas não retornará (isto é, devolverá)
nenhuma informação para seu método chamador ao
completar sua tarefa;
Engenharia da Computação
Prof. Cícero Quarto – cicero.uema@gmail.com
18
Figura 3.1 | Declaração de classe com um método.
Comentando o código da classe GradeBook
O nome do método, displayMessage, segue o tipo de
retorno (linha 17);
Por convenção, os nomes de método iniciam com a
primeira letra minúscula e as palavras subsequentes do
nome iniciam com uma maiúscula;
Os parênteses depois do nome do método indicam que
isso é um método. Os parênteses vazios, como na linha 17,
indicam que esse método não requer informações adicionais
para realizar sua tarefa;
Engenharia da Computação
Prof. Cícero Quarto – cicero.uema@gmail.com
19Figura 3.1 | Declaração de classe com um método.
Comentando o código da classe GradeBook
A linha 17 é comumente referida como o cabeçalho de
método;
O corpo de cada método é delimitado pelas chaves
esquerda e direita { e }, como nas linhas 17 – 20;
O corpo de um método contém uma ou mais instruções
que realizam a tarefa do método. No exemplo, o método
contém uma instrução (linha 18) que exibe a mensagem
“Welcome to the GradeBook!”
Engenharia da Computação
Prof. Cícero Quarto – cicero.uema@gmail.com
20
Comentando o código da classe GradeBook
A classe GradeBook não é um aplicativo Java porque não
contém o método principal main, o qual inicia a execução
de um aplicativo Java;
Se tentarmos executar GradeBook usando o NetBeans,
obteríamos uma mensagem de erro como é mostrada na
figura abaixo:
Devemos declarar uma
classe separada que
contenha um método
main
Como resolver o
problema?
Colocar um método
main na classe
GradeBook
Engenharia da Computação
Prof. Cícero Quarto – cicero.uema@gmail.com
21
A classe GradeBookTest
A declaração de classe GradeBookTest(Figura 3.2)
contém o método main que controlará a execução do
aplicativo.
Figura 3.2 | Criando um objeto GradeBook e
chamando seu método displayMessage.
A declaração de classe
GradeBookTest inicia na linha 14 e
termina na linha 25;
A classe contém somente um
método GradeBookTest, que é típico
de muitas classes que iniciam a
execução de um aplicativo Java;
As linhas 14 – 23 declaram o
método main, que é um método
static;
Um método static é especial,
porque pode ser chamado sem
primeiro criar um objeto da classe
em que o método é declarado.
Engenharia da Computação
Prof. Cícero Quarto – cicero.uema@gmail.com
22
Comentando a classe GradeBookTest
Na classe GradeBookTest, gostaríamos de chamar o
método displayMessage da classe GradeBook (Figura 3.1)
para exibir a mensagem de boas-vindas na janela de
comando;
Em geral, não podemos chamar um método que
pertence a outra classe até que seja criado um objeto
dessa classe, como mostrado na linha 18 da Figura 3.2.
Figura 3.1 | Declaração de classe com um método.
Engenharia da Computação
Prof. Cícero Quarto – cicero.uema@gmail.com
23
Comentando a classe GradeBookTest
Linha 18 – declaração da variável myGradeBook, que é
do tipo GradeBook – a classe que foi declarada na Figura
3.1;
A variável myGradeBook é inicializada com o resultado
da expressão de criação de instância de classe new
GradeBook().
Figura 3.2 | Criando um objeto GradeBook e
chamando seu método displayMessage.
Assim como podemos usar o
objeto System.out para chamar os
métodos print, printf e println,
também podemos usar o objeto
myGradeBook para chamar o
método displayMessage;
A instrução da linha 21
myGradeBook.displayMessage()
; é uma chamada de método,
fazendo com que o método
displayMessage realize sua tarefa.
Engenharia da Computação
Prof. Cícero Quarto – cicero.uema@gmail.com
24
Diagrama de classes UML para a classe
GradeBook
A Figura 3.3 apresenta um diagrama de classes UML
para a classe GradeBook da Figura 3.1.
GradeBook
+ displayMessage( )
Figura 3.3 | Diagrama de classe UML
indicando que a classe GradeBook tem uma
operação public displayMessage.
Engenharia da Computação
Prof. Cícero Quarto – cicero.uema@gmail.com
25
Diagrama de classes UML para a classe
GradeBook
Na UML, cada classe é modelada em um diagrama de
classe como um retângulo com três compartimentos.
Compartimento superior
Compartimento do meio
Compartimento inferior
Contém o nome da classe
centralizado horizontalmente
no tipo negrito
Contém os atributos da classe
(variáveis de instâncias) em Java
GradeBook
+ displayMessage( )
O compartimento
está vazio porque
essa classe
GradeBook não tem
nenhum atributo.
Contém as operações da classe, que
correspondem aos métodos em Java
Figura 3.3 | Diagrama de classe UML
indicando que a classe GradeBook tem
uma operação public displayMessage.
Engenharia da Computação
Prof. Cícero Quarto – cicero.uema@gmail.com
26
Comentando o Diagrama de classes UML
para a classe GradeBook
A UML modela operações listando o nome da operação
precedido por um modificador de acesso (nesse caso +) e
seguido por um conjunto de parênteses (ver Figura 3.3);
A classe GradeBook tem um método, displayMessage,
então o compartimento inferior da Figura 3.3 lista uma
operação com esse nome;
O método displayMessage não requer informações
adicionais para executar suas tarefas, portanto os
parênteses depois do nome do método no diagrama de
classe estão vazios;
Engenharia da Computação
Prof. Cícero Quarto – cicero.uema@gmail.com
27
Comentando o Diagrama de classes UML
para a classe GradeBook
O sinal de adição ( + ) na frente do nome da operação
indica que displayMessage é uma operação public na UML
(isto é, um método public no Java). Usaremos com
freqüência os diagramas de classe UML para resumir os
atributos e as operações de uma classe Java.
GradeBook
+ displayMessage( )
Figura 3.3 | Diagrama de classe UML
indicando que a classe GradeBook tem uma
operação public displayMessage.
Engenharia da Computação
Prof. Cícero Quarto – cicero.uema@gmail.com
28
Declarando um método com um parâmetro
Em analogia com o carro, discutimos o fato de que
pressionar o acelerador de um carro envia uma mensagem
para ele realizar uma tarefa – fazer o carro andar mais
rápido.
Mas quanto o carro deve acelerar?
Quanto mais pressionarmos o pedal, mais
rápido o carro irá acelerar;
• Então a mensagem para o carro na
verdade inclui a tarefa a ser realizada e informações
adicionais que ajudam o carro a executar essa tarefa.
Essas informações adicionais são conhecidas como
parâmetro – o valor do parâmetro ajuda o carro a
determinar com que rapidez acelerar.
Engenharia da Computação
Prof. Cícero Quarto – cicero.uema@gmail.com
29
Declarando um método com um parâmetro
De maneira semelhante, um método pode exigir um ou
mais parâmetros que representam informações adicionais
necessárias para realizar a tarefa;
Os parâmetros são definidos em uma lista de
parâmetros separados por vírgula, que está localizada
nos parênteses depois do nome do método;
Todo parâmetro deve especificar um tipo e um
identificador;
A lista de parâmetros pode conter qualquer número de
parâmetros, inclusive nenhum parâmetro;
Os parênteses vazios que se seguem ao nome de
método indicam que um método não requer nenhum
parâmetro.
Engenharia da Computação
Prof. Cícero Quarto – cicero.uema@gmail.com
30
Declarando um método com um parâmetro
Uma chamada de método fornece valores – chamados
argumentos – para cada um dos parâmetros do método;
• Por exemplo, o método System.out.println
exige um argumento que especifica que dados enviar para
a saída em uma janela de comando;
• De maneira semelhante, para fazer um depósito
em uma conta bancária, um método deposit especifica
um parâmetro que representa a quantidade de depósito;
Quando o método deposit é chamado um
valor de argumento que representa a quantidade de
depósito é atribuído ao parâmetro do método. O método
então faz um depósito dessa quantia.
Engenharia da Computação
Prof. Cícero Quarto – cicero.uema@gmail.com
31
Laboratório - declarando um método com um
parâmetro
Declarar uma classe GradeBook2 com um método
displayMessage que exibe o nome do curso como parte da
mensagem de boas-vindas. O novo método
displayMessage requer um parâmetro que representa o
nome do curso a ser enviado para a saída.
Ferramenta: NetBeans IDE 7.0
Engenharia da Computação
Prof. Cícero Quarto – cicero.uema@gmail.com
32
Saída do programa
Figura 3.5 | Criando um objeto GradeBook2 e passando uma String ao seu
método displayMessage.
Engenharia da Computação
Prof. Cícero Quarto – cicero.uema@gmail.com
33
Comentando as classes GradeBook2 e
GradeBook2Test
Classe GradeBook2
Classe GradeBook2Test
Figura 3.4
Figura 3.5
Engenharia da Computação
Prof. Cícero Quarto – cicero.uema@gmail.com
34
Comentando as classes GradeBook2 e
GradeBook2Test
Linha 24: System.out.println( “Please enter the course name:” );
exibe um prompt que pede para o usuário inserir o nome
do curso;
Linha 25: String nameOfCourse = input.nextLine( );
mostra o nome do usuário e o atribui à variável
nameOfCourse, utilizando o método Scanner nextLine para
realizar a tarefa;
Linha 30: myGradeBook2.displayMessage( nameOfCourse );
chama o método displayMessage de myGradeBook. A
variável nameOfCourse entre parênteses é o argumento
que é passado ao método displayMessage para o método
realizar sua tarefa.
Engenharia da Computação
Prof. Cícero Quarto – cicero.uema@gmail.com
35
Mais sobre argumentos e parâmetros
Na Figura 3.4, a lista de parâmetros de displayMessage
(linha 15) public void displayMessage( String courseName) {
declara um parâmetro indicando que o método requer uma String para
executar sua tarefa.
Quando o método é chamado, linha 30 (Figura 3.5),
myGradeBook2.displayMessage( nameOfCourse );, o valor de
argumento na chamada é atribuído ao parâmetro
correspondente (nesse caso, courseName) no cabeçalho
do método (linha 15) da Figura 3.4;
Public void displayMessage( String courseName ){;
O número de argumentos em uma chamada de método
deve corresponder ao número de parâmetros na lista de
parâmetros da declaração do método.
Engenharia da Computação
Prof. Cícero Quarto – cicero.uema@gmail.com
36
Diagrama de classes UML para a classe
GradeBook2
O diagrama de classe UML da Figura 3.6 modela a
classe GradeBook2 da Figura 3.4. Como a Figura 3.3, essa
classe GradeBook2 contém displayMessage, uma operação
public e um parâmetro.
A UML modela um parâmetro de um modo pouco
diferente do Java listando o nome de parâmetro, seguido
por dois pontos e pelo tipo de parâmetro nos parênteses
que seguem o nome da operação;
GradeBook2
+ displayMessage( courseName: String )
Figura 3.6 | Diagrama de classe UML indicando que
a classe GradeBook2 tem uma operação
displayMessage com um parâmetro courseName de
tipo UML String.
Engenharia da Computação
Prof. Cícero Quarto – cicero.uema@gmail.com
37
Variáveis de instância, métodos set e get
Nos exemplos já vistos, declaramos todas as variáveis
de um aplicativo no método main do aplicativo.
As variáveis declaradas no corpo de um método
particular são conhecidas como variáveis locais e só podem
ser utilizadas nesse método.
Um objeto tem atributos que são
carregados com o objeto quando ele é utilizado em um
programa.
• Os atributos de um objeto existem antes de
um método ser chamado em um objeto e depois de o método
completar a execução.
Os atributos são representados como
variáveis em uma declaração de classe.
Engenharia da Computação
Prof. Cícero Quarto – cicero.uema@gmail.com
Instância da
classe
38
Classe Cadeira
Objetos
(material, braço,
cor, tipo, etc)
Atributos
(madeira, plano,
verde, diretor)
Métodos
(displayCor)
Campos: variáveis que
representam atributos de um
objeto em uma declaração de
classe, mas fora do corpo das
declarações de método da
classe;
Variáveis de instâncias:
campos que representam as
cópias dos atributos de um
objeto. Um exemplo nessa seção
demonstra uma classe
GradeBook que contém uma
variável de instância
courseName para representar
o nome do curso de um objeto
GradeBook particular.
Instâncias
da classe
Engenharia da Computação
Prof. Cícero Quarto – cicero.uema@gmail.com
39
Classe GradeBook3 com uma variável de
instância, um método set e um método get
No próximo aplicativo (Figuras 3.7 e 3.8), a classe
GradeBook3 (Figura 3.7) mantém o nome do curso como
uma variável de instância para que ele possa ser utilizado
ou modificado a qualquer hora durante a execução de um
aplicativo;
A classe contém três métodos – setCourseName,
getCourseName e displayMessage;
método setCourseName – armazena o nome de um curso de um
GradeBook3;
método getCourseName – obtém o nome do curso de um
GradeBook3;
método displayMessage – exibe uma mensagem de boas-vindas
que inclui o nome do curso. O método obtém o nome do curso chamando
outro método na mesma classe – getCourseName.
Engenharia da Computação
Prof. Cícero Quarto – cicero.uema@gmail.com
40
Comentando a classe GradeBook3
Figura 3.7 | A classe GradeBook3 que contém uma variável de instância
coursename e métodos para configurar e obter seu valor
Engenharia da Computação
Prof. Cícero Quarto – cicero.uema@gmail.com
41
COMENTANDO O CÓDIGO
Linha 16: private String courseName;
declara que courseName é uma variável de tipo String, dentro
do corpo da classe, mas fora dos corpos de seus métodos;
Toda instância (isto é, objeto) de classe GradeBook3 contém uma
cópia de cada variável de instância.
Figura 3.7 | A classe
GradeBook3 que contém
uma variável de instância
courseName e métodos
para configurar e obter seu
valor.
Engenharia da Computação
Prof. Cícero Quarto – cicero.uema@gmail.com
42
Modificadores de acesso public e private
A maioria das declarações de variável de instância é
precedida pela palavra-chave private (linha 16);
Como public, a palavra-chave private é um modificador
de acesso;
Dessa forma, a variável courseName só pode ser
utilizada nos métodos setCourseName, getCourseName e
displayMessage da classe GradeBook3;
A declaração de variáveis de instância com o modificador
de acesso private é conhecida como ocultamento de dados
ou ocultamento de informações;
Quando um programa cria (instancia) um objeto de
classe GradeBook3, a variável courseName é encapsulada
(ocultada) no objeto e pode ser acessada apenas por
métodos da classe do objeto.
Engenharia da Computação
Prof. Cícero Quarto – cicero.uema@gmail.com
43
Métodos setCourseName e getCourseName
O método setCourseName (linhas
19-21) não retorna quaisquer dados
quando ele completa sua tarefa,
portanto, seu tipo de retorno é void;
O método recebe um parâmetro -
name – que representa o nome do
curso que será passado para o
método como um argumento;
A linha 20 atribui name à variável de
instância courseName;
O método getCourseName (linhas
24-26) devolve um objeto
courseName específico de
GradeBook3;
O método tem uma lista vazia de
parâmetros, então não exige
informações adicionais para realizar
sua tarefa.
Figura 3.7 | A classe GradeBook3 que
contém uma variável de instância
courseName e métodos para configurar
e obter seu valor.
Engenharia da Computação
Prof. Cícero Quarto – cicero.uema@gmail.com
44
Métodos setCourseName e getCourseName
O método getCourseName especifica
(linha 25) que ele retorna uma String
– esse é o tipo de retorno do método;
A instrução return na linha 25
passa o valor da variável de instância
courseName de volta à instrução que
chama o método getCourseName;
Considere, a linha 31 do método
displayMessage, que chama o método
getCourseName. Quando o valor é
retornado, a instrução na linha 31
utiliza esse valor para gerar o nome
do curso.
Figura 3.7 | A classe GradeBook3 que
contém uma variável de instância
courseName e métodos para
configurar e obter seu valor.
Engenharia da Computação
Prof. Cícero Quarto – cicero.uema@gmail.com
45
Laboratório – Classe com uma variável de
instância, um método set e um método get
Crie duas classes Java ClasseLab2 e ClasseLab2Teste,
respectivamente, com o seguinte cenário:
Você tem um método square que retorna o quadrado de seu
argumento, onde você esperaria que a instrução:
int result = square( 2 );
retornasse 4 a partir do método square e atribuísse 4 à variável result.
int biggest = maximum( 27, 114, 51 );
retornasse 114 a partir do método maximum e atribuísse 114 à
variável biggest.
Ferramenta: NetBeans IDE 7.0
Engenharia da Computação
Prof. Cícero Quarto – cicero.uema@gmail.com
46
O método displayMessage
O método displayMessage (linhas 29-31) não retorna
quaisquer dados quando ele completa sua tarefa, portanto, seu
tipo de retorno é void;
O método não recebe parâmetros, então, a lista de
parâmetros está vazia.
Figura 3.7 | A classe
GradeBook3 que contém
uma variável de instância
courseName e métodos
para configurar e obter seu
valor.
Engenharia da Computação
Prof. Cícero Quarto – cicero.uema@gmail.com
47
A classe GradeBook3Test que demonstra a
classe GradeBook3Test
Engenharia da Computação
Prof. Cícero Quarto – cicero.uema@gmail.com
48
A classe GradeBook3Test (Figura 3.8)
cria um objeto da classe GradeBook3 e
demonstra seus métodos;
A linha 23 cria um objeto
GradeBook3 e o atribui à variável local
myGradeBook3 de tipo GradeBook3;
A linha 26 exibe o nome do curso
inicial que chama o método
getCourseName do objeto;
Observe que a primeira linha
de saída mostra o nome “null”.
Diferentemente das variáveis locais, que não
são automaticamente inicializadas, todo
campo tem um valor inicial padrão – um
valor fornecido pelo Java quando você não
especifica o valor inicial do campo;
O valor padrão de um campo do tipo String (como courseName nesse exemplo) é null;
A linha 29 exibe um prompt que pede para o usuário inserir o nome de um curso;
A variável String theName local (declarada na linha 30) é inicializada com o nome do curso
inserido pelo usuário, que é retornado pela chamada ao método nextLine do objeto Scanner
input;
A linha 31 chama o método setCourseName do objeto myGradeBook3 e armazena theName
como o argumento do método.
Engenharia da Computação
Prof. Cícero Quarto – cicero.uema@gmail.com
49
Métodos set e get
Os campos private de uma classe só podem ser
manipulados pelos métodos de classe;
Um cliente de um objeto – isto é, qualquer classe que
chama os métodos do objeto – chama métodos public da
classe para manipular os campos private de um objeto da
classe;
As classes costumam fornecer métodos public para
permitir a clientes configurar (set, isto é, atribuir valores a)
ou obter (get, isto é, obter os valores de) variáveis de
instância private;
Os nomes desses métodos não precisam começar com set ou get, mas essa
convenção de atribuição de nomes é recomendada e requerida para componentes de software Java
especiais, denominados JavaBeans, que podem simplificar a programação em muitos ambientes de
desenvolvimento integrado Java (Integrated Development Environments – IDEs). O método que
configura (set) a variável de instância courseName nesse exemplo chama-se setCourseName e o
método que obtém (get) o valor de courseName chama-se getCourseName.
Engenharia da Computação
Prof. Cícero Quarto – cicero.uema@gmail.com
50
Diagrama de classe UML do GradeBook3
com uma variável de instância e os métodos
set e get
A Figura 3.9 contém um diagrama de classe UML
atualizado para a versão da classe GradeBook;
Esse diagrama modela a variável de instância
courseName da classe GradeBook3 como um atributo no
compartimento no meio da classe.
GradeBook3
- courseName: String
+ setCourseName( name: String )
+ getCourseName( ): String
+ displayMessage( )
Figura 3.9 | O diagrama de classes UML
que indica que a classe GradeBook3 tem
um atributo courseName privado do tipo
UML String e três operações públicas –
setCourseName (com um parâmetro name
do tipo UML String, getCourseName (que
retorna o tipo UML String e
displayMessage.
Engenharia da Computação
Prof. Cícero Quarto – cicero.uema@gmail.com
51
GradeBook3
- courseName: String
+ setCourseName( name: String )
+ getCourseName( ): String
+ displayMessage( )
Considerações sobre o diagrama da Figura 3.9
A UML representa as variáveis de instância como atributos listando o nome do
atributo, seguido por um caractere de dois-pontos e o tipo de atributo;
O tipo UML do atributo courseName é String;
A variável de instância courseName é private em Java, portanto, o diagrama de
classe lista um modificador de acesso com o sinal de subtração ( - ) na frente do nome do
atributo correspondente;
A classe GradeBook3 contém três métodos public, então o diagrama de classe
lista três operações no terceiro compartimento;
A operação setCourseName tem um parâmetro String chamado name;
A UML indica o tipo de retorno de uma operação colocando um dois-pontos e o
tipo de retorno depois dos parênteses que se seguem ao nome da operação.
Figura 3.9 | O diagrama de classes UML
que indica que a classe GradeBook3 tem
um atributo courseName privado do tipo
UML String e três operações públicas –
setCourseName (com um parâmetro name
do tipo UML String, getCourseName (que
retorna o tipo UML String e
displayMessage.
Engenharia da Computação
Prof. Cícero Quarto – cicero.uema@gmail.com
52
Tipos primitivos vs. tipos por referência
Os tipos do Java são divididos em tipos primitivos e
tipos por referência;
Os tipos primitivos são:
boolean
byte
char
short
int
long
float
double
Todos os tipos não primitivos são tipos por referência,
portanto, as classes, que especificam os tipos de objeto,
são tipos por referência.
Engenharia da Computação
Prof. Cícero Quarto – cicero.uema@gmail.com
53
Tipos primitivos vs. tipos por referência
Uma variável de tipo primitivo pode armazenar exatamente
um valor de seu tipo declarado por vez. Por exemplo, uma
variável int pode armazenar um número inteiro (como 7) por
vez;
As variáveis de instância de tipo primitivo são inicializadas
por padrão – as variáveis dos tipos byte, char, short, int,
long, float e double são inicializadas como 0, e as variáveis
do tipo boolean são inicializadas como false;
Lembre-se de que as variáveis locais não são inicializadas
por padrão;
Os programas utilizam as variáveis de tipos por referência
(normalmente chamadas referências) para armazenar as
localizações de objetos na memória do computador. Diz-se
que tal variável referencia um objeto no programa.
Engenharia da Computação
Prof. Cícero Quarto – cicero.uema@gmail.com
54
Tipos primitivos vs. tipos por referência
A linha 23 da Figura 3.8, GradeBook3 myGradeBook3 =
new GradeBook3();, cria um objeto de classe GradeBook3 e a
variável myGradeBook3 contém uma referência a esse objeto
GradeBook3;
As variáveis de instância de tipo por referência são
inicializadas por padrão com um valor null – uma palavra
reservada que representa uma “referência a nada”. Essa é a
razão por que a primeira chamada a getCourseName na linha
26 da Figura 3.8 retornou null – o valor de courseName não
foi configurado, assim o valor inicial padrão null foi
retornado;
Na Tabela a seguir, são mostradas as palavras
reservadas e palavras-chave da linguagem Java.
Engenharia da Computação
Prof. Cícero Quarto – cicero.uema@gmail.com
55
Palavras reservadas e palavras-chave do
Java
Palavras-chave do Java
abstract assert boolean break byte
case catch char class continue
default do double else enum
extends final finally float for
if implements import instanceof int
interface long native new package
private protected public return short
static strictfp super switch synchronnized
this throw throws transient try
void volatile while
Palavras-chave que não são atualmente utilizadas
const goto
O Java também contém as palavras reservadas true e false, que são literais boolean e null, que é o literal que representa
uma referência a nada. Assim como as palavras-chave, essas palavras reservadas não podem ser utilizadas como
identificadores.
Engenharia da Computação
Prof. Cícero Quarto – cicero.uema@gmail.com
56
Inicializando objetos com construtores
Como vimos, quando um objeto de classe GradeBook3
(Figura 3.7) é criado, sua variável de instância courseName é
inicializada como null por padrão;
E se quisermos fornecer o nome de um curso quando
criarmos um objeto GradeBook3?
Cada classe declarada pode fornecer um método especial
chamado construtor que pode ser utilizado para inicializar um
objeto desta classe, isso é um padrão Java;
Um construtor deve ter o mesmo nome que a classe;
A Figura 3.10 contém uma classe GradeBook4 com um
construtor que inicializa um objeto desta classe.
Engenharia da Computação
Prof. Cícero Quarto – cicero.uema@gmail.com
57
Comentando a classe GradeBook4
Figura 3.10 | A classe GradeBook4 com um construtor para inicializar o
nome do curso.
As linhas 18 a 22 declaram o
construtor de GradeBook4;
Como um método, a lista de
parâmetros de um construtor
especifica os dados que ele
requer para realizar sua tarefa;
A linha 18 indica que o
construtor tem um parâmetro
String chamado name;
O name passado para o
construtor é atribuído à variável
de instância courseName na
linha 19;
A Figura 3.11 inicializa os
objetos GradeBook4 utilizando o
construtor.
Engenharia da Computação
Prof. Cícero Quarto – cicero.uema@gmail.com
58
O construtor de GradeBook4 usado para
especificar o nome do curso a partir de seus
objetos criados
Figura 3.11 | O construtor de GradeBook4.
Saída do programa.
Engenharia da Computação
Prof. Cícero Quarto – cicero.uema@gmail.com
59
Comentando a classe GradeBook4Test
Figura 3.11 | O construtor de GradeBook4.
As linhas 18-19 criam e inicializam
um objeto GradeBook4 gradeBook1;
O construtor de GradeBook4 é
chamado com o argumento “CS101
Introduction to Java Programming”
para inicializar o nome do curso;
A expressão de criação de instância
de classe nas linhas 18-19 retorna
uma referência ao novo objeto, que
é atribuído à variável gradeBook1;
As linhas 20-21 repetem esse
processo, dessa vez passando o
argumento “CS102 Data Structures
in Java” para inicializar o nome do
curso de gradeBook2;
As linhas 24-27 utilizam o método
getCourseName de cada objeto para
obter os nomes de curso e mostrar
que eles foram inicializados quando
os objetos foram criados.
Nota: Uma diferença importante entre construtores e
métodos é que os construtores não podem retornar
valores, portanto, não podem especificar um tipo de
retorno (nem mesmo void).
Engenharia da Computação
Prof. Cícero Quarto – cicero.uema@gmail.com
60
Adicionando o construtor ao diagrama de
classe UML da classe GradeBook4
O diagrama de classe UML da Figura 3.12 modela a
classe GradeBook4 da Figura 3.10, que tem um construtor
que possui um parâmetro name de tipo String;
Assim como operações, a UML modela construtores no
terceiro compartimento de uma classe em um diagrama de
classe;
Para distinguir entre um construtor e operações de uma
classe, a UML requer que a palavra “constructor” seja
colocada entre aspas francesas (<< e >>) antes do
nome do construtor;
É habitual listar construtores antes de outras operações
no terceiro compartimento.
Engenharia da Computação
Prof. Cícero Quarto – cicero.uema@gmail.com
61
GradeBook4
- courseName: String
<<constructor>> GradeBook4( name: String )
+ setCourseName( name: String )
+ getCourseName( ): String
+ displayMessage( )
Figura 3.12 | Diagrama de classe UML que indica que a classe
GradedeBook4 tem um construtor com um parâmetro name de
tipo UML String.
Diagrama de classe UML da classe
GradeBook4
Engenharia da Computação
Prof. Cícero Quarto – cicero.uema@gmail.com
62
Construtores com múltiplos parâmetros
Às vezes é recomendável inicializar objetos com
múltiplos dados. Por exemplo, o Exercício 3.11, Deitel –
Java – Como Programar, edição 8, p. 79, solicita que você
armazene o nome do curso e o nome do instrutor em um
objeto GradeBook. Nesse caso, o construtor de GradeBook
seria modificado para receber duas Strings, como em:
public GradeBook4( String courseName, String instructorName )
e você chamaria o construtor de GradeBook4 desta maneira:
GradeBook4 gradebook = new GradeBook4(
“CS101 Introduction to Java Programming”, “Sue Green” );
Engenharia da Computação
Prof. Cícero Quarto – cicero.uema@gmail.com
63
Números de ponto flutuante e tipo double
Agora, temporariamente deixamos de lado nosso estudo de
caso GradeBook para declarar uma classe Account que
mantém o saldo de uma conta bancária;
A maioria dos saldos de conta não é constituída de
números inteiros (por exemplo, 0, -22 e 1024);
Por essa razão, a classe Account representa o saldo de
conta como um número de ponto flutuante (isto é, um
número com um ponto de fração decimal, como 7,33, 0,0975
ou 1.000, 12345);
O Java fornece dois tipos primitivos para armazenar
números de ponto flutuante na memória – float e double;
A principal diferença entre eles é que as variáveis double podem armazenar
números com maior magnitude e mais detalhes (isto é, mais dígitos à direita do ponto de
fração decimal – também conhecido como a precisão do número) do que as variáveis
float.
Engenharia da Computação
Prof. Cícero Quarto – cicero.uema@gmail.com
64
Precisão de número de ponto flutuante e
requisitos de memória
As variáveis do tipo float representam números de ponto
flutuante de precisão simples e podem representar até
sete dígitos significativos;
As variáveis do tipo double representam números de
ponto flutuante de precisão dupla. Essas requerem duas
vezes a quantidade de memória das variáveis float e
fornecem 15 dígitos significativos – aproximadamente o
dobro da precisão de variáveis float;
Por padrão, o Java trata todos os números de ponto
flutuante como do tipo double, pois variáveis double
podem representar números de ponto flutuante com mais
exatidão. Para números de ponto flutuante precisos, o
Java fornece a classe BigDecimal (pacote java.math).
Engenharia da Computação
Prof. Cícero Quarto – cicero.uema@gmail.com
65
A classe Account com uma variável de
instância do tipo double
Nosso próximo aplicativo (Figuras 3.13-3.14) contém
uma classe chamada Account (Figura 3-13) que mantém o
saldo de uma conta bancária;
Um banco típico atende muitas contas, cada uma com
um saldo próprio, portanto a linha 15 Declara uma variável
de instância chamada balance do tipo double;
A variável balance é uma variável de instância porque é
declarada no corpo da classe, mas fora das declarações de
método da classe (linhas 18-23, 26-28 e 31-33);
Cada instância (isto é, objeto) de classe Account contém
sua própria cópia de balance.
Engenharia da Computação
Prof. Cícero Quarto – cicero.uema@gmail.com
66
Comentando a classe Account
A classe tem um construtor e dois
métodos;
É comum que alguém abre uma
conta deposite o dinheiro
imediatamente, assim o construtor
(linhas 18-23) recebe um parâmetro
initialBalance do tipo double e que
representa o saldo inicial;
As linhas 21-22 asseguram que
initialBalance seja maior do que 0.0.
Se for, o valor de initialBalance é
atribuído à variável de instância
balance. Caso contrário, balance
permanece em 0.0 – seu valor inicial
padrão;
O método credit (linhas 26-28)
não retorna quaisquer dados quando
ele completa sua tarefa, portanto,
seu tipo de retorno é void;
Figura 3.13 | A classe Account com um
construtor para validar e inicializar a variável de
instância balance do tipo double.
Engenharia da Computação
Prof. Cícero Quarto – cicero.uema@gmail.com
67
Comentando a classe Account
O método credit (linhas 26-28)
recebe um parâmetro chamado
amount – um valor double que será
adicionado ao saldo;
A linha 27 adiciona amount ao
valor atual de balance, então atribui
o resultado ao balance (substituindo
assim a quantia do saldo anterior);
O método getBalance (linhas 31-
33) permite aos clientes da classe
(isto é, outras classes que utilizam
essa classe) obter o valor do balance
de um objeto Account particular. O
método especifica o tipo de retorno
double e uma lista vazia de
parâmetros;
Observe que as instruções nas
linhas 22, 27 e 32 utilizam a variável
de instância balance mesmo se ela
não tiver sido declarada em nenhum
dos métodos, ela é uma variável de
instância da classe Account.
Figura 3.13 | A classe Account com um
construtor para validar e inicializar a variável de
instância balance do tipo double.
Engenharia da Computação
Prof. Cícero Quarto – cicero.uema@gmail.com
68
A classe AccountTest para utilizar a classe
Account A classe AccountTest (Figura 3.14)
cria dois objetos Account (linhas 17-
18) e os inicializa com 50.00 e -7.53,
respectivamente;
As linhas 21-24 geram a saída do
saldo em cada Account chamando o
método getBalance da Account;
Quando o método getBalance é
chamado por account1, a partir da
linha 22, o valor do saldo da
account1 é retornado da linha 32 da
Figura 3.13 e exibido pela instrução
System.out.printf (Figura 3.14, linhas
23-24);
De maneira semelhante, quando o
método getBalance for chamado por
account2, da linha 24, o valor do
saldo da account2 é retornado da
linha 32 da Figura 3.13 e exibido pela
instrução System.out.printf (Figura
3.14, linhas 23-24)Figura 3.14 | Entrada e saída de
números de ponto flutuante com
objetos Account.
Engenharia da Computação
Prof. Cícero Quarto – cicero.uema@gmail.com
69
A classe AccountTest para utilizar a classe
Account Observe que o saldo de account2 é
0.00, porque o construtor assegurou
que a conta não poderia iniciar com
um saldo negativo;
A saída do valor é gerada por printf
com o especificador de formato %.2f;
O especificador de formato %f é
utilizado para gerar saída de valores
de tipo float ou double;
0.2 entre % e f representa o
número de casas decimais (2) que
devem ser enviadas para a saída à
direita do ponto de fração decimal no
número de ponto flutuante – também
conhecido como a precisão do
número;
Qualquer saída de valor de ponto
flutuante com %.2f será arredondada
para a casa decimal dos centésimos –
por exemplo, 123,457 seria
arredondado para 123,46.Figura 3.14 | Entrada e saída de
números de ponto flutuante com
objetos Account.
Engenharia da Computação
Prof. Cícero Quarto – cicero.uema@gmail.com
70
A classe AccountTest para utilizar a classe
Account A linha 28 declara a variável local
depositAmount para armazenar cada
quantia de depósito inserida pelo
usuário;
Ao contrário da variável de instância
balance na classe Account, a variável
local depositAmount em main não é
inicializada como 0.0 por padrão.
Entretanto, essa variável não precisa
ser inicializada aqui porque seu valor
será determinado pela entrada do
usuário;
A linha 30 pede ao usuário para
inserir uma quantia de depósito para
account1;
A linha 31 obtém a entrada do
usuário chamando o método
nextDouble do objeto input de
Scanner, que retorna um valor double
inserido pelo usuário;
Figura 3.14 | Entrada e saída de
números de ponto flutuante com
objetos Account.
Engenharia da Computação
Prof. Cícero Quarto – cicero.uema@gmail.com
71
A classe AccountTest para utilizar a classe
Account As linhas 32-33 exibem o quanto foi
depositado;
A linha 34 chama o método credit
do objeto account1 e armazena
depositAmount como argumento do
método. Quando o método é
chamado, o valor do argumento é
atribuído ao parâmetro amount (linha
26 da Figura 3.13) do método credit
(linhas 26-28 da Figura 3.13), então o
método credit adiciona esse valor ao
balance (linha 27 da Figura 3.13);
Figura 3.14 | Entrada e saída de
números de ponto flutuante com
objetos Account.

Weitere ähnliche Inhalte

Was ist angesagt?

Modelagem Aplicações Web com UML
Modelagem Aplicações Web com UMLModelagem Aplicações Web com UML
Modelagem Aplicações Web com UMLClaudio Martins
 
Java: Heranca e polimorfismo
Java: Heranca e polimorfismoJava: Heranca e polimorfismo
Java: Heranca e polimorfismoArthur Emanuel
 
SIG - Sistema de Informação Gerencial - Técnico em RH
SIG - Sistema de Informação Gerencial - Técnico em RHSIG - Sistema de Informação Gerencial - Técnico em RH
SIG - Sistema de Informação Gerencial - Técnico em RHAntonio Pinto Pereira
 
Sistemas Operacionais - Aula 4 - Revisão e Exercícios
Sistemas Operacionais - Aula 4 - Revisão e ExercíciosSistemas Operacionais - Aula 4 - Revisão e Exercícios
Sistemas Operacionais - Aula 4 - Revisão e ExercíciosCharles Fortes
 
Criação de formulários e tabelas com HTML
Criação de formulários e tabelas com HTMLCriação de formulários e tabelas com HTML
Criação de formulários e tabelas com HTMLLeonardo Soares
 
Introdução ao 12 Factors APP
Introdução ao 12 Factors APPIntrodução ao 12 Factors APP
Introdução ao 12 Factors APPDouglas Alonso
 
Exercitando modelagem em UML
Exercitando modelagem em UMLExercitando modelagem em UML
Exercitando modelagem em UMLinfo_cimol
 
SISTEMA REPRDUTOR FEMININO E MASCULINO.pptx
SISTEMA REPRDUTOR FEMININO E MASCULINO.pptxSISTEMA REPRDUTOR FEMININO E MASCULINO.pptx
SISTEMA REPRDUTOR FEMININO E MASCULINO.pptxVanessaSantos256566
 
Aplicativos Informatizados - Profª Alessandra
Aplicativos Informatizados - Profª AlessandraAplicativos Informatizados - Profª Alessandra
Aplicativos Informatizados - Profª AlessandraAlessandra França
 
Aula 01 - Sistemas Operacionais - Windows 10
Aula 01 - Sistemas Operacionais - Windows 10Aula 01 - Sistemas Operacionais - Windows 10
Aula 01 - Sistemas Operacionais - Windows 10LucasMansueto
 
Patrimônio líquido não é uma exigibilidade
Patrimônio líquido não é uma exigibilidadePatrimônio líquido não é uma exigibilidade
Patrimônio líquido não é uma exigibilidade12111967
 
Material aula informática básica
Material aula informática básicaMaterial aula informática básica
Material aula informática básicaCarlos Melo
 
Modelo Canvas - Plano de Negócios
Modelo Canvas - Plano de NegóciosModelo Canvas - Plano de Negócios
Modelo Canvas - Plano de NegóciosAngelo Yasui
 

Was ist angesagt? (20)

Modelagem Aplicações Web com UML
Modelagem Aplicações Web com UMLModelagem Aplicações Web com UML
Modelagem Aplicações Web com UML
 
PHP - Introdução
PHP - IntroduçãoPHP - Introdução
PHP - Introdução
 
Java: Heranca e polimorfismo
Java: Heranca e polimorfismoJava: Heranca e polimorfismo
Java: Heranca e polimorfismo
 
SIG - Sistema de Informação Gerencial - Técnico em RH
SIG - Sistema de Informação Gerencial - Técnico em RHSIG - Sistema de Informação Gerencial - Técnico em RH
SIG - Sistema de Informação Gerencial - Técnico em RH
 
Curso HTML e CSS Part1
Curso HTML e CSS Part1Curso HTML e CSS Part1
Curso HTML e CSS Part1
 
Sistemas Operacionais - Aula 4 - Revisão e Exercícios
Sistemas Operacionais - Aula 4 - Revisão e ExercíciosSistemas Operacionais - Aula 4 - Revisão e Exercícios
Sistemas Operacionais - Aula 4 - Revisão e Exercícios
 
Criação de formulários e tabelas com HTML
Criação de formulários e tabelas com HTMLCriação de formulários e tabelas com HTML
Criação de formulários e tabelas com HTML
 
POO - Aula 09 - Herança
POO - Aula 09 - HerançaPOO - Aula 09 - Herança
POO - Aula 09 - Herança
 
Introdução ao 12 Factors APP
Introdução ao 12 Factors APPIntrodução ao 12 Factors APP
Introdução ao 12 Factors APP
 
W3C Web Standards HTML
W3C Web Standards HTMLW3C Web Standards HTML
W3C Web Standards HTML
 
Design Patterns
Design PatternsDesign Patterns
Design Patterns
 
Exercitando modelagem em UML
Exercitando modelagem em UMLExercitando modelagem em UML
Exercitando modelagem em UML
 
SISTEMA REPRDUTOR FEMININO E MASCULINO.pptx
SISTEMA REPRDUTOR FEMININO E MASCULINO.pptxSISTEMA REPRDUTOR FEMININO E MASCULINO.pptx
SISTEMA REPRDUTOR FEMININO E MASCULINO.pptx
 
Aplicativos Informatizados - Profª Alessandra
Aplicativos Informatizados - Profª AlessandraAplicativos Informatizados - Profª Alessandra
Aplicativos Informatizados - Profª Alessandra
 
Aula 01 - Sistemas Operacionais - Windows 10
Aula 01 - Sistemas Operacionais - Windows 10Aula 01 - Sistemas Operacionais - Windows 10
Aula 01 - Sistemas Operacionais - Windows 10
 
09 aula armazenagem iii
09 aula armazenagem iii09 aula armazenagem iii
09 aula armazenagem iii
 
Patrimônio líquido não é uma exigibilidade
Patrimônio líquido não é uma exigibilidadePatrimônio líquido não é uma exigibilidade
Patrimônio líquido não é uma exigibilidade
 
Material aula informática básica
Material aula informática básicaMaterial aula informática básica
Material aula informática básica
 
Cartilha nascentes
Cartilha nascentesCartilha nascentes
Cartilha nascentes
 
Modelo Canvas - Plano de Negócios
Modelo Canvas - Plano de NegóciosModelo Canvas - Plano de Negócios
Modelo Canvas - Plano de Negócios
 

Andere mochten auch

Java orientação a objetos (introdução)
Java   orientação a objetos (introdução)Java   orientação a objetos (introdução)
Java orientação a objetos (introdução)Armando Daniel
 
Nuevo leã³n
Nuevo leã³nNuevo leã³n
Nuevo leã³nGRISEILL
 
Why Personal Clouds Need A Network
Why Personal Clouds Need A NetworkWhy Personal Clouds Need A Network
Why Personal Clouds Need A NetworkPhil Wolff
 
Making every game a success story
Making every game a success storyMaking every game a success story
Making every game a success storyWooga
 
Crimenes Sexuales contra Menores por Internet
Crimenes Sexuales contra Menores por InternetCrimenes Sexuales contra Menores por Internet
Crimenes Sexuales contra Menores por InternetSayda Contreras
 
Caso costa concordia.
Caso costa concordia.Caso costa concordia.
Caso costa concordia.Daira Avila
 
David morrell cartite-1_0_10__
David morrell cartite-1_0_10__David morrell cartite-1_0_10__
David morrell cartite-1_0_10__georgetaaaaa
 
20100601 rojas-busqueda eficiente de informacion cientifica
20100601 rojas-busqueda eficiente de informacion cientifica20100601 rojas-busqueda eficiente de informacion cientifica
20100601 rojas-busqueda eficiente de informacion cientificajimmyfavian
 
Introducao a gastronomia
Introducao a gastronomiaIntroducao a gastronomia
Introducao a gastronomiaJenifo
 
Las 7 hermanas petroleras
Las 7 hermanas petrolerasLas 7 hermanas petroleras
Las 7 hermanas petrolerasBelen Dender
 
Universo de temas arquitectonicos por temática
Universo de temas arquitectonicos por temática Universo de temas arquitectonicos por temática
Universo de temas arquitectonicos por temática David Jvr
 
Comunicação digital
Comunicação digitalComunicação digital
Comunicação digitalbgfreire
 

Andere mochten auch (20)

Java orientação a objetos (introdução)
Java   orientação a objetos (introdução)Java   orientação a objetos (introdução)
Java orientação a objetos (introdução)
 
puc- sp 2004
puc- sp 2004puc- sp 2004
puc- sp 2004
 
Marketing 2.0
Marketing 2.0Marketing 2.0
Marketing 2.0
 
Act2 uni3
Act2 uni3Act2 uni3
Act2 uni3
 
Nuevo leã³n
Nuevo leã³nNuevo leã³n
Nuevo leã³n
 
Why Personal Clouds Need A Network
Why Personal Clouds Need A NetworkWhy Personal Clouds Need A Network
Why Personal Clouds Need A Network
 
Diagnósticos e Projetos de Desenvolvimento
Diagnósticos e Projetos de DesenvolvimentoDiagnósticos e Projetos de Desenvolvimento
Diagnósticos e Projetos de Desenvolvimento
 
Making every game a success story
Making every game a success storyMaking every game a success story
Making every game a success story
 
Crimenes Sexuales contra Menores por Internet
Crimenes Sexuales contra Menores por InternetCrimenes Sexuales contra Menores por Internet
Crimenes Sexuales contra Menores por Internet
 
Caso costa concordia.
Caso costa concordia.Caso costa concordia.
Caso costa concordia.
 
David morrell cartite-1_0_10__
David morrell cartite-1_0_10__David morrell cartite-1_0_10__
David morrell cartite-1_0_10__
 
20100601 rojas-busqueda eficiente de informacion cientifica
20100601 rojas-busqueda eficiente de informacion cientifica20100601 rojas-busqueda eficiente de informacion cientifica
20100601 rojas-busqueda eficiente de informacion cientifica
 
Unidad 3 razones y proprciones slide
Unidad 3   razones y proprciones slideUnidad 3   razones y proprciones slide
Unidad 3 razones y proprciones slide
 
Ajanta Paintings
Ajanta PaintingsAjanta Paintings
Ajanta Paintings
 
Introducao a gastronomia
Introducao a gastronomiaIntroducao a gastronomia
Introducao a gastronomia
 
Las 7 hermanas petroleras
Las 7 hermanas petrolerasLas 7 hermanas petroleras
Las 7 hermanas petroleras
 
El Apocalipsis de hoy
El Apocalipsis de hoyEl Apocalipsis de hoy
El Apocalipsis de hoy
 
Universo de temas arquitectonicos por temática
Universo de temas arquitectonicos por temática Universo de temas arquitectonicos por temática
Universo de temas arquitectonicos por temática
 
Comunicação digital
Comunicação digitalComunicação digital
Comunicação digital
 
El atomo
El atomoEl atomo
El atomo
 

Ähnlich wie Introdução a classes e objetos

ebook-completo c# o melhor para começar no c#
ebook-completo c# o melhor para começar no c#ebook-completo c# o melhor para começar no c#
ebook-completo c# o melhor para começar no c#biandamakengo08
 
Aula 02 - Principios da Orientação a Objetos (POO)
Aula 02 - Principios da Orientação a Objetos (POO)Aula 02 - Principios da Orientação a Objetos (POO)
Aula 02 - Principios da Orientação a Objetos (POO)Daniel Brandão
 
Lista deexerciciono 02
Lista deexerciciono 02Lista deexerciciono 02
Lista deexerciciono 02jucibs
 
Curso Básico de Java - Aula 8
Curso Básico de Java - Aula 8 Curso Básico de Java - Aula 8
Curso Básico de Java - Aula 8 PeslPinguim
 
Aula 1 - Introdução a POO
Aula 1 -  Introdução a POOAula 1 -  Introdução a POO
Aula 1 - Introdução a POODaniel Brandão
 
Java: Introdução à Orientação a Objetos
Java: Introdução à Orientação a ObjetosJava: Introdução à Orientação a Objetos
Java: Introdução à Orientação a ObjetosArthur Emanuel
 
Aula 1 - Linguagem III
Aula 1 - Linguagem IIIAula 1 - Linguagem III
Aula 1 - Linguagem IIIJuliano Weber
 
Introdução à análise orientada a objetos parte 1
Introdução à análise orientada a objetos parte 1Introdução à análise orientada a objetos parte 1
Introdução à análise orientada a objetos parte 1ariovaldodias
 
Introdução à análise orientada a objetos parte 1
Introdução à análise orientada a objetos parte 1Introdução à análise orientada a objetos parte 1
Introdução à análise orientada a objetos parte 1ariovaldodias
 
Programação Orientada a Objetos - Uso da O.O. em Java
Programação Orientada a Objetos - Uso da O.O. em JavaProgramação Orientada a Objetos - Uso da O.O. em Java
Programação Orientada a Objetos - Uso da O.O. em JavaCristiano Almeida
 
Javascript (parte 1)
Javascript (parte 1)Javascript (parte 1)
Javascript (parte 1)Alex Camargo
 
Java - Visão geral e Exercícios
Java - Visão geral e ExercíciosJava - Visão geral e Exercícios
Java - Visão geral e ExercíciosArthur Emanuel
 
Curso Java Básico - Aula 03
Curso Java Básico - Aula 03Curso Java Básico - Aula 03
Curso Java Básico - Aula 03Natanael Fonseca
 
Aula 2 Prof. MSc. Cloves Rocha BV - (2018.2) CCO 2 MA - POO
Aula 2 Prof. MSc. Cloves Rocha BV - (2018.2) CCO 2 MA - POOAula 2 Prof. MSc. Cloves Rocha BV - (2018.2) CCO 2 MA - POO
Aula 2 Prof. MSc. Cloves Rocha BV - (2018.2) CCO 2 MA - POOCloves da Rocha
 
Curso Básico de Java - Aula 7
Curso Básico de Java - Aula 7Curso Básico de Java - Aula 7
Curso Básico de Java - Aula 7PeslPinguim
 

Ähnlich wie Introdução a classes e objetos (20)

Programação OO - Java
Programação OO - JavaProgramação OO - Java
Programação OO - Java
 
ebook-completo c# o melhor para começar no c#
ebook-completo c# o melhor para começar no c#ebook-completo c# o melhor para começar no c#
ebook-completo c# o melhor para começar no c#
 
Aula 02 - Principios da Orientação a Objetos (POO)
Aula 02 - Principios da Orientação a Objetos (POO)Aula 02 - Principios da Orientação a Objetos (POO)
Aula 02 - Principios da Orientação a Objetos (POO)
 
Lista deexerciciono 02
Lista deexerciciono 02Lista deexerciciono 02
Lista deexerciciono 02
 
POO.pdf
POO.pdfPOO.pdf
POO.pdf
 
Curso Básico de Java - Aula 8
Curso Básico de Java - Aula 8 Curso Básico de Java - Aula 8
Curso Básico de Java - Aula 8
 
Java7
Java7Java7
Java7
 
Java aula 2
Java aula 2Java aula 2
Java aula 2
 
Aula 1 - Introdução a POO
Aula 1 -  Introdução a POOAula 1 -  Introdução a POO
Aula 1 - Introdução a POO
 
Java: Introdução à Orientação a Objetos
Java: Introdução à Orientação a ObjetosJava: Introdução à Orientação a Objetos
Java: Introdução à Orientação a Objetos
 
Aula 1 - Linguagem III
Aula 1 - Linguagem IIIAula 1 - Linguagem III
Aula 1 - Linguagem III
 
TESTE
TESTETESTE
TESTE
 
Introdução à análise orientada a objetos parte 1
Introdução à análise orientada a objetos parte 1Introdução à análise orientada a objetos parte 1
Introdução à análise orientada a objetos parte 1
 
Introdução à análise orientada a objetos parte 1
Introdução à análise orientada a objetos parte 1Introdução à análise orientada a objetos parte 1
Introdução à análise orientada a objetos parte 1
 
Programação Orientada a Objetos - Uso da O.O. em Java
Programação Orientada a Objetos - Uso da O.O. em JavaProgramação Orientada a Objetos - Uso da O.O. em Java
Programação Orientada a Objetos - Uso da O.O. em Java
 
Javascript (parte 1)
Javascript (parte 1)Javascript (parte 1)
Javascript (parte 1)
 
Java - Visão geral e Exercícios
Java - Visão geral e ExercíciosJava - Visão geral e Exercícios
Java - Visão geral e Exercícios
 
Curso Java Básico - Aula 03
Curso Java Básico - Aula 03Curso Java Básico - Aula 03
Curso Java Básico - Aula 03
 
Aula 2 Prof. MSc. Cloves Rocha BV - (2018.2) CCO 2 MA - POO
Aula 2 Prof. MSc. Cloves Rocha BV - (2018.2) CCO 2 MA - POOAula 2 Prof. MSc. Cloves Rocha BV - (2018.2) CCO 2 MA - POO
Aula 2 Prof. MSc. Cloves Rocha BV - (2018.2) CCO 2 MA - POO
 
Curso Básico de Java - Aula 7
Curso Básico de Java - Aula 7Curso Básico de Java - Aula 7
Curso Básico de Java - Aula 7
 

Mehr von Cícero Quarto

Proposta detesecicero atualizada_01012015
Proposta detesecicero atualizada_01012015Proposta detesecicero atualizada_01012015
Proposta detesecicero atualizada_01012015Cícero Quarto
 
Analise estatistica trabcicero
Analise estatistica trabciceroAnalise estatistica trabcicero
Analise estatistica trabciceroCícero Quarto
 
Vygotsky e a Teoria da Zona de Desenvolvimento Proximal
Vygotsky e a Teoria da Zona de Desenvolvimento ProximalVygotsky e a Teoria da Zona de Desenvolvimento Proximal
Vygotsky e a Teoria da Zona de Desenvolvimento ProximalCícero Quarto
 
Instruções de controle
Instruções de controleInstruções de controle
Instruções de controleCícero Quarto
 
Instruções de controle 1
Instruções de controle 1Instruções de controle 1
Instruções de controle 1Cícero Quarto
 
Introdução aos computadores e à World Wide Web
Introdução aos computadores e à World Wide WebIntrodução aos computadores e à World Wide Web
Introdução aos computadores e à World Wide WebCícero Quarto
 

Mehr von Cícero Quarto (9)

Proposta detesecicero atualizada_01012015
Proposta detesecicero atualizada_01012015Proposta detesecicero atualizada_01012015
Proposta detesecicero atualizada_01012015
 
Análise Estatística
Análise EstatísticaAnálise Estatística
Análise Estatística
 
Analise estatistica trabcicero
Analise estatistica trabciceroAnalise estatistica trabcicero
Analise estatistica trabcicero
 
Arquitetura SMA
Arquitetura SMAArquitetura SMA
Arquitetura SMA
 
Vygotsky e a Teoria da Zona de Desenvolvimento Proximal
Vygotsky e a Teoria da Zona de Desenvolvimento ProximalVygotsky e a Teoria da Zona de Desenvolvimento Proximal
Vygotsky e a Teoria da Zona de Desenvolvimento Proximal
 
Instruções de controle
Instruções de controleInstruções de controle
Instruções de controle
 
Instruções de controle 1
Instruções de controle 1Instruções de controle 1
Instruções de controle 1
 
Introdução aos computadores e à World Wide Web
Introdução aos computadores e à World Wide WebIntrodução aos computadores e à World Wide Web
Introdução aos computadores e à World Wide Web
 
Introd aplicjava
Introd aplicjavaIntrod aplicjava
Introd aplicjava
 

Kürzlich hochgeladen

Apresentação | Eleições Europeias 2024-2029
Apresentação | Eleições Europeias 2024-2029Apresentação | Eleições Europeias 2024-2029
Apresentação | Eleições Europeias 2024-2029Centro Jacques Delors
 
Prova uniasselvi tecnologias da Informação.pdf
Prova uniasselvi tecnologias da Informação.pdfProva uniasselvi tecnologias da Informação.pdf
Prova uniasselvi tecnologias da Informação.pdfArthurRomanof1
 
ALMANANHE DE BRINCADEIRAS - 500 atividades escolares
ALMANANHE DE BRINCADEIRAS - 500 atividades escolaresALMANANHE DE BRINCADEIRAS - 500 atividades escolares
ALMANANHE DE BRINCADEIRAS - 500 atividades escolaresLilianPiola
 
UFCD_10392_Intervenção em populações de risco_índice .pdf
UFCD_10392_Intervenção em populações de risco_índice .pdfUFCD_10392_Intervenção em populações de risco_índice .pdf
UFCD_10392_Intervenção em populações de risco_índice .pdfManuais Formação
 
Apostila da CONQUISTA_ para o 6ANO_LP_UNI1.pptx
Apostila da CONQUISTA_ para o 6ANO_LP_UNI1.pptxApostila da CONQUISTA_ para o 6ANO_LP_UNI1.pptx
Apostila da CONQUISTA_ para o 6ANO_LP_UNI1.pptxIsabelaRafael2
 
E agora?! Já não avalio as atitudes e valores?
E agora?! Já não avalio as atitudes e valores?E agora?! Já não avalio as atitudes e valores?
E agora?! Já não avalio as atitudes e valores?Rosalina Simão Nunes
 
Slides Lição 4, CPAD, Como se Conduzir na Caminhada, 2Tr24.pptx
Slides Lição 4, CPAD, Como se Conduzir na Caminhada, 2Tr24.pptxSlides Lição 4, CPAD, Como se Conduzir na Caminhada, 2Tr24.pptx
Slides Lição 4, CPAD, Como se Conduzir na Caminhada, 2Tr24.pptxLuizHenriquedeAlmeid6
 
Slides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptx
Slides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptxSlides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptx
Slides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptxLuizHenriquedeAlmeid6
 
Época Realista y la obra de Madame Bovary.
Época Realista y la obra de Madame Bovary.Época Realista y la obra de Madame Bovary.
Época Realista y la obra de Madame Bovary.keislayyovera123
 
A Arte de Escrever Poemas - Dia das Mães
A Arte de Escrever Poemas - Dia das MãesA Arte de Escrever Poemas - Dia das Mães
A Arte de Escrever Poemas - Dia das MãesMary Alvarenga
 
Governo Provisório Era Vargas 1930-1934 Brasil
Governo Provisório Era Vargas 1930-1934 BrasilGoverno Provisório Era Vargas 1930-1934 Brasil
Governo Provisório Era Vargas 1930-1934 Brasillucasp132400
 
Slides 1 - O gênero textual entrevista.pptx
Slides 1 - O gênero textual entrevista.pptxSlides 1 - O gênero textual entrevista.pptx
Slides 1 - O gênero textual entrevista.pptxSilvana Silva
 
A experiência amorosa e a reflexão sobre o Amor.pptx
A experiência amorosa e a reflexão sobre o Amor.pptxA experiência amorosa e a reflexão sobre o Amor.pptx
A experiência amorosa e a reflexão sobre o Amor.pptxfabiolalopesmartins1
 
ATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptx
ATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptxATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptx
ATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptxOsnilReis1
 
Gerenciando a Aprendizagem Organizacional
Gerenciando a Aprendizagem OrganizacionalGerenciando a Aprendizagem Organizacional
Gerenciando a Aprendizagem OrganizacionalJacqueline Cerqueira
 
Grupo Tribalhista - Música Velha Infância (cruzadinha e caça palavras)
Grupo Tribalhista - Música Velha Infância (cruzadinha e caça palavras)Grupo Tribalhista - Música Velha Infância (cruzadinha e caça palavras)
Grupo Tribalhista - Música Velha Infância (cruzadinha e caça palavras)Mary Alvarenga
 
“Sobrou pra mim” - Conto de Ruth Rocha.pptx
“Sobrou pra mim” - Conto de Ruth Rocha.pptx“Sobrou pra mim” - Conto de Ruth Rocha.pptx
“Sobrou pra mim” - Conto de Ruth Rocha.pptxthaisamaral9365923
 
02. Informática - Windows 10 apostila completa.pdf
02. Informática - Windows 10 apostila completa.pdf02. Informática - Windows 10 apostila completa.pdf
02. Informática - Windows 10 apostila completa.pdfJorge Andrade
 
Aula - 2º Ano - Cultura e Sociedade - Conceitos-chave
Aula - 2º Ano - Cultura e Sociedade - Conceitos-chaveAula - 2º Ano - Cultura e Sociedade - Conceitos-chave
Aula - 2º Ano - Cultura e Sociedade - Conceitos-chaveaulasgege
 

Kürzlich hochgeladen (20)

Apresentação | Eleições Europeias 2024-2029
Apresentação | Eleições Europeias 2024-2029Apresentação | Eleições Europeias 2024-2029
Apresentação | Eleições Europeias 2024-2029
 
Prova uniasselvi tecnologias da Informação.pdf
Prova uniasselvi tecnologias da Informação.pdfProva uniasselvi tecnologias da Informação.pdf
Prova uniasselvi tecnologias da Informação.pdf
 
ALMANANHE DE BRINCADEIRAS - 500 atividades escolares
ALMANANHE DE BRINCADEIRAS - 500 atividades escolaresALMANANHE DE BRINCADEIRAS - 500 atividades escolares
ALMANANHE DE BRINCADEIRAS - 500 atividades escolares
 
UFCD_10392_Intervenção em populações de risco_índice .pdf
UFCD_10392_Intervenção em populações de risco_índice .pdfUFCD_10392_Intervenção em populações de risco_índice .pdf
UFCD_10392_Intervenção em populações de risco_índice .pdf
 
Apostila da CONQUISTA_ para o 6ANO_LP_UNI1.pptx
Apostila da CONQUISTA_ para o 6ANO_LP_UNI1.pptxApostila da CONQUISTA_ para o 6ANO_LP_UNI1.pptx
Apostila da CONQUISTA_ para o 6ANO_LP_UNI1.pptx
 
E agora?! Já não avalio as atitudes e valores?
E agora?! Já não avalio as atitudes e valores?E agora?! Já não avalio as atitudes e valores?
E agora?! Já não avalio as atitudes e valores?
 
Slides Lição 4, CPAD, Como se Conduzir na Caminhada, 2Tr24.pptx
Slides Lição 4, CPAD, Como se Conduzir na Caminhada, 2Tr24.pptxSlides Lição 4, CPAD, Como se Conduzir na Caminhada, 2Tr24.pptx
Slides Lição 4, CPAD, Como se Conduzir na Caminhada, 2Tr24.pptx
 
Slides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptx
Slides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptxSlides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptx
Slides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptx
 
Época Realista y la obra de Madame Bovary.
Época Realista y la obra de Madame Bovary.Época Realista y la obra de Madame Bovary.
Época Realista y la obra de Madame Bovary.
 
A Arte de Escrever Poemas - Dia das Mães
A Arte de Escrever Poemas - Dia das MãesA Arte de Escrever Poemas - Dia das Mães
A Arte de Escrever Poemas - Dia das Mães
 
Governo Provisório Era Vargas 1930-1934 Brasil
Governo Provisório Era Vargas 1930-1934 BrasilGoverno Provisório Era Vargas 1930-1934 Brasil
Governo Provisório Era Vargas 1930-1934 Brasil
 
Slides 1 - O gênero textual entrevista.pptx
Slides 1 - O gênero textual entrevista.pptxSlides 1 - O gênero textual entrevista.pptx
Slides 1 - O gênero textual entrevista.pptx
 
A experiência amorosa e a reflexão sobre o Amor.pptx
A experiência amorosa e a reflexão sobre o Amor.pptxA experiência amorosa e a reflexão sobre o Amor.pptx
A experiência amorosa e a reflexão sobre o Amor.pptx
 
ATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptx
ATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptxATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptx
ATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptx
 
Gerenciando a Aprendizagem Organizacional
Gerenciando a Aprendizagem OrganizacionalGerenciando a Aprendizagem Organizacional
Gerenciando a Aprendizagem Organizacional
 
XI OLIMPÍADAS DA LÍNGUA PORTUGUESA -
XI OLIMPÍADAS DA LÍNGUA PORTUGUESA      -XI OLIMPÍADAS DA LÍNGUA PORTUGUESA      -
XI OLIMPÍADAS DA LÍNGUA PORTUGUESA -
 
Grupo Tribalhista - Música Velha Infância (cruzadinha e caça palavras)
Grupo Tribalhista - Música Velha Infância (cruzadinha e caça palavras)Grupo Tribalhista - Música Velha Infância (cruzadinha e caça palavras)
Grupo Tribalhista - Música Velha Infância (cruzadinha e caça palavras)
 
“Sobrou pra mim” - Conto de Ruth Rocha.pptx
“Sobrou pra mim” - Conto de Ruth Rocha.pptx“Sobrou pra mim” - Conto de Ruth Rocha.pptx
“Sobrou pra mim” - Conto de Ruth Rocha.pptx
 
02. Informática - Windows 10 apostila completa.pdf
02. Informática - Windows 10 apostila completa.pdf02. Informática - Windows 10 apostila completa.pdf
02. Informática - Windows 10 apostila completa.pdf
 
Aula - 2º Ano - Cultura e Sociedade - Conceitos-chave
Aula - 2º Ano - Cultura e Sociedade - Conceitos-chaveAula - 2º Ano - Cultura e Sociedade - Conceitos-chave
Aula - 2º Ano - Cultura e Sociedade - Conceitos-chave
 

Introdução a classes e objetos

  • 1. Engenharia da Computação Prof. Cícero Quarto – cicero.uema@gmail.com 1 Capítulo 3 Introdução a classes e objetos PROGRAMAÇÃO ORIENTADA A OBJETOS POO
  • 2. Engenharia da Computação Prof. Cícero Quarto – cicero.uema@gmail.com Sumário Classes, objetos, métodos e variáveis de instâncias Declarando um método com um parâmetro Variáveis de instância, métodos set e get Tipos primitivos vs. Tipos por referência Inicializando objetos com construtores Números de ponto flutuante e tipo double Estudo de caso de GUI e imagens gráficas utilizando caixas de diálogo Declarando uma classe com um método e instanciando um objeto de uma classe 2
  • 3. Engenharia da Computação Prof. Cícero Quarto – cicero.uema@gmail.com Classes, objetos, métodos e variáveis de instância O que é uma classe na LPOO? Conjunto de objetos com características afins; Define o comportamento dos objetos através de seus métodos, e quais estados ele é capaz de manter através de seus atributos. Classes objetos atributos métodos Exemplo: Os seres humanos 3
  • 4. Engenharia da Computação Prof. Cícero Quarto – cicero.uema@gmail.com Para ajudar a entender classes e seu conteúdo, consideremos o contexto abaixo: “Suponha que você queira guiar um carro e fazê-lo andar mais rápido pisando no pedal acelerador”. O que deve acontecer antes que você possa fazer isso? Alguém tem que projetá-lo (desenho de engenharia, semelhantes às plantas utilizadas para projetar uma casa). Os desenhos de engenharia incluem o projeto de um pedal acelerador para aumentar a velocidade do carro. O pedal acelerador “oculta” do motorista os complexos mecanismos que realmente fazem o carro ir mais rápido, assim como o pedal de freio “oculta” os mecanismos que diminuem a velocidade do carro e a direção “oculta” os mecanismos que mudam a direção do carro. Isso permite que as pessoas com pouco ou nenhum conhecimento de como os motores funcionam dirijam um carro facilmente. Classes, objetos, métodos e variáveis de instância 4
  • 5. Engenharia da Computação Prof. Cícero Quarto – cicero.uema@gmail.com Classes, objetos, métodos e variáveis de instância O carro acelerará por conta própria? 5
  • 6. Engenharia da Computação Prof. Cícero Quarto – cicero.uema@gmail.com Classes, objetos, métodos e variáveis de instância Introdução aos conceitos da POO O carro acelerará por conta própria? 6
  • 7. Engenharia da Computação Prof. Cícero Quarto – cicero.uema@gmail.com Classes, objetos, métodos e variáveis de instância Para realizar uma tarefa em um programa é necessário um método. O método descreve os mecanismos que realmente realizam suas tarefas. O método oculta de seu usuário as tarefas complexas que ele realiza, assim como o pedal acelerador de um carro oculta do motorista os complexos mecanismos que fazem o carro andar mais rápido. Em Java, primeiro criamos uma unidade de programa chamada classe para abrigar um método, assim como os desenhos de engenharia do carro abrigam o projeto de um pedal acelerador. 7
  • 8. Engenharia da Computação Prof. Cícero Quarto – cicero.uema@gmail.com Classes, objetos, métodos e variáveis de instância Em uma classe, você fornece um ou mais métodos que são projetados para realizar as tarefas da classe. Exemplo: uma classe que representa uma conta bancária poderia conter um método para fazer depósitos de dinheiro em uma conta, outro para fazer saques e um terceiro para perguntar qual é o saldo atual. Assim como você não pode dirigir um desenho de engenharia de um carro, você não pode “dirigir” uma classe. Assim como alguém tem de construir um carro a partir de seus desenhos de engenharia antes de poder realmente guiar o carro, você deve construir um objeto de uma classe antes de fazer um programa realizar as tarefas que a classe descreve como fazer. 8
  • 9. Engenharia da Computação Prof. Cícero Quarto – cicero.uema@gmail.com Classes, objetos, métodos e variáveis de instância Ao dirigir um carro, o ato de pressionar o acelerador envia uma mensagem para o carro realizar uma tarefa – isto é, fazer o carro andar mais rápido. De maneira semelhante, você envia mensagens para um objeto – cada mensagem é implementada como uma chamada de método que instrui um método do objeto a realizar sua tarefa. Um carro, além de suas capacidades, também tem muitos atributos, como cor, número de portas, a quantidade de gasolina no tanque, a velocidade atual e o total de quilômetros percorridos. Cada carro mantém seus próprios atributos. 9
  • 10. Engenharia da Computação Prof. Cícero Quarto – cicero.uema@gmail.com Classes, objetos, métodos e variáveis de instância Um objeto tem atributos que são carregados com o objeto quando ele é utilizado em um programa. Os atributos do objeto são especificados como parte da classe do objeto. Por exemplo, um objeto conta bancária tem um atributo ‘saldo’ que representa a quantidade de dinheiro na conta. Cada objeto ‘conta bancária’ sabe o saldo da conta que ele representa, mas não sabe os saldos de outras contas no banco. Os atributos são especificados pelas variáveis de instância da classe. 10
  • 11. Engenharia da Computação Prof. Cícero Quarto – cicero.uema@gmail.com Classes, objetos, métodos e variáveis de instância Resumo dos exemplos para demonstrar os conceitos de OO 1. O primeiro exemplo apresenta uma classe GradeBook com um método que simplesmente exibe uma mensagem de boas-vindas quando é chamado. Então é mostrado como criar um objeto dessa classe e chamar o método para ele exibir a mensagem de boas-vindas. 2. O segundo exemplo aprimora o primeiro para permitir ao método receber o nome de um curso como argumento e exibe o nome como parte da mensagem de boas-vindas. 3. O terceiro exemplo mostra como armazenar o nome do curso em um objeto GradeBook. Para essa versão da classe, é mostrado como utilizar métodos para configurar o nome do curso e obter seu nome. 11
  • 12. Engenharia da Computação Prof. Cícero Quarto – cicero.uema@gmail.com Classes, objetos, métodos e variáveis de instância Resumo dos exemplos para demonstrar os conceitos de OO 4. O quarto exemplo demonstra como os dados em um objeto GradeBook podem ser inicializados quando o objeto é criado. O último exemplo apresenta uma classe Account que reforça os conceitos apresentados nos quatro primeiros exemplos e introduz número de ponto flutuante. A classe Account representa uma conta bancária e mantém seu saldo como um número de ponto flutuante. A classe contém dois métodos – um que credita um depósito à conta, aumentando assim o saldo, e outro número que recupera o saldo. 12
  • 13. Engenharia da Computação Prof. Cícero Quarto – cicero.uema@gmail.com Classes, objetos, métodos e variáveis de instância Resumo dos exemplos para demonstrar os conceitos de OO O construtor da classe permite que o saldo de cada objeto Account seja inicializado quando o objeto é criado. São criados dois objetos Account e são feitos depósitos em cada um para mostrar que cada objeto mantém seu próprio saldo. O exemplo também demonstra como inserir e exibir números de ponto flutuante. 13
  • 14. Engenharia da Computação Prof. Cícero Quarto – cicero.uema@gmail.com 14 Declarando uma classe com um método e instanciando um objeto de uma classe Em seções anteriores, aprendeu-se como criar um objeto da classe Scanner e, então, utilizar esse objeto para ler dados a partir do teclado. Nesta seção, criar-se-á uma nova classe e usar-se-á para criar um objeto. Iniciaremos com um exemplo que consiste em classes GradeBook (Figura 3.1) e GradeBookTest (Figura 3.2). A classe GradeBook (declarada no arquivo GradeBook.java) será utilizada para exibir uma mensagem na tela (Figura 3.2) que dá boas-vindas ao instrutor do aplicativo livro de notas.
  • 15. Engenharia da Computação Prof. Cícero Quarto – cicero.uema@gmail.com 15 A classe GradeBook A declaração de classe GradeBook (Figura 3.1) contém um método displayMessage (linha 17) que exibe uma mensagem na tela. Lembre-se que uma classe é como uma planta arquitetônica – precisamos criar um objeto dessa classe e chamar seu método para executar a linha 18 e exibir a mensagem. Figura 3.1 | Declaração de classe com um método.
  • 16. Engenharia da Computação Prof. Cícero Quarto – cicero.uema@gmail.com 16Figura 3.1 | Declaração de classe com um método. Comentando o código da classe GradeBook Declaração de classe inicia na linha 15; A palavra-chave public é um modificador de acesso; Par de chaves { e } – corpo de cada classe (linhas 15-22); A declaração do método começa com a palavra-chave public (linha 17) para indicar que o método está “disponível para o público” – ele pode ser chamado a partir de métodos de outras classes.
  • 17. Engenharia da Computação Prof. Cícero Quarto – cicero.uema@gmail.com 17Figura 3.1 | Declaração de classe com um método. Comentando o código da classe GradeBook Palavra-chave void (linha 17) especifica o tipo de retorno do método, que define o tipo de dados que o método retorna depois de realizar sua tarefa; O tipo de retorno void indica que esse método (linha 17) realizará uma tarefa, mas não retornará (isto é, devolverá) nenhuma informação para seu método chamador ao completar sua tarefa;
  • 18. Engenharia da Computação Prof. Cícero Quarto – cicero.uema@gmail.com 18 Figura 3.1 | Declaração de classe com um método. Comentando o código da classe GradeBook O nome do método, displayMessage, segue o tipo de retorno (linha 17); Por convenção, os nomes de método iniciam com a primeira letra minúscula e as palavras subsequentes do nome iniciam com uma maiúscula; Os parênteses depois do nome do método indicam que isso é um método. Os parênteses vazios, como na linha 17, indicam que esse método não requer informações adicionais para realizar sua tarefa;
  • 19. Engenharia da Computação Prof. Cícero Quarto – cicero.uema@gmail.com 19Figura 3.1 | Declaração de classe com um método. Comentando o código da classe GradeBook A linha 17 é comumente referida como o cabeçalho de método; O corpo de cada método é delimitado pelas chaves esquerda e direita { e }, como nas linhas 17 – 20; O corpo de um método contém uma ou mais instruções que realizam a tarefa do método. No exemplo, o método contém uma instrução (linha 18) que exibe a mensagem “Welcome to the GradeBook!”
  • 20. Engenharia da Computação Prof. Cícero Quarto – cicero.uema@gmail.com 20 Comentando o código da classe GradeBook A classe GradeBook não é um aplicativo Java porque não contém o método principal main, o qual inicia a execução de um aplicativo Java; Se tentarmos executar GradeBook usando o NetBeans, obteríamos uma mensagem de erro como é mostrada na figura abaixo: Devemos declarar uma classe separada que contenha um método main Como resolver o problema? Colocar um método main na classe GradeBook
  • 21. Engenharia da Computação Prof. Cícero Quarto – cicero.uema@gmail.com 21 A classe GradeBookTest A declaração de classe GradeBookTest(Figura 3.2) contém o método main que controlará a execução do aplicativo. Figura 3.2 | Criando um objeto GradeBook e chamando seu método displayMessage. A declaração de classe GradeBookTest inicia na linha 14 e termina na linha 25; A classe contém somente um método GradeBookTest, que é típico de muitas classes que iniciam a execução de um aplicativo Java; As linhas 14 – 23 declaram o método main, que é um método static; Um método static é especial, porque pode ser chamado sem primeiro criar um objeto da classe em que o método é declarado.
  • 22. Engenharia da Computação Prof. Cícero Quarto – cicero.uema@gmail.com 22 Comentando a classe GradeBookTest Na classe GradeBookTest, gostaríamos de chamar o método displayMessage da classe GradeBook (Figura 3.1) para exibir a mensagem de boas-vindas na janela de comando; Em geral, não podemos chamar um método que pertence a outra classe até que seja criado um objeto dessa classe, como mostrado na linha 18 da Figura 3.2. Figura 3.1 | Declaração de classe com um método.
  • 23. Engenharia da Computação Prof. Cícero Quarto – cicero.uema@gmail.com 23 Comentando a classe GradeBookTest Linha 18 – declaração da variável myGradeBook, que é do tipo GradeBook – a classe que foi declarada na Figura 3.1; A variável myGradeBook é inicializada com o resultado da expressão de criação de instância de classe new GradeBook(). Figura 3.2 | Criando um objeto GradeBook e chamando seu método displayMessage. Assim como podemos usar o objeto System.out para chamar os métodos print, printf e println, também podemos usar o objeto myGradeBook para chamar o método displayMessage; A instrução da linha 21 myGradeBook.displayMessage() ; é uma chamada de método, fazendo com que o método displayMessage realize sua tarefa.
  • 24. Engenharia da Computação Prof. Cícero Quarto – cicero.uema@gmail.com 24 Diagrama de classes UML para a classe GradeBook A Figura 3.3 apresenta um diagrama de classes UML para a classe GradeBook da Figura 3.1. GradeBook + displayMessage( ) Figura 3.3 | Diagrama de classe UML indicando que a classe GradeBook tem uma operação public displayMessage.
  • 25. Engenharia da Computação Prof. Cícero Quarto – cicero.uema@gmail.com 25 Diagrama de classes UML para a classe GradeBook Na UML, cada classe é modelada em um diagrama de classe como um retângulo com três compartimentos. Compartimento superior Compartimento do meio Compartimento inferior Contém o nome da classe centralizado horizontalmente no tipo negrito Contém os atributos da classe (variáveis de instâncias) em Java GradeBook + displayMessage( ) O compartimento está vazio porque essa classe GradeBook não tem nenhum atributo. Contém as operações da classe, que correspondem aos métodos em Java Figura 3.3 | Diagrama de classe UML indicando que a classe GradeBook tem uma operação public displayMessage.
  • 26. Engenharia da Computação Prof. Cícero Quarto – cicero.uema@gmail.com 26 Comentando o Diagrama de classes UML para a classe GradeBook A UML modela operações listando o nome da operação precedido por um modificador de acesso (nesse caso +) e seguido por um conjunto de parênteses (ver Figura 3.3); A classe GradeBook tem um método, displayMessage, então o compartimento inferior da Figura 3.3 lista uma operação com esse nome; O método displayMessage não requer informações adicionais para executar suas tarefas, portanto os parênteses depois do nome do método no diagrama de classe estão vazios;
  • 27. Engenharia da Computação Prof. Cícero Quarto – cicero.uema@gmail.com 27 Comentando o Diagrama de classes UML para a classe GradeBook O sinal de adição ( + ) na frente do nome da operação indica que displayMessage é uma operação public na UML (isto é, um método public no Java). Usaremos com freqüência os diagramas de classe UML para resumir os atributos e as operações de uma classe Java. GradeBook + displayMessage( ) Figura 3.3 | Diagrama de classe UML indicando que a classe GradeBook tem uma operação public displayMessage.
  • 28. Engenharia da Computação Prof. Cícero Quarto – cicero.uema@gmail.com 28 Declarando um método com um parâmetro Em analogia com o carro, discutimos o fato de que pressionar o acelerador de um carro envia uma mensagem para ele realizar uma tarefa – fazer o carro andar mais rápido. Mas quanto o carro deve acelerar? Quanto mais pressionarmos o pedal, mais rápido o carro irá acelerar; • Então a mensagem para o carro na verdade inclui a tarefa a ser realizada e informações adicionais que ajudam o carro a executar essa tarefa. Essas informações adicionais são conhecidas como parâmetro – o valor do parâmetro ajuda o carro a determinar com que rapidez acelerar.
  • 29. Engenharia da Computação Prof. Cícero Quarto – cicero.uema@gmail.com 29 Declarando um método com um parâmetro De maneira semelhante, um método pode exigir um ou mais parâmetros que representam informações adicionais necessárias para realizar a tarefa; Os parâmetros são definidos em uma lista de parâmetros separados por vírgula, que está localizada nos parênteses depois do nome do método; Todo parâmetro deve especificar um tipo e um identificador; A lista de parâmetros pode conter qualquer número de parâmetros, inclusive nenhum parâmetro; Os parênteses vazios que se seguem ao nome de método indicam que um método não requer nenhum parâmetro.
  • 30. Engenharia da Computação Prof. Cícero Quarto – cicero.uema@gmail.com 30 Declarando um método com um parâmetro Uma chamada de método fornece valores – chamados argumentos – para cada um dos parâmetros do método; • Por exemplo, o método System.out.println exige um argumento que especifica que dados enviar para a saída em uma janela de comando; • De maneira semelhante, para fazer um depósito em uma conta bancária, um método deposit especifica um parâmetro que representa a quantidade de depósito; Quando o método deposit é chamado um valor de argumento que representa a quantidade de depósito é atribuído ao parâmetro do método. O método então faz um depósito dessa quantia.
  • 31. Engenharia da Computação Prof. Cícero Quarto – cicero.uema@gmail.com 31 Laboratório - declarando um método com um parâmetro Declarar uma classe GradeBook2 com um método displayMessage que exibe o nome do curso como parte da mensagem de boas-vindas. O novo método displayMessage requer um parâmetro que representa o nome do curso a ser enviado para a saída. Ferramenta: NetBeans IDE 7.0
  • 32. Engenharia da Computação Prof. Cícero Quarto – cicero.uema@gmail.com 32 Saída do programa Figura 3.5 | Criando um objeto GradeBook2 e passando uma String ao seu método displayMessage.
  • 33. Engenharia da Computação Prof. Cícero Quarto – cicero.uema@gmail.com 33 Comentando as classes GradeBook2 e GradeBook2Test Classe GradeBook2 Classe GradeBook2Test Figura 3.4 Figura 3.5
  • 34. Engenharia da Computação Prof. Cícero Quarto – cicero.uema@gmail.com 34 Comentando as classes GradeBook2 e GradeBook2Test Linha 24: System.out.println( “Please enter the course name:” ); exibe um prompt que pede para o usuário inserir o nome do curso; Linha 25: String nameOfCourse = input.nextLine( ); mostra o nome do usuário e o atribui à variável nameOfCourse, utilizando o método Scanner nextLine para realizar a tarefa; Linha 30: myGradeBook2.displayMessage( nameOfCourse ); chama o método displayMessage de myGradeBook. A variável nameOfCourse entre parênteses é o argumento que é passado ao método displayMessage para o método realizar sua tarefa.
  • 35. Engenharia da Computação Prof. Cícero Quarto – cicero.uema@gmail.com 35 Mais sobre argumentos e parâmetros Na Figura 3.4, a lista de parâmetros de displayMessage (linha 15) public void displayMessage( String courseName) { declara um parâmetro indicando que o método requer uma String para executar sua tarefa. Quando o método é chamado, linha 30 (Figura 3.5), myGradeBook2.displayMessage( nameOfCourse );, o valor de argumento na chamada é atribuído ao parâmetro correspondente (nesse caso, courseName) no cabeçalho do método (linha 15) da Figura 3.4; Public void displayMessage( String courseName ){; O número de argumentos em uma chamada de método deve corresponder ao número de parâmetros na lista de parâmetros da declaração do método.
  • 36. Engenharia da Computação Prof. Cícero Quarto – cicero.uema@gmail.com 36 Diagrama de classes UML para a classe GradeBook2 O diagrama de classe UML da Figura 3.6 modela a classe GradeBook2 da Figura 3.4. Como a Figura 3.3, essa classe GradeBook2 contém displayMessage, uma operação public e um parâmetro. A UML modela um parâmetro de um modo pouco diferente do Java listando o nome de parâmetro, seguido por dois pontos e pelo tipo de parâmetro nos parênteses que seguem o nome da operação; GradeBook2 + displayMessage( courseName: String ) Figura 3.6 | Diagrama de classe UML indicando que a classe GradeBook2 tem uma operação displayMessage com um parâmetro courseName de tipo UML String.
  • 37. Engenharia da Computação Prof. Cícero Quarto – cicero.uema@gmail.com 37 Variáveis de instância, métodos set e get Nos exemplos já vistos, declaramos todas as variáveis de um aplicativo no método main do aplicativo. As variáveis declaradas no corpo de um método particular são conhecidas como variáveis locais e só podem ser utilizadas nesse método. Um objeto tem atributos que são carregados com o objeto quando ele é utilizado em um programa. • Os atributos de um objeto existem antes de um método ser chamado em um objeto e depois de o método completar a execução. Os atributos são representados como variáveis em uma declaração de classe.
  • 38. Engenharia da Computação Prof. Cícero Quarto – cicero.uema@gmail.com Instância da classe 38 Classe Cadeira Objetos (material, braço, cor, tipo, etc) Atributos (madeira, plano, verde, diretor) Métodos (displayCor) Campos: variáveis que representam atributos de um objeto em uma declaração de classe, mas fora do corpo das declarações de método da classe; Variáveis de instâncias: campos que representam as cópias dos atributos de um objeto. Um exemplo nessa seção demonstra uma classe GradeBook que contém uma variável de instância courseName para representar o nome do curso de um objeto GradeBook particular. Instâncias da classe
  • 39. Engenharia da Computação Prof. Cícero Quarto – cicero.uema@gmail.com 39 Classe GradeBook3 com uma variável de instância, um método set e um método get No próximo aplicativo (Figuras 3.7 e 3.8), a classe GradeBook3 (Figura 3.7) mantém o nome do curso como uma variável de instância para que ele possa ser utilizado ou modificado a qualquer hora durante a execução de um aplicativo; A classe contém três métodos – setCourseName, getCourseName e displayMessage; método setCourseName – armazena o nome de um curso de um GradeBook3; método getCourseName – obtém o nome do curso de um GradeBook3; método displayMessage – exibe uma mensagem de boas-vindas que inclui o nome do curso. O método obtém o nome do curso chamando outro método na mesma classe – getCourseName.
  • 40. Engenharia da Computação Prof. Cícero Quarto – cicero.uema@gmail.com 40 Comentando a classe GradeBook3 Figura 3.7 | A classe GradeBook3 que contém uma variável de instância coursename e métodos para configurar e obter seu valor
  • 41. Engenharia da Computação Prof. Cícero Quarto – cicero.uema@gmail.com 41 COMENTANDO O CÓDIGO Linha 16: private String courseName; declara que courseName é uma variável de tipo String, dentro do corpo da classe, mas fora dos corpos de seus métodos; Toda instância (isto é, objeto) de classe GradeBook3 contém uma cópia de cada variável de instância. Figura 3.7 | A classe GradeBook3 que contém uma variável de instância courseName e métodos para configurar e obter seu valor.
  • 42. Engenharia da Computação Prof. Cícero Quarto – cicero.uema@gmail.com 42 Modificadores de acesso public e private A maioria das declarações de variável de instância é precedida pela palavra-chave private (linha 16); Como public, a palavra-chave private é um modificador de acesso; Dessa forma, a variável courseName só pode ser utilizada nos métodos setCourseName, getCourseName e displayMessage da classe GradeBook3; A declaração de variáveis de instância com o modificador de acesso private é conhecida como ocultamento de dados ou ocultamento de informações; Quando um programa cria (instancia) um objeto de classe GradeBook3, a variável courseName é encapsulada (ocultada) no objeto e pode ser acessada apenas por métodos da classe do objeto.
  • 43. Engenharia da Computação Prof. Cícero Quarto – cicero.uema@gmail.com 43 Métodos setCourseName e getCourseName O método setCourseName (linhas 19-21) não retorna quaisquer dados quando ele completa sua tarefa, portanto, seu tipo de retorno é void; O método recebe um parâmetro - name – que representa o nome do curso que será passado para o método como um argumento; A linha 20 atribui name à variável de instância courseName; O método getCourseName (linhas 24-26) devolve um objeto courseName específico de GradeBook3; O método tem uma lista vazia de parâmetros, então não exige informações adicionais para realizar sua tarefa. Figura 3.7 | A classe GradeBook3 que contém uma variável de instância courseName e métodos para configurar e obter seu valor.
  • 44. Engenharia da Computação Prof. Cícero Quarto – cicero.uema@gmail.com 44 Métodos setCourseName e getCourseName O método getCourseName especifica (linha 25) que ele retorna uma String – esse é o tipo de retorno do método; A instrução return na linha 25 passa o valor da variável de instância courseName de volta à instrução que chama o método getCourseName; Considere, a linha 31 do método displayMessage, que chama o método getCourseName. Quando o valor é retornado, a instrução na linha 31 utiliza esse valor para gerar o nome do curso. Figura 3.7 | A classe GradeBook3 que contém uma variável de instância courseName e métodos para configurar e obter seu valor.
  • 45. Engenharia da Computação Prof. Cícero Quarto – cicero.uema@gmail.com 45 Laboratório – Classe com uma variável de instância, um método set e um método get Crie duas classes Java ClasseLab2 e ClasseLab2Teste, respectivamente, com o seguinte cenário: Você tem um método square que retorna o quadrado de seu argumento, onde você esperaria que a instrução: int result = square( 2 ); retornasse 4 a partir do método square e atribuísse 4 à variável result. int biggest = maximum( 27, 114, 51 ); retornasse 114 a partir do método maximum e atribuísse 114 à variável biggest. Ferramenta: NetBeans IDE 7.0
  • 46. Engenharia da Computação Prof. Cícero Quarto – cicero.uema@gmail.com 46 O método displayMessage O método displayMessage (linhas 29-31) não retorna quaisquer dados quando ele completa sua tarefa, portanto, seu tipo de retorno é void; O método não recebe parâmetros, então, a lista de parâmetros está vazia. Figura 3.7 | A classe GradeBook3 que contém uma variável de instância courseName e métodos para configurar e obter seu valor.
  • 47. Engenharia da Computação Prof. Cícero Quarto – cicero.uema@gmail.com 47 A classe GradeBook3Test que demonstra a classe GradeBook3Test
  • 48. Engenharia da Computação Prof. Cícero Quarto – cicero.uema@gmail.com 48 A classe GradeBook3Test (Figura 3.8) cria um objeto da classe GradeBook3 e demonstra seus métodos; A linha 23 cria um objeto GradeBook3 e o atribui à variável local myGradeBook3 de tipo GradeBook3; A linha 26 exibe o nome do curso inicial que chama o método getCourseName do objeto; Observe que a primeira linha de saída mostra o nome “null”. Diferentemente das variáveis locais, que não são automaticamente inicializadas, todo campo tem um valor inicial padrão – um valor fornecido pelo Java quando você não especifica o valor inicial do campo; O valor padrão de um campo do tipo String (como courseName nesse exemplo) é null; A linha 29 exibe um prompt que pede para o usuário inserir o nome de um curso; A variável String theName local (declarada na linha 30) é inicializada com o nome do curso inserido pelo usuário, que é retornado pela chamada ao método nextLine do objeto Scanner input; A linha 31 chama o método setCourseName do objeto myGradeBook3 e armazena theName como o argumento do método.
  • 49. Engenharia da Computação Prof. Cícero Quarto – cicero.uema@gmail.com 49 Métodos set e get Os campos private de uma classe só podem ser manipulados pelos métodos de classe; Um cliente de um objeto – isto é, qualquer classe que chama os métodos do objeto – chama métodos public da classe para manipular os campos private de um objeto da classe; As classes costumam fornecer métodos public para permitir a clientes configurar (set, isto é, atribuir valores a) ou obter (get, isto é, obter os valores de) variáveis de instância private; Os nomes desses métodos não precisam começar com set ou get, mas essa convenção de atribuição de nomes é recomendada e requerida para componentes de software Java especiais, denominados JavaBeans, que podem simplificar a programação em muitos ambientes de desenvolvimento integrado Java (Integrated Development Environments – IDEs). O método que configura (set) a variável de instância courseName nesse exemplo chama-se setCourseName e o método que obtém (get) o valor de courseName chama-se getCourseName.
  • 50. Engenharia da Computação Prof. Cícero Quarto – cicero.uema@gmail.com 50 Diagrama de classe UML do GradeBook3 com uma variável de instância e os métodos set e get A Figura 3.9 contém um diagrama de classe UML atualizado para a versão da classe GradeBook; Esse diagrama modela a variável de instância courseName da classe GradeBook3 como um atributo no compartimento no meio da classe. GradeBook3 - courseName: String + setCourseName( name: String ) + getCourseName( ): String + displayMessage( ) Figura 3.9 | O diagrama de classes UML que indica que a classe GradeBook3 tem um atributo courseName privado do tipo UML String e três operações públicas – setCourseName (com um parâmetro name do tipo UML String, getCourseName (que retorna o tipo UML String e displayMessage.
  • 51. Engenharia da Computação Prof. Cícero Quarto – cicero.uema@gmail.com 51 GradeBook3 - courseName: String + setCourseName( name: String ) + getCourseName( ): String + displayMessage( ) Considerações sobre o diagrama da Figura 3.9 A UML representa as variáveis de instância como atributos listando o nome do atributo, seguido por um caractere de dois-pontos e o tipo de atributo; O tipo UML do atributo courseName é String; A variável de instância courseName é private em Java, portanto, o diagrama de classe lista um modificador de acesso com o sinal de subtração ( - ) na frente do nome do atributo correspondente; A classe GradeBook3 contém três métodos public, então o diagrama de classe lista três operações no terceiro compartimento; A operação setCourseName tem um parâmetro String chamado name; A UML indica o tipo de retorno de uma operação colocando um dois-pontos e o tipo de retorno depois dos parênteses que se seguem ao nome da operação. Figura 3.9 | O diagrama de classes UML que indica que a classe GradeBook3 tem um atributo courseName privado do tipo UML String e três operações públicas – setCourseName (com um parâmetro name do tipo UML String, getCourseName (que retorna o tipo UML String e displayMessage.
  • 52. Engenharia da Computação Prof. Cícero Quarto – cicero.uema@gmail.com 52 Tipos primitivos vs. tipos por referência Os tipos do Java são divididos em tipos primitivos e tipos por referência; Os tipos primitivos são: boolean byte char short int long float double Todos os tipos não primitivos são tipos por referência, portanto, as classes, que especificam os tipos de objeto, são tipos por referência.
  • 53. Engenharia da Computação Prof. Cícero Quarto – cicero.uema@gmail.com 53 Tipos primitivos vs. tipos por referência Uma variável de tipo primitivo pode armazenar exatamente um valor de seu tipo declarado por vez. Por exemplo, uma variável int pode armazenar um número inteiro (como 7) por vez; As variáveis de instância de tipo primitivo são inicializadas por padrão – as variáveis dos tipos byte, char, short, int, long, float e double são inicializadas como 0, e as variáveis do tipo boolean são inicializadas como false; Lembre-se de que as variáveis locais não são inicializadas por padrão; Os programas utilizam as variáveis de tipos por referência (normalmente chamadas referências) para armazenar as localizações de objetos na memória do computador. Diz-se que tal variável referencia um objeto no programa.
  • 54. Engenharia da Computação Prof. Cícero Quarto – cicero.uema@gmail.com 54 Tipos primitivos vs. tipos por referência A linha 23 da Figura 3.8, GradeBook3 myGradeBook3 = new GradeBook3();, cria um objeto de classe GradeBook3 e a variável myGradeBook3 contém uma referência a esse objeto GradeBook3; As variáveis de instância de tipo por referência são inicializadas por padrão com um valor null – uma palavra reservada que representa uma “referência a nada”. Essa é a razão por que a primeira chamada a getCourseName na linha 26 da Figura 3.8 retornou null – o valor de courseName não foi configurado, assim o valor inicial padrão null foi retornado; Na Tabela a seguir, são mostradas as palavras reservadas e palavras-chave da linguagem Java.
  • 55. Engenharia da Computação Prof. Cícero Quarto – cicero.uema@gmail.com 55 Palavras reservadas e palavras-chave do Java Palavras-chave do Java abstract assert boolean break byte case catch char class continue default do double else enum extends final finally float for if implements import instanceof int interface long native new package private protected public return short static strictfp super switch synchronnized this throw throws transient try void volatile while Palavras-chave que não são atualmente utilizadas const goto O Java também contém as palavras reservadas true e false, que são literais boolean e null, que é o literal que representa uma referência a nada. Assim como as palavras-chave, essas palavras reservadas não podem ser utilizadas como identificadores.
  • 56. Engenharia da Computação Prof. Cícero Quarto – cicero.uema@gmail.com 56 Inicializando objetos com construtores Como vimos, quando um objeto de classe GradeBook3 (Figura 3.7) é criado, sua variável de instância courseName é inicializada como null por padrão; E se quisermos fornecer o nome de um curso quando criarmos um objeto GradeBook3? Cada classe declarada pode fornecer um método especial chamado construtor que pode ser utilizado para inicializar um objeto desta classe, isso é um padrão Java; Um construtor deve ter o mesmo nome que a classe; A Figura 3.10 contém uma classe GradeBook4 com um construtor que inicializa um objeto desta classe.
  • 57. Engenharia da Computação Prof. Cícero Quarto – cicero.uema@gmail.com 57 Comentando a classe GradeBook4 Figura 3.10 | A classe GradeBook4 com um construtor para inicializar o nome do curso. As linhas 18 a 22 declaram o construtor de GradeBook4; Como um método, a lista de parâmetros de um construtor especifica os dados que ele requer para realizar sua tarefa; A linha 18 indica que o construtor tem um parâmetro String chamado name; O name passado para o construtor é atribuído à variável de instância courseName na linha 19; A Figura 3.11 inicializa os objetos GradeBook4 utilizando o construtor.
  • 58. Engenharia da Computação Prof. Cícero Quarto – cicero.uema@gmail.com 58 O construtor de GradeBook4 usado para especificar o nome do curso a partir de seus objetos criados Figura 3.11 | O construtor de GradeBook4. Saída do programa.
  • 59. Engenharia da Computação Prof. Cícero Quarto – cicero.uema@gmail.com 59 Comentando a classe GradeBook4Test Figura 3.11 | O construtor de GradeBook4. As linhas 18-19 criam e inicializam um objeto GradeBook4 gradeBook1; O construtor de GradeBook4 é chamado com o argumento “CS101 Introduction to Java Programming” para inicializar o nome do curso; A expressão de criação de instância de classe nas linhas 18-19 retorna uma referência ao novo objeto, que é atribuído à variável gradeBook1; As linhas 20-21 repetem esse processo, dessa vez passando o argumento “CS102 Data Structures in Java” para inicializar o nome do curso de gradeBook2; As linhas 24-27 utilizam o método getCourseName de cada objeto para obter os nomes de curso e mostrar que eles foram inicializados quando os objetos foram criados. Nota: Uma diferença importante entre construtores e métodos é que os construtores não podem retornar valores, portanto, não podem especificar um tipo de retorno (nem mesmo void).
  • 60. Engenharia da Computação Prof. Cícero Quarto – cicero.uema@gmail.com 60 Adicionando o construtor ao diagrama de classe UML da classe GradeBook4 O diagrama de classe UML da Figura 3.12 modela a classe GradeBook4 da Figura 3.10, que tem um construtor que possui um parâmetro name de tipo String; Assim como operações, a UML modela construtores no terceiro compartimento de uma classe em um diagrama de classe; Para distinguir entre um construtor e operações de uma classe, a UML requer que a palavra “constructor” seja colocada entre aspas francesas (<< e >>) antes do nome do construtor; É habitual listar construtores antes de outras operações no terceiro compartimento.
  • 61. Engenharia da Computação Prof. Cícero Quarto – cicero.uema@gmail.com 61 GradeBook4 - courseName: String <<constructor>> GradeBook4( name: String ) + setCourseName( name: String ) + getCourseName( ): String + displayMessage( ) Figura 3.12 | Diagrama de classe UML que indica que a classe GradedeBook4 tem um construtor com um parâmetro name de tipo UML String. Diagrama de classe UML da classe GradeBook4
  • 62. Engenharia da Computação Prof. Cícero Quarto – cicero.uema@gmail.com 62 Construtores com múltiplos parâmetros Às vezes é recomendável inicializar objetos com múltiplos dados. Por exemplo, o Exercício 3.11, Deitel – Java – Como Programar, edição 8, p. 79, solicita que você armazene o nome do curso e o nome do instrutor em um objeto GradeBook. Nesse caso, o construtor de GradeBook seria modificado para receber duas Strings, como em: public GradeBook4( String courseName, String instructorName ) e você chamaria o construtor de GradeBook4 desta maneira: GradeBook4 gradebook = new GradeBook4( “CS101 Introduction to Java Programming”, “Sue Green” );
  • 63. Engenharia da Computação Prof. Cícero Quarto – cicero.uema@gmail.com 63 Números de ponto flutuante e tipo double Agora, temporariamente deixamos de lado nosso estudo de caso GradeBook para declarar uma classe Account que mantém o saldo de uma conta bancária; A maioria dos saldos de conta não é constituída de números inteiros (por exemplo, 0, -22 e 1024); Por essa razão, a classe Account representa o saldo de conta como um número de ponto flutuante (isto é, um número com um ponto de fração decimal, como 7,33, 0,0975 ou 1.000, 12345); O Java fornece dois tipos primitivos para armazenar números de ponto flutuante na memória – float e double; A principal diferença entre eles é que as variáveis double podem armazenar números com maior magnitude e mais detalhes (isto é, mais dígitos à direita do ponto de fração decimal – também conhecido como a precisão do número) do que as variáveis float.
  • 64. Engenharia da Computação Prof. Cícero Quarto – cicero.uema@gmail.com 64 Precisão de número de ponto flutuante e requisitos de memória As variáveis do tipo float representam números de ponto flutuante de precisão simples e podem representar até sete dígitos significativos; As variáveis do tipo double representam números de ponto flutuante de precisão dupla. Essas requerem duas vezes a quantidade de memória das variáveis float e fornecem 15 dígitos significativos – aproximadamente o dobro da precisão de variáveis float; Por padrão, o Java trata todos os números de ponto flutuante como do tipo double, pois variáveis double podem representar números de ponto flutuante com mais exatidão. Para números de ponto flutuante precisos, o Java fornece a classe BigDecimal (pacote java.math).
  • 65. Engenharia da Computação Prof. Cícero Quarto – cicero.uema@gmail.com 65 A classe Account com uma variável de instância do tipo double Nosso próximo aplicativo (Figuras 3.13-3.14) contém uma classe chamada Account (Figura 3-13) que mantém o saldo de uma conta bancária; Um banco típico atende muitas contas, cada uma com um saldo próprio, portanto a linha 15 Declara uma variável de instância chamada balance do tipo double; A variável balance é uma variável de instância porque é declarada no corpo da classe, mas fora das declarações de método da classe (linhas 18-23, 26-28 e 31-33); Cada instância (isto é, objeto) de classe Account contém sua própria cópia de balance.
  • 66. Engenharia da Computação Prof. Cícero Quarto – cicero.uema@gmail.com 66 Comentando a classe Account A classe tem um construtor e dois métodos; É comum que alguém abre uma conta deposite o dinheiro imediatamente, assim o construtor (linhas 18-23) recebe um parâmetro initialBalance do tipo double e que representa o saldo inicial; As linhas 21-22 asseguram que initialBalance seja maior do que 0.0. Se for, o valor de initialBalance é atribuído à variável de instância balance. Caso contrário, balance permanece em 0.0 – seu valor inicial padrão; O método credit (linhas 26-28) não retorna quaisquer dados quando ele completa sua tarefa, portanto, seu tipo de retorno é void; Figura 3.13 | A classe Account com um construtor para validar e inicializar a variável de instância balance do tipo double.
  • 67. Engenharia da Computação Prof. Cícero Quarto – cicero.uema@gmail.com 67 Comentando a classe Account O método credit (linhas 26-28) recebe um parâmetro chamado amount – um valor double que será adicionado ao saldo; A linha 27 adiciona amount ao valor atual de balance, então atribui o resultado ao balance (substituindo assim a quantia do saldo anterior); O método getBalance (linhas 31- 33) permite aos clientes da classe (isto é, outras classes que utilizam essa classe) obter o valor do balance de um objeto Account particular. O método especifica o tipo de retorno double e uma lista vazia de parâmetros; Observe que as instruções nas linhas 22, 27 e 32 utilizam a variável de instância balance mesmo se ela não tiver sido declarada em nenhum dos métodos, ela é uma variável de instância da classe Account. Figura 3.13 | A classe Account com um construtor para validar e inicializar a variável de instância balance do tipo double.
  • 68. Engenharia da Computação Prof. Cícero Quarto – cicero.uema@gmail.com 68 A classe AccountTest para utilizar a classe Account A classe AccountTest (Figura 3.14) cria dois objetos Account (linhas 17- 18) e os inicializa com 50.00 e -7.53, respectivamente; As linhas 21-24 geram a saída do saldo em cada Account chamando o método getBalance da Account; Quando o método getBalance é chamado por account1, a partir da linha 22, o valor do saldo da account1 é retornado da linha 32 da Figura 3.13 e exibido pela instrução System.out.printf (Figura 3.14, linhas 23-24); De maneira semelhante, quando o método getBalance for chamado por account2, da linha 24, o valor do saldo da account2 é retornado da linha 32 da Figura 3.13 e exibido pela instrução System.out.printf (Figura 3.14, linhas 23-24)Figura 3.14 | Entrada e saída de números de ponto flutuante com objetos Account.
  • 69. Engenharia da Computação Prof. Cícero Quarto – cicero.uema@gmail.com 69 A classe AccountTest para utilizar a classe Account Observe que o saldo de account2 é 0.00, porque o construtor assegurou que a conta não poderia iniciar com um saldo negativo; A saída do valor é gerada por printf com o especificador de formato %.2f; O especificador de formato %f é utilizado para gerar saída de valores de tipo float ou double; 0.2 entre % e f representa o número de casas decimais (2) que devem ser enviadas para a saída à direita do ponto de fração decimal no número de ponto flutuante – também conhecido como a precisão do número; Qualquer saída de valor de ponto flutuante com %.2f será arredondada para a casa decimal dos centésimos – por exemplo, 123,457 seria arredondado para 123,46.Figura 3.14 | Entrada e saída de números de ponto flutuante com objetos Account.
  • 70. Engenharia da Computação Prof. Cícero Quarto – cicero.uema@gmail.com 70 A classe AccountTest para utilizar a classe Account A linha 28 declara a variável local depositAmount para armazenar cada quantia de depósito inserida pelo usuário; Ao contrário da variável de instância balance na classe Account, a variável local depositAmount em main não é inicializada como 0.0 por padrão. Entretanto, essa variável não precisa ser inicializada aqui porque seu valor será determinado pela entrada do usuário; A linha 30 pede ao usuário para inserir uma quantia de depósito para account1; A linha 31 obtém a entrada do usuário chamando o método nextDouble do objeto input de Scanner, que retorna um valor double inserido pelo usuário; Figura 3.14 | Entrada e saída de números de ponto flutuante com objetos Account.
  • 71. Engenharia da Computação Prof. Cícero Quarto – cicero.uema@gmail.com 71 A classe AccountTest para utilizar a classe Account As linhas 32-33 exibem o quanto foi depositado; A linha 34 chama o método credit do objeto account1 e armazena depositAmount como argumento do método. Quando o método é chamado, o valor do argumento é atribuído ao parâmetro amount (linha 26 da Figura 3.13) do método credit (linhas 26-28 da Figura 3.13), então o método credit adiciona esse valor ao balance (linha 27 da Figura 3.13); Figura 3.14 | Entrada e saída de números de ponto flutuante com objetos Account.