Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // notasdogarcia.blog.com
- // Faltei na última aula =/ dia 21/09, Ele havia apresentado as aplicações Java RMI
- // que básicamente falam sobre acesso remoto à funções e variáveis.
- // Tentei explicar o que eu entendi nessa aula, espero que tenha sido útil.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- // Sobre o trabalho à ser entregue o professor comentou algumas coisas:
- Deve haver uma classe pra interface
- uma classe para a tabela
- e uma classe para I/O
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- RMI em java.
- Existe uma aplicação para voce fazer aplicações em JAVA RMI
- É o meio pelo qual voce pode fazer uma aplicação chamar métodos remotos, ou métodos acessados remotamente.
- Ou seja o dado está em outro arquivo ou outro computador.
- O registro de um RMI é feito na forma:
- public static void main ()
- {
- conta c * new contaimp1 (801);
- naming.rebing("conta 904", c);
- }
- o lookup() é uma função que busca as instanciações de objetos fora do seu programa, em outro servidor por exemplo.
- Se uma função recebe como parâmetro uma referencia a uma classe de um cliente.
- E executa a.g() sendo "a" a referencia e g() uma função do cliente.
- Isso é chamado de callback.
- É quando um servidor, usa o cliente como servidor. ou seja usa remotamente uma função do cliente.
- // o professor mostrou um exemplo de um chat que poderia usar java rmi.
- quando alguem apertasse enter.
- Isso faria uma menssagem ser enviada para um servidor, (o que é normal) e então através de callback o servidor poderia
- fazer cada um dos clientes rodar o algoritimo de imprimir string no chat. Ou seja realizar um callback.
- isso também poderia ser implementado como menssagem.
- Qual a vantagem disso? A vantagem é que o cliente não precisa ficar chamando uma função no servidor o tempo todo pra saber se tem menssagem.
- pois o servidor vai te avisar sobre isso.
- nesse caso o servidor pode ter um arranjo com as referencias de cada cliente e fazer o callback assim: conectados[i].display()
- Se um objeto implementar uma classe serilizable, ele é copiável e será passado assim por valor.
- Qual a vantagem de passar cópia? Evitar ficar indo e voltando na rede com dados. Passa-se tudo de uma vez.
- String é serializável, ela é portanto copiável. Isso significa que o objeto pode ser tranformado em um vetor de bytes e enviado para algum lugar.
- Ou seja passado por valor.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- Reflexão computacional
- que isso?
- é poder fazer um programa que pode refletir sobre ele mesmo uai?
- Descobrir as classses que existem nele, ou seja realizar uma metalinguagem.
- Tem uma classe da api de reflexão chamada Class
- Class.forName(s) retorna um objeto do tipo Class.
- Method[] = theMethods = c.getMethods();
- Isso retorna um vetor de metodos que existem na classe de nome s (onde s é uma string)
- Para cada método pode-se pegar o nome dele com Method.getName();
- .getReturnType().getName() retorna os nomes dos parametros metodos.
- Pode-se perguntar coisas qual a super classe, quais classes ele implementa? execute o metodo tal dele com tais parâmetros.
- dentro de Method.ivoque() chama o metodo.
- Isso permite que crie uma funçào generica que funciona sobre qualquer tipo de classe, e por exemplo salva em disco cada nome de método de uma classe
- recebida como parâmetro.
- Pode-se salvar em disco qualquer classe serializável assim como no negócio do acesso remoto.
- Ou seja, ele faz uma gambiarra para evitar voce de escrever mais código.
- Ex. de aplicação:
- Um stub é o que identifica para um servidor externo (em caso de RMI) qual os métodos que existem em um método.
- Através da reflexão podemos escrever um stub em tempo de execução.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- Orientação por aspectos.
- aspectalgumacoisa é uma extensão de java que tem uma coisa nova que se chama aspecto.
- Um aspecto parece com uma classe, mas não tem metodos nem atributos.
- Existem alguns "concerns" ou interesses em portugues, que não fica bem modularizado por meio de classes.
- Esse trecho de código é o que pode ser modularizado através de aspectos.
- Esse tipo de interesse é chamado de interesse crosscutting ou transversal. Que fica expalhado por várias classes.
- O professor deu um exemplo desse código transversal com um programa chamado Tomcat que apesar de ser bem modularizado.
- Possui o logging que é necessário para cada função.
- E um que não pode ser colocado em uma única classe. Com isso ele mostrou um grafico com vários dados espalhados por netre as barras onde
- cada barra representa um pacote do programa.
- // Um transverssal é um cuja implementação está espalhado pelo sistema inteiro
- Assim a idéia do aspecto é criar uma modularizaçào a mais, e juntar um tanto de código semelhantes ( e transverssais) em um único arquivo pra facilitar a vida.
- O cara que inventou aspector é um tal de gregor.
- Extensão é: tal coisa tem as mesmas caracteristicas de tal coisa.
- Composição é quando voce tem um objeto que dentro dele tem outros objetos declarados.
- É aí que vem o interesse tranversal o professor soltou um exemplo de carro.
- Qual classe que tem haver com aerodinâmica?
- É um monte de classes que tem de cuidar disso.
- Cada uma fazendo a sua parte. lembrando que cada classe seria um objeto do carro.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- Isso é um código que existem em mais de uma classe é um código mal modularizado.
- Suponha que eu sempre chamo "printf("chamando a funcao f");
- Vou ter um print deses pra cada chamada do método.
- Como modularizar? coloque esse metodo na classe.
- Agora suponha que voce tem um código refresh() ao fim de cada funçào.
- Como fazer par aeu não ter de chamar esse refresh toda vez?
- o
- aspect RefreshingAspectP
- after(): execution(void Figura+.set*(...)){
- refresh();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment