Baixe o app para aproveitar ainda mais
Prévia do material em texto
Linguagem de Programação Orientada a Objetos Aula 03: Construtores Roteiro • Revisão • Conceitos Básicos de OO • Encapsulamento • Construtores • this • import • Referência: • Deitel, H. M. e Deitel, P. J. Java Como Programar. Prentice Hall. 8 ed. 2010.. Capítulo 3, 6 e 8. O que é Encapsulamento? •Em código: • Veja que o atributo é privado e o método público Assim apenas quem conhece a assinatura public void deposita (double valor) poderá utilizar o método deposita Por que o erro? Escopo correto Escopo da variável Exercícios • Faça um método do tipo saque no caderno e aponte todos os tópicos abaixo. Pra entregar agora 15 min Valendo visto. Tipo do retorno Cabeçalho do método Modificador de acesso Corpo do método Onde ficam os parâmetros? Onde ficam os argumentos? O que vimos até aqui? •Nas últimas aulas vimos diversos conceitos de Orientação a Objetos Classe, objetos, mensagens, encapsulamento • Hoje finalizamos parte da parte conceitual da orientação a objetos, para entrarmos em maiores detalhes sobre a aplicação na linguagem Java Construtores Construtores • Quando criamos um objeto seu espaço na memória é alocado Sintaxe do construtor Criando um objeto com construtor Ainda sobre construtores • Quando não definimos um construtor para a classe, o construtor default é executado • O construtor default da classe Conta seria: • A partir do momento em que você declara um construtor, o construtor default não é mais fornecido Ainda sobre construtores • O construtor deve estar sempre na definição da Classe E pode haver dois construtores com o mesmo nome! • Quando? E por que? Ainda sobre construtores • Um exemplo mais complexo de construtor: public class Conta { private double saldo; private Funcionario funcionario; Conta (Funcionario titular) { this.funcionario = titular; } //gets e sets } public class Funcionario { private String nome; private String cpf; private double salario; Funcionario (String nome, String cpf, double salario) { this.nome = nome; this.cpf = cpf; this.salario = salario; System.out.println("Um objeto foi criado!"); } // gets e sets } A classe Conta tem um atributo do tipo Funcionario Como funciona • public class main { • public static void main(String[] args) { • Funcionario func = new Funcionario("00001", "Elyda", 100); • Conta conta = new Conta(func); • System.out.println(conta.getFunc().getNome()); • }} Construtores •E qual a necessidade desses construtores? Obrigar o usuário de uma classe a definir valores de início Por exemplo, quando queremos abrir um arquivo é necessário dizer seu nome •E para destruir um objeto? O Java não implementa destrutores Para isso, o Garbage Collector é executado automaticamente Construtores •Sempre que criamos um objeto o construtor da classe é executado •O construtor é o responsável por inicializar os valores de um objeto que está sendo criado Ele é um método sem retorno, que é chamado quando da criação de um objeto O uso do “this” O “this” • O this é utilizado para se referir ao objeto atual • No exemplo, o this é utilizado para atribuir o valor passado como parâmetro para o atributo (variável de instância) 19 public class Funcionario { private String nome; private String cpf; private double salario; //construtor e gets e sets aqui public void setNome(String nome) { this.nome = nome; } O “this”: Um exemplo mais complexo 20 public class MyThisTest { private int a; public MyThisTest() { this(42); // Construtor } public MyThisTest(int a) { this.a = a; // atribui o valor do parametro a para o campo com o mesmo nome } public String toString() { // quando criamos um objeto esse método é chamado automaticamente return "MyThisTest a=" + a; // refere-se ao campo a } public void Testando() { int a = 1; System.out.println(a); // refere-se a variável local a System.out.println(this.a); // refere-se ao campo a System.out.println(this); // refere-se ao objeto completo } } Vamos fazer executar esse código? Import A Palavra-Chave import •Para usar uma classe do mesmo pacote que eu possa acessar basta fazer referência a ela •No entanto, para acessar classes de outros pacotes é necessário importá-las •Ou chamá-la pelo seu nome completo 22 import java.util.Date; ... private Date dataAdmissao; private java.util.Date dataAdmissao; private Funcionario funcionario; Modificadores de acesso Modificadores • Os modificadores de acesso são utilizados para controlar o acesso a atributos, classes, métodos e construtores • Veremos um pouco mais sobre os modificadores public, private, protected, static e final 24 Modificadores • Public Uma classe declarada como pública dá a outras classes, de todos os pacotes, acesso aos seus membros que forem públicos também Membros da classe (métodos e atributos) que se forem declarados como públicos também são visíveis em todas as classes de todos os pacotes 25 Modificadores • Private: O membro da classe não pode ser acessado por nenhuma outra classe, quando é declarado private Apenas sua classe pode acessá-lo • Esse modificador não se aplica a classes, somente a seus membros (métodos e atributos) Que devem ser acessados pelos getters e setters ou por meio de métodos públicos 26 Modificadores • Protected: Quando um membro da classe é declarado assim, ele se torna acessível por classes do mesmo pacote ou através de herança Os membros herdados não são acessíveis a outras classes fora do pacote em que foram declarados • Esse modificador pode ser utilizado em métodos e atributos 27 Modificadores • Default: A classe e/ou seus membros são acessíveis somente por classes do mesmo pacote • Em resumo: 28 Formalizações A Linguagem Java •Uma classe em Java: Sintaxe 30 public class Conta { private double saldo; private Date dataInicio; public Conta (){ System.out.println("Conta criada"); } public double getSaldo() { return saldo; }... } Modificador Nome da Classe, que deve ser igual ao nome do arquivo Construtores Métodos Lista de Atributos A Linguagem Java •Uma classe em Java (cont.) Declarando atributos Exemplos: 31 <modificadores> <tipo> <nome> [=<valor inicial>]; public int x; static double calc = 45.76; String nome = "Maria"; A Linguagem Java •Uma classe em Java (cont.) Declarando atributos: Tipos de dados primitivos 32 A Linguagem Java • Uma classe em Java (cont.) Declarando métodos Exemplo: 33 <modificadores> <tipoDoRetorno> <nome> ( <parâmetros> ) { <corpoDoMétodo> } public void setSaldo(double saldo) { this.saldo = saldo; } A Linguagem Java • Uma classe em Java (cont.) O método principal 34 public class OlaMundo{ public static void main(String[] args) { System.out.println("Hello World!"); } } Toda aplicação deve possuir o método main, que tem sempre essa estrutura A Linguagem Java •Uma classe em Java (cont.) O método principal Uma aplicação Java é um conjunto de classes E necessariamente uma delas precisa ter um método main 35 A Linguagem Java •Uma classe em Java(cont.) Arquivo .java •A ordem dos itens é importante 36 package beans; import java.util.Date; public class Conta { } Nome do pacote Imports necessários Declaração Da Classe A Linguagem Java • Um arquivo Java pode conter declarações de várias classes • Apenas uma das classes pode ser pública • Caso haja uma classe pública, o nome do arquivo deve ser igual ao da classe• Caso não haja, o nome do arquivo é livre • No entanto, é uma boa prática declarar apenas uma classe por arquivo e nomeá-lo com o nome da classe 37 A Linguagem Java • Palavras reservadas 38 A Linguagem Java • Os comentários podem ser: 39 //Comentário de Linha /* Comentário de mais de uma linha */ /** * Comentário para gerar JavaDoc */ A Linguagem Java • Convenções de Nomes: Nomes de Classes Devem começar com uma letra maiúscula Caso o nome seja composto por mais de uma palavra a primeira letra de cada palavra deve ser maiúscula De preferência, não deve conter caracteres não-ASCII Devem ter exatamente o mesmo nome o arquivo .java Geralmente é um substantivo que representa a classe 40 A Linguagem Java • Convenções de Nomes: Nomes de Pacotes Devem ser escritos em minúsculo Podem usar caracteres não-ASCII Não devem iniciar com caracteres especiais ou números Caso o nome do pacote seja composto, a primeira letra de cada palavra deve ser em maiúscula (a partir da segunda palavra) O nome do pacote deve fazer referência total às funções exercidas pelas classes dentro do pacote 41 A Linguagem Java • Convenções de Nomes: Nomes de Atributos São escritos em letras minúsculas Os nomes de atributos podem começar com qualquer letra, ou com os caracteres $ ou _ Não podem começar com números Caso o nome do atributo seja composto, a primeira letra de cada palavra deve ser em maiúscula (a partir da segunda palavra) 42 A Linguagem Java • Convenções de Nomes: Nomes de Atributos Finais ou Constantes Devem ser escritos em letras maiúsculas Underline é utilizado para separar nomes compostos 43 Bora terminar a Lista 01?
Compartilhar