5COP088 – Laboratório de Programação Aula 1 – Java 5COP088 Laboratório de Programação Aula 1 Java Prof. Dr. Sylvio Barbon Junior Sylvio Barbon Jr – [email protected] 1 5COP088 – Laboratório de Programação Aula 1 – Java Sobre o Professor – Dr. Sylvio Barbon Junior Formação: Ciência e Engenharia da Computação (2005 e 2008) – São José do Rio Preto, Mestrado em Física Computacional (2007) – São Carlos, Doutorado em Física Computacional (2011) – São Carlos. Experiência Acadêmica: Docente no Senac (2008 -2010), Universidade do Estado de Minas Gerais (2008 – 2012), Faculdade de Tecnologia de São José do Rio Preto (2010 – 2012), UEL (2013). Experiência Não Acadêmica: Analista desenvolvedor Riosoft (2004 – 2006) e Gerente de Projetos Net-Fit (2008-2011). Certificado SCJP. Áreas de Interesse: Processamento de Sinais (Imagem e Áudio) e Mineração de Dados. Projetos de Mineração de Texto em Redes Sociais, Reconhecimento de Patologias Mentais pela Voz e Reconhecimento de Imagens Médicas. Sylvio Barbon Jr – [email protected] 2 5COP088 – Laboratório de Programação Aula 1 – Java Ementa – Laboratório de Programação “Estudo e prática de linguagens de programação de alto nível” Objetivo: Revisar e nivela os conhecimentos em linguagens de programação estruturada e prática de programação orientada a objetos. Conteúdo Programático: 1) Declaração e Controle de Acesso; 2) Orientação a Objetos; 3) Atribuições; 4) Operadores; 5) Controle de Fluxo, Exceções e Assertivas; 6) Strings, Entrada e Saída, Formatação e Parsing; 7) Genéricos e Conjuntos; 8) Classes Internas; 9) Threads; 10) JSP e Servlets. Sylvio Barbon Jr – [email protected] 3 5COP088 – Laboratório de Programação Aula 1 – Java Aula 1 – Introdução [Java] 5COP088 – Laboratório de Programação Aula 1 – Java Aula 1 – Introdução [Java] Motivos para se estudar Java: - Linguagem Simples; - Linguagem Orientada a Objetos; - Multithread; - Interpretada (vantagem?); - Independência de Arquitetura (Hardware e Software); - Portabilidade (Linux, Mac, Windows etc); - Alto desempenho (garbage collector); - Robusta (tipagem rígida, inicialização automática, exceções). 5COP088 – Laboratório de Programação Aula 1 – Java Aula 1 – Declarações e Controle de Acesso Identificadores - Os identificadores podem começar com uma letra, underline ou um caractere monetário; - Depois do primeiro caractere, pode-se incluir dígitos; - Os identificadores podem ter qualquer comprimento; - Os métodos deve ser nomeados usando “camelCase”, dependendo do propósito devem começar com set, get, is, add ou remove. class Aula1 { public int idade; public int _idade; public int iDaDe; // não gera erro, apenas fora do padrão camelCase } 5COP088 – Laboratório de Programação Aula 1 – Java Aula 1 – Declarações e Controle de Acesso Método principal de inicialização - publico (public); - estático (static); - sem retorno (void); - chamado “main”; - parâmetro deve ser um vetor de String (String[] args) Erro: Ausência do método principal Error: Main method not found in class Aula1, please define the main method as: public static void main(String[] args) Classe com método principal class Aula1_2{ public static void main (String[] args) { System.out.println("Argumento - " + args[0]); } } 5COP088 – Laboratório de Programação Aula 1 – Java Aula 1 – Declarações e Controle de Acesso Comandos java e javac - javac é o comando de compilação java, deve ser passado como parâmetro uma classe java (fonte “.java”)e será gerado uma classe compilada (.class) . Compilando classe Java javac Aula1_2.java - java é o comando para invocar a JVM (Java Virtual Machine) Executando classe Java java Aula1_2 Executando classe Java com parâmetro java Aula1_2 MeuParametro 5COP088 – Laboratório de Programação Aula 1 – Java Aula 1 – Declarações e Controle de Acesso Identificadores Classes utilizando a Modelagem UML com o Diagrama de Classes 5COP088 – Laboratório de Programação Aula 1 – Java Aula 1 – Declarações e Controle de Acesso Regras de declaração - Um arquivo de código fonte só pode ter uma classe pública; - O nome do arquivo deve coincidir com o dessa classe; - O arquivo só pode ter uma instrução de pacote; - Um arquivo pode ter várias instruções; - A instrução de pacote deve ficar na primeira linha do código; - A instrução de importação deve vir depois do pacote; - O arquivo pode ter mais de uma classe não pública; - Se os arquivos não tiverem classes públicas, não há restrição para o nome; 5COP088 – Laboratório de Programação Aula 1 – Java Aula 1 – Declarações e Controle de Acesso Regras de declaração Classe com método principal package uel; Executando classe java uel.Aula1_3 5 2 import javax.swing.*; public class Aula1_3{ public static void main(String[] args){ int a = Integer.parseInt(args[0]); int b = Integer.parseInt(args[1]); int soma = a + b; JOptionPane.showMessageDialog(null, "A soma é \""+soma+"\"", "Resultado", JOptionPane.WARNING_MESSAGE); // JOptionPane.ERROR_MESSAGE } } 5COP088 – Laboratório de Programação Aula 1 – Java Aula 1 – Declarações e Controle de Acesso Identificadores Classe utilizando a Modelagem UML com o Diagrama de Classes 5COP088 – Laboratório de Programação Aula 1 – Java Aula 1 – Declarações e Controle de Acesso Modificadores de acesso a classe - Três modificadores: public, protected e private; - Quatro níveis: public, protected, default e private; - As classes só tem acesso public e default; Private Default Protected Public 5COP088 – Laboratório de Programação Aula 1 – Java Aula 1 – Declarações e Controle de Acesso Modificadores de classe (não se referem a acesso) - As classes podem ser: final, abstract ou strictfp; - Uma classe não pode final e abstract; - Uma classe final não pode ter subclasse; - Uma classe abstract não pode ser instanciada; - Uma classe somente com um método abstract significa que a classe inteira deve ser abstract; - Uma classe abstract pode ter métodos abstracts ou não; - A primeira classe concreta a estender uma classe abstract terá que implementar todos os métodos abstracts. 5COP088 – Laboratório de Programação Aula 1 – Java Aula 1 – Declarações e Controle de Acesso Modificadores de classe (não se referem a acesso) Classe Mãe ou Superclasse package uel; public class Aula1_4{ public int totalSuperclasse; public int totalClasse; private int totalRestrito; } 5COP088 – Laboratório de Programação Aula 1 – Java Aula 1 – Declarações e Controle de Acesso Modificadores de classe (não se referem a acesso) Classe Filha ou subclasse package uel; public class Aula1_5 extends Aula1_4{ public int totalClasse; public static void main(String args[]){ new Aula1_5(); } // continuação no outro slide } 5COP088 – Laboratório de Programação Aula 1 – Java Aula 1 – Declarações e Controle de Acesso Modificadores de classe (não se referem a acesso) Classe Filha ou subclasse (continuação) public Aula1_5(){ totalClasse = 1; super.totalClasse = 2; totalSuperclasse = 3; super.totalSuperclasse = 4; System.out.println("O total na classe é "+totalClasse); System.out.println("O total na classe é "+super.totalClasse); System.out.println("O total na classe é "+totalSuperclasse); System.out.println("O total na classe é "+super.totalSuperclasse); } 5COP088 – Laboratório de Programação Aula 1 – Java Aula 1 – Declarações e Controle de Acesso Implementação de Interfaces - As interfaces são contratos que definem o que a classe poderá fazer, mas não dizem nada sobre a maneira pela qual ela deverá fazê-lo. - As interfaces pode ser implementadas por qualquer classe, de qualquer árvore de herança; - A interface é como uma classe 100% abstract; - Uma interface só pode ter métodos abstracts, nenhum método concreto é permitido; - Os métodos das interfaces são por padrão public e abstracts, sendo a declaração explícita um opcional; - As interfaces podem ter constantes que serão sempre implicitamente public, static e final; 5COP088 – Laboratório de Programação Aula 1 – Java Aula 1 – Declarações e Controle de Acesso Implementação de Interfaces - Uma classe de implementação de uma interface que seja “não-abstract” válida, deverá: > Fornecer a implementação concreta dos métodos; > Deve seguir todas as regras de sobrecarga válida; > Não deve declarar nenhuma exceção nova; > Não deve declarar nenhuma exceção + abrangente. > Pode declarar exceções de tempo de execução; > Deve manter a assinatura e retorno dos métodos; - Uma classe que estiver implementando uma interface pode ser abstract; - Uma classe de implementação abstract não precisa implementar todos os métodos da interface; - A classe pode implementar várias interfaces; 5COP088 – Laboratório de Programação Aula 1 – Java Aula 1 – Declarações e Controle de Acesso Implementação de Interfaces - As interfaces não podem estender uma classe ou implementar uma classe ou interface; 5COP088 – Laboratório de Programação Aula 1 – Java Aula 1 – Declarações e Controle de Acesso Modificadores de acesso a membros - Os métodos e variáveis de instância são conhecidos como membros; - Os membros podem usar os quatro níveis de acesso; - Se uma classe não puder ser acessada, seus métodos também não serão; - Se um membro da superclasse for public, a subclasse o herdará; - Membros acessados sem o operador “.” pertencem a mesma classe; - A palavra reservada this refere-se ao objeto em execução em determinado momento; - Os membros private só podem ser acessados por membros da mesma classe; 5COP088 – Laboratório de Programação Aula 1 – Java Aula 1 – Declarações e Controle de Acesso Modificadores de acesso a membros - Os membros default e protected só diferem quando subclasses estão envolvidas; - Os membros protected só podem ser acessados por outras classes de mesmo pacotes; - As declarações de variáveis locais não podem ter modificadores de acesso; - final é o único modificador disponível para variáveis locais; - As variáveis locais não recebem valores padrão, assim devem ser inicializadas antes do uso; 5COP088 – Laboratório de Programação Aula 1 – Java Aula 1 – Declarações e Controle de Acesso Outros modificadores - Os métodos final não podem ser sobrecarregados dentro de uma subclasse; - Os métodos abstract terminam com “;” e não com chaves; - Um método não é abstrata : > Quando não é marcado como abstract; > Quando possui chaves; > Quando possui um código entre as chaves; - A primeira classe não abstrata a estender uma classe abstract deve implementar todos os métodos abstract dessa; - O modificador synchronized só é aplicado a métodos e blocos de códigos - O método abstract não pode ser final nem private. 5COP088 – Laboratório de Programação Aula 1 – Java Aula 1 – Declarações e Controle de Acesso Declaração de Array - Os arrays podem armazenar tipos primitivos ou objetos, mas o array propriamente dito é sempre um objeto; - Quando você declara um array, os colchetes podem ficar à esquerda ou à direita do nome da variável; - Nunca é válido incluir o tamanho do array na declaração; Declaração de Array - Não são associados a nenhuma instância específica da classe; - Não é necessária a existência da instância de uma classe para que os membros static desta sejam usados; - Só haverá uma cópia da variável ou classe static e todas as instâncias a compartilharão; - Os métodos static não têm acesso direto a não-static; 5COP088 – Laboratório de Programação Aula 1 – Java Referências Deitel,P.; Deitel, H. Java Como Programar.