Baixe o app para aproveitar ainda mais
Prévia do material em texto
Programação Orientada a Objetos com Java Prof. MSc. André FreitasProf. MSc. André Freitas Referências BARNES, David; KOLLING, Michael. Programação Orientada a Objetos com Java. São Paulo: Makron, 2009 BARNES, David; KOLLING, Michael. Objects First with Java. 5th ed. Pearson, 2012 Notas de aula Prof. Júlio Machado, PUCRS Santos, Rafael. Introdução à Programação Orientada a Objetos usando Java. Classes e Objetos Criando classes em Java ● Em Java, a sintaxe básica para criação de classes: class NomeDaClasse { } ● Java é case sensitive ● O conteúdo da classe é delimitado por chaves { } e deve conter os seus métodos ● Ex.: ContaDeLuz, RegistroAcademico, CadastroDeFuncionarioDeSupermercado Classes e Objetos Criando classes em Java ● Comentário simples: // ● Comentários em bloco: /* */ ● Comentários para documentação: /** */ Classes e Objetos Criando classes em Java ● Campos devem ser declarados dentro do corpo da classe. ● Cada campo deve ser representado por um tipo de dados ● Tipos nativos: ○ byte, short, int, long.. ● String ○ Instância da classe String Classes e Objetos Criando classes em Java Classes e Objetos Criando classes em Java ● Que tipo de dados devem ser utilizados? ● Uma escolha errada pode ser dispendiosa e criar complexidades desnecessárias ● Ex.: Usar String ao invés de int para armazenar um número de matrícula ● Conversões explícitas podem ser feitas utilizando cast Classes e Objetos Criando classes em Java ● Métodos em classes Java: ○ Não podem ser criados dentro de outros métodos e nem fora da classe à qual pertencem. ○ Tradicionalmente os nomes começam com letra minúscula ○ Métodos refletem ações efetuadas pela classe Classes e Objetos Criando classes em Java ● Métodos em classes Java - Exemplo: Classe DataSimples public class DataSimples {// declaração da classe /** * Declaração dos campos da classe */ byte dia,mês; // dia e mês são representados por bytes short ano; // ano é representado por um short // declaração dos métodos . . . // fim da declaração dos métodos }//fim da classe DataSimples Classes e Objetos Criando classes em Java ● Métodos em classes Java void inicializaDataSimples(byte d,byte m,short a) { if (dataEValida(d,m,a)) { dia = d; mês = m; ano = a; } else { dia = 0; mês = 0; ano = 0; } } Classes e Objetos Criando classes em Java ● Métodos em classes Java private boolean dataEValida(byte d, byte m, short a) { if ((d >=1) && (d <= 31) && (m >= 1) && (m <= 12)) return true; else return false; } Classes e Objetos Criando classes em Java ● Métodos em classes Java boolean eIgual(DataSimples outraDataSimples) { if ((dia == outraDataSimples.dia) && (mês == outraDataSimples.mês) && (ano == outraDataSimples.ano)) return true; else return false; } Classes e Objetos Criando classes em Java ● Métodos em classes Java void mostraDataSimples() { System.out.print(dia); System.out.print("/"); System.out.print(mês); System.out.print("/"); System.out.println(ano); //adiciona quebra de linha } Classes e Objetos Criando aplicações Java ● Em Java, uma classe deverá ser escolhida para receber um método especial, main, que será o ponto de início de um programa. ● A presença deste método fará com que a classe se torne executável ● Assinatura: public static void main(String[] argumentos) Classes e Objetos Criando aplicações Java public static void main(String[] argumentos) ● Public: Torna o método visível por outras classes ● Static: Um método static dispensa a instanciação de sua classe para que possa ser chamado. (Será visto mais a frente em detalhes). ● Void: Tipo de retorno do método. O tipo void não retorna nada. ● Método main pode pertencer a qualquer classe. Boa prática: Fazer o método main ser o único método de uma classe para melhorar a distinção entre os papéis das diversas classes. Classes e Objetos Criando classes em Java ● Métodos em classes Java ○ Formato genérico dos métodos: modificador-de-acesso tipo-ou-classe-de-retorno nome-do-método(lista-de-argumentos) {} ● Métodos podem retornar “nada” (void), tipos primitivos (ex. bool) ou instâncias de classes. ● Métodos que retornam algo (diferente de void) devem incluir a palavra-chave return em seu código seguida de uma constante ou variável do tipo ou classe que foi declarada em sua assinatura. ● Métodos podem ter listas de argumentos (parâmetros), receber apenas um argumento ou nenhum argumento Classes e Objetos Criando classes em Java ● Escopo de campos em classes Java ● Campos são válidos em toda a classe, mesmo que estejam declarados depois dos métodos que os usam. ● Variáveis e instâncias declaradas dentro de um método só valem dentro destes métodos ○ Variáveis podem possuir o mesmo nome desde que pertençam a métodos diferentes ○ Variáveis e instâncias devem ser declaradas antes de serem utilizadas Classes e Objetos Criando classes em Java ● Modificadores de Acesso em Java ● Encapsulamento ○ Ocultar campos de classes para evitar que sejam manipulados por outras classes sem utilizar os métodos destinados a isto. ○ A classe DataSimples foi criada sem se preocupar com a ocultação do dados dia, mes e ano. ● Exemplo: Classe DemoDataSimples. Classes e Objetos Criando classes em Java ● Modificadores de Acesso em Java ● Encapsulamento Exemplo: Classe DemoDataSimples. ● Médotos definidos nas classes podem ser acessados com a notação ○ nome-da-referencia.nome-do-metodo(argumentos1, argumento2); ○ Operador ponto “.” ○ Nos argumentos não deve-se incluir os tipos ● Campos de classes também podem ser acessados com o operador ponto ● Acessar campos diretamente: datas não-válidas podem ser inseridas sem tratamento. ● Ex.; dia >= 1 e dia <=31. ● Encapsualmento: restringir o acesso para que o usuário não modifique os campos arbitrariamente Classes e Objetos Criando classes em Java ● Modificadores de Acesso em Java ● Public ○ Permite acesso e execução a partir de qualquer classe ● Private ○ Só permite acesso/execução a partir de métodos da própria classe ○ Campos ou métodos que devam ser ocultos de usuários da classe devem usar este modificador. ● Protected ○ Funciona como o private, exceto que classes herdeiras ou derivadas têm acesso ao campo/método protected. ● Sem modificadores: package friendly ○ Campos/Métodos visíveis a todas as classes. Classes e Objetos Criando classes em Java ● Regras de acesso em Java para campos/métodos ● Campos de uma classe devem ser declarados private ● Métodos de uma classe devem ser declarados public ○ Métodos que permitem a manipulação dos campos ● Métodos private ○ Métodos que podem ser utilizados por outros métodos dentre de uma mesma classe, mas que devem ser ocultos para outras classes. ○ Ex.: imprimeNumeroDePagina() e imprimeRelatorio() Classes e Objetos Criando classes em Java ● Regras de acesso em Java para campos/métodos Exemplo: Classe Data que implementa uma política de ocultação de campos. Classes e Objetos Criando classes em Java ● A criação e uso de instâncias de classes em métodos (ex. main) é feita com a palavra new ○ A instância é associada a uma referência ○ A referência é utilizada para acessar a instância e fazer operações com ela. Classes e Objetos Criando classes em Java ● Inicializamos uma instância com o método da classe Data ● A referência nascimentoDeGeorgeBizet não foi inicializada, mas pode ser utilizada. ● Os dados de uma instância podem ser atualizados: ● Ao chamar o método mostrarData() de nascimentoDeGeorgeBizet e de nascimentoDeJohanStrauss, que informação será exibida? ● As duas datas são iguais? Ex. Classe MaisDemoData Classes e Objetos Criando classes em Java ● Estas duas referências apontam para a mesma instância ○ A instância foi associada a duas referências ○ Qualquer das referências pode ser usada para modificar e usar métodos da instância ● Uma referência também pode ser criada sem uma instânciaassociada a ela. ○ Tentativas de chamar métodos da classe Data causarão erros de compilação. ● Instâncias diferentes ocupam espaços de memória diferentes Classes e Objetos Criando classes em Java ● A criação de instâncias com a palavra new pode ocorrer dentro da própria classe cuja instância está sendo criada Exemplo: Classe Ponto2D Classes e Objetos Criando classes em Java ● A palavra null pode ser utilizada na para criar uma referência ○ Ela indica que a referência ainda não foi instanciada ● É possível criar uma referência sem criar uma instância ○ Caso uma tentativa de chamar um método seja feita, o compilador dará um erro impedindo que o programa seja compilado ● Quando se atribui o null a uma referência ○ O compilador permitirá a compilação ○ Caso um método seja chamado de um objeto null (sem instância), ocorrerá erro de execução no programa. ● Quando utilizar o null? ○ Caso haja necessidade de fazer alguma inicialização condicional ○ Campos que só podem ser determinados em tempo de execução. Classes e Objetos
Compartilhar