Baixe o app para aproveitar ainda mais
Prévia do material em texto
Linguagem de Programação I Pacotes Visibilidade Referências a Objetos Joinvile Batista Junior UFGD - LPI 04 - Joinvile Batista Junior 2 Agrupando Classes em Pacotes Classe • cada arquivo fonte java (<arquivo>.java) está associado a uma única classe pública : public class Aluno – o arquivo pode conter, adicionalmente, mais de uma classe não pública Pacote • um pacote é um diretório utilizado para agrupar arquivos de classes • um pacote é definido no primeiro statement no arquivo da classe – package controle; • um pacote também pode ser composto por uma árvore de diretórios – java.util.Vector : classe Vector pertence ao subdiretório util do diretório java UFGD - LPI 04 - Joinvile Batista Junior 3 Visibilidade entre Pacotes distintos Importando Classes de outros Pacotes • uma classe precisa importar outra classe pública de outro pacote para poder referenciá-la – importando a classe Aluno do pacote entidade logo após o statement que define o pacote controle da classe Principal • package controle; • import entidade.Aluno; – uma classe não precisa importar outra classe pública do mesmo pacote • excepcionalmente, as classes públicas do pacote java.lang são visíveis, por default, para qualquer classe de qualquer pacote – observe que a classe String que pertence ao pacote java.lang não precisa ser importada UFGD - LPI 04 - Joinvile Batista Junior 4 Visibilidade de Dados e Métodos Modificadores de Visibilidade • o modificador public indica que um dado ou método pode ser visível para uma classe que importou a classe pública que os define • o modificador private indica que um dado ou método é visível somente para os métodos de sua própria classe • a ausência do modificador de visibilidade indica que um dado ou método de uma classe é visível para outras classes do mesmo pacote Visibilidade de Dados • é aconselhável restringir a visibilidade dos dados aos métodos de sua própria classe Visibilidade de Métodos • métodos que podem ser chamados por classes de outros pacotes precisam ser públicos • métodos restritos a métodos da própria classe devem ser privados UFGD - LPI 04 - Joinvile Batista Junior 5 Definindo uma Classe com Atributos e Referências a Objetos Possíveis Dados para a definição de uma Classe Aluno • atributos – idade : utiliza o tipo simples int – sexo : utiliza o tipo simples boolean – altura : utiliza o tipo simples float – nome : exceção que não utiliza um tipo simples • referencia um objeto da classe genérica String • referências a objetos – endereco : referencia um objeto da classe definida para uma aplicação específica Endereço UFGD - LPI 04 - Joinvile Batista Junior 6 Definindo Endereço como Classe package entidade; public class Endereço { private String rua; private int número; private String bairro; public Endereço (String rua, int número, String bairro) { this.rua = rua; this.numero = número; this.bairro = bairro; } public String getRua () { return rua; } public void setRua (String rua) { this.rua = rua; } public int getNúmero () { return número; } public void setNúmero (String número) { this.número = número; } public String getBairro () { return bairro; } public void setBairro (String bairro) { this.bairro = bairro; } } UFGD - LPI 04 - Joinvile Batista Junior 7 Referenciando Objeto da Classe Endereço na Classe Aluno package entidade; public class Aluno { private String nome; private Endereço endereço; public Aluno (String nome, Endereço endereço) { this.nome = nome; this.endereço = endereço; } public String getNome () { return nome; } public void setNome (String nome) { this.nome = nome; } public Endereço getEndereço () { return endereço; } public void setEndereço (Endereço endereço) { this.endereço = endereço; } } UFGD - LPI 04 - Joinvile Batista Junior 8 Classe Principal importa Classes de outro Pacote package controle; import entidade.Aluno; import entidade.Endereço; public class Principal { public static void main (String[] args) { imprimir (); } private void imprimir () { Endereço endereço = new Endereço ("Alecrins", 128, "Cambuí"); Aluno aluno = new ("Pedro Almeida", endereço); System.out.print ("O aluno " + aluno.getNome()); System.out.println (" mora na rua " + endereço.getRua()); } } UFGD - LPI 04 - Joinvile Batista Junior 9 Exercícios - 4 • 4.1 – Edite um programa com as seguintes classes : Ator, Diretor e Filme. Para a classe Ator defina os seguintes atributos : nome, idade, n_oscars (número de Oscars conquistados). Para a classe Diretor defina os atributos : nome, ganhador_Oscar. Para a classe Filme defina o atributo titulo e as referências : diretor, ator_principal, atriz_principal. Defina a classe Principal para criar um diretor, um ator, uma atriz e um filme, e imprimir, em cada linha, a seguinte descrição para o filme: título do filme, nome do diretor, nome do ator principal, nome da atriz principal. • 4.2 – Altere o programa do exercício 4.1 da seguinte forma: acrescente a referência principal_filme à classe Diretor e crie um construtor na classe Diretor para deixar a inicialização de principal_filme para ser realizada através do método setPrincipalFilme, referenciando o filme criado inicialmente. Imprima, adicionalmente, uma descrição para o diretor contendo em cada linha: nome do diretor, nome do principal filme.
Compartilhar