Laboratório de Programação II Pacotes Visibilidade Referências a Objetos
Agrupando Classes em Pacotes Classe cada arquivo fonte java (.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
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
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
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 Endereco
Definindo Endereço como Classe
Referenciando Objeto da Classe Endereço na Classe Aluno
Classe Principal importa Classes de outro Pacote
Exercícios – Edite um novo 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. 3.2 – Altere o programa do exercício 3.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.