Buscar

Introdução à Programação Orientada a Objetos com Java

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 35 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 35 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 35 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

*
Capítulo 1 – Objetos e classes
Prof. Ricardo Guedes – IFCE
Do livro: Programação Orientada a Objetos com Java
	Uma introdução prática usando o BLUEJ
De: David J. Barnes e Michael Kölling
Editora PEARSON – Prentice Hall
*
1. Objetos e Classes
Ao escrever um programa de computador em uma linguagem orientada a objetos, você cria em seu computador um modelo de alguma parte do mundo.
O mundo é composto de objetos.
Os objetos podem ser categorizados.
Uma classe descreve – de uma maneira abstrata – todos os objetos de uma categoria particular.
*
1. Objetos e Classes
EXEMPLOS:
O meu carro é um objeto da classe de todos os carros.
Esse pincel é um objeto da classe Pincel.
Um objeto é uma instância de uma classe.
Referimo-nos aos objetos como instâncias quando queremos enfatizar que são de uma classe específica.
Dizemos por exemplo:
Esse pincel é uma instância da classe Pincel.
*
2. Criando Objetos
Em um programa de computador os objetos são criados a partir de uma classe assim como casas são construídas a partir de uma planta.
A classe descreve as características do objeto assim como a planta descreve como deve ser construída a casa.
Os objetos representam instanciações individuais da classe.
*
2. Criando Objetos – Usando o BlueJ
Em programas de computador objetos são criados a partir de classes.
A classe descreve os atributos e comportamentos do objeto.
Os objetos representam instâncias individuais da classe.
PADRÃO JAVA: Iniciamos os nomes de classe com letras maiúsculas (como Circle), e os nomes dos objetos com letras minúsculas (como circle_1).
PRÁTICA 1.1 No BlueJ abra o projeto shapes e crie um objeto da classe Circle.
EXERCÍCIO 1.1 Crie outro círculo. Em seguida crie um quadrado.
*
3. Chamando Métodos
Podemos nos comunicar com objetos invocando os seus métodos.
Os objetos normalmente fazem algo se invocamos um de seus métodos.
PRÁTICA 1.2
Clique com o botão direito do mouse em um dos objetos de círculo (não da classe!) e você verá um menu pop-up com várias operações.
Escolha makeVisible e veja que será desenhada uma representação desse círculo em uma janela separada.
Experimente escolher outros métodos como: moveRight, moveDown e makeInvisible.
*
3. Chamando Métodos (continuação)
As entradas no menu do objeto circle_1 representam operações que você pode utilizar para manipular o círculo.
Elas são chamadas métodos em Java.
Dizemos que chamamos ou invocamos um método de um objeto quando queremos realizar alguma operação sobre ele.
EXERCÍCIO 1.2 – O que acontece se você chamar moveDown duas vezes? Ou três vezes? O que acontece se você chamar makeInvisible duas vezes?
*
4. Parâmetros
PRÁTICA:
 Invoque o método moveHorizontal.
