5COP088 Laboratório de Programação Aula 1 Java Prof. Dr. Sylvio Barbon Junior Sylvio Barbon Jr barbon@uel.br 1
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 barbon@uel.br 2
Ementa Laboratório de Programação 5COP088 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 barbon@uel.br 3
Aula 1 Introdução [Java] 5COP088 Laboratório de Programação
Aula 1 Introdução [Java] Motivos para se estudar Java: 5COP088 Laboratório de Programação - 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).
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, addou remove. class Aula1{ public int idade; public int_idade; public int idade; // não gera erro, apenas fora do padrão camelcase }
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]); } }
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 Aula1_2 -javaé o comando para invocar a JVM (Java Virtual Machine) Executando classe Java Executando classe Java com parâmetro java Aula1_2 MeuParametro
Identificadores Classes utilizando a Modelagem UML com o Diagrama de Classes
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;
Regras de declaração Classe com método principal package uel; import javax.swing.*; Executando classe java uel.aula1_3 5 2 public class Aula1_3{ public static void main(string[] args){ int a = Integer.parseInt(args[0]); int b = Integer.parseInt(args[1]); intsoma = a + b; JOptionPane.showMessageDialog(null, "A soma é \""+soma+"\"", "Resultado", JOptionPane.WARNING_MESSAGE); // JOptionPane.ERROR_MESSAGE } }
Identificadores Classe utilizando a Modelagem UML com o Diagrama de Classes
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 publice default; Private Protected Default Public
Modificadores de classe (não se referem a acesso) - As classes podem ser: final, abstract ou strictfp; -Uma classe não pode finale abstract; -Uma classe finalnão pode ter subclasse; - Uma classe abstract não pode ser instanciada; -Uma classe somente com um método abstractsignifica 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.
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;
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[]){ newaula1_5(); } } // continuação no outro slide
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);
Implementação de Interfaces -As interfacessã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 interfacespode ser implementadas por qualquer classe, de qualquer árvore de herança; -A interfaceé como uma classe 100% abstract; -Uma interfacesó pode ter métodos abstracts, nenhum método concreto é permitido; -Os métodos das interfaces são por padrão publice abstracts, sendo a declaração explícita um opcional; -As interfacespodem ter constantes que serão sempre implicitamente public, static e final;
Implementação de Interfaces -Uma classede implementaçãode uma interfaceque 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 interfacepode 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;
Implementação de Interfaces -As interfacesnão podem estender uma classe ou implementar uma classe ou interface;
Modificadores de acesso a membros -Os métodos e variáveis de instância são conhecidos como membros; -Os membrospodem usar os quatroníveis de acesso; -Se uma classenão puder ser acessada, seus métodos também não serão; -Se um membro da superclassefor public, a subclasse o herdará; -Membros acessados sem o operador. pertencem a mesma classe; -A palavra reservada thisrefere-se ao objeto em execução em determinado momento; -Os membros privatesó podem ser acessados por membros da mesma classe;
Modificadores de acesso a membros -Os membros defaulte protectedsó diferem quando subclasses estão envolvidas; -Os membros protectedsó 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;
Outros modificadores -Os métodos finalnão podem ser sobrecarregados dentro de uma subclasse; -Os métodos abstractterminam 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 estenderuma classe abstract deve implementar todos os métodos abstract dessa; -O modificador synchronizedsó é aplicado a métodos e blocos de códigos -O método abstractnãopode ser finalnem private.
Declaração de Array -Os arrayspodem 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 arrayna 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 statice todas as instâncias a compartilharão; - Os métodos static não têm acesso direto a não-static;
Referências Deitel,P.; Deitel, H. Java Como Programar.