Especialização em web com interfaces ricas

Tamanho: px
Começar a partir da página:

Download "Especialização em web com interfaces ricas"

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

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 mais

Coleçõ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 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 mais

BSI UFRPE Prof. Gustavo Callou gcallou@gmail.com

BSI 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 mais

Orientação a Objetos

Orientaçã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 mais

Prof. Fernando V. Paulovich 8 de novembro de SCC Programação Orientada a Objetos

Prof. 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 mais

ARRAYS. Um array é um OBJETO que referencia (aponta) mais de um objeto ou armazena mais de um dado primitivo.

ARRAYS. 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 mais

Laborató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.

Laborató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 mais

Módulo 06 Desenho de Classes

Mó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 mais

JSP - ORIENTADO A OBJETOS

JSP - 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 mais

Slide 1 Deitel/Deitel, 8e. Java Como programar Copyright 2010 Pearson Education

Slide 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 mais

Técnicas de Programação II

Té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 mais

Coleçõ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 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 mais

3 Classes e instanciação de objectos (em Java)

3 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 mais

2 Orientação a objetos na prática

2 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 mais

5 Caso de estudo O cartão fidelidade

5 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 mais

Programaçã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 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 mais

Paradigmas da Programação PPROG. Linguagem JAVA. Interfaces. (Livro Big Java, Late Objects Capítulo 9) Nelson Freire (ISEP DEI-PPROG 2013/14) 1/33

Paradigmas 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 mais

Universidade da Beira Interior Cursos: Matemática /Informática e Ensino da Informática

Universidade 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 mais

Programação por Objectos. Java

Programaçã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 mais

7 RTTI e Interfaces. Desenvolvimento OO com Java. Vítor E. Silva Souza (vitorsouza@inf.ufes.br) http://www.inf.ufes.

7 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 mais

Programaçã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 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 mais

Introdução a Java. Hélder Nunes

Introduçã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 mais

Lição 9 Trabalhando com bibliotecas de classes

Liçã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 mais

EXERCÍCIOS SOBRE ORIENTAÇÃO A OBJETOS

EXERCÍ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 mais

CURSO DE PROGRAMAÇÃO EM JAVA

CURSO 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 mais

Programação de Computadores - I. Profª Beatriz Profº Israel

Programaçã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 mais

Implementando uma Classe e Criando Objetos a partir dela

Implementando 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 mais

Modulo IIa Extra: Object

Modulo 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 mais

Algoritmos 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 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 mais

Prototype, um Design Patterns de Criação

Prototype, 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 mais

Introdução à Programação. Interface, Polimorfismo e Dynamic Binding

Introduçã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 mais

Curso Adonai QUESTÕES Disciplina Linguagem JAVA

Curso 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 mais

Unidade IV: Ponteiros, Referências e Arrays

Unidade 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 mais

Curso Java Starter. www.t2ti.com 1

Curso 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 mais

ATRIBUTOS PRIVADOS 6. ENCAPSULAMENTO MÉTODOS PRIVADOS MÉTODOS PRIVADOS

ATRIBUTOS 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 mais

Tabela 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. 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 mais

Computação II Orientação a Objetos

Computaçã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 mais

Linguagem 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 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 mais

POO Programação Orientada a Objetos. Classes em Java

POO 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 mais

UFG - Instituto de Informática

UFG - 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 mais

Java 2 Standard Edition Como criar classes e objetos

Java 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 mais

Programação Orientada a Objetos em java. Polimorfismo

Programaçã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 mais

Noções sobre Objetos e Classes

Noçõ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 mais

Programação por Objectos. Java

Programaçã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 mais

PROGRAMAÇÃO ESTRUTURADA. CC 2º Período

PROGRAMAÇÃ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 mais

JAVA 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 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 mais

Lógica de Programação

Ló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 mais

Aula 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/ 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 mais

Programação Concorrente em java - Exercícios Práticos Abril 2004

Programaçã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 mais

Tabela de símbolos: tabelas de espalhamento

Tabela 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 mais

Introdução à Programação

Introduçã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 mais

Orientação a Objetos

Orientaçã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 mais

Lista de Contas: Assinatura. Lista de Contas. Listas de Contas: Descrição. Listas de Contas: Descrição. Listas de Contas: Descrição

Lista 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 mais

Programação Orientada a Objetos. Encapsulamento

Programaçã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 mais

Reuso com Herança a e Composiçã

Reuso 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 mais

