A maior rede de estudos do Brasil

Grátis
118 pág.
poojava

Pré-visualização | Página 15 de 37

quantidade de elementos na coleção.
Se adicionalmente deseja-se que esse grupo de objetos seja manipulado de acordo com alguma
ordem específica, a interface derivada SortedMap pode ser utilizada. Assim, além das funcionali-
dades acima, esta interface especifica métodos tais como:
� Object firstKey() para retornar o elemento da coleção com a chave de menor valor.
� Object lastKey() para retornar o elemento da coleção com a chave de maior valor.
� SortedMap subMap(Object fromKey, Object toKey) para obter o subconjunto
dos elementos compreendidos entre as chaves especificadas.
Para essas interfaces, duas implementações básicas são também oferecidas nesse mesmo pacote
java.util. A classe HashMap implementa o mecanismo básico de mapeamento entre chaves e
valores. A classe TreeMap oferece a funcionalidade adicional de associar uma ordem aos elementos
da coleção. Para alguns tipos de objetos, tais como Integer, Double ou String, uma ordem
“natural” já é pré-estabelecida. Para objetos de classes da aplicação, a classe deverá implementar a
interface Comparable.
Um objeto que implementa a interface Collection representa um grupo de objetos genérico,
onde duplicações são permitidas. Entre os métodos básicos especificados nessa interface estão:
c
�
2001 FEEC/UNICAMP 43
Programação orientada a objetos com Java 3.3. Framework de coleções
� boolean add(Object element) para adicionar o elemento especificado à coleção.
� boolean remove(Object element) para remover o elemento especificado da cole-
ção.
� boolean contains(object element) para verificar se a coleção contém o elemento
especificado.
� int size() para obter a quantidade de elementos na coleção.
� Iterator iterator() para obter um objeto que permite varrer todos os elementos da
coleção.
Duas outras interfaces, Set e List, são derivadas diretamente de Collection.
Set é uma extensão de Collection que não permite duplicações de objetos — nenhum méto-
do novo é introduzido, mas apenas a necessidade de garantir essa restrição. A interface SortedSet
é uma extensão de Set que agrega o conceito de ordenação ao conjunto, introduzindo a especificação
de métodos tais como first(), para obter o primeiro elemento do conjunto; last(), para obter
o último elemento do conjunto; e subSet(), para obter o subconjunto com todos os elementos
contidos entre os dois elementos especificados como argumentos do método.
A interface Set tem duas implementações já oferecidas no pacote java.util. A classe
HashSet é uma implementação padrão que utiliza o valor de código hash para detectar e impe-
dir duplicações. A classe TreeSet é uma implementação de SortedSet que usa uma estrutura
de dados em árvore para manter ordenados os elementos do conjunto.
A interface List é uma extensão de Collection que introduz mecanismos de indexação.
Além dos métodos básicos de coleções, adiciona métodos tais como get() para obter o elemento
armazenado na posição especificada como argumento; indexOf() para obter a posição da primeira
ocorrência do objeto especificado como argumento; e subList() para obter uma sublista contendo
os elementos compreendidos entre as duas posições especificadas, incluindo o elemento da primeira
posição mas não o da segunda.
Da mesma forma que para Set, há duas implementações padronizadas para a interface List
já definidas em java.util. A classe ArrayList oferece uma implementação básica da inter-
face, enquanto que a classe LinkedList oferece uma implementação otimizada para manipular
listas dinâmicas, introduzindo os métodos addFirst(), getFirst(), removeFirst(),ad-
dLast(), getLast() e removeLast().
Para percorrer os elementos de uma coleção no novo framework, um objeto que implementa a
interface Iterator é utilizado. Essa interface especifica os métodos hasNext(), que retorna um
valor booleano verdadeiro para indicar que há mais elementos na coleção, e next(), que retorna o
objeto que é o próximo elemento da coleção. Adicionalmente, um método void remove() pode
ser utilizado para retirar um elemento da coleção através da referência a um Iterator.
A interface ListIterator é uma extensão de Iterator que permite a varredura da coleção
nas duas direções, especificando novos métodos tais como boolean hasPrevious() e Object
previous().
c
�
2001 FEEC/UNICAMP 44
Programação orientada a objetos com Java 3.4. Extensões padronizadas
3.4 Extensões padronizadas
Além das funcionalidades básicas oferecidas por esses pacotes, há também APIs definidas para
propósitos mais específicos compondo a extensão padronizada ao núcleo Java. Por exemplo, o Input
Method Framework está associado ao pacote java.awt.im e contempla funcionalidades para
manipular textos não-ocidentais usando teclados convencionais.
Funcionalidades para definir e utilizar componentes de software em Java são oferecidas através
de Java Beans, um conjunto de APIs definidas através do pacote java.beans e seu subpacote
java.beans.context para suportar os modelos de instrospecção, customização, eventos, pro-
priedades e persistência desses componentes.
Uma das extensões mais significativas é definida pelo conjunto da Java Foundation Classes,
extensão de AWT que oferece um conjunto de componentes de interface gráfica com usuário com-
pletamente portátil. Três pacotes compõem JFC: Swing, Drag and Drop e Java 2D. Swing define
uma família de pacotes com o prefixo javax.swing com componentes e serviços GUI de aparên-
cia independente de plataforma. Drag and Drop, associado ao pacote java.awt.dnd, suporta o
compartilhamento de dados baseado no padrão MIME, Multipurpose Internet Mail Extension. Java
2D acrescenta novas classes aos pacotes java.awt e java.awt.image para estender as fun-
cionalidades associadas à manipulação de imagens bidimensionais e acrescenta novos pacotes ja-
va.awt.color, java.awt.font, java.awt.geom, java.awt.image.renderable e
java.awt.print. As funcionalidades para a construção de interfaces gráficas com usuários são
apresentadas na Seção 4.
Outra funcionalidade acrescentada à Java foi a capacidade de acesso a bancos de dados relaci-
onais usando a linguagem de consulta SQL. Através da API definida em JDBC, através do pacote
java.sql, é possível enviar comandos SQL para um servidor de banco de dados e processar o
retorno obtido nessa consulta. A utilização de JDBC é descrita na Seção 5.2.3.
Java IDL integra a funcionalidade da arquitetura CORBA a aplicações Java, permitindo obter
inter-operabilidade e conectividade baseadas nesse padrão do OMG (Object Management Group).
Além das classes presentes nos pacotes org.omg.CORBA e org.omg.CosNaming, alguns apli-
cativos são acrescidos ao ambiente de desenvolvimento e execução de Java, como o compilador de
Java para IDL e um aplicativo que oferece o serviço de nomes. O desenvolvimento de aplicações
usando Java IDL é descrito na Seção 5.4.3.
c
�
2001 FEEC/UNICAMP 45
Capítulo 4
Desenvolvimento de aplicações gráficas
A linguagem Java oferece, dentre as funcionalidades incorporadas à sua API padrão, um extenso
conjunto de classes e interfaces para o desenvolvimento de aplicações gráficas. Esse conjunto facilita
a criação de saídas na forma gráfica e de interfaces gráficas com usuários (GUIs), tanto na forma de
aplicações autônomas como na forma de applets.
Aplicações gráficas são criadas através da utilização de componentes gráficos, que estão agrupa-
dos em dois grandes pacotes: java.awt e javax.swing.
AWT é o Abstract Windowing Toolkit, sendo definido através das classes do pacote java.awt e
seus subpacotes, tais como java.awt.event. Essas classes agrupam as funcionalidades gráficas
que estão presentes desde a primeira versão de Java, que operam tendo por base as funcionalidades
de alguma biblioteca gráfica do sistema onde a aplicação é executada.
Já o pacote javax.swing define uma extensão padronizada a partir de AWT que congrega
componentes gráficos que utilizam exclusivamente