Atividades de implementação da Aula 7 de POO I
01. Crie uma classe em Java chamada Empregado que inclui três partes de informações como variáveis de
instância – nome (String), sobrenome (String) e um salário mensal (double). A classe deve ter um construtor,
métodos get e set para cada variável de instância. Escreva um aplicativo de teste chamado EmpregadoTeste
que cria dois objetos Empregado e exibe o salário anula de cada objeto. Então dê a cada Empregado um
aumento de 10% e exiba novamente o salário anual de cada Empregado.
02. Crie uma classe em Java chamada Data que inclui três informações como variáveis de instância – mês
(int), dia (int) e ano (int). A classe deve ter métodos get e set para cada variável e um construtor que inicializa
as variáveis e assume que os valores fornecidos são corretos. Forneça um método displayData que exibe o
dia, o mês e o ano separados por barras normais ( / ). Escreva um aplicativo de teste chamado DataTeste que
demonstra as capacidades da classe Data.
03. Escreva uma classe Conjunto, que represente um conjunto de tamanho variável (crescimento de array por
demanda) de elementos do tipo String. Escreva os seguintes membros para a classe:
a) Um método que permita adicionar um elemento para o conjunto (o elemento não pode existir no
conjunto);
b) Um método que permita verificar se um dado elemento pertence ao Conjunto;
c) Um método uniao, que retorne um novo conjunto de acordo com a semântica da operação união
entre conjuntos (um novo conjunto, sem elementos repetidos, com a combinação dos elementos dos
dois conjuntos originais, o que recebeu a mensagem e o que foi passado como parâmetro);
d) Um método inter, que retorne um novo conjunto de acordo com a semântica da operação interseção
entre conjuntos (um novo conjunto, sem elementos repetidos, com os elementos que estejam nos dois
conjuntos originais, o que recebeu a mensagem e o que foi passado como parâmetro);
e) Um método menos, que retorne um novo conjunto de acordo com a semântica da operação subtração
entre conjuntos (um novo conjunto, sem elementos repetidos, com os elementos do conjunto que
recebeu a mensagem, e que não existam no conjunto passado como parâmetro).
04. Implemente, em Java, um programa completo que: crie uma classe Matriz que represente uma matriz
matemática; forneça um construtor que permita a inicialização das dimensões da Matriz; forneça métodos para
acesso (leitura/escrita) de cada elemento da matriz; forneça os métodos adequados para as seguintes operações
com matriz:
a) Comparação semântica da matriz;
A comparação semântica de matrizes (ou arrays, em inglês) refere-se ao processo de comparar os conteúdos reais
de duas matrizes, ao invés de comparar suas referências.
Em Java, quando comparamos dois objetos (incluindo matrizes) usando o operador `==`, estamos na verdade
comparando suas referências, não seus conteúdos. Se quisermos comparar os conteúdos reais das matrizes,
precisamos realizar uma comparação elemento a elemento ou usar métodos utilitários fornecidos por classes como
`Arrays`. Ex.:
1. Comparação de referência:
```java
int[] arr1 = {1, 2, 3};
int[] arr2 = arr1;
[Link](arr1 == arr2); // Isto retorna true, pois ambas as
referências apontam para o mesmo objeto na memória.
```
2. Comparação semântica - para comparar o conteúdo de duas matrizes em Java, podemos usar o método `equals()`
da classe `Arrays`:
```java
import [Link];
public class ArrayComparison {
public static void main(String[] args) {
int[] arr1 = {1, 2, 3};
int[] arr2 = {1, 2, 3};
[Link]([Link](arr1, arr2)); // Isto retorna true,
pois os conteúdos das matrizes são iguais.
}
}
```
É importante notar que a comparação semântica é mais "profunda" que a comparação de referência, e em muitos
casos, é o que realmente queremos fazer ao comparar dois objetos ou matrizes. Se você estiver lidando com
matrizes multidimensionais, pode precisar de uma comparação ainda mais profunda, usando, por exemplo, o
método `deepEquals()` da classe `Arrays`.
b) Retornar a transposta (é aquela onde as linhas se transformam em colunas e as colunas em linhas)
da matriz.
c) Retornar a oposta (é aquela onde todos os elementos possuem sinais trocados) da matriz;
d) Gere uma matriz nula (é aqueles onde todos os elementos são iguais a 0);
e) Informe se a matriz é identidade (matriz quadrada onde os elementos da diagonal principal são
todos iguais a 1 e os demais 0);
f) Informe se a matriz é diagonal (matriz quadrada onde os elementos fora da diagonal principal são
todos iguais a 0).
g) Informe se a matriz é singular (matriz diagonal onde os elementos da diagonal principal são todos
iguais);
h) Informe se a matriz é simétrica (uma matriz quadrada é dita simétrica se ela é igual a sua transposta);
i) Informe se a matriz é antissimétrica (uma matriz quadrada é dita anti-simétrica se sua oposta é igual
a sua transposta)
j) Adicionar duas matrizes (alterando o valor da que recebeu a mensagem);
k) Subtrair duas matrizes(alterando o valor da que recebeu a mensagem);
l) Multiplicar duas matrizes(alterando o valor da que recebeu a mensagem);
m) Gere uma cópia da matriz.