Introdução à Linguagem Java O que é JAVA? Java é uma linguagem de programação orientada a objetos e desenvolvida pela Sun Microsystems na década de 90, que atualmente, pertence a Oracle. Instalando o JAVA Java tem suporte para Windows, Mac e Linux. http://www.oracle. com/technetwork/pt/java/javase/downloads/ind ex.html Classe JAVA Classe é a representação de um objeto, ela possui atributos e comportamentos (métodos). Uma classe pode ser utilizada para instanciar n objetos Classe JAVA Atributos Métodos Tipos de dados primitivos boolean Possui os valores true ou false. char Unicode de 16 bits. Pode armazenar dados alfanúmericos. byte Inteiro de 8 bits. Possui o range entre -27 = -128 e 27 - 1 = 127. short Inteiro de 16 bits. Possui o range entre -215 = -32.768 e 215 - 1 = 32.767. int Inteiro de 32 bits. Possui o range entre -231 = -2.147.483.648 e 231 - 1 = 2.147.483.647. long Inteiro de 64 bits. Possui o range entre -263 e 263 - 1 float Números de ponto flutuante de 32 bits double Números de ponto flutuante de 64 bits Tipos de métodos e variáveis Toda variável (incluindo atributos) e método em Java é tipada. O tipo pode ser primitivo ou um Objeto. Os métodos podem ter tipos de retorno ou serem void, quando não retornam nenhum valor após serem executados. Construindo classes As classes possuem construtores que quando invocados criam uma instância da sua classe. Construindo classes Construtor Construindo classes O linha new Carro() invoca o construtor da classe Carro, alocando memória para o objeto e inicializando os seus atributos. Construindo classes A figura ao lado mostra como o objeto meuCarro é alocado na memória. meuCarro Cor Modelo Preto Gol Pacotes Toda classe em Java pertence a um pacote. Um pacote é um grupo de classes que tem funcionalidades similares no projeto. Pacotes Para utilizar classes de pacotes diferentes, é preciso utilizar os comandos de import. Ex: Para utilizar a classe Math do Java, devese importa-la com o comando: import java.lang.math Escopo Toda classe tem um escopo, que é delimitado por chaves {}. Isso siginifica que tudo que estiver dentro das chaves da classe pertence a ela. O mesmo vale para métodos, laços e condicionais. Escopo Inicio do escopo da classe Inicio do escopo do método Fim do escopo do método Fim do escopo da classe Expressões Operador Descrição - (Unário) Negativa um Valor. Ex: -x * Multiplicação / Divisão + Adição - Subtração % Módulo Operadores ++ e -int x = 3; x++; // incrementa x em uma unidade x--; // decrementa x em uma unidade Operador Ternário (expressão booleana)? resultado se for true: resultado se for false int x = 10; int y = 20; System.out.println(”O maior número é:” + x > y ? x : y); Atribuição de variáveis int x = 10; x += 10 // x = x + 10 x -= 10 // x = x - 10 x *= 10 // x = x * 10 x /= 10 // x = x / 10 Operadores Lógicos - And And (&) ou (&&) A B A&B V V V V F F F V F F F F Operadores Lógicos - Or And (|) ou (||) A B A|B V V V V F V F V V F F F Operadores Lógicos - XOr And (^) A B A^B V V F V F V F V V F F F Operadores Lógicos - Not Not (!) A !A V F F V boolean isOpen = true; isOpen := !isOpen; // inverte o valor de isOpen. Estruturas condicionais O Java possui estruturas de condição. São elas: if, switch Estruturas condicionais - if if (expresão booleana) { //ação executada quando a expressão é verdadeira. } else { //Executada quando a expressão não é verdadeira. } Estruturas condicionais - If Estruturas condicionais - switch switch(identificador) { case 1: //Ação para o caso 1; break; case 2: //Ação para o caso 2; break; default: //Ação executada quando nenhum caso é atendido } Estruturas condicionais - switch Looping For for (contador ; condição ; incremento ) { //Ação executada } for (int i = 1; i < 10 ; i++ ) { //código executado em loop } Looping while while (condição ) { //Ação executada } while (i < 10) { //código executado em loop } Looping do while do { //Ação executada } while (condição); do { //código executado em loop } while (x > 10) Looping for each ArrayList carros = new ArrayList(); for (Carro carro : carros) { } Comando break for (int i = 0 ; i < 10 ; i++) { if (i == 4) { break; // Finaliza todo o looping for. } System.out.println("i: " + i); } Comando continue for (int i = 0 ; i < 10 ; i++) { if (i == 4) { continue; // Finaliza a iteração atual e vai para a próxima } System.out.println("i: " + i); } Modificadores de Acesso ● Java possui quatro modificadores de acesso: public, protected, private e default. ● Esses modificadores podem ser utilizados tanto para métodos como para atributos Modificadores de Acesso ● Quando um atributo ou método é privado (private), apenas a própria classe consegue acessá-lo Modificadores de Acesso ● Quando um atributo ou método é público (public), qualquer classe do projeto pode acessá-lo. Modificadores de Acesso ● É possível declarar métodos e variáveis sem definir o seu modificador de acesso. Nesse caso, dizemos que o modificador é default. ● Com o modificador default, o método ou atributo é visível por todas as classes que estão no mesmo pacote. ● Ex: void print(){ System.out.println(“Metodo com acesso default”);} Modificadores de Acesso ● O modificador protected tem um comportamento similar ao default, ou seja, todos os membros de um mesmo pacote conseguem enxergar os atributos e métodos protected ● A diferença é relacionada a herança, quando um método ou atributo é protected, as classes filhas da classe dona do método ou atributo conseguem acessa-los, mesmo que as classes estejam em pacotes diferentes Classes e Subclasses ● A classe mãe de todas as classes do Java é a Object. ● Quando uma classe é subclasse de outra, ela herda os atributos e métodos da classe mãe. E consegue acessá-los diretamente se eles são protected. ● Crie uma subclasse basta usar a palavra chave extends Classes e Subclasses Classes e Subclasses ● Em qualquer lugar onde a classe Veiculo seria utilizada, é possível utilizar a classe Carro, pois ao herdar de Veiculo, Carro passa a ser uma classe especializada de Veiculo. ● É possível instanciar um Veiculo com um objeto do tipo Carro: Veiculo veiculo = new Carro(); Classes e Subclasses ● Em um método que requer um Veiculo, é possivel utilizar um carro como parametro: int getNumeroRodas(Veiculo v){...} Carro c = new Carro(); getNumeroRodas(c); Classes e Subclasses ● Esse poder do Objeto de assumir várias formas através de herança é chamado de Polimorfismo ● As classes herdeiras podem redefinir os métodos da classe pai, desde que mantenham a assinatura. Isso é chamado de sobrescrita (Override). Quando um método redefinido for chamado, mesmo que a classe filha esteja encapsulada, a sua implementação do método é que será executada. Polimorfismo Classes e Subclasses Classes e Subclasses ● Caso seja necessário, a implementação do método original da classe pai também pode ser utilizado através do comand super. Classes e Subclasses ● O mesmo vale para construtores. Porém o construtor de uma classe pai sempre deve executar primeiro. Caso você não chame o construtor da classe pai explicitamente, ele será chamado automaticamente. Classes Abstratas ● É possível definir classes que não podem ser instanciadas em Java. Essas classes são chamadas de abstratas. ● Elas são utilizadas para definir métodos que sejam comuns a qualquer classe que possam potencialmente herdar dela. As classes abstratas também podem ter atributos. Classes Abstratas Interfaces ● Interfaces são utilizadas para definir comportamentos. ● Elas funcionam como contratos, qualquer classe que implementa uma interface deve criar os métodos com a mesma assinatura que está definida na interface ● Ao contrário da classe abstrata a interface não pode ter atributos e nem definir corpo de métodos Exceções Exceções em Java servem para indicar a ocorrência de erros ou comportamentos inesperados do sistema. Existem dois tipos: Exceções de runtime e Exceções checadas Exceções As exceções de runtime não devem ser capturadas, pois quando ocorrem, o problema está na codificação. Ex: NullPointerException e ArrayIndexOutOfBOundsException Exceções As exceções checadas devem ser tratadas. Por exemplo ao lidar com arquivos, uma exceção do tipo IOException pode ser lançada e isso não ocorre por defeitos no código e sim por erros que podem ocorrer no processo. Exceções Para tratar uma exceção, o trecho de código que pode lançar uma exceção fica dentro do escopo do comando try. Em seguida desse bloco, deve-se escrever um comando catch para cada exceção que se quer tratar. Exceções Exceções É possível ainda lançar a exceção para os métodos que irão chamar o método atual. Através do comando throws na assinatura do método. Se um método tem o comando throws, qualquer método que o chama deve tratar ou passar adiante a exceção. Exceções Exceções Para lançar uma exceção de dentro do escopo de um método, é necessário utilizar o comando throw e instanciar uma nova classe de exceção. Para criar uma nova exceção, bastar criar uma classe que extenda da classe Exception. Exceções