Excepções (Java)/Exercício 01: Stack: Difference between revisions

From Wiki**3

< Excepções (Java)
No edit summary
Line 9: Line 9:
A solução contém quatro classes (2 stacks e 2 excepções). Note-se que a solução é mínima e que algumas opções não são ideais em casos gerais (o uso de vectores fixos, por exemplo).
A solução contém quatro classes (2 stacks e 2 excepções). Note-se que a solução é mínima e que algumas opções não são ideais em casos gerais (o uso de vectores fixos, por exemplo).


Ficheiro '''Stack.java''':
{{CollapsedCode|Ficheiro '''Stack.java'''|
<java5>
<java5>
public class Stack {
public class Stack {
Line 37: Line 37:
}
}
</java5>
</java5>
}}


Ficheiro '''UStack.java''' (stack sem repetições):
{{CollapsedCode|Ficheiro '''UStack.java''' (stack sem repetições)|
<java5>
<java5>
public class UStack extends Stack {
public class UStack extends Stack {
Line 49: Line 50:
}
}
</java5>
</java5>
}}


Ficheiros '''StackOverflowException.java''' e '''StackUnderflowException.java''' (excepções):
{{CollapsedCode|Ficheiros '''StackOverflowException.java''' e '''StackUnderflowException.java''' (excepções)|
 
<java5>
<java5>
public class StackOverflowException extends Exception {}
public class StackOverflowException extends Exception {}
Line 59: Line 60:
public class StackUnderflowException extends Exception {}
public class StackUnderflowException extends Exception {}
</java5>
</java5>
}}


[[category:Ensino]]
[[category:Ensino]]

Revision as of 20:58, 1 September 2015

Este exercício saiu no teste de 2013/02/04.

Problema

Escreva em Java a classe Stack que usa vectores de dimensão fixa (definida no momento da criação) para guardar inteiros e tem 3 métodos: insert(Integer e) (insere o elemento e na pilha), remove() (remove o último elemento inserido na pilha) e exists(Integer e) (devolve true se o elemento e existe na pilha e false em caso contrário). Também deve ser definida outra classe que difere da anterior por não permitir a existência de elementos duplicados na pilha, ou seja, o método insert(Integer e) não insere o elemento e se já existir na pilha. Quando a pilha está vazia e se tenta remover um elemento e quando está cheia e se insere um novo elemento, devem ser lançadas excepções.

Solução

A solução contém quatro classes (2 stacks e 2 excepções). Note-se que a solução é mínima e que algumas opções não são ideais em casos gerais (o uso de vectores fixos, por exemplo).

Ficheiro Stack.java
{{{2}}}
Ficheiro UStack.java (stack sem repetições)

<java5> public class UStack extends Stack {

 public UStack(int size) { super(size); }
 @Override
 public void insert(Integer e) throws StackOverflowException {
   if (!exists(e)) super.insert(e);
 }

} </java5>

Ficheiros StackOverflowException.java e StackUnderflowException.java (excepções)

<java5> public class StackOverflowException extends Exception {} </java5>

<java5> public class StackUnderflowException extends Exception {} </java5>