Pontifícia Universidade Católica de São Paulo Departamento de Ciência da Computação Apontamento 3 Fevereiro de 2004 LP: Laboratório de Programação Prof. ISVega Estilo de Codificação CONTEÚDO 3.1 Regras de Edição . . . . . . . . . . . . . . . . 3.1.1 Regras de Construção de Nomes . . . 3.1.2 Regras de Leiaute de Texto . . . . . . 3.1.3 Estrutura de um Programa em Java 3.2 Documentação . . . . . . . . . . . . . . . . . 3.2.1 Documentos da Implementação . . . Exercícios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1 2 5 6 7 8 3.1 Regras de Edição A criação de um arquivo contendo um texto na linguagem Java deverá um conjunto de regras de edição. Este conjunto estabelece regras para a construção de nomes e leiaute de texto. 3.1.1 Regras de Construção de Nomes • Nomes de Classes O nome de uma classe deverá corresponder a um substantivo. A letra inicial será sempre maiúscula. Caso o nome seja composto, cada palavra do nome deverá começar por uma letra maiúscula. Exemplos: Turma, SalaDeOperacao, CaixaEletronico. 1 Laboratório de Programação Fevereiro de 2004 • Nomes de Arquivos Cada classe será armazenada em um arquivo diferente. O nome do arquivo é “igual” ao nome da classe, acrescentando-se a extensão .java. Exemplos: se o nome da classe for Aplicacao, o nome do arquivo deverá ser Aplicacao.java. • Nomes de Variáveis Nomes de variáveis devem corresponder a substantivos. A letra inicial será sempre minúscula. Caso o nome da variável seja composto, cada palavra subseqüente do nome deverá começar por uma letra maiúscula. Exemplos: nota, nomeDoAluno, arquivoDeEntrada. • Nomes de Métodos Nomes de métodos devem corresponder a verbos no infinitivo. A letra inicial será sempre minúscula. Caso o nome do método seja composto, cada palavra subseqüente do nome deverá começar por uma letra maiúscula. Exemplos: somar, obterTurma, salvarArquivo. OBS 1: Métodos que retornam um valor devem declarar uma variável chamada resultado, que será “retornada” ao final do método. 3.1.2 Regras de Leiaute de Texto • O leiaute básico para uma classe é mostrado na Figura 3.1. O corpo de cada operação da classe é identado em 1 TAB, relativamente ao início do método. pubic class <nome da classe> { public <tipo> <nome do método>( <args> ) { Descrição do método ... } } TAB TAB Figura 3.1: Estilo para a definição de classes. • A documentação da classe e do método principal deverá ser: hpadrão da classe Aplicacao.javai≡ /** * <Objetivo da aplicação.> * * @author <autor> * @created <data> * @version <data>, <descrição da alteração> */ public class Aplicacao { /** * Método principal do sistema. * * @param args argumentos da aplicação. * @see <outra parte do sistema> c Copyright °1998-2004, Dr. Italo S. Vega 3-2 Laboratório de Programação Fevereiro de 2004 */ public static void main( String[] args ) { // Corpo da operação main... } // Demais métodos // Demais variáveis } • Esquema geral de um método: hpadrão de escrita de métodosi≡ /** * <Descrição do efeito da execução do método.> * * @param <nome do param> <descrição do papel do param> * @see <referência para outras partes do sistema> */ public int <nome do método>( int <nome do param> ) { // seqüência de operações do método } • Esquema geral de um método com retorno: hpadrão de escrita de métodos com valor de retornoi≡ /** * <Descrição do efeito da execução do método.> * * @param <nome do param> <descrição do papel do param> * @return <descrição do valor retornado> * @see <referência para outras partes do sistema> */ public int <nome do método>( int <nome do param> ) { int resultado = 0; // outros comandos... return resultado; } c Copyright °1998-2004, Dr. Italo S. Vega 3-3 Laboratório de Programação Fevereiro de 2004 • Comando if-else O estilo para a escrita do comando de decisão é mostrado na Figura 3.2. Os blocos “true” e “false” são identados com 1 TAB, relativamente ao início do comando. if( <condição> ) { Bloco true ... } else { Bloco false ... } TAB Figura 3.2: Estilo para o comando if-else. • Comando while O estilo para a escrita do comando de repetição é mostrado na Figura 3.3. O bloco “true” é identado com 1 TAB, relativamente ao início do comando. while( <condição> ) { Bloco true ... } TAB Figura 3.3: Estilo para o comando while. • Comando switch O estilo para a escrita do comando de seleção múltipla é mostrado na Figura 3.4. Cada bloco da seleção é identado com 1 TAB, relativamente ao início do comando. c Copyright °1998-2004, Dr. Italo S. Vega 3-4 Laboratório de Programação Fevereiro de 2004 switch( <condição> ) { case ###: Bloco “###” ... break; case $$$ Bloco “$$$” ... break; default: Bloco default ... break; } TAB TAB Figura 3.4: Estilo para o comando switch. 3.1.3 Estrutura de um Programa em Java Propósito. Analisar a estrutura básica de um programa em Java. Descrição. Esta aplicação mostra a mensagem “Teste inicial”. Esta mensagem é um texto, e será apresentada na saída padrão do sistema computacional (isto é, na janela a partir da qual a aplicação foi ativada). Aplicação. A seguinte aplicação, escrita na linguagem Java, foi armazenada no arquivo Aplicacao.java. Esta aplicação descreve como mostrar a mensagem na tela: hAplicacao.javai≡ /** * Aplicacao que mostra a mensagem "Teste inicial". * * @author ISVega * @created 08/04/2001 * @version 08/04/2001, versão inicial da aplicação. */ public class Aplicacao { /** * Operação principal do sistema. * * @params args vetor de argumentos da aplicação. */ public static void main( String[] args ) { System.out.println( "Teste inicial" ); } } c Copyright °1998-2004, Dr. Italo S. Vega 3-5 Laboratório de Programação Estrutura Básica da Aplicação das aplicações em Java: Fevereiro de 2004 Esta aplicação ilustra dois elementos essenciais 1. Uma aplicação consiste de uma ou mais classes. Neste caso, a aplicação consiste apenas da classe Aplicacao. 2. Uma aplicação deve conter, obrigatoriamente, uma classe Aplicacao que implemente a operação main(). Arquivos-Fonte Programas em Java são armazenados em arquivos. O compilador Java força algumas regras sobre como as classes são colocadas nos arquivos, e como os arquivos devem ser identificados. De forma simplificada, as regras são: 1. Todos os arquivos-fonte Java devem ter extensão .java. 2. Normalmente, cada arquivo deve conter apenas uma classe. 3. O nome do arquivo deve ser idêntico ao nome da classe (preservando maiúsculas e minúsculas). Comentários A linguagem Java oferece três categorias de comentários: • Comentário-linha, que inicia com // e termina no final da linha. • Comentário-multilinha, que inicia com /* e termina com */. • Comentário-documentação, que inicia com /** e termina com */. Tais comentários são processados pela ferramenta de documentação javadoc.exe, que produz arquivos no formato HTML que documentam a aplicação. 3.2 Documentação A documentação que acompanha uma aplicação pode ser classificada em dois grandes grupos: • Documentos do usuário • Documentos da implementação Os documentos do usuário devem caracterizar a funcionalidade do sistema, mostrando para o usuário, o que o sistema é capaz de realizar, e como o usuário aciona estas funções. Além disso, estes documentos devem apresentar exemplos de uso da aplicação em situações representativas, e em situações de erro. Um conjunto mínimo de documentos do usuário deve conter: c Copyright °1998-2004, Dr. Italo S. Vega 3-6 Laboratório de Programação Fevereiro de 2004 • Propósito da aplicação para o usuário. • Lista de operações que podem ser realizadas pelo usuário. • Exemplos de uso da aplicação em situações normais. • Exemplos de uso da aplicação em situações anormais. 3.2.1 Documentos da Implementação Os documentos de implementação devem registrar as diversar decisões que foram tomadas para a construção do código, bem como eventuais soluções particulares que foram adotadas. (Observa-se que alguns elementos dos documentos da implementação são provenientes dos documentos do usuário.) Um conjunto mínimo de documentos da implementação deve conter: • Propósito da aplicação. • Lista de operações que podem ser realizadas pelo usuário. • Mapas de execução para cada operação realizável pelo usuário. • Lista de classes da aplicação. Arquivo leiame.txt Neste laboratório, também será incorporado um arquivo denominado “leiame.txt” para cada sistema implementado, contendo: hpadrão de escrita do leiame.txti≡ Disciplina: LP/<ano>, <nome do professor> Turma: <código>, Data da aula: <dia>/<mês>/<ano> Aluno: <nome do aluno> Colegas Colaboradores: - <nome do colega> Aplicação: Teste Inicial Propósito: Descrição: Implementação: c Copyright °1998-2004, Dr. Italo S. Vega 3-7 Laboratório de Programação Fevereiro de 2004 E XERCÍCIOS 3.1 E STILO DE C ODIFICAÇÃO (Aplicar o estilo de codificação a uma determinada aplicação.) Digite e salve as seguintes classes-Java: Arquivo [[Aplicacao.java]] /** * Aplicacao que calcula a média de um aluno. * @author ISVega * @created 08/04/2001 * @version 08/04/2001, versão inicial da aplicação. */ public class Aplicacao { /** * EFEITO: operação principal da aplicação. * @params args vetor de argumentos da aplicação. */ public static void Main( String[] args ) { Entrada teclado = new Entrada1(); Saida tela = new Saida(); String nomedoaluno = teclado.obterString( "Nome do aluno:" ); double p1 = teclado.obterInt( "P1: " ); double p2 = teclado.obterINT( "P2: " ); double Mediafinal = (p1+p2)/2; tela.mostrar( "MF= " + Mediafinal ); System.exit( 0 ); } } Arquivo [[Entrada.java]] /** * Modelo do mecanismo de entrada de uma aplicação. * @author ISVega * @created 08/04/2001 * @version 08/04/2001, versão inicial do mecanismo. */ import javax.swing.JOptionPane; public class Entrada { /** * EFEITO: retorna um string digitado pelo usuário. * @params pergunta a ser feita para o usuário da aplicação */ public String obterString( String pergunta ) { return JOptionPane.showInputDialog( pergunta ); } /** * EFEITO: retorna um inteiro digitado pelo usuário. * @params pergunta a ser feita para o usuário da aplicação */ public int obterInt( String pergunta ) { String texto = JOptionPane.showInputDialog( pergunta ); return Integer.parseInt( texto ); } } Arquivo [[Saida.java]] /** * Modelo do mecanismo de saída de uma aplicação. * @author ISVega * @created 08/04/2001 * @version 08/04/2001, versão inicial do mecanismo. */ public class Saida1 { /** * EFEITO: mostra o resultado da aplicação na tela. c Copyright °1998-2004, Dr. Italo S. Vega 3-8 Laboratório de Programação Fevereiro de 2004 * @params resultado a ser mostrado na tela. */ public void mostrar( String resultado ) { System.out.println( resultado ); } } Compile e execute a aplicação ativando o interpretador Java. (OBS: a execução será cancelada!) a) Localize e corrija os erros de estilo nele existentes. b) Descreva, em um texto, os principais acontecimentos da computação realizada quando se ativa a operação [[Aplicacao.main()]]. c Copyright °1998-2004, Dr. Italo S. Vega 3-9