VinBR

PM 05/10/2011

Oct 18th, 2011
48
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.41 KB | None | 0 0
  1. // notasdogarcia.blog.com
  2.  
  3. // Faltei na última aula =/ dia 21/09, Ele havia apresentado as aplicações Java RMI
  4. // que básicamente falam sobre acesso remoto à funções e variáveis.
  5. // Tentei explicar o que eu entendi nessa aula, espero que tenha sido útil.
  6.  
  7. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  8.  
  9. // Sobre o trabalho à ser entregue o professor comentou algumas coisas:
  10. Deve haver uma classe pra interface
  11. uma classe para a tabela
  12. e uma classe para I/O
  13.  
  14. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  15.  
  16. RMI em java.
  17.  
  18. Existe uma aplicação para voce fazer aplicações em JAVA RMI
  19.  
  20. É o meio pelo qual voce pode fazer uma aplicação chamar métodos remotos, ou métodos acessados remotamente.
  21. Ou seja o dado está em outro arquivo ou outro computador.
  22.  
  23. O registro de um RMI é feito na forma:
  24.  
  25. public static void main ()
  26. {
  27. conta c * new contaimp1 (801);
  28. naming.rebing("conta 904", c);
  29. }
  30.  
  31. o lookup() é uma função que busca as instanciações de objetos fora do seu programa, em outro servidor por exemplo.
  32.  
  33. Se uma função recebe como parâmetro uma referencia a uma classe de um cliente.
  34. E executa a.g() sendo "a" a referencia e g() uma função do cliente.
  35. Isso é chamado de callback.
  36.  
  37. É quando um servidor, usa o cliente como servidor. ou seja usa remotamente uma função do cliente.
  38.  
  39. // o professor mostrou um exemplo de um chat que poderia usar java rmi.
  40.  
  41. quando alguem apertasse enter.
  42.  
  43. Isso faria uma menssagem ser enviada para um servidor, (o que é normal) e então através de callback o servidor poderia
  44. fazer cada um dos clientes rodar o algoritimo de imprimir string no chat. Ou seja realizar um callback.
  45. isso também poderia ser implementado como menssagem.
  46.  
  47. 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.
  48. pois o servidor vai te avisar sobre isso.
  49.  
  50. nesse caso o servidor pode ter um arranjo com as referencias de cada cliente e fazer o callback assim: conectados[i].display()
  51.  
  52. Se um objeto implementar uma classe serilizable, ele é copiável e será passado assim por valor.
  53. Qual a vantagem de passar cópia? Evitar ficar indo e voltando na rede com dados. Passa-se tudo de uma vez.
  54. 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.
  55. Ou seja passado por valor.
  56.  
  57. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  58.  
  59. Reflexão computacional
  60.  
  61. que isso?
  62.  
  63. é poder fazer um programa que pode refletir sobre ele mesmo uai?
  64. Descobrir as classses que existem nele, ou seja realizar uma metalinguagem.
  65.  
  66. Tem uma classe da api de reflexão chamada Class
  67.  
  68. Class.forName(s) retorna um objeto do tipo Class.
  69. Method[] = theMethods = c.getMethods();
  70. Isso retorna um vetor de metodos que existem na classe de nome s (onde s é uma string)
  71.  
  72. Para cada método pode-se pegar o nome dele com Method.getName();
  73. .getReturnType().getName() retorna os nomes dos parametros metodos.
  74.  
  75. Pode-se perguntar coisas qual a super classe, quais classes ele implementa? execute o metodo tal dele com tais parâmetros.
  76. dentro de Method.ivoque() chama o metodo.
  77.  
  78. 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
  79. recebida como parâmetro.
  80.  
  81. Pode-se salvar em disco qualquer classe serializável assim como no negócio do acesso remoto.
  82.  
  83. Ou seja, ele faz uma gambiarra para evitar voce de escrever mais código.
  84.  
  85. Ex. de aplicação:
  86. Um stub é o que identifica para um servidor externo (em caso de RMI) qual os métodos que existem em um método.
  87. Através da reflexão podemos escrever um stub em tempo de execução.
  88.  
  89. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  90.  
  91. Orientação por aspectos.
  92.  
  93. aspectalgumacoisa é uma extensão de java que tem uma coisa nova que se chama aspecto.
  94.  
  95. Um aspecto parece com uma classe, mas não tem metodos nem atributos.
  96.  
  97. Existem alguns "concerns" ou interesses em portugues, que não fica bem modularizado por meio de classes.
  98. Esse trecho de código é o que pode ser modularizado através de aspectos.
  99. Esse tipo de interesse é chamado de interesse crosscutting ou transversal. Que fica expalhado por várias classes.
  100.  
  101. O professor deu um exemplo desse código transversal com um programa chamado Tomcat que apesar de ser bem modularizado.
  102. Possui o logging que é necessário para cada função.
  103. 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
  104. cada barra representa um pacote do programa.
  105.  
  106. // Um transverssal é um cuja implementação está espalhado pelo sistema inteiro
  107.  
  108. 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.
  109.  
  110. O cara que inventou aspector é um tal de gregor.
  111.  
  112. Extensão é: tal coisa tem as mesmas caracteristicas de tal coisa.
  113. Composição é quando voce tem um objeto que dentro dele tem outros objetos declarados.
  114.  
  115. É aí que vem o interesse tranversal o professor soltou um exemplo de carro.
  116.  
  117. Qual classe que tem haver com aerodinâmica?
  118. É um monte de classes que tem de cuidar disso.
  119. Cada uma fazendo a sua parte. lembrando que cada classe seria um objeto do carro.
  120.  
  121. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  122.  
  123. Isso é um código que existem em mais de uma classe é um código mal modularizado.
  124. Suponha que eu sempre chamo "printf("chamando a funcao f");
  125. Vou ter um print deses pra cada chamada do método.
  126. Como modularizar? coloque esse metodo na classe.
  127.  
  128. Agora suponha que voce tem um código refresh() ao fim de cada funçào.
  129. Como fazer par aeu não ter de chamar esse refresh toda vez?
  130. o
  131. aspect RefreshingAspectP
  132. after(): execution(void Figura+.set*(...)){
  133. refresh();
  134. }
  135. }
  136.  
  137.  
Advertisement
Add Comment
Please, Sign In to add comment