VinBR

PM 14/09/2011

Oct 18th, 2011
40
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.43 KB | None | 0 0
  1. // notasdogarcia.blog.com
  2. //
  3. // Aula de hoje parece que vai iniciar um novo tópico, que é a linguagem Java.
  4.  
  5. Começamos falando de James Gosling e sua equipe (sun, 1995)
  6. Foi ele que veio com a ideia do Java e também quem o criou.
  7. Java é uma linguagem compilada para uma linguagem assembly de uma máquina virtual (máquina virtual Java).
  8. Esse código assembly é posteriormente interpretado para uma máquina real.
  9.  
  10. Uma das grandes vantagens disso é a portabilidade.
  11. Pois dada qualquer arquitetura voce consegue criar uma maquina virtual Java para a mesma, e essa máquina deve ser capaz
  12. de interpretar o Java Bytecode de qualquer programa java, de forma que um mesmo programa não precisa ser recompilado para arquiteturas diferentes.
  13.  
  14. É uma linguagem:
  15. - Simples orientada a objetos,
  16. - Robusta e segura.
  17. - Arquiteturalmente neutra e portável.
  18. - Alto Desempenho - (isso não é tão verdade, é ate funcional, mas como é uma interpretação é umas 10 vezes mais lento que um programa traduzido)
  19. - Interpretada, multi-thread e dinâmica.
  20.  
  21. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  22.  
  23. Java é mais simples que C++.
  24.  
  25. - Sem ponteiros, apenas referências.
  26. - Sem funções (ponteiros para funções) apenas métodos estáticos.
  27. - Não tem variaveis globais, apenas atributos estáticos.
  28. - Sem free e delete, mas tem um coletor de lixo que cuida disso pra voce.
  29. - Sem arquivos de header, (mas tem interfaces).
  30. - Sem sobrecarga de operadores apenas de metodos.
  31. - Sem preprocessador, mas com membros final.
  32. - Sem herança multipla de classes mas com herença multipla de interfaces.
  33.  
  34. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  35.  
  36. Java é mais segura que C++, voce não consegue apontar para qualquer lugar na memória, voce é vigiado.
  37. - Não existe aritimetica de ponteiros.
  38. - Não existem casts não-verificados. Exemplo: (char*) 2
  39. - Não existem acessos além dos limites de um vetor: ex: buffer[-1];
  40.  
  41. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  42.  
  43. Vasta gama de bibliotecas para:
  44. - Construção de interfaces gráficas (java.awt e javax.swing)
  45. - Programação distribuída (java.rmi)
  46. - Programação multithread (java.lang.threads)
  47. - Entrada/saída e redes: (java.io, java.net)
  48. - Estruturas de dados (java.util)
  49. - Bancos de dados (java.sql)
  50. - etc
  51.  
  52. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  53.  
  54. Todo programa dentro de java fica dentro de uma classe.
  55.  
  56. ex:
  57.  
  58. //arquivo HelloWorld.java:
  59.  
  60. public class HelloWorld
  61. {
  62. public static void main ( String [] args)
  63. {
  64. System.out.println("Hello, World!");
  65. }
  66. }
  67.  
  68. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  69.  
  70. Sintaxe e os tipos primitivos de java são basicamente os mesmo do C++, sem nenhuma mudança notável exceto talvez pelo tipo String
  71. que é um tipo primitivo em java mas não o é em C.
  72.  
  73. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  74.  
  75. Em Java todos os objetos voce inicializa com new e todos ficam armaezenados no heap.
  76. Como em Java não existem ponteiros, não existe a sintaxe: Objeto->variável
  77. Ao invés disso sempre se usa um . para como se Objeto não fosse um ponteiro.
  78.  
  79. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  80.  
  81. Coletor de Lixo:
  82.  
  83. Seu programa não roda sozinho, de tempos em tempos é lançado uma thread responsável por buscar e desalocar objetos que já não estão mais em uso.
  84.  
  85. Isso é muito útil já que a maioria dos erros em C e C++ são devido a ponteiros, e liberações de memória,
  86. Tirando a responsábilidade de desalocagem de memória das mãos do programador, voce tira uma grande fonte de erros.
  87.  
  88. - Vantagem: - Simplifica a vida do programador
  89.  
  90. - Desvantagens: - Torna a execução do programa mais lenta.
  91. - Pode acontecer de voce desperdiçar algum espaço de memória temporáriamente até que o coletor consiga realizar seu trabalho adequadamente.
  92.  
  93. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  94.  
  95. Se voce declarar um metodo chamado de finalize() em uma classe a cada vez que o coletor de lixo desalocar um objeto dessa classe ele irá chamar o finalize().
  96. // É equivalente a função destruidora do C++.
  97.  
  98. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  99.  
  100. Em java não tem criação de objetos por valor!, apenas por referência!
  101. ou seja se eu declaro:
  102.  
  103. point p1;
  104.  
  105. p1 é um ponteiro e só terá valor se for incializado na forma:
  106.  
  107. p1 = new Point();
  108.  
  109. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  110.  
  111. Em uma função não estática, voce pode usar o this assim como em C++, porém ao invés da setinha "->" use o ponto para referenciar suas variáveis.
  112.  
  113. A classe string é um tipo em Java para cadeias constantes de caracteres, e possui várias funções pré-criadas para ela.
  114.  
  115. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  116.  
  117. Em java não existe o comando "virtual" ao se criar um método.
  118. A maioria dos métodos já são considerados virtuais por default.
  119. Ou seja chamadas de métodos são dinâmicas.
  120.  
  121. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  122.  
  123. Toda classe direta ou indiretamente é sub-classe da classe Object.
  124.  
  125. Utilidade: Uma variável do tipo objetct pode se referir a qualquer instancia de qualquer classe.
  126.  
  127. É semelhante à tipagem dinâmica em C, voce pode igualar uma variável object a uma string, um struct, uma classe qualquer coisa.
  128.  
  129. Se uma coerção falhar em tempo de execução é lançada uma exceção: ClassCastException.
  130. Ou seja se voce fizer str = inteiro; da erro em tempo de execução.
  131.  
  132. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  133.  
  134. Voce pode evitar que uma classe seja herdada por outras usando a seguinte declaraçào:
  135.  
  136. final class batata {...}
  137.  
  138. Assim se eu fizer:
  139.  
  140. class feijao extends batata { ... } // da erro.
  141.  
  142. A vantagem disso é que existe carregamento dinâmico de classes em Java, assim alguém pode colocar uma redefinição
  143. dinâmica de alguma função da sua classe possivelmente provocando algum efeito malicioso em seu software, e escrever final previniria isso.
  144.  
  145. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  146.  
  147. Um método final int metodo(){...}
  148.  
  149. é um método que não pode ser redefinido em um dos filhos de sua classe.
  150.  
  151. A vantagem deste é a mesma descrita anteriormente.
  152.  
  153. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  154.  
  155. final int pi=3.1415; // É uma variável cujo valor não pode ser alterado.
  156.  
  157. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  158.  
  159. Classes e métodos abstratos:
  160.  
  161. abstract class Figura
  162. {
  163. abstract int area();
  164. abstract int circunferencia();
  165. }
  166.  
  167. Se uma classe tiver uma única função abstrata ela também deve ser abstrata e carregar abstract em sua definição assim como no exemplo acima.
  168. // Acho que voce não pode alocar um objeto do tipo abstract, apenas declara-la e iguala-la a uma classe filha.
  169.  
  170. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  171.  
  172. Interface:
  173.  
  174. Interface pode ser definido como uma classe cujo todos os métodos são abstratos, e não é necessário escrever abstract na frente deles.
  175.  
  176. ex:
  177.  
  178. interface Comparable
  179. {
  180. int compareTo(Objetct o);
  181. }
  182.  
  183. Como se usa isso?
  184.  
  185. Voce garante que tudo o que "implementar" uma interface vai conter um conjunto de características.
  186. Gerando um tipo que voce seguramente pode usar em uma função.
  187.  
  188. ex:
  189.  
  190. class batata implements Comparable { ... }
  191.  
  192. Uma classe desse tipo tem a obrigação de redefinir todas as funções da interface, sem exceção.
  193.  
  194. Assim eu posso saber que minha classe batata é comparável ou seja "compativel com a interface Comparable",
  195. e deve ter uma função compareTo que funcionará de maneira adequada.
  196. Então posso pedir como parâmetro de função um "func(Comparable C)"
  197.  
  198. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  199.  
  200. Assim eu posso adicionar à uma classe várias características que me pareçam coerentes.
  201. Se quero que exista uma meio de comparar meu tipo batata uso implements Comparable, se quero que exista um jeito de somar
  202. uso implements Somavel, e assim por diante, só tenho de garantir que a cada implements eu vou de fato implementar as funções respectivas.
  203.  
  204. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  205.  
  206. Se uma interface b extends uma classe voce ao implementar essa interface tem de redefinir também os métodos de B.
  207.  
  208. // Fim da aula.
  209.  
  210.  
  211.  
  212.  
Advertisement
Add Comment
Please, Sign In to add comment