Você verá um diálogo aparecer que solicita alguma entrada.
Digite 50 e clique em OK.
Você verá o círculo se mover 50 pixels para a direita.
Os métodos podem ter parâmetros para fornecer informações adicionais para uma tarefa.
EXERCÍCIO 1.3 Tente invocar os métodos moveVertical, slowMoveVertical e changeSize. Descubra como você pode utilizar moveHorizontal para mover o círculo 70 pixels à esquerda.
*
4. Parâmetros – assinatura de um método
Os valores adicionais que alguns métodos requerem são chamados parâmetros.
Um método indica quais tipos de parâmetros ele requer.
Quando chamar, por exemplo, o método moveHorizontal o diálogo exibirá a linha:
void moveHorizontal(int distance)
Isso se chama assinatura do método.
A assinatura fornece algumas informações sobre o método.
A parte entre parênteses (int distance) são as informações sobre o parâmetro requerido.
Para cada parâmetro, a assinatura define um tipo e um nome.
A assinatura acima estabelece que o método moveHorizontal requer um parâmetro do tipo int chamado distance.
O nome dá uma dica sobre o significado dos dados esperados.
*
5. Tipos de Dados
Os parâmetros possuem tipos. O tipo define quais tipos de valores um parâmetro pode assumir.
O tipo int significa números inteiros na faixa entre -2.147.483.648 e 2.147.483.647.
A assinatura do método moveHorizontal declara que, antes do método poder ser executado, precisamos fornecer um número inteiro para especificar a distância a mover.
PRÁTICA: Examine os métodos do objeto circle_1 e observe os tipos e os nomes dos parâmetros de cada um deles.
Se um método não tiver nenhum parâmetro, o nome do método será seguido por um conjunto de parâmetros vazio.
*
5. Tipos de Dados – tipo String
O método changeColor tem um parâmetro do tipo String.
O tipo String indica que o parâmetro deve ser uma palavra ou uma frase.
As strings são escritas entre aspas.
Por exemplo, para especificar a cor vermelha (red em inglês) digite “red” para o valor do parâmetro newColor.
O diálogo de chamada de método também inclui uma seção de texto chamada comentário acima da assinatura do método.
O comentário do método changeColor descreve quais nomes de cor o método reconhece.
*
5. Tipos de Dados – Exercícios
EXERCÍCIO 1.4 – Invoque o método changeColor em um de seus objetos de círculo e insira a string “red”. Isso deve alterar a cor do círculo. Tente outras cores.
EXERCÍCIO 1.5 – Esse é exemplo muito simples e não existem muitas cores disponíveis. Veja o que acontece quando você especifica uma cor que não é conhecida.
EXERCÍCIO 1.6 - Invoque o método changeColor e escreva a cor no campo de parâmetro sem as aspas. O que acontece?
O Java tem vários outros tipos de dados. Faça uma pesquisa e descubra os tipos primitivos da linguagem Java.
*
6. Múltiplas instâncias
Muitos objetos semelhantes podem ser criados a partir de uma única classe.
EXERCÍCIO 1.7 – Crie vários objetos círculo na bancada de objetos. Você pode fazer isso selecionando new Circle() a partir do menu pop-up da classe Circle. Torne-os visíveis, em seguida, movimente-os na tela utilizando os métodos “move”. Faça um círculo grande e amarelo, faça outro pequeno e verde. Tente as outras formas também: crie alguns triângulos e quadrados. Altere suas posições, tamanhos e cores.
*
6. Múltiplas instâncias
 Método com mais de um parâmetro
