Enunciados do livro "Objects First" excepto onde indicado. A itálico o nome do projecto do livro em ..\projects-book-1stEdition.zip.
Projecto lab-classes Criar alguns estudantes e listá-los na consola
Projecto picture Acrescentar uma lua ao desenho
Projecto picture Acrescentar um método "sunset()" a Picture que provoque o pôr-do-sol. Pista: usar slowMoveVertical
Projecto better-ticket-machine Alterar a classe TicketMachine (listagem 2.8 no livro) por forma a que a máquina vá contando os bilhetes emitidos, indicando o seu nº de ordem (1, 2, ...) quando o bilhete é "impresso". Indicar apenas as ALTERAÇÕES, não copiar o código fonte TODO...
Projecto clock-display Alterar a classe ClockDisplay (listagem 3.4 no livro) por forma a que o mostrador tenha horas, minutos e segundos. Um "timeTick" deve incrementar os segundos. Indicar apenas as ALTERAÇÕES, não copiar o código fonte TODO...
Projecto notepad1 Considere a classe Notebook na listagem 4.1, e a nova classe Note seguinte, que permite representar Strings tendo associda a sua data/hora de criação:
import java.util.Date;
public class Note {
private String s;
private Date when;
public Note(String s){
this.s=s;
when = new Date(); // que é
isto?
}
public String toString(){
return when.toLocaleString() + " - " + s;
}
}
Altere Notebook, sem alterar as assinaturas dos seus métodos, por forma a que (1) o Notebook registe automaticamente a data/hora a que cada anotação é adicionada, e (2) as anotações apareçam prefixadas da data/hora. Indicar apenas as ALTERAÇÕES, não copiar o código fonte TODO...
Projecto auction Implementar um método getUnsold() na classe Auction (listagem 4.6), que retorne um ArrayList contendo os Lots que ainda não tiveram nenhuma licitação até ao momento.
Considere o Jogo da Batalha Naval, e uma situação concreta: um tabuleiro de 10x10 casas, das quais 4 têm um navio cada (representado com um quadrado apenas). Suponha que existem as classes Tabuleiro, Casa e Navio para representar os conceitos anteriores. Tente implementar as seguintes partes do código fonte destas classes:
- um campo em Tabuleiro para representar as 100 casas.
- um campo em Casa para representar um navio lá pousado, caso exista
- um método em Tabuleiro que dada uma coordenada x,y retorne o Navio lá pousado, ou null se nenhum
Projecto BallDemo Altere o método bounce() na classe BallDemo
por forma a que aceite um parâmetro com o número de bolas saltitantes a
mostrar (entre 1 e 10) e as mostre, espaçadas na horizontal de 10 pixels.O
construtor de BouncingBall tem a seguinte assinatura:
BouncingBall(int xPos,
int yPos, int ballDiameter, java.awt.Color ballColor, int groundPos,
java.awt.Canvas drawingCanvas) |
Projecto Notebook (cap.4) Implemente um método public static testMap(){...} em Notebook, que
No final, reveja o código fonte do método por forma a usar apenas uma variavel local; não vale definir campos.
Projecto dome-v2 Suponha que foi acrescentada uma nova subclasse de Item
ao programa: VideoGame; indique as alterações cirúrgicas que é
necessário fazer à classe Database (listagem 8.5)
Projecto dome-v2 Escreva um método float getPercentageIhave()
para a classe Database (listagem 8.5), que retorna um número entre 0.0 e 1.0,
expressando a percentagem de livros e CDs que eu (utilizador da aplicação) já
tenho. A classe Item tem um método boolean getOwn()
que retorna true se já tenho o objecto, false se não..
Projecto dome-v2 Experimente construir um Video com o BlueJ, e
enviar-lhe a mensagem toString(); o resultado será algo críptico...
Considere as seguintes classes Java:
abstract class Pessoa{
|
class Homem extends Pessoa{ |
class Mulher extends Pessoa{
|
Projecto dome v2
Projecto tech-support2 (cap.5, listagem 5.3) Alterar esta classe por forma a carregar as respostas-tipo a partir de um ficheiro de texto cujo nome é especificado num (novo) parâmetro do constructor.
Projecto GUIs (disponível na página de LP)
Projecto GUIs (disponível na página de LP) Altere o ConversorEUR_PTE por forma a que:
Projecto GUIs (disponível na página de LP) Altere as classes em GUIWindow por forma a que o item seleccionado na List apareça sempre desenhado no MyCanvas; pista: usar ItemListener