Algoritmos e Programação II. Sobrecarga

Algoritmos 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 mais

ESQUEMA AULA PRÁTICA 1 Familiarização com o Ambiente de Desenvolvimento NetBeans Introdução à Linguagem de Programação JAVA

ESQUEMA 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 mais

INTRODUÇÃO AO JAVA PARA PROGRAMADORES C

INTRODUÇÃ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 mais

Tabelas (arrays) (vetores, matrizes, etc) Algoritmos de pesquisa Algoritmos de ordenação

Tabelas (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 mais

insfcanceof new public switch transient while byte continue extends for int null

insfcanceof 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 mais

Rafael Santos. Instituto Nacional de Pesquisas Espaciais www.lac.inpe.br/ rafael.santos. Rafael Santos - www.lac.inpe.br/ rafael.

Rafael 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 mais

Linguagens de. Aula 02. Profa Cristiane Koehler cristiane.koehler@canoas.ifrs.edu.br

Linguagens 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 mais

Coleções. João Paulo Q. dos Santos

Coleçõ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 mais

OPERADORES E ESTRUTURAS DE CONTROLE

OPERADORES 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 mais

Java. Marcio de Carvalho Victorino www.dominandoti.eng.br

Java. 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 mais

Bacharelado em Ciência e Tecnologia Processamento da Informação. Equivalência Portugol Java. Linguagem Java

Bacharelado 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 mais

Java Coleções. Rodrigo C. de Azevedo

Java 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 mais

Curso 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 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 mais

Programaçã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. 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 mais

Algoritmos e Programação Estruturada

Algoritmos 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 mais

Universidade da Beira Interior. Sistemas Distribuídos

Universidade 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 mais

DEFINIÇÃO DE MÉTODOS

DEFINIÇÃ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 mais

Especializaçã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 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 mais

Programação Orientada a Objetos

Programaçã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 mais

Implementação de Classe e Auto-Relacionamento em Java

Implementaçã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 mais

Guia de Fatores de Qualidade de OO e Java

Guia 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 mais

Desenvolvimento OO com Java Orientação a objetos básica

Desenvolvimento 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 mais

Padrão Básico de Projeto: Interfaces e Polimorfismo

Padrã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 mais

BCC221 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 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 mais

Tipos de Dados, Tipos Abstratos de Dados Estruturas de Dados

Tipos 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 mais

5. Generics, Iterators e Comparable em Java. Tipos de Dados Abstractos Generics em Java

5. 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 mais

ESQUEMA AULA PRÁTICA 1 Familiarização com o Ambiente de Desenvolvimento Eclipse Introdução à Linguagem de Programação JAVA

ESQUEMA 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 mais

15-09-2009. Membros de classe e de instância. PARTE III: Java e OO - detalhes. Exemplo 1: método. Exercício. Exemplo 1 corrigido

15-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 mais

Introdução ao PHP. Prof. Késsia Marchi

Introduçã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 mais

Relacionamentos entre objetos. Relacionamentos entre objetos. Relacionamentos entre objetos. Relacionamentos entre objetos

Relacionamentos 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 mais

Aula 2. Objetivos. Encapsulamento na linguagem Java; Utilizando a referência this.

Aula 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 mais

API e Coleções Java. Sérgio Luiz Ruivace Cerqueira

API 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 mais

Capítulo 5 Reuso de Classes

Capí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 mais

UNIVERSIDADE FEDERAL DO PARANÁ

UNIVERSIDADE 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 mais

Possui como idéia central a divisão de um universo de dados a ser organizado em subconjuntos mais gerenciáveis.

Possui 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 mais

Linguagem de Programação III

Linguagem 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 mais

Curso de Java. Orientação a objetos e a Linguagem JAVA. TodososdireitosreservadosKlais

Curso 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 mais

INSTITUTO 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: 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 mais

Memory Leak em Java?

Memory 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 mais

Como foi exposto anteriormente, os processos podem ter mais de um fluxo de execução. Cada fluxo de execução é chamado de thread.

Como 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 mais

Keeper of Knowledge. Capítulo 1 Conceitos Básicos do Java

Keeper 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 mais

Visual 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. 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 mais

Programação Orientada a Objetos em Java. Herança

Programaçã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 mais

Computação II Orientação a Objetos

Computaçã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 mais

Interfaces. Interfaces: Exemplo. ! São um mecanismo poderoso para ter bons desenhos pois permitem separar contratos das implementações

Interfaces. 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