O método changeSize do triângulo tem a seguinte assinatura.
void changeSize(int newHeight, int newWidth)
A assinatura indica que são necessários dois parâmetros quando invocamos o método changeSize de um triângulo.
O inteiro newHeight (nova altura)
O inteiro newWidth (nova largura).
Os métodos podem ter qualquer número de parâmetros, inclusive nenhum.
*
7. Estado
O conjunto de valores de todos os atributos de um objeto é chamado de estado do objeto.
No BlueJ, o estado de um objeto pode ser inspecionado selecionando-se a função inspect a partir do menu pop-up do objeto.
EXERCÍCIO 1.8 – Certifique-se de que você tem vários objetos na bancada de objeto e, então, inspecione cada um deles por vez. Tente alterar o estado de um objeto (por exemplo, chamando o método moveLeft) enquanto a janela object inspector estiver aberta. Você deve ver os valores na alteração de object inspector.
Alguns métodos, quando chamados, alteram o estado de um objeto.
Java refere-se a esses atributos como campos ou variáveis de instância.
*
8. O que há em um objeto?
Objetos de uma mesma classe têm todos os mesmos campos (Número, tipo e nome dos campos são os mesmos). O valor dos campos pode ser diferente.
Objetos de classes diferentes podem ter campos diferentes. Um círculo, por exemplo, tem um campo ‘diameter’ enquanto um triângulo tem campos ‘width’ (largura) e ‘height’ (altura).
*
8. O que há em um objeto?
Tipos e nomes de campos são definidos na classe e não nos objetos.
A classe Circle define que cada objeto (instância) de Circle terá cinco campos chamados diameter, xPosition, yPosition, color, e isVisible.
Os três primeiros do tipo int, color do tipo String e isVisible do tipo boolean (true ou false).
*
8. O que há em um objeto?
Quando um objeto da classe Circle é criado (instanciado) será reservado espaço na memória para armazenar três campos do tipo int, uma campo do tipo String e um campo do tipo boolean.
Por exemplo, cada instância da classe Circle tem uma cor, e cada uma pode ter um cordiferente.
*
8. O que há em um objeto?
Assim como os campos, os métodos são definidos na classe.
Todos os objetos de uma determinada classe têm os mesmos métodos.
Os métodos são invocados em objetos para indicar sobre qual objeto ele deve operar.
*
8. O que há em um objeto?
EXERCÍCIO 1.9 – Utilize as formas a partir do projeto shapes para criar uma imagem de uma casa e de um sol, semelhante à mostrada na figura ao lado. Enquanto estiver fazendo isso, anote o que você tem de fazer para realizar o trabalho. Isso poderia ser feito de maneiras diferentes?
*
9. Interação entre objetos
EXERCÍCIO 1.10 – Abra o projeto picture. Crie uma instância da classe Picture e invoque seu método draw. Além disso, experimente os métodos setBlackAndWhite e setColor.
EXERCÍCIO 1.11 - Como você acha que a classe Picture desenha a figura?
Quatro classes no projeto picture são idênticas às classes do projeto shapes.
Uma classe adicional, Picture, é programada para fazer a mesma coisa que fizemos manualmente no exercício 1.9.
*
9. Interação entre objetos
A classe Picture é escrita de modo que, quando você cria uma instância, essa instância cria dois objetos quadrados (um para a parede e um para a janela), um triângulo e um círculo, move-os e altera sua cor e tamanho para formar a figura.
Objetos podem criar outros objetos e eles podem chamar métodos uns dos outros.
*
10. Código-fonte
Cada classe tem um código-fonte associado a ela.
O código fonte é o texto que define os detalhes da classe.
O código-fonte de uma classe determina a estrutura (atributos) e o comportamento (os campos e os métodos) de cada um dos objetos dessa classe.
EXERCÍCIO 1.12 – Veja o menu pop-up da classe Picture. Selecione a opção Open Editor. Isso abrirá um editor de textos que exibirá o código-fonte da classe.
*
10. Código-fonte
O código-fonte é o texto escrito em uma linguagem de programação. Java no nosso exemplo.
Ele define quais os campos e métodos uma classe tem e precisamente o que acontece quando um método é invocado.
Quando você faz uma alteração no código-fonte e fecha o editor, o ícone para essa classe aparece listrado no diagrama. As listras indicam que o fonte foi alterado.
A classe agora precisa ser compilada clicando no botão Compile. Depois de compilada os objetos podem ser criados e você pode experimentar sua alteração.
*
10. Código-fonte - Exercícios
EXERCÍCIO 1.13 – No código-fonte da classe Picture, localize a parte que realmente desenha a figura. Altere-a de modo que o sol seja azul em vez de amarelo.
EXERCÍCIO 1.14 – Adicione um segundo sol à figura. Para fazer isso, preste atenção às definições de campo próximas à parte superior da classe. Você localizará esse código.
private Square wall;
private Square window;
private Triangle roof;
private Circle sun;
	Você precisará adicionar uma linha aqui para o segundo sol. Por exemplo:
private Circle sun2;
	Então escreva o código apropriado para criar o segundo sol.
