Thread

 

Supondo que queremos rodar dois executáveis simultaneamente em um ou mais processadores, como uma barra de progresso e um copiador de arquivos. Para que isso seja possível, iremos usar o Thread.

Vamos criar um exemplo para que se torne mais claro.

Vamos criar então 3 classes: TestaConcorrencia, BarraDeProgresso e CopiadorDeArquivos.

Sendo que  tanto na classe BarraDeProgresso quanto no CopiadorDeArquivos, iremos imprimir na tela sua execução 1000 vezes.

JavaOO_Thread_img1

 

JavaOO_Thread_img2

Agora vamos chamar a classe principal que vai mostrar essa execução de forma simultânea, fazendo com que os dois executáveis trabalhem juntos para o caso de mais de um processador ou de forma alternada no caso de apenas um processador.

JavaOO_Thread_img3.jpg

Interfaces – Java Orientação a Objeto

 

Vamos estudar hoje como usar as Interfaces para facilitar o polimorfismo na hora em que temos que atribuir duas ou mais classes que necessitam uma mesma funcionalidade porém não são classes filhas de uma mesma classes.

Isso vai ficar mais claro no exemplo que vamos criar aqui. Então vamos fazer um exemplo bem simples para que o conceito seja completamente absorvido.

Vamos criar uma Interface chamada AreaCalcuavel e nela iremos criar o método calculaArea(), que será usado para todo cálculo de áreas geométricas.

 

JavaOO_Interface_img1

 

Uma vez criada a Interface, basta agora criarmos as classes de cada expressão geométrica. Aqui vamos criar do Quadrado, Retângulo e do Circulo.

Repare que para usarmos a Interface AreaCalcuavel temos que fazer alguma referência a ela dentro de cada classe que não é classe filha, mas que pretende usar essa funcão, para isso usamos o implements.

Classe do Quadrado:

JavaOO_Interface_img2

 

Classe do Retângulo:

JavaOO_Interface_img3

 

Classe do Circulo:

JavaOO_Interface_img4

 

Agora é só testar…

JavaOO_Interface_img5

Classes Abstratas – Java Orientação a Objeto

Aqui vamos montar um exemplo de classes abstratas para que possamos sempre recorrer a esse exemplo no caso dúvida quanto sua aplicação.

Então vamos criar uma classe abstrata Funcionario e nela os métodos getter  para Bonus e um setter de salario. Porém, como nós queremos apenas usar o bônus para uma determinada função (cargo), iremos chamar nosso método getBonus() também de abstrato apenas com a sua assinatura do método, sem que ele retorne nenhum parâmetro.

Já nas classes como no exemplo que criamos class Gerente e class Desenvolvedor que herdam da classe Funcionario, afinal, todo Gerente é um funcionário assim como todo Desenvolvedor também é um funcionário, usaremos o extends para a classe e o protected para que eu possa usar o atributo da classe que estou herdando.

 

JavaOO_Classes_Abstratas_img1
Bônus para Funcionário Desenvolvedor: 25%

JavaOO_Classes_Abstratas_img2

 

Bônus para Funcionário Gerente: 30%

JavaOO_Classes_Abstratas_img3
Também podemos gerar uma classe TotalizadorDeBonus para visualizar o total de Bônus dado para os Funcionários.

JavaOO_Classes_Abstratas_img4
Agora que todas as classes foram geradas já podemos testar no código com nossa classe main TestaFuncionario.

JavaOO_Classes_Abstratas_img5