Especialização em web com interfaces ricas
|
|
- Sandra Vilanova Carmona
- 8 Há anos
- Visualizações:
Transcrição
1 Especialização em web com interfaces ricas Conceitos avançados de programação Prof. Fabrízzio Alphonsus A. M. N. Soares Instituto de Informática Universidade Federal de Goiás Aula 2 25 de maio de 2012 Prof. Fabrízzio Alphonsus A. M. N. Soares Conceitos avançados de programação 1/103
2 Conceitos avançados Nesta aula conheceremos elementos interessantes para auxílio na programação Java. Prof. Fabrízzio Alphonsus A. M. N. Soares Conceitos avançados de programação 2/103
3 Conceitos Elementos que serão aprendidos nesta aula: TypeCast e InstanceOf Tipos genéricos (Generics) Encaixotamento (Boxing) e Envelopadores (Wrappers) Coleções, etc Prof. Fabrízzio Alphonsus A. M. N. Soares Conceitos avançados de programação 3/103
4 TypeCast I Quando lidamos com linguagens de programação fortemente tipadas como Java, nos confrontamos muitas vezes com a necessidade de variar de um tipo de dado para outro. Há casos, também, em que até mesmo o compilador não compreende que tipo de dado estamos atribuindo a uma variável. Prof. Fabrízzio Alphonsus A. M. N. Soares Conceitos avançados de programação 4/103
5 TypeCast II Em Java, nós podemos fazer uso do que chamamos de indução de tipo ou typecast. O typecast dita ao compilador como tal dado deve ser interpretado e manipulado. Essa indução de tipo ou typecast pode ser implícita ou explícita. Prof. Fabrízzio Alphonsus A. M. N. Soares Conceitos avançados de programação 5/103
6 TypeCast III O typecast implícito é feito automaticamente pelo compilador quando um tipo de dado pode ser facilmente manipulado no lugar de outro tipo de dado. Prof. Fabrízzio Alphonsus A. M. N. Soares Conceitos avançados de programação 6/103
7 TypeCast IV O typecast explícito é feito diretamente no algorítmo para indicar ao compilador qual a forma de interpretação de um dado quando ele entende que há ambiguidade ou formatos incompatíveis. Prof. Fabrízzio Alphonsus A. M. N. Soares Conceitos avançados de programação 7/103
8 TypeCast V O typecast explícito é dado sempre dentro de parênteses que sempre vem antes do dado a ser induzido. Ex.: (int) var1, (float) var2, (Object) var3,... Prof. Fabrízzio Alphonsus A. M. N. Soares Conceitos avançados de programação 8/103
9 TypeCast de Tipos Primitivos I O typecast de dados primitivos é dado basicamente em questão de seu consumo de memória. Se tentamos designar um tipo de dado que consome menos memória para um que consome mais memória, o typecast é realizado implicitamente. Prof. Fabrízzio Alphonsus A. M. N. Soares Conceitos avançados de programação 9/103
10 TypeCast de Tipos Primitivos II No exemplo abaixo, atribuimos um dado inteiro (varint) a uma variável do tipo float (varfloat). 1 public class ExemploTypecast1 { 2 public static void main(string[] args) { 3 float varfloat; 4 int varint; 5 varint = 200; 6 varfloat = varint; 7 System.out.println(varFloat); 8 } 9 } Prof. Fabrízzio Alphonsus A. M. N. Soares Conceitos avançados de programação 10/103
11 TypeCast de Tipos Primitivos III O contrário não se aplica. Tentar atribuir um tipo de dado maior para um tipo de dado menor irá resultar em um erro de tipos incompatíveis (type mismatch). Prof. Fabrízzio Alphonsus A. M. N. Soares Conceitos avançados de programação 11/103
12 TypeCast de Tipos Primitivos IV Para demonstrar isso, usaremos dois tipos de dados inteiros. Porém, iremos atribuir um inteiro longo (que consome mais memória) a um dado inteiro que consome menos. Nesse caso, somos obrigados a usar typecast explícito. Prof. Fabrízzio Alphonsus A. M. N. Soares Conceitos avançados de programação 12/103
13 TypeCast de Tipos Primitivos V 1 public class ExemploTypecast2 { 2 public static void main(string[] args) { 3 long varlong; 4 int varint; 5 varlong = 200; 6 varint = (int) varlong; 7 System.out.println(varInt); 8 } 9 } Prof. Fabrízzio Alphonsus A. M. N. Soares Conceitos avançados de programação 13/103
14 TypeCast de Classes e Objetos I Typecast também pode ser usado em Classes e Objetos. Sempre e uma classe for genérica, ela poderá receber qualquer tipo de objeto que será feito o typecast implicitamente. Prof. Fabrízzio Alphonsus A. M. N. Soares Conceitos avançados de programação 14/103
15 TypeCast de Classes e Objetos II Exemplo Por exemplo, vamos utilizar a classe TV abaixo. 1 public class TV { 2 int tamanho; 3 int canal; 4 int volume; 5 boolean ligada; 6 7 public TV(int tamanho, int canal, int volume, boolean ligada ) { 8 this.tamanho = tamanho; 9 this.canal = canal; 10 this.volume = volume; 11 this.ligada = ligada; 12 } 13 } Prof. Fabrízzio Alphonsus A. M. N. Soares Conceitos avançados de programação 15/103
16 TypeCast de Classes e Objetos III Agora, vamos instanciar uma variável da classe genérica Object com a classe TV. 1 2 public class ExemploTypecast3 { 3 public static void main(string[] args) { 4 Object obj = new TV(29, 1, 0, false); 5 System.out.println("A variável obj é " 6 + obj.getclass()); 7 } 8 } Como podemos perceber, o resultado de getclass da variável obj não é sua classe original (Object), mas sua instância: class TV. Prof. Fabrízzio Alphonsus A. M. N. Soares Conceitos avançados de programação 16/103
17 TypeCast de Classes e Objetos IV Agora, não será possível criar uma cópia desse objeto para uma variável do mesmo tipo de sua instância. Neste caso, devemos fazer o typecast explícito da classe. 1 public class ExemploTypecast4 { 2 public static void main(string[] args) { 3 Object obj = new TV(29, 1, 0, false); 4 TV tv = (TV) obj; 5 TV tv2 = new TV(29, 1, 0, false); 6 System.out.println("A variável tv é cópia de obj" + 7 "\nobj: " + obj.tostring() + 8 "\ntv: " + tv.tostring()); 9 System.out.println("TV2 é outro objeto: " + tv2.tostring ()); 10 } 11 } Prof. Fabrízzio Alphonsus A. M. N. Soares Conceitos avançados de programação 17/103
18 TypeCast de Classes e Objetos V O resultado do código acima seria algo como: 1 A variável tv é cópia de obj 2 obj: TV@12345f 3 tv: TV@12345f 4 TV2 é outro objeto: TV@abcde1 Prof. Fabrízzio Alphonsus A. M. N. Soares Conceitos avançados de programação 18/103
19 InstanceOf I No exemplo anterior, se tentássemos atribuir obj diretamente a tv ocorreria um erro de tipos incompatíveis (type mismatch). Quando lidamos com classes, podemos testar qual seu tipo de instancia usando o operador instanceof. Prof. Fabrízzio Alphonsus A. M. N. Soares Conceitos avançados de programação 19/103
20 InstanceOf II Instanceof indica se um objeto (já instanciado) pertence a uma classe. O uso de instanceof é: objeto instanceof nomedaclasse. Prof. Fabrízzio Alphonsus A. M. N. Soares Conceitos avançados de programação 20/103
21 InstanceOf III Para melhorar o exemplo anterior, usaremos instanceof antes de atribuirmos obj a tv. 1 public class ExemploTypecast { 2 public static void main(string[] args) { 3 Object obj = new TV(29, 1, 0, false); 4 TV tv = null; 5 if (obj instanceof TV) { 6 tv = (TV) obj; 7 } 8 TV tv2 = new TV(29, 1, 0, false); 9 System.out.println("A variável tv é cópia de obj" + 10 "\nobj: " + obj.tostring() + 11 "\ntv: " + tv.tostring()); 12 System.out.println("TV2 é outro objeto: " + tv2.tostring ()); 13 } 14 } Prof. Fabrízzio Alphonsus A. M. N. Soares Conceitos avançados de programação 21/103
22 Tipos Genéricos I O que são tipos genéricos? Generics, ou programação genérica, serve para determinar para o compilador, qual tipo de classe deve ser interpretada. Prof. Fabrízzio Alphonsus A. M. N. Soares Conceitos avançados de programação 22/103
23 Tipos Genéricos II Por exemplo, vamos imaginar que será criada uma classe chamada Aparelho que irá conter um objeto de alguma outra classe. Para que essa classe possa aceitar qualquer tipo de classe, devemos fazer uso de generics. Generics é indicado como um identificador entre os sinais de maior e menor < >. Prof. Fabrízzio Alphonsus A. M. N. Soares Conceitos avançados de programação 23/103
24 Criar classes usando generics I Para criar uma classe usando generics, basta que logo após o nome da classe coloquemos o indicador genérico. Esse indicador genérico é simplesmente uma letra na qual será substituída dentro da classe no momento da execução. Prof. Fabrízzio Alphonsus A. M. N. Soares Conceitos avançados de programação 24/103
25 Criar classes usando generics II 1 public class Aparelho <T> { 2 T objeto; 3 4 public Aparelho(T objeto) { 5 this.objeto = objeto; 6 } 7 8 public T getobjeto() { 9 return objeto; 10 } public void setobjeto(t objeto) { 13 this.objeto = objeto; 14 } 15 } Como a letra T identifica um tipo genérico, ela será substituída por qualquer classe. Prof. Fabrízzio Alphonsus A. M. N. Soares Conceitos avançados de programação 25/103
26 Criar classes usando generics III Vamos imaginar agora que temos duas classes distintas. A classe TV: 1 public class TV { 2 int tamanho; 3 int canal; 4 int volume; 5 boolean ligada; 6 7 public TV(int tamanho, int canal, int volume, boolean ligada ) { 8 this.tamanho = tamanho; 9 this.canal = canal; 10 this.volume = volume; 11 this.ligada = ligada; 12 } 13 // métodos get e set 14 } Prof. Fabrízzio Alphonsus A. M. N. Soares Conceitos avançados de programação 26/103
27 Criar classes usando generics IV E a classe radio: 1 public class Radio { 2 public static int AM = 1; 3 public static int FM = 2; 4 private float frequencia; 5 private int volume; 6 private int banda; 7 8 public Radio(float frequencia, int volume, int banda) { 9 this.frequencia = frequencia; 10 this.volume = volume; 11 this.banda = banda; 12 } 13 // métodos get e set 14 } Prof. Fabrízzio Alphonsus A. M. N. Soares Conceitos avançados de programação 27/103
28 Instanciar uma classe genérica I Se fossemos criar um programa que usa as duas classes de aparelhos acima, faríamos: 1 public class MinhaClasse { 2 public static void main(string[] args) { 3 Aparelho<TV> aparelho1 = new Aparelho<TV>(new TV(29, 0, 0, false)); 4 Aparelho<Radio> aparelho2 = new Aparelho<Radio>(new Radio(88.1f, 0, Radio.FM)); 5 System.out.println(aparelho1.getObjeto().getClass()); 6 System.out.println(aparelho2.getObjeto().getClass()); 7 } 8 } Prof. Fabrízzio Alphonsus A. M. N. Soares Conceitos avançados de programação 28/103
29 Instanciar uma classe genérica II Perceba o seguinte: sem o uso de generics, o compilador não conseguiria saber qual a diferença entre aparelho1 e aparelho2, pois ele os trataria da mesma forma. Nesse caso, seria obrigatório o uso de typecast para determinar ao compilador que dado está sendo processado. Se pensarmos em uma aplicação muito grande, além de ficar cansativo ter que usar typecast toda vez que fossemos usar um aparelho, seria muito provável que erraríamos em algum momento. Prof. Fabrízzio Alphonsus A. M. N. Soares Conceitos avançados de programação 29/103
30 Instanciar uma classe genérica III Java usa uma pequena convenção de nomenclatura para as letras de identificação de generics (que são vastamente utilizadas no Framework de coleções Java), sendo: E Elemento K Chave N Número T Tipo V Valor Prof. Fabrízzio Alphonsus A. M. N. Soares Conceitos avançados de programação 30/103
31 Generics é um assunto bastante extenso com vários tópicos que podem ser abordados, dentre os quais podemos citar: Multiplos tipos genéricos. Ex.: <T, E, N>; Tipos genéricos limitados. Ex.: <U extends Number>; Wildcards; e Subtipos; Prof. Fabrízzio Alphonsus A. M. N. Soares Conceitos avançados de programação 31/103
32 Exemplo mais robusto I Iremos criar duas classes, a primeira Obj contém dois métodos (add e get) que recebem e retornam um tipo Integer. 1 public class Obj { 2 3 private Integer i; 4 5 public void add(integer i){ 6 this.i = i; 7 } 8 public Integer get(){ 9 return this.i; 10 } 11 } Prof. Fabrízzio Alphonsus A. M. N. Soares Conceitos avançados de programação 31/103
33 Exemplo mais robusto II A segunda classe utiliza a classe Obj para guardar um objeto: 1 public class UsaObj { 2 3 public static void main(string[] args) { 4 5 Obj integerobj = new Obj(); 6 integerobj.add(new Integer(10)); 7 8 Integer someinteger = (Integer)integerObj.get(); 9 System.out.println(someInteger); 10 } 11 } Prof. Fabrízzio Alphonsus A. M. N. Soares Conceitos avançados de programação 32/103
34 Exemplo mais robusto III O exemplo abaixo irá causar erro: 1 public class UsaObj { 2 3 public static void main(string[] args) { 4 5 Obj stringobj = new Obj(); 6 stringobj.add("teste"); 7 8 String somestring = (String)stringObj.get(); 9 System.out.println(someString); 10 } 11 } Prof. Fabrízzio Alphonsus A. M. N. Soares Conceitos avançados de programação 33/103
35 Exemplo mais robusto IV No caso acima, somente é possível colocar em Obj um objeto do tipo Integer, agora veremos como tipos genéricos pode nos ajudar quando queremos colocar um Integer ou uma String na classe Obj por exemplo. Vamos recriar o cenário anterior com a utilização de tipos genéricos. Prof. Fabrízzio Alphonsus A. M. N. Soares Conceitos avançados de programação 34/103
36 Usando Generics I Veja que agora o tipo de objeto que será armazenado é representado pela letra T, que também deverá ser informado quando uma instância de Obj for criada. Prof. Fabrízzio Alphonsus A. M. N. Soares Conceitos avançados de programação 35/103
37 Usando Generics II 1 public class ObjGen<T>{ 2 3 private T t; // T é o tipo do objeto 4 5 public void add(t t){ 6 this.t = t; 7 } 8 public T get(){ 9 return this.t; 10 } 11 } Prof. Fabrízzio Alphonsus A. M. N. Soares Conceitos avançados de programação 36/103
38 Usando Generics III Agora vamos criar uma classe que utiliza a classe ObjGen. 1 public class UsaObjGen { 2 3 public static void main(string[] args) { 4 5 ObjGen<Integer> integerobj = new ObjGen<Integer>(); 6 integerobj.add(new Integer(10)); 7 8 Integer someinteger = (Integer)integerObj.get(); 9 System.out.println(someInteger); ObjGen<String> stringobj = new ObjGen<String>(); 12 stringobj.add("teste"); String somestring = (String)stringObj.get(); 15 System.out.println(someString); 16 } 17 } Prof. Fabrízzio Alphonsus A. M. N. Soares Conceitos avançados de programação 37/103
39 Generics como tipo mínimo I Podemos utilizar um tipo mínimo para garantir um tipo obrigatório quando criamos classes genéricas. 1 public class ObjMin <T extends Runnable> { 2 3 void inicia(t t){ 4 new Thread(t).start(); 5 } 6 } Aqui estamos definindo que o tipo do objeto (T) deve ser no mínino um Runnable. Prof. Fabrízzio Alphonsus A. M. N. Soares Conceitos avançados de programação 38/103
40 Generics como tipo mínimo II Criaremos agora uma classe chamada Programa que implementa Runnable e utiliza o ObjMin. 1 public class Programa implements Runnable { 2 3 public static void main(string[] args){ 4 5 ObjMin<Programa> o = new ObjMin<Programa>(); 6 o.inicia(new Programa()); 7 } 8 9 public void run(){ 10 System.out.println("ola"); 11 } 12 } Prof. Fabrízzio Alphonsus A. M. N. Soares Conceitos avançados de programação 39/103
41 Boxing, Unboxing e Autoboxing I O que é boxing? Em certas situações, é mais conveniente utilizar objetos no lugar de tipos primitivos (byte, short, int, long, float, double, boolean e char). Assim, para cada tipo primitivo, foi criado uma classe Wrapper (Byte, Short, Integer, Long, Float, Double, Boolean e Character) que serve para encaixotar (boxing) o tipo primitivo. Boxing consiste em inserir um tipo primitivo dentro de um objeto, de forma que o valor primitivo possa ser usado como um objeto. Prof. Fabrízzio Alphonsus A. M. N. Soares Conceitos avançados de programação 40/103
42 Boxing, Unboxing e Autoboxing II Vejamos este Exemplo: 1 Integer i = new Integer(100); Vemos neste exemplo que o tipo primitivo int de valor 100 é inserido no construtor de Integer, que é a classe wrapper (empacotadora) associada. Prof. Fabrízzio Alphonsus A. M. N. Soares Conceitos avançados de programação 41/103
43 Wrappers I Tabela de Tipos primitivos e Classes Wrappers Tipo primitivo Classe Wrapper Super Classe Lógico boolean Boolean Object Caractere char Character Object Inteiro byte Byte Number Inteiro short Short Number Inteiro int Integer Number Inteiro long Long Number Ponto Flutuante float Float Number Ponto Flutuante double Double Number Prof. Fabrízzio Alphonsus A. M. N. Soares Conceitos avançados de programação 42/103
44 Wrappers II Classes Wrappers possuem métodos públicos disponíveis na subclasse Object, devemos dar um maior destaque para os métodos equals(object) e tostring, o primeiro é utilizado para comparações enquanto que o segundo permite que o conteúdo de um objeto seja representado em formato de texto. Prof. Fabrízzio Alphonsus A. M. N. Soares Conceitos avançados de programação 43/103
45 Wrappers III Classes derivadas da subclasse Number possuem vários métodos para devolverem um tipo primitivo, tais como: bytevalue(), shortvalue(), intvalue(), longvalue(), doublevalue(), floatvalue(). Prof. Fabrízzio Alphonsus A. M. N. Soares Conceitos avançados de programação 44/103
46 Wrappers IV Alem disso a as classes derivadas de Number possuem também o método comparareto(object) que faz comparações entre objetos wrapper. Prof. Fabrízzio Alphonsus A. M. N. Soares Conceitos avançados de programação 45/103
47 Quais as vantagens de usar tipos primitivos? I Tipos primitivos são bem rápidos Consomem pouca memória Além de permitirem operações mais complexas São bastantes eficientes em laços e expressões Prof. Fabrízzio Alphonsus A. M. N. Soares Conceitos avançados de programação 46/103
48 Usando Wrappers I Para criar objetos Integer,Double, etc. Basta apenas chamar : 1 Integer i = new Integer(); 2 Double d = new Double(); Para fazer obter uma valor encapsulado basta apenas: 1 float f = real.floatvalue(); 2 double d = inteiro.doublevalue(); Prof. Fabrízzio Alphonsus A. M. N. Soares Conceitos avançados de programação 47/103
49 Autoboxing I A criação das classes wrapper resolveram vários problemas, porém a conversão entre tipo primitivo para objeto (boxing) e objeto para primitivo (unboxing) se tornou uma tarefa trivial e tediosa. A solução surgiu a partir do JDK 1.5. Prof. Fabrízzio Alphonsus A. M. N. Soares Conceitos avançados de programação 48/103
50 Autoboxing II A Sun resolveu este problema através do autoboxing, que consiste no boxing automático, ou seja, na conversão automática pelo compilador de tipo primitivo para objeto. Prof. Fabrízzio Alphonsus A. M. N. Soares Conceitos avançados de programação 49/103
51 Autoboxing III Além do autoboxing, existe o autounboxing, que é a conversão automática de objeto para tipo primitivo. Assim, fecha-se o ciclo: a conversão de tipo primitivo para tipo wrapper é automática (autoboxing) e o retorno também é automático (autounboxing), facilitando o uso de um e outro, como se fossem equivalentes. Prof. Fabrízzio Alphonsus A. M. N. Soares Conceitos avançados de programação 50/103
52 Autoboxing IV Vejamos o exemplo: 1 public class TesteAutoboxing { 2 public static void main(string[] args) { 3 Integer a = 2; // autoboxing 4 Integer b = 2; // equivale a Integer b = new Integer(2); 5 a++; // autounboxing e autoboxing 6 b++; // autounboxing e autoboxing 7 // int x = a.intvalue(); // para jdk < 1.5, isto era necessário 8 // int y = b.intvalue(); 9 // System.out.println(x+y); // a linha abaixo é equivalente a esta 10 System.out.println(a+b); // graças a autounboxing 11 } 12 } Prof. Fabrízzio Alphonsus A. M. N. Soares Conceitos avançados de programação 51/103
53 Autoboxing V Note neste exemplo: O compilador sabe que a atribuição Integer a = 2 são de tipos diferentes, por isso é necessário autoboxing - a conversão implícita pelo compilador de int para Integer. A soma de objetos não é definida, por isso a e b são convertidos implicitamente pelo compilador para int; Em geral, o código-fonte fica mais curto e operações de conversões triviais são criadas implicitamente pelo compilador. Você pode utilizar os operadores de incremento em objetos, como se fossem tipos primitivos; Prof. Fabrízzio Alphonsus A. M. N. Soares Conceitos avançados de programação 52/103
54 Exemplos de Autoboxing I Autoboxing ou autounboxing ocorre sempre que houver a necessidade de conversão de tipos primitivos em objetos e vice-versa. Isto se aplica em várias situações [3]: comparação, atribuição, em estruturas de repetição, etc. Veremos a seguir um exemplo de cada situação. Prof. Fabrízzio Alphonsus A. M. N. Soares Conceitos avançados de programação 53/103
55 Autoboxing em atribuição I Veja no exemplo abaixo a utilização de autoboxing e autounboxing na atribuição de variáveis e passagem de parâmetros para métodos: 1 public class AutoboxingEmAtribuicao { 2 private static double soma(double x, double y) { // autounboxing 3 return x+y; 4 } 5 public static void main(string[] args) { 6 Double a = 1.0; //autoboxing 7 Double b = 1.0; // autoboxing 8 Double resultado = soma(a,b); // autounboxing 9 Boolean imprimir = true; ///autoboxing 10 if (imprimir) // autounboxing 11 System.out.println("resultado: "+resultado); //autounboxing 12 } 13 } Prof. Fabrízzio Alphonsus A. M. N. Soares Conceitos avançados de programação 54/103
56 Autoboxing em atribuição II Note a atuação do autoboxing/autounboxing neste exemplo: Na atribuição de valores double para tipos objeto Double; Na passagens de parâmetros do método soma. Note que o método soma recebe como parâmetros dois tipos primitivos double e foram passados dois objetos Double a e b. Na atribuição do valor booleano true à variável do tipo objeto Boolean; No uso de um tipo objeto Boolean na condição do if ; Prof. Fabrízzio Alphonsus A. M. N. Soares Conceitos avançados de programação 55/103
57 Autoboxing em comparação I Comparações podem ser realizadas através do operador == ou pelo método equals ; o primeiro, quando é aplicado entre objetos, compara se as variáveis referenciam o mesmo objeto, enquanto que o segundo avalia se os objetos possuem o valor significativamente iguais. Prof. Fabrízzio Alphonsus A. M. N. Soares Conceitos avançados de programação 56/103
58 Autoboxing em comparação II Veremos no código-fonte de exemplo a seguir, que as comparações entre tipos diferentes podem ser realizadas: 1 public class AutoboxingEmComparacao { 2 public static void main(string[] args) { 3 Integer a = new Integer(2); 4 Integer b = new Integer(2);; 5 int c = 2; 6 // compara se a e b referenciam o mesmo objeto: 7 if (a == b) 8 System.out.println("Comparação 1: a e b são os mesmos objetos"); 9 10 // compara se a e b possuem o mesmo valor: 11 if (a.equals(b)) 12 System.out.println("Comparação 2: a e b tem valores iguais") ; // a é convertido para tipo primitivo 15 // os dois valores são comparados como tipos primitivos 16 if (a == c) Prof. Fabrízzio Alphonsus A. M. N. Soares Conceitos avançados de programação 57/103
59 Autoboxing em comparação III 17 System.out.println("Comparação 3: a e c tem valores iguais") ; // c é convertido para objeto 20 // os dois valores são comparados como objetos 21 if (a.equals(c)) 22 System.out.println("Comparação 4: a e c tem valores iguais") ; 23 } 24 } Prof. Fabrízzio Alphonsus A. M. N. Soares Conceitos avançados de programação 58/103
60 Autoboxing em comparação IV Note a atuação do autoboxing/autounboxing neste exemplo: Na comparação entre tipos diferentes (objeto e tipo primitivo); No comportamento diferente na comparação com == ou equals ; Prof. Fabrízzio Alphonsus A. M. N. Soares Conceitos avançados de programação 59/103
61 Autoboxing em laço de repetição for I A partir do jdk 1.5, surgiu uma melhoria na estrutura de repetição for, chamado de for melhorado ou enhanced for. Através do novo for, é possível percorrer toda uma array ou conjunto (veremos mais detalhadamente sobre isso depois) de forma bem fácil, sem necessitar criar contadores ou índices. 1 for (Tipo item: array_ou_conjunto)... Onde: Tipo - é uma classe ou algum tipo primitivo; item - é a variável que receberá um elemento do array ou conjunto em cada iteração (loop); array_ou_conjunto - é uma array ou conjunto contendo vários elementos; Prof. Fabrízzio Alphonsus A. M. N. Soares Conceitos avançados de programação 60/103
62 Autoboxing em laço de repetição for II Veremos o uso do for melhorado neste exemplo a seguir. Note que iremos percorrer uma array de tipos primitivos char e uma array (objeto) de inteiros (Integer): 1 import java.util.arraylist; 2 public class AutoboxingEmRepeticaoFor { 3 public static void main(string[] args) { 4 char[] ola = { o, l, a }; 5 // percorre a array ola 6 for (Character letra: ola) // autoboxing 7 System.out.println(letra); 8 9 // esta é um array com vários elementos inteiros; 10 // veremos esta sintaxe quando for estudado "Genericos" 11 ArrayList<Integer> numerospares = new ArrayList<Integer>(); // inclui objetos inteiros no array 14 numerospares.add(new Integer(2)); 15 numerospares.add(new Integer(4)); 16 numerospares.add(new Integer(6)); Prof. Fabrízzio Alphonsus A. M. N. Soares Conceitos avançados de programação 61/103
63 Autoboxing em laço de repetição for III 17 numerospares.add(new Integer(8)); // realiza o autounboxing de cada elemento Integer 20 for (int i: numerospares) 21 System.out.println(i); 22 } 23 } Prof. Fabrízzio Alphonsus A. M. N. Soares Conceitos avançados de programação 62/103
64 Autoboxing em laço de repetição for IV Note neste exemplo: O for melhorado percorre a array de tipos primitivos char, realizando o autoboxing de cada um de seus elementos, atribuindo a variável letra, que é do tipo objeto Character; A sintaxe ArrayList<Integer> numerospares = new ArrayList<Integer>(), tem o seguinte significado: crie uma array de objetos Integer, associando à varíavel numerospares, que por sua vez é uma array de Integer ; O for melhorado percorre a array de Integer, realizando o autounboxing de cada um de seus elementos, atribuindo a variável i, que é do tipo primitivo int; Prof. Fabrízzio Alphonsus A. M. N. Soares Conceitos avançados de programação 63/103
65 Coleções I Um dos conceitos mais difundidos entre todas as linguagens de programação é o conceito de array. Embora seja a base de muita coisa nem sempre trabalhar com arrays diretamente é uma boa ideia. Prof. Fabrízzio Alphonsus A. M. N. Soares Conceitos avançados de programação 64/103
66 Coleções II O Java Collections Framework é um conjunto de classes desenhados para superar as limitações dos arrays e aumentar a capacidade do programador para trabalhar com coleções de objetos. Prof. Fabrízzio Alphonsus A. M. N. Soares Conceitos avançados de programação 65/103
67 Coleções III Com classes de alto nível como estas é possível implementar padrões como Produtor-Consumidor sem esforço. Ou escolher a implementação mais eficiente sem a implementar. Prof. Fabrízzio Alphonsus A. M. N. Soares Conceitos avançados de programação 66/103
68 Sobre Arrays I Um array, em java, é um objeto que agrega outros objetos que compartilham um supertipo comum e aos quais nos podemos referir por um índice (ou seja, um numero inteiro). Prof. Fabrízzio Alphonsus A. M. N. Soares Conceitos avançados de programação 67/103
69 Sobre Arrays II Arrays em java são imutáveis o que significa que para criar um array menor ou maior baseando-nos num que já existe é necessário criar um novo array e fazer uma cópia, elemento a elemento do antigo para o novo. Prof. Fabrízzio Alphonsus A. M. N. Soares Conceitos avançados de programação 68/103
70 Sobre Arrays III Arrays são muito uteis para substituir condições de seleção, como vemos no exemplo a seguir: 1 // sem array 2 public String getdayofweek(int weekdayordinal){ 3 switch(weekdayordinal){ 4 case 1: return "Domingo"; 5 case 2: return "Segunda-Feira"; 6 case 3: return "Terça-Feira"; 7 case 4: return "Quarta-Feira"; 8 case 5: return "Quinta-Feira"; 9 case 6: return "Sexta-Feira"; 10 case 7: return "Sábado"; 11 } 12 } 13 // com array 14 public String getdayofweek(int weekdayordinal){ 15 return WEEK_DAY_NAMES[weekDayOrdinal-1]; 16 } Prof. Fabrízzio Alphonsus A. M. N. Soares Conceitos avançados de programação 69/103
71 Sobre Arrays IV Esta é uma situação simples que pode não parecer muito vantajosa ainda para mais quando seria necessário inicializar o array ( embora, essa inicialização seria feita apenas uma vez em toda a vida do programa). Prof. Fabrízzio Alphonsus A. M. N. Soares Conceitos avançados de programação 70/103
72 Sobre Arrays V A razão para que o Array seja um objeto pouco maleável é de eficiência. Mas java oferece um recurso muito mais poderoso que permite ao programador não usar arrays se não quiser : o Java Collections Framework (JCF). Prof. Fabrízzio Alphonsus A. M. N. Soares Conceitos avançados de programação 71/103
73 Java Collections Framework I O Java Collections Framework é um conjunto de interfaces e classes que permitem uma vasta gama de opções na hora de trabalhar com agregações de objetos. A recente (Java 5) introdução de tipos genéricos e de coleções desenhadas para ambientes concorrentes não devem deixar dúvidas a ninguem, que em Java, usar arrays não é o padrão a seguir. Prof. Fabrízzio Alphonsus A. M. N. Soares Conceitos avançados de programação 72/103
74 Java Collections Framework II Os algoritmos existentes relativos a coleções são amplamente divulgados e estudados. A eficiência é a prioridade ao trabalhar com grandes coleções de objetos. Por esse motivo, o JCF é bastante flexível e vasto. Esses algoritmos são tão importantes que obrigam todos os objetos a seguir contratos bem definidos. O primeiro e mais importante deles é o contrato de definição de igualdade. Prof. Fabrízzio Alphonsus A. M. N. Soares Conceitos avançados de programação 73/103
75 Definindo igualdade com equals I Em Java o operador de igualdade == não determina se os objetos são iguais, apenas se as variáveis de referencia a eles são iguais. Duas variáveis de referencia a objetos podem referenciar objetos iguais ou não. Prof. Fabrízzio Alphonsus A. M. N. Soares Conceitos avançados de programação 74/103
76 Definindo igualdade com equals II Para resolver o problema todos os objetos em Java definem o método equals(). Este método é definido em Object - a classe mãe de todas as classes - e como tal o método é onipresente na linguagem. Prof. Fabrízzio Alphonsus A. M. N. Soares Conceitos avançados de programação 75/103
77 Definindo igualdade com equals III Por padrão, este método apenas verifica se as referências dos objetos são iguais. Ou seja, por padrão, um objeto só é igual a outro se a variável de referencia é a mesma. Isso garante que objeto quando igual tem as mesma características, mas muitas vezes necessitamos que a igualdade seja determinada pelas características em si e não pela referência do objeto. Prof. Fabrízzio Alphonsus A. M. N. Soares Conceitos avançados de programação 76/103
78 Definindo igualdade com equals IV Para conseguirmos isso basta sobre-escrever o método equals() no nosso objeto. Para fazermos isso temos que seguir algumas regras: 1 O resultado de invocar equals() para os mesmos dois objetos, sempre retorna o mesmo resultado independentemente de quando essa invocação é feita. 2 null nunca é igual a nenhum objecto 3 Um objeto é igual a si próprio. Ou seja, a.equals(a) tem que ser verdade. 4 A ordem da invocação para dois objetos não importa. Se a.equals(b) é verdade então também tem que ser verdade que b.equals(a) Prof. Fabrízzio Alphonsus A. M. N. Soares Conceitos avançados de programação 77/103
79 Definindo igualdade com equals V 5 Se a.equals(b) e b.equals(c) são verdade então também tem que ser verdade que a.equals(c) Prof. Fabrízzio Alphonsus A. M. N. Soares Conceitos avançados de programação 78/103
80 Definindo igualdade com equals VI Esta regras traduzem as propriedades do método equals(). Se o método não tem estas propriedades ele não está bem implementado. A saber: 1 equals() é Consistente 2 e é consistente com null 3 equals() é Reflexivo 4 equals() é Simétrico 5 equals() é Transitivo Prof. Fabrízzio Alphonsus A. M. N. Soares Conceitos avançados de programação 79/103
81 HashCode I Hash é um código desenvolvido em criptografia. Função de Hash é um mecanismo que baseado numa entrada produz um código de hash (hashcode). Funções de Hash não são reversiveis e sempre produzem o mesmo resultado para a mesma entrada. Contudo não são obrigadas a produzirem códigos diferentes para entradas diferentes ( ou seja, não são injetivas). Prof. Fabrízzio Alphonsus A. M. N. Soares Conceitos avançados de programação 80/103
82 HashCode II Por outro lado, funções de hash produzem códigos do mesmo tamanho para entradas de tamanhos aleatoriamente diferentes. Estas propriedades são extremamente uteis já que pela simples comparação do código de hash poderemos saber se dois objetos são diferentes. Atenção para o fato que elas não revelam se os objetos são iguais, mas na maioria dos casos ser diferente é mais importante que ser igual. Prof. Fabrízzio Alphonsus A. M. N. Soares Conceitos avançados de programação 81/103
83 HashCode III Sabendo disto, à semelhança de equals() Object também define o método hashcode() que não é mais que uma função de hash aplicada ao próprio objeto. É fácil de compreender que se alteramos o mecanismo padrão de verificação de igualdade, temos também que alterar o mecanismo padrão de produção do código de hash. Prof. Fabrízzio Alphonsus A. M. N. Soares Conceitos avançados de programação 82/103
84 HashCode IV Isso nos leva à regra de consistência que diz que: Sempre que sobrescrever equals() sobrescreva também hashcode() de forma compatível. De forma compatível significa que : Se a.equals(b) é verdade então também é verdade que a.hashcode()==b.hashcode() Prof. Fabrízzio Alphonsus A. M. N. Soares Conceitos avançados de programação 83/103
85 HashCode V Existem muitas formas de redefinir o calculo do código de hash. Da mais simples e com pior performance que é fazer todos os objetos terem o mesmo código até à mais complexa de deixar todos os objetos terem um código diferente. Prof. Fabrízzio Alphonsus A. M. N. Soares Conceitos avançados de programação 84/103
86 HashCode VI Embora seja teoricamente possível ter uma função de hash tão eficiente que produz um código diferente para cada objeto diferente, na prática nos encontramos limitados já que o código tem que caber num int (32 bits). Prof. Fabrízzio Alphonsus A. M. N. Soares Conceitos avançados de programação 85/103
87 HashCode VII Então temos que vier com fato que nossas funções de hash vão produzir código iguais em algum ponto. A isso se chama Colisão de Hash. O objetivo é diminuir as colisões, ou seja diminuir a frequencia com que dois objetos diferentes produzem o mesmo código de hash. Quanto menos colisões, mais eficiente é a nossa função de hash. Prof. Fabrízzio Alphonsus A. M. N. Soares Conceitos avançados de programação 86/103
88 HashCode VIII A função de hash mais simples é a operação de ou-exclusivo (XOR) que em Java se representa pelo operador ˆ. Prof. Fabrízzio Alphonsus A. M. N. Soares Conceitos avançados de programação 87/103
89 Coleções e Mapas I São classes voltadas para estruturas de dados, pertencentes ao pacote java.util: Conjuntos Conjuntos ordenados Mapas Mapas Ordenados e listas. É largamente utilizado em programas: quem não precisa de um vetor, uma lista ou conjunto? Melhora a performance e a qualidade: evita reinventar a roda; Estimula o reuso; São conhecidos também como conjuntos; Prof. Fabrízzio Alphonsus A. M. N. Soares Conceitos avançados de programação 88/103
90 Organização em Interfaces e Classes I O conjunto de classes java para coleções (Java Collection Framework) é composto de várias interfaces (I), e classes concretas (C). A seguir mostramos estas classes no formato hierárquico em árvore: 1 Collection (I) 2 Set (I) 3 HashSet (C) 4 Sorted Set (I) 5 TreeSet(C) 6 List (I) 7 ArrayList (C) 8 Vector (C) 9 LinkedList (C) 10 Queue (I) Map (I) 13 HashMap (C) 14 Hashtable (C) Prof. Fabrízzio Alphonsus A. M. N. Soares Conceitos avançados de programação 89/103
91 Organização em Interfaces e Classes II 15 SortedMap (I) 16 TreeMap (C) Prof. Fabrízzio Alphonsus A. M. N. Soares Conceitos avançados de programação 90/103
92 I Definindo cada uma das implementações 1 Coleções Collection: interface que define operações comuns de coleções. Esta interface possui duas sub-interfaces - Set (Conjunto) e List (Lista); 2 Conjuntos Set: implementação de Collection, que modela um conjunto de elementos únicos; HashSet: implementação de Set, modela conjuntos não ordenados; SortedSet: implementação de Set, modela conjuntos ordenados; 3 Listas Prof. Fabrízzio Alphonsus A. M. N. Soares Conceitos avançados de programação 91/103
93 II Definindo cada uma das implementações List: modela listas de dados, onde os elementos (repetidos ou não) estão ordenados; ArrayList: usa métodos não-sincronizados e Vector utiliza métodos sincronizados (synchronized) Vector: é apropriado para uso em multithread, porém é mais lento que ArrayList; LinkedList: é uma Lista, onde os elementos estão ligados. Tem uma inserção e deleção muito mais rápidos que ArrayList e Vector. 4 Mapas Map: modela mapeamentos entre chaves não-repetidas a valores; Prof. Fabrízzio Alphonsus A. M. N. Soares Conceitos avançados de programação 92/103
94 Definindo cada uma das implementações III 5 Filas HashMap: subclasse de Map, modela mapas não classificados, com métodos não-sincronizados; Hashtable: subclasse de Map, modela mapas não classificados, com métodos sincronizados; SortedMap: modela mapas classificados; Queue: é uma interface, que modela filas, Prof. Fabrízzio Alphonsus A. M. N. Soares Conceitos avançados de programação 93/103
95 Definindo cada uma das implementações IV Não confunda array (criados com []) com as classes ArrayList ou Vector! Prof. Fabrízzio Alphonsus A. M. N. Soares Conceitos avançados de programação 94/103
96 Exemplo comparativo entre array e ArrayList I Veja a tabela comparativa array não tem dimensão dinâmica suporta tipos primitivos não é uma classe não suporta métodos possui atributo length ArrayList tem dimensão dinâmica não suporta tipos primitivos diretamente é uma classe suporta métodos não possui atributo length Prof. Fabrízzio Alphonsus A. M. N. Soares Conceitos avançados de programação 95/103
97 Exemplo comparativo entre array e ArrayList II Veja o exemplo abaixo, comparando array e ArrayList: 1 import java.util.arraylist; 2 public class ComparandoArrayEArrayList { 3 public static void main(string[] args) { 4 // inicialização: 5 String[] ola1 = new String[3]; 6 ArrayList<String> ola2 = new ArrayList<String>(); 7 8 // atribuição 9 ola1[0] = "o"; ola1[1] = "l"; ola1[2] = "a"; 10 ola2.add("o"); ola2.add("l"); ola2.add("a"); ola2.add("!"); // percorrendo com for 13 for (String s: ola1) 14 System.out.print(s); 15 System.out.println(); 16 for (String s: ola2) 17 System.out.print(s); Prof. Fabrízzio Alphonsus A. M. N. Soares Conceitos avançados de programação 96/103
98 Exemplo comparativo entre array e ArrayList III 18 } 19 } Prof. Fabrízzio Alphonsus A. M. N. Soares Conceitos avançados de programação 97/103
99 Interface Collection I A interface Collection define várias operações básicas e operações entre coleções. Vejamos sua implementação: 1 public interface Collection<E> extends Iterable<E> { 2 // Operações Básicas 3 int size(); 4 boolean isempty(); 5 boolean contains(object element); 6 boolean add(e element); 7 boolean remove(object element); 8 Iterator<E> iterator(); 9 10 // Operações em massa 11 boolean containsall(collection<?> c); 12 boolean addall(collection<? extends E> c); 13 boolean removeall(collection<?> c); 14 boolean retainall(collection<?> c); 15 void clear(); // Operações de array Prof. Fabrízzio Alphonsus A. M. N. Soares Conceitos avançados de programação 98/103
100 Interface Collection II 18 Object[] toarray(); 19 <T> T[] toarray(t[] a); 20 } Prof. Fabrízzio Alphonsus A. M. N. Soares Conceitos avançados de programação 99/103
101 Interface Iterator I Uma interface bastante importante é a interface Iterator, que permite navegar (iterar) pelos vários elementos de uma coleção. 1 public interface Iterator<E> { 2 boolean hasnext(); 3 E next(); 4 void remove(); 5 } Note que a interface Iterator é bastante simples, um Iterator é obtido da própria coleção através do método iterator() e depois podemos navegar pela coleção por meio dos métodos hasnext(), next() e remove(); Prof. Fabrízzio Alphonsus A. M. N. Soares Conceitos avançados de programação 100/103
102 Exemplo simples I 1 import java.util.*; 2 public class TesteArray { 3 public static void main(string[] args) { 4 ArrayList<String> a1 = new ArrayList<String>(); 5 ArrayList<String> a2 = new ArrayList<String>(); 6 a1.add("a"); 7 a1.add("b"); 8 a1.add("c"); 9 a2.add("d"); 10 a2.add("e"); 11 a2.add("f"); 12 Iterator i1 = a1.iterator(); 13 Iterator i2 = a2.iterator(); 14 // imprime a1 15 while (i1.hasnext()) { 16 System.out.println(i1.next()); 17 } 18 // imprime a2 19 while (i2.hasnext()) { 20 System.out.println(i2.next()); Prof. Fabrízzio Alphonsus A. M. N. Soares Conceitos avançados de programação 101/103
103 Exemplo simples II 21 } 22 } 23 } Prof. Fabrízzio Alphonsus A. M. N. Soares Conceitos avançados de programação 102/103
104 Exercício 1 Criando somente uma instância auxiliar de ArrayList, adicione os elementos de a2 em a1, de forma mesclada, ou seja, seu resultado final deverá ser: a, d, b, e, c, f. Imprima o novo a1 resultante. 2 Sem criar novas instâncias de ArrayList, adicione os elementos de a1 no final de a2 e imprima o novo a2 resultante. Prof. Fabrízzio Alphonsus A. M. N. Soares Conceitos avançados de programação 103/103
Coleções. Page 1. Coleções. Prof. Anderson Augustinho Uniandrade
Page 1 podem ser comparadas com arrays, visto que também apresentam a capacidade de armazenar referências para vários objetos. Entretanto, as coleções apresentam uma gama de funcionalidades bem maior do
Leia maisColeções Avançadas. Programação Orientada a Objetos Java. Prof. Anselmo Cardoso Paiva Prof. Geraldo Braz Junior
Coleções Avançadas Programação Orientada a Objetos Java Prof. Anselmo Cardoso Paiva Prof. Geraldo Braz Junior Objetivos Aprender como o conceito de coleção pode ser expresso de forma genérica Examinar
Leia maisBSI UFRPE Prof. Gustavo Callou gcallou@gmail.com
BSI UFRPE Prof. Gustavo Callou gcallou@gmail.com Coleções List Set Map Classes e interfaces do pacote java.util que representam listas, conjuntos e mapas. Solução flexível para armazenar objetos. Quantidade
Leia maisOrientação a Objetos
1. Domínio e Aplicação Orientação a Objetos Um domínio é composto pelas entidades, informações e processos relacionados a um determinado contexto. Uma aplicação pode ser desenvolvida para automatizar ou
Leia maisProf. Fernando V. Paulovich 8 de novembro de SCC Programação Orientada a Objetos
Coleções a Tipos Genéricos em Java SCC0604 - Programação Orientada a Objetos Prof. Fernando V. Paulovich http://www.icmc.usp.br/~paulovic paulovic@icmc.usp.br Instituto de Ciências Matemáticas e de Computação
Leia maisARRAYS. Um array é um OBJETO que referencia (aponta) mais de um objeto ou armazena mais de um dado primitivo.
Cursos: Análise, Ciência da Computação e Sistemas de Informação Programação I - Prof. Aníbal Notas de aula 8 ARRAYS Introdução Até agora, utilizamos variáveis individuais. Significa que uma variável objeto
Leia maisLaboratório de Programação. Aula 13 Java 5COP088. Aula 13 Genéricos e Conjuntos Java Prof. Dr. Sylvio Barbon Junior. Sylvio Barbon Jr barbon@uel.
5COP088 Laboratório de Programação Aula 13 Genéricos e Conjuntos Java Prof. Dr. Sylvio Barbon Junior 1 Sumário: 1) Métodos hashcode(), equals() e tostring(); 2) Conjuntos; 3) Genéricos; 4) Resumo. 2 1)
Leia maisMódulo 06 Desenho de Classes
Módulo 06 Desenho de Classes Última Atualização: 13/06/2010 1 Objetivos Definir os conceitos de herança, polimorfismo, sobrecarga (overloading), sobreescrita(overriding) e invocação virtual de métodos.
Leia maisJSP - ORIENTADO A OBJETOS
JSP Orientação a Objetos... 2 CLASSE:... 2 MÉTODOS:... 2 Método de Retorno... 2 Método de Execução... 2 Tipos de Dados... 3 Boolean... 3 Float... 3 Integer... 4 String... 4 Array... 4 Primeira:... 4 Segunda:...
Leia maisSlide 1 Deitel/Deitel, 8e. Java Como programar Copyright 2010 Pearson Education
Java Como Programar, 8/E Slide 1 Slide 2 Slide 3 Métodos genéricos e classes genéricas (e interfaces) permitem especificar, com uma única declaração de método, um conjunto de métodos relacionados ou, com
Leia maisTécnicas de Programação II
Técnicas de Programação II Aula 06 Orientação a Objetos e Classes Edirlei Soares de Lima Orientação a Objetos O ser humano se relaciona com o mundo através do conceito de objetos.
Leia maisColeções. Conceitos e Utilização Básica. c Professores de ALPRO I 05/2012. Faculdade de Informática PUCRS
Coleções Conceitos e Utilização Básica c Professores de ALPRO I Faculdade de Informática PUCRS 05/2012 ALPRO I (FACIN) Coleções: Básico 05/2012 1 / 41 Nota Este material não pode ser reproduzido ou utilizado
Leia mais3 Classes e instanciação de objectos (em Java)
3 Classes e instanciação de objectos (em Java) Suponhamos que queremos criar uma classe que especifique a estrutura e o comportamento de objectos do tipo Contador. As instâncias da classe Contador devem
Leia mais2 Orientação a objetos na prática
2 Orientação a objetos na prática Aula 04 Sumário Capítulo 1 Introdução e conceitos básicos 1.4 Orientação a Objetos 1.4.1 Classe 1.4.2 Objetos 1.4.3 Métodos e atributos 1.4.4 Encapsulamento 1.4.5 Métodos
Leia mais5 Caso de estudo O cartão fidelidade
5 Caso de estudo O cartão fidelidade Cartão de fidelização de clientes das distribuidoras de combustível. Definição em JAVA da classe CartaoFidelidade, que deverá apresentar uma funcionalidade semelhante
Leia maisProgramação OO em Java. Profa Andréa Schwertner Charão DELC/CT/UFSM
Programação OO em Java Profa Andréa Schwertner Charão DELC/CT/UFSM Sumário Classes abstratas Interfaces Tipos genéricos Coleções Classes abstratas São classes que não podem ser instanciadas, porque representam
Leia maisParadigmas da Programação PPROG. Linguagem JAVA. Interfaces. (Livro Big Java, Late Objects Capítulo 9) Nelson Freire (ISEP DEI-PPROG 2013/14) 1/33
PPROG Paradigmas da Programação Linguagem JAVA Interfaces (Livro Big Java, Late Objects Capítulo 9) Nelson Freire (ISEP DEI-PPROG 2013/14) 1/33 PPROG Motivação para usar Interfaces Definição de Interface
Leia maisUniversidade da Beira Interior Cursos: Matemática /Informática e Ensino da Informática
Folha 1-1 Introdução à Linguagem de Programação JAVA 1 Usando o editor do ambiente de desenvolvimento JBUILDER pretende-se construir e executar o programa abaixo. class Primeiro { public static void main(string[]
Leia maisProgramação por Objectos. Java
Programação por Objectos Java Parte 2: Classes e objectos LEEC@IST Java 1/24 Classes (1) Sintaxe Qualif* class Ident [ extends IdentC] [ implements IdentI [,IdentI]* ] { [ Atributos Métodos ]* Qualif:
Leia mais7 RTTI e Interfaces. Desenvolvimento OO com Java. Vítor E. Silva Souza (vitorsouza@inf.ufes.br) http://www.inf.ufes.
Desenvolvimento OO com Java 7 RTTI e Interfaces Vítor E. Silva Souza (vitorsouza@inf.ufes.br) http://www.inf.ufes.br/ ~ vitorsouza Departamento de Informática Centro Tecnológico Universidade Federal do
Leia maisProgramação OO em Java. Profa Andréa Schwertner Charão DELC/CT/UFSM
Programação OO em Java Profa Andréa Schwertner Charão DELC/CT/UFSM Sumário Classes abstratas Interfaces Tipos genéricos Coleções Introdução GUI Classes abstratas São classes que não podem ser instanciadas,
Leia maisIntrodução a Java. Hélder Nunes
Introdução a Java Hélder Nunes 2 Exercício de Fixação Os 4 elementos básicos da OO são os objetos, as classes, os atributos e os métodos. A orientação a objetos consiste em considerar os sistemas computacionais
Leia maisLição 9 Trabalhando com bibliotecas de classes
Lição 9 Trabalhando com bibliotecas de classes Introdução à Programação I 1 Objetivos Ao final da lição, o estudante deverá estar apto a: Explicar o que é programação orientada a objetos e alguns de seus
Leia maisEXERCÍCIOS SOBRE ORIENTAÇÃO A OBJETOS
Campus Cachoeiro de Itapemirim Curso Técnico em Informática Disciplina: Análise e Projeto de Sistemas Professor: Rafael Vargas Mesquita Este exercício deve ser manuscrito e entregue na próxima aula; Valor
Leia maisCURSO DE PROGRAMAÇÃO EM JAVA
CURSO DE PROGRAMAÇÃO EM JAVA Introdução para Iniciantes Prof. M.Sc. Daniel Calife Índice 1 - A programação e a Linguagem Java. 1.1 1.2 1.3 1.4 Linguagens de Programação Java JDK IDE 2 - Criando o primeiro
Leia maisProgramação de Computadores - I. Profª Beatriz Profº Israel
Programação de Computadores - I Profª Beatriz Profº Israel As 52 Palavras Reservadas O que são palavras reservadas São palavras que já existem na linguagem Java, e tem sua função já definida. NÃO podem
Leia maisImplementando uma Classe e Criando Objetos a partir dela
Análise e Desenvolvimento de Sistemas ADS Programação Orientada a Obejeto POO 3º Semestre AULA 04 - INTRODUÇÃO À PROGRAMAÇÃO ORIENTADA A OBJETO (POO) Parte: 2 Prof. Cristóvão Cunha Implementando uma Classe
Leia maisModulo IIa Extra: Object
Modulo IIa Extra: Object Professor Ismael H F Santos ismael@tecgraf.puc-rio.br April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 1 Bibliografia Linguagem de Programação JAVA Ismael H. F. Santos,
Leia maisAlgoritmos I Aula 13 Java: Tipos básicos, variáveis, atribuições e expressões
Algoritmos I Aula 13 Java: Tipos básicos, variáveis, atribuições e expressões Professor: Max Pereira http://paginas.unisul.br/max.pereira Ciência da Computação Primeiro Programa em Java public class OlaPessoal
Leia maisPrototype, um Design Patterns de Criação
Prototype, um Design Patterns de Criação José Anízio Pantoja Maia Este artigo tem como finalidade compreender o funcionamento do padrão de projeto prototype, serão abordados os participantes que compõe
Leia maisIntrodução à Programação. Interface, Polimorfismo e Dynamic Binding
Introdução à Programação Interface, Polimorfismo e Dynamic Binding Interface Programador Java PLENO Possuir sólida experiência em programação Desenvolvimento na linguagem JAVA Webservice, Struts ou JSF(desejável)
Leia maisCurso Adonai QUESTÕES Disciplina Linguagem JAVA
1) Qual será o valor da string c, caso o programa rode com a seguinte linha de comando? > java Teste um dois tres public class Teste { public static void main(string[] args) { String a = args[0]; String
Leia maisUnidade IV: Ponteiros, Referências e Arrays
Programação com OO Acesso em Java a BD Curso: Técnico em Informática Campus: Ipanguaçu José Maria Monteiro Pontifícia Universidade Católica do Rio de Janeiro PUC-Rio Departamento Clayton Maciel de Informática
Leia maisCurso Java Starter. www.t2ti.com 1
1 Apresentação O Curso Java Starter foi projetado com o objetivo de ajudar àquelas pessoas que têm uma base de lógica de programação e desejam entrar no mercado de trabalho sabendo Java, A estrutura do
Leia maisATRIBUTOS PRIVADOS 6. ENCAPSULAMENTO MÉTODOS PRIVADOS MÉTODOS PRIVADOS
ATRIBUTOS PRIVADOS Podemos usar o modificador private, para tornar um atributo privado, obtendo um controle centralizado Definimos métodos para implementar todas as lógicas que utilizam ou modificam o
Leia maisTabela de Símbolos. Análise Semântica A Tabela de Símbolos. Principais Operações. Estrutura da Tabela de Símbolos. Declarações 11/6/2008
Tabela de Símbolos Análise Semântica A Tabela de Símbolos Fabiano Baldo Após a árvore de derivação, a tabela de símbolos é o principal atributo herdado em um compilador. É possível, mas não necessário,
Leia maisComputação II Orientação a Objetos
Computação II Orientação a Objetos Fabio Mascarenhas - 2014.1 http://www.dcc.ufrj.br/~fabiom/java Classes abstratas Até agora, usamos interfaces toda vez que queríamos representar algum conceito abstrato
Leia maisLinguagem de Programação JAVA. Técnico em Informática Professora Michelle Nery
Linguagem de Programação JAVA Técnico em Informática Professora Michelle Nery Agenda Regras paravariáveis Identificadores Válidos Convenção de Nomenclatura Palavras-chaves em Java Tipos de Variáveis em
Leia maisPOO Programação Orientada a Objetos. Classes em Java
+ POO Programação Orientada a Objetos Classes em Java + Classes 2 Para que a JVM crie objetos: Ela precisa saber qual classe o objeto pertence Na classe estão definidos os atributos e métodos Programamos
Leia maisUFG - Instituto de Informática
UFG - Instituto de Informática Curso: Engenharia de Software Arquitetura de Software Prof.: Fabrízzio A A M N Soares professor.fabrizzio@gmail.com Aula 9 Mapeamento em JPA Introdução O mapeamento objeto-relacional
Leia maisJava 2 Standard Edition Como criar classes e objetos
Java 2 Standard Edition Como criar classes e objetos Helder da Rocha www.argonavis.com.br 1 Assuntos abordados Este módulo explora detalhes da construção de classes e objetos Construtores Implicações da
Leia maisProgramação Orientada a Objetos em java. Polimorfismo
Programação Orientada a Objetos em java Polimorfismo Polimorfismo Uma característica muito importante em sistemas orientados a objetos Termo proveniente do grego, e significa muitas formas Em POO, significa
Leia maisNoções sobre Objetos e Classes
Noções sobre Objetos e Classes Prof. Marcelo Cohen 1. Elementos de programação Revisão de programação variáveis, tipos de dados expressões e operadores cadeias de caracteres escopo de variáveis Revisão
Leia maisProgramação por Objectos. Java
Programação por Objectos Java Parte 6: Herança e Polimorfismo LEEC@IST Java 1/52 Herança revisão A herança é um mecanismo em que a subclasse constitui uma especialização da superclasse. A superclasse pode
Leia maisPROGRAMAÇÃO ESTRUTURADA. CC 2º Período
PROGRAMAÇÃO ESTRUTURADA CC 2º Período PROGRAMAÇÃO ESTRUTURADA Aula 06: Ponteiros Declarando e utilizando ponteiros Ponteiros e vetores Inicializando ponteiros Ponteiros para Ponteiros Cuidados a serem
Leia maisJAVA 1.5 na plataforma J2SE 5.0 Tiger Novas Construções, Sintaxe, Tipos e Polimorfismo
JAVA 1.5 na plataforma J2SE 5.0 Tiger Novas Construções, Sintaxe, Tipos e Polimorfismo GENERICS (Tipos Parametrizados, Classes Parametrizadas) : têm o objectivo de tornar as Colecções seguras em termos
Leia maisLógica de Programação
Lógica de Programação Unidade 20 ArrayList: Operações de Busca Curso Técnico em Informática SUMÁRIO INTRODUÇÃO... 3 TIPOS DE BUSCAS... 3 BUSCA ESPECÍFICA... 3 BUSCA ABRANGENTE... 3 PROCEDIMENTO DE BUSCA...
Leia maisAula 09 Introdução à Java. Disciplina: Fundamentos de Lógica e Algoritmos Prof. Bruno Gomes http://www.profbrunogomes.com.br/
Aula 09 Introdução à Java Disciplina: Fundamentos de Lógica e Algoritmos Prof. Bruno Gomes http://www.profbrunogomes.com.br/ Agenda da Aula Java: Sintaxe; Tipos de Dados; Variáveis; Impressão de Dados.
Leia maisProgramação Concorrente em java - Exercícios Práticos Abril 2004
Programação Concorrente em java - Exercícios Práticos Abril 2004 1. Introdução As threads correspondem a linhas de controlo independentes no âmbito de um mesmo processo. No caso da linguagem JAVA, é precisamente
Leia maisTabela de símbolos: tabelas de espalhamento
Tabela de símbolos: tabelas de espalhamento Marcelo K. Albertini 14 de Janeiro de 2014 2/28 Resumo de complexidades Análises para operação efetuada após N inserções pior caso caso médio keys chave get
Leia maisIntrodução à Programação
Introdução à Programação Introdução a Linguagem C Construções Básicas Programa em C #include int main ( ) { Palavras Reservadas } float celsius ; float farenheit ; celsius = 30; farenheit = 9.0/5
Leia maisOrientação a Objetos
Orientação a Objetos 1. Sobrecarga (Overloading) Os clientes dos bancos costumam consultar periodicamente informações relativas às suas contas. Geralmente, essas informações são obtidas através de extratos.
Leia maisLista de Contas: Assinatura. Lista de Contas. Listas de Contas: Descrição. Listas de Contas: Descrição. Listas de Contas: Descrição
Lista de Contas Lista de Contas: Assinatura null Quais são os métodos necessários? class ListaDeContas { void inserir (Conta c) { void retirar (Conta c) { Conta procurar (String num) { Listas de Contas:
Leia maisProgramação Orientada a Objetos. Encapsulamento
Programação Orientada a Objetos Encapsulamento de Dados Ocultação de dados Garante a transparência de utilização dos componentes do software, facilitando: Entendimento Reuso Manutenção Minimiza as interdependências
Leia maisReuso com Herança a e Composiçã
Java 2 Standard Edition Reuso com Herança a e Composiçã ção Helder da Rocha www.argonavis.com.br 1 Como aumentar as chances de reuso Separar as partes que podem mudar das partes que não mudam. Exemplo:
Leia maisAlgoritmos e Programação II. Sobrecarga
Algoritmos e Programação II Baseado no Material do Prof. Júlio Machado Sobrecarga Em várias linguagens é comum encontrarmos rotinas que fazem basicamente a mesma coisa, porém, têm nomes distintos porque
Leia maisESQUEMA AULA PRÁTICA 1 Familiarização com o Ambiente de Desenvolvimento NetBeans Introdução à Linguagem de Programação JAVA
P. Fazendeiro & P. Prata POO FP1/1 ESQUEMA AULA PRÁTICA 1 Familiarização com o Ambiente de Desenvolvimento NetBeans Introdução à Linguagem de Programação JAVA 0 Iniciar o ambiente de desenvolvimento integrado
Leia maisINTRODUÇÃO AO JAVA PARA PROGRAMADORES C
PROGRAMAÇÃO SERVIDOR EM SISTEMAS WEB INTRODUÇÃO AO JAVA PARA PROGRAMADORES C Prof. Dr. Daniel Caetano 2012-1 Objetivos Apresentar a grande semelhança entre Java e C Apresentar a organização diferenciada
Leia maisTabelas (arrays) (vetores, matrizes, etc) Algoritmos de pesquisa Algoritmos de ordenação
Java Tabelas (arrays) (vetores, matrizes, etc) Algoritmos de pesquisa Algoritmos de ordenação 1 Tabelas para quê? As tabelas são utilizadas quando se pretende armazenar e manipular um grande número de
Leia maisinsfcanceof new public switch transient while byte continue extends for int null
Palavras -chave de JAV A abstract catch do final implements long private static throw void boolean char double finally import native protected super throws volatile break class float insfcanceof new public
Leia maisRafael Santos. Instituto Nacional de Pesquisas Espaciais www.lac.inpe.br/ rafael.santos. Rafael Santos - www.lac.inpe.br/ rafael.
Coleções e Aplicações Rafael Santos Instituto Nacional de Pesquisas Espaciais www.lac.inpe.br/ rafael.santos Rafael Santos - www.lac.inpe.br/ rafael.santos 1 / 54 Tópicos 1 Sobre... 2 Revisão de Java 3
Leia maisLinguagens de. Aula 02. Profa Cristiane Koehler cristiane.koehler@canoas.ifrs.edu.br
Linguagens de Programação III Aula 02 Profa Cristiane Koehler cristiane.koehler@canoas.ifrs.edu.br Linguagens de Programação Técnica de comunicação padronizada para enviar instruções a um computador. Assim
Leia maisColeções. João Paulo Q. dos Santos
Coleções João Paulo Q. dos Santos joao.queiroz@ifrn.edu.br Roteiro Conceitos sobre coleções; Tipos de coleções; Como são classificadas; Exemplos. 04/02/14 2 Coleções Classes e interfaces do pacote java.util
Leia maisOPERADORES E ESTRUTURAS DE CONTROLE
OPERADORES E ESTRUTURAS DE CONTROLE 3.1 Operadores Os operadores indicam o tipo de operação matemática que será executada gerando novos valores a partir de um ou mais operadores. São muito utilizados em
Leia maisJava. Marcio de Carvalho Victorino www.dominandoti.eng.br
Java Marcio de Carvalho Victorino www.dominandoti.eng.br 3. Considere as instruções Java abaixo: int cont1 = 3; int cont2 = 2; int cont3 = 1; cont1 += cont3++; cont1 -= --cont2; cont3 = cont2++; Após a
Leia maisBacharelado em Ciência e Tecnologia Processamento da Informação. Equivalência Portugol Java. Linguagem Java
Linguagem Java Objetivos Compreender como desenvolver algoritmos básicos em JAVA Aprender como escrever programas na Linguagem JAVA baseando-se na Linguagem Portugol aprender as sintaxes equivalentes entre
Leia maisJava Coleções. Rodrigo C. de Azevedo
Java Coleções Rodrigo C. de Azevedo OMG Certified UML Professional Fundamental OMG Certified UML Professional Intermediate CompTIA Project+ Sun Certified Associate for Java Platform Sun Certified Programmer
Leia maisCurso de PHP. FATEC - Jundiaí. A programação orientada a objetos (object-oriented oriented programming
Curso de PHP FATEC - Jundiaí A programação orientada a objetos (object-oriented oriented programming OOP) é um conjunto de técnicas t para organizar o código c em torno de entidades ou objetos representados
Leia maisProgramação Java. em Ambiente Distribuído. Ênfase no Mapeamento Objeto-Relacional com JPA, EJB e Hibernate. Douglas Rocha Mendes.
Programação Java em Ambiente Distribuído Ênfase no Mapeamento Objeto-Relacional com JPA, EJB e Hibernate Douglas Rocha Mendes Novatec Copyright 2011 da Novatec Editora Ltda. Todos os direitos reservados
Leia maisAlgoritmos e Programação Estruturada
Algoritmos e Programação Estruturada Virgínia M. Cardoso Linguagem C Criada por Dennis M. Ritchie e Ken Thompson no Laboratório Bell em 1972. A Linguagem C foi baseada na Linguagem B criada por Thompson.
Leia maisUniversidade da Beira Interior. Sistemas Distribuídos
Folha 6-1 Sincronização de Threads A sincronização de Threads em Java é baseada no conceito do Monitor (de Hoare). Cada objecto Java tem associado um monitor (ou lock ) que pode ser activado se a palavra
Leia maisDEFINIÇÃO DE MÉTODOS
Cursos: Análise, Ciência da Computação e Sistemas de Informação Programação I - Prof. Aníbal Notas de aula 2 DEFINIÇÃO DE MÉTODOS Todo o processamento que um programa Java faz está definido dentro dos
Leia maisEspecialização em desenvolvimento para web com interfaces ricas. Tratamento de exceções em Java Prof. Fabrízzio A. A. M. N. Soares
Especialização em desenvolvimento para web com interfaces ricas Tratamento de exceções em Java Prof. Fabrízzio A. A. M. N. Soares Objetivos Conceito de exceções Tratar exceções pelo uso de try, catch e
Leia maisProgramação Orientada a Objetos
Programação Orientada a Objetos Engenharia da Computação Professor: Rosalvo Ferreira de Oliveira Neto Dados Pessoais Rosalvo Ferreira de Oliveira Neto MSc. em ciência da computação (UFPE) rosalvo.oliveira@univasf.edu.br
Leia maisImplementação de Classe e Auto-Relacionamento em Java
UTFPR DAELN - Disciplina de Fundamentos de Programação II ( IF62C ). 1 Implementação de Classe e Auto-Relacionamento em Java 1)Introdução Um modelo de Diagrama de Classes representa a estrutura definida
Leia maisGuia de Fatores de Qualidade de OO e Java
Qualiti Software Processes Guia de Fatores de Qualidade de OO e Java Versã o 1.0 Este documento só pode ser utilizado para fins educacionais, no Centro de Informática da Universidade Federal de Pernambuco.
Leia maisDesenvolvimento OO com Java Orientação a objetos básica
Desenvolvimento OO com Java Orientação a objetos básica Vítor E. Silva Souza (vitor.souza@ufes.br) http://www.inf.ufes.br/~vitorsouza Departamento de Informática Centro Tecnológico Universidade Federal
Leia maisPadrão Básico de Projeto: Interfaces e Polimorfismo
Padrão Básico de Projeto: Interfaces e Polimorfismo Herança de implementação versus herança de interface Há uma diferença grande entre uma classe e seu tipo A classe define ambos um tipo e uma implementação
Leia maisBCC221 Programação Orientada a Objetos. Prof. Marco Antonio M. Carvalho 2014/2
BCC221 Programação Orientada a Objetos Prof. Marco Antonio M. Carvalho 2014/2 Site da disciplina: http://www.decom.ufop.br/marco/ Moodle: www.decom.ufop.br/moodle Lista de e- mails: bcc221- decom@googlegroups.com
Leia maisTipos de Dados, Tipos Abstratos de Dados Estruturas de Dados
Tipos de Dados, Tipos Abstratos de Dados Estruturas de Dados Tipo de dados, tipo abstrato de dados, estruturas de dados Termos parecidos, mas com significados diferentes Tipo de dado Em linguagens de programação
Leia mais5. Generics, Iterators e Comparable em Java. Tipos de Dados Abstractos Generics em Java
5. Generics, Iterators e Comparable em Java Fernando Silva DCC-FCUP Estruturas de Dados Fernando Silva (DCC-FCUP) 5. Generics, Iterators e Comparable em Java Estruturas de Dados 1 / 12 Tipos de Dados Abstractos
Leia maisESQUEMA AULA PRÁTICA 1 Familiarização com o Ambiente de Desenvolvimento Eclipse Introdução à Linguagem de Programação JAVA
P. Fazendeiro & P. Prata POO FP1/1 ESQUEMA AULA PRÁTICA 1 Familiarização com o Ambiente de Desenvolvimento Eclipse Introdução à Linguagem de Programação JAVA 0 Inicie o ambiente de desenvolvimento integrado
Leia mais15-09-2009. Membros de classe e de instância. PARTE III: Java e OO - detalhes. Exemplo 1: método. Exercício. Exemplo 1 corrigido
PARTE III: Java e OO - detalhes Membros de classe e instâncias Pacotes Visibilidade Classes aninhadas Membros de classe e de instância De classe Static Método não necessita de objeto para ser chamado.
Leia maisIntrodução ao PHP. Prof. Késsia Marchi
Introdução ao PHP Prof. Késsia Marchi PHP Originalmente PHP era um assíncrono para Personal Home Page. De acordo com convenções para atribuições de nomes recursivas do GNU foi alterado para PHP Hypertext
Leia maisRelacionamentos entre objetos. Relacionamentos entre objetos. Relacionamentos entre objetos. Relacionamentos entre objetos
Programação Orientada a Objetos Relacionamentos entre objetos Associação, composição e agregação Construtores e sobrecarga Variáveis de classe e de instância Reinaldo Gomes reinaldo@cefet-al.br Objetos
Leia maisAula 2. Objetivos. Encapsulamento na linguagem Java; Utilizando a referência this.
Aula 2 Objetivos Encapsulamento na linguagem Java; Utilizando a referência this. Encapsulamento, data hiding é um conceito bastante importante em orientação a objetos. É utilizado para restringir o acesso
Leia maisAPI e Coleções Java. Sérgio Luiz Ruivace Cerqueira
API e Coleções Java Sérgio Luiz Ruivace Cerqueira sergioruivace@gmail.com Java API Introdução API Endereço http://download.oracle.com/javase/6/docs/api/ API - Descrição API - Resumo API - Detalhes Coleções
Leia maisCapítulo 5 Reuso de Classes
Java and all Java-based marks are trademarks or registered trademarks of Sun Microsystems, Inc. in the U.S. and other countries. Desenvolvimento Orientado a Objetos com Java Capítulo 5 Reuso de Classes
Leia maisUNIVERSIDADE FEDERAL DO PARANÁ
CURSO: Ciência da Computação DATA: / / 2013 PERÍODO: 4 o. PROFESSOR: Andrey DISCIPLINA: Técnicas Alternativas de Programação AULA: 05 APRESENTAÇÃO: Nesta aula vamos ver como se faz a criação de Métodos
Leia maisPossui como idéia central a divisão de um universo de dados a ser organizado em subconjuntos mais gerenciáveis.
3. Tabelas de Hash As tabelas de hash são um tipo de estruturação para o armazenamento de informação, de uma forma extremamente simples, fácil de se implementar e intuitiva de se organizar grandes quantidades
Leia maisLinguagem de Programação III
Linguagem de Programação III Aula-3 Criando Classes em Java Prof. Esbel Tomás Valero Orellana Da Aula Anterior Classes em Java, sintaxe básica Tipos básicos de dados em Java, como escolher o tipo apropriado
Leia maisCurso de Java. Orientação a objetos e a Linguagem JAVA. TodososdireitosreservadosKlais
Curso de Java Orientação a objetos e a Linguagem JAVA Roteiro A linguagem Java e a máquina virtual Objetos e Classes Encapsulamento, Herança e Polimorfismo Primeiro Exemplo A Linguagem JAVA Principais
Leia maisINSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE ALAGOAS CURSO TECNICO EM INFORMATICA DISCIPLINA:
INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE ALAGOAS CURSO TECNICO EM INFORMATICA DISCIPLINA: PROGRAMAÇÃO ORIENTADA A OBJETOS PROFESSOR: REINALDO GOMES ASSUNTO: REVISÃO DA INTRODUÇÃO A ORIENTAÇÃO
Leia maisMemory Leak em Java?
1 Memory Leak em Java? Saiba como memory leaks se manifestam em Java e como evitá-los Sobre o Autor Carlos Eduardo G. Tosin (carlos@tosin.com.br) é formado em Ciência da Computação pela PUC-PR, pós-graduado
Leia maisComo foi exposto anteriormente, os processos podem ter mais de um fluxo de execução. Cada fluxo de execução é chamado de thread.
5 THREADS Como foi exposto anteriormente, os processos podem ter mais de um fluxo de execução. Cada fluxo de execução é chamado de thread. 5.1 VISÃO GERAL Uma definição mais abrangente para threads é considerá-lo
Leia maisKeeper of Knowledge. Capítulo 1 Conceitos Básicos do Java
Capítulo 1 Conceitos Básicos do Java INTRODUÇÃO O objectivo deste tutorial é ensinar as regras básicas de programação em Java e facilitar a aprendizagem dos capítulos que se seguem. Qualquer dúvida sobre
Leia maisVisual Basic e Java. À primeira vista o Java é completamente diferente do Visual Basic. Realmente as duas linguagens pertencem a mundos distintos.
Visual Basic e Java À primeira vista o Java é completamente diferente do Visual Basic. Realmente as duas linguagens pertencem a mundos distintos. No entanto, elas compartilham uma série de funcionalidades.
Leia maisProgramação Orientada a Objetos em Java. Herança
Universidade Federal do Amazonas Departamento de Ciência da Computação IEC481 Projeto de Programas Programação Orientada a Objetos em Java Herança Professor: César Melo Slides baseados em materiais preparados
Leia maisComputação II Orientação a Objetos
Computação II Orientação a Objetos Fabio Mascarenhas - 2014.1 http://www.dcc.ufrj.br/~fabiom/java Introdução Esse não é um curso de Java! O objetivo é aprender os conceitos da programação orientada a objetos,
Leia maisInterfaces. Interfaces: Exemplo. ! São um mecanismo poderoso para ter bons desenhos pois permitem separar contratos das implementações
Interfaces! São um mecanismo poderoso para ter bons desenhos pois permitem separar contratos das implementações! Definem, tais como as classes, tipos mas não têm implementação! Podem declarar o constantes
Leia mais