Fátima Momade Salimo
Resolução de Trabalho de Cadeira de Laboratório de Informática III em Java
Universidade Rovuma
Campus de Nacala
2019
Numero 1
(a) Basta redefinir os métodos equals e hashCode (a pauta ´e uma conjunto de alunos, conjunto
este instância de um HashSet) na classe Aluno para obter o efeito desejado.
Ficheiro [Link]:
1 import java . util . Set ;
2 import java . util . Hash Set ;
4 public class Pauta {
6 public static class Aluno {
8 // ... comentario
public boolean equals ( Object obj ) {
return this . numero == (( Aluno ) obj ). numero ;
12 }
public int hash Code () {
return ( new Integer ( this . numero )). hash Code ();
15 }
16 }
17
18 // ... Comentario
19
20 }
21 }
b) Ficheiro [Link]:
1 import java . util . Set ;
2 import java . util . Hash Set ;
3 import java . util . Comparator ;
5 public class Pauta {
7 // ... comentários
9 public static class Comparador Alunos Por Nota implements Comparator < Aluno > {
public int compare ( Aluno a1 , Aluno a2 ) {
if ( a1 . nota <= a2 . nota ) return -1;
else if ( a1 . nota == a2 . nota ) return 0;
return 1;
14 }
15 }
16
public Aluno [] ordena Pauta Por Nota () {
Aluno res [] = new Aluno [ alunos . size ()];
res = alunos . to Array ( res );
java . util . Arrays . sort ( res , new Comparador Alunos Por Nota ());
return res ;
22 }
23
24 public static void main ( String [] args ) {
25
26 System . out . println (" Imprimindo pauta ... " );
27
28 Pauta . Aluno a1 = new Pauta . Aluno (1 ," a" ,10);
29 Pauta . Aluno a2 = new Pauta . Aluno (1 ," a" ,10);
30 Pauta p = new Pauta ();
31 p. adicionar ( a1 );
32 p. adicionar ( a2 );
33 System . out . println ( p. alunos . size ());
34
35 Pauta . Aluno a3 = new Pauta . Aluno (2 ," b" ,9);
36 Pauta . Aluno a4 = new Pauta . Aluno (3 ," b" ,20);
37 p. adicionar ( a3 );
38 p. adicionar ( a4 );
39
40 Pauta . Aluno [] alunos = p. ordena Pauta Por Nota ();
41 for ( int i =0; i< alunos . length ; i ++)
42 System . out . println ( alunos [ i ]);
43 }
44 }
Número 2
(a) Os atributos x1, x2, y1, y2 têm visibilidade de pacote (visibilidade por omissão no Java), pelo
que são visíveis em todos os tipos definidos dentro do pacote.
(b) i. A asserção falha quando se constrói r2 logo é construído e lançado um AssertionError
terminado a aplicação. Em relação a r1 a expressão da asserção é avaliada a true e nada acontece.
ii. Quando as asserções estão desligadas não acontece nada pois estas não são avaliadas.
c) Bastaria fazer com que a classe Rectângulo implementasse a interface Serializable: public
class Rectângulo implements [Link] {...}
Apenas x1, x2, y1 e y2 são lidos e escritos para um fluxo de objectos pois os atributos largura e
altura são atributos transient. Na serialização por omissão apenas os atributos não transientes e
não estáticos são lidos e escritos para fluxos de objectos.
d) Ficheiro Rectâ[Link]:
1 import java . io .*;
3 public class Rect ^a ngulo implements Serializable {
5 // ... comentario
7 private void read Object ( Object Input Stream in)
8 throws IOException , Class Not Found Exception {
9 in. default Read Object ();
10 largura = x2 - x1 ;
11 altura = y2 - y1 ;
12 }
13 }