*
10. Código-fonte - Exercícios
EXERCÍCIO 1.15 – Exercício de desafio. Adicione um pôr-do-sol à versão de sol único de Picture. Isso é, faça o sol se pôr lentamente. Lembre-se: o círculo tem um método slowMoveVertical que você pode utilizar para fazer isso.
EXERCÍCIO 1.16 – Exercício de desafio. Se você adicionou seu pôr-do-sol no fim do método draw de modo que o sol se põe automaticamente quando a figura é desenhada, altere isso já. Agora queremos o pôr-do-sol em um método separado, de modo que possamos chamar draw e ver a figura com o sol no alto e, em seguida, chamar sunset (um método separado) para fazer o sol se pôr.
*
11. Outro exemplo
Abra o projeto lab classes. Esse projeto é uma parte simplificada de um banco de dados de alunos projetado para monitorar alunos em aulas de laboratório e para imprimir listas das aulas.
EXERCÍCIO 1.17 – Crie um objeto da classe Student. Você notará que, dessa vez, não é solicitado apenas o nome da instância, mas também alguns outros parâmetros. Preencha-os antes de clicar Ok. 
*
12 Valores de retorno
Os métodos podem retornar informações sobre um objeto por meio de um valor de retorno.
EXERCÍCIO 1.18 – Crie alguns objetos da classe Student. Chame o método getName em cada objeto. Explique o que está acontecendo.
A assinatura de getName é:
String getName()
A palavra String antes do nome do método especifica o tipo de retorno
*
12 Valores de retorno
A assinatura de changeName declara:
void changeName(String replacementName)
A palavra void indica que esse método não retorna nenhum resultado.
Os métodos com valores de retorno permitem-nos obter informações de um objeto via chamada de método.
Isso significa que podemos utilizar métodos para alterar o estado de um objeto ou descobrir informações sobre o seu estado.
*
13 Objetos como parâmetros
EXERCÍCIO 1.19 – Crie um objeto da classe LabClass. Como indica a assinatura, você precisa especificar o número máximo de alunos nessa classe (um inteiro).
EXERCÍCIO 1.20 – Chame o método numberOfStudents dessa classe. O que ele faz?
EXERCÍCIO 1.21 – Veja a assinatura do método enrollStudent. Você notará que o tipo do parâmetro esperado é Student. Certifique-se de que você tenha dois ou três alunos (objetos Student) e um LabClass na bancada de objetos, em seguida, chame o método enrollStudent do objeto LabClass. Com o cursor no campo de entrada do diálogo, clique em um dos objetos Student. Isso insere o nome do objeto Student no campo de parâmetro do método enrollStudent. Clique em OK e você terá adicionado o aluno à LabClass. Adicione um ou mais alunos.
*
13 Objetos como parâmetros
Os objetos podem ser passados como parâmetros aos métodos de outros objetos.
Nesse caso o nome da classe do objeto esperado é especificado como tipo do parâmetro na assinatura de método.
EXERCÍCIO 1.22 – Chame o método printList do objeto LabClass. Você verá uma lista com todos os alunos nessa classe impressos na janela de terminal do BlueJ.
*
13 Objetos como parâmetros
EXERCÍCIO 1.23 – Crie três alunos com os seguintes detalhes:
Snow White, student ID 100234, credits: 24
Lisa Simpson, student ID 122044, credits: 56
Charlie Brown, student ID 120034, credits: 6
	Em seguida, insira todos os três em um laboratório e imprima uma lista na tela.
EXERCÍCIO 1.24 – Utilize o inspector em um objeto LabClass para descobrir quais campos ele tem.
EXERCÍCIO 1.25 – Configure o instrutor, sala e hora para um laboratório e imprima a lista na janela de terminal para verificar se esses novos detalhes aparecem.
*
14. Resumo
Os objetos são especificados por classes.
As classes representam o conceito geral de uma coisa.
Os objetos representam instâncias concretas de uma classe.
Podemos ter muitos objetos de qualquer classe.
Os objetos têm métodos que utilizamos para nos comunicar com eles.
Podemos utilizar um método para fazer uma alteração (setSomething) no objeto ou para obter informações do objeto (getSomething).
*
14. Resumo
Os métodos podem ter parâmetros e têm tipos.
Os métodos têm tipos de retorno, os quais especificam que tipos de dados eles retornam.
Se o tipo de retorno for void, eles não retornam nada.
Os objetos armazenam dados em campos, que também têm tipos.
Todos os valores de dados de um objeto reunidos são referidos como estado do objeto.
*
Termos introduzidos
Objeto
Classe
Instância
Método
Assinatura
Parâmetro
Tipo
Estado
Código-fonte
Valor de retorno
Compilador
Múltiplas instâncias
Chamada de método
EXERCÍCIO 1.26 – Neste capítulo mencionamos os tipos de dados int e String. Java possui mais tipos de dados predefinidos. Descubra quais são e onde são utilizados.

Outros materiais