|
DESCRIÇÃO
JAVA6 e Programação Orientada pelos Objectos é um livro que tem por objectivos:
Apresentar todos os conceitos e regras fundamentais inerentes ao paradigma da programação orientada pelos objectos (POO): classes e instâncias, mensagens e métodos, encapsulamento, hierarquia e herança, modularidade, polimorfismo e programação genérica;
Apresentar um conjunto de princípios e métodos de programação que permitem desenvolver aplicações OO (escritas na linguagem JAVA ou numa outra qualquer linguagem de POO), que satisfazem propriedades importantes da Engenharia de Software, tais como modularidade, extensibilidade, robustez e generalidade;
Apresentar as várias construções actuais da linguagem JAVA6 (existentes desde JAVA5, lançada em 2004) que suportam a POO, dando especial relevo às novas construções (que tornaram obsoletas as versões anteriores da linguagem JAVA), designadamente: colecções parametrizadas, iterador foreach, tipos enumerados, auto-boxing e auto-unboxing, classes genéricas (generics) e wildcards;
Introduzir o IDE BlueJ, um ambiente de apoio ao desenvolvimento de aplicações JAVA, muito simples mas muito útil, que permite e facilita um desenvolvimento incremental e a prototipagem rápida das aplicações, permitindo até a criação de instâncias das classes.Evoluções mais recentes nos processadores.
As várias matérias são apresentadas seguindo um encadeamento pedagógico de dificuldade crescente, sendo cada matéria referente ao paradigma da POO apresentada, e de imediato estudada a forma da sua implementação e utilização prática usando a linguagem JAVA6.
O livro apresenta muitos exemplos codificados cujo código fonte se encontra disponível. O ambiente BlueJ é apenas um ambiente auxiliar de muito simples aprendizagem, que se aconselha como auxiliar de desenvolvimento. Todo o código desenvolvido é JAVA6, podendo ser executado num outro qualquer ambiente de desenvolvimento.
PÚBLICO-ALVO
Estudantes de cursos de licenciatura e mestrado em Informática, e do ensino profissional;
Todos aqueles que pretendem iniciar-se na POO usando JAVA ou tenham interesse em conhecer as novas construções de JAVA.
O(S) AUTOR(ES)
Fernando Mário Junqueira Martins
Professor Associado do Departamento de Informática da Universidade do Minho. Coordenador científico do Grupo de Software, Interacção e Multimédia. Coordenador do Colégio de Informática – Norte da Ordem dos Engenheiros. É responsável por disciplinas de licenciatura e mestrado nas áreas de Paradigmas e Metodologias da Programação, Metodologias e Tecnologias de Objectos e Arquitecturas de Software. Os Modelos de Componentes e as Arquitecturas de Software Multicamada e Multifuncionais são as suas actuais áreas de interesse. Autor dos livros Programação Orientada aos Objectos em JAVA2 e JAVA5 e Programação por Objectos, também publicados pela FCA.
ÍNDICE
Prefácio
1 - O Paradigma da Programação Orientada pelos Objectos
1.1 Introdução
1.1.1 A via da simulação
1.1.2 A via da engenharia de software
1.2 Abstracção de dados e data hiding
1.3 O que é um objecto?
1.4 O Encapsulamento: propriedade fundamental
1.5 Mensagens
1.6 Objectos em POO: instâncias e classes
1.7 Síntese do capítulo
2 - JAVA: Tecnologia e Introdução à Linguagem
2.1 Introdução
2.2 Génese da tecnologia JAVA
2.3 O que é a tecnologia JAVA
2.4 A linguagem JAVA: características
2.4.1 Introdução
2.4.2 Nível dos tipos primitivos
2.4.3 Declarações de variáveis e inicialização
2.4.4 Declarações de constantes
2.4.5 Conversão entre tipos: casting
2.4.6 Comentários em JAVA
2.4.7 Conjunto de operadores
2.4.8 Instruções, estruturas de controlo e directivas
if/else
switch
for
while
do/while
2.4.9 Strings
2.4.10 I/O simples
2.4.10.1 Saída formatada: printf()
2.4.11 Tipos referenciados: objectos e arrays
2.4.11.1 Arrays
2.4.11.2 Acesso aos elementos de um array
2.4.11.3 Ciclo for com arrays
2.4.11.4 Ciclo for(each) com arrays
2.4.12 Estrutura de um programa
2.5 Criação do ambiente JAVA
2.6 Síntese do capítulo
3 - Classes e Instâncias
3.1 Definição de classe
3.2 Criação de classes: introdução
3.2.1 Classe Ponto:requisitos iniciais
3.2.2 Definição da estrutura
3.2.3 Definição do comportamento: os construtores
3.2.4 Definição do comportamento: os métodos de instância
3.2.5 A referência this
3.2.6 Packages e importação de classes
3.2.7 Definição actual da classe Ponto
3.2.8 Regras de acessibilidade a uma classe
3.2.9 Regras de acesso a variáveis e métodos de instância
3.2.10 Definição actual da classe Ponto
3.2.11 Compilação e teste da classe Ponto
3.2.12 Métodos complementares úteis
3.2.13 Sobrecarga de métodos: overloading
3.2.14 Métodos com número variável de parâmetros
3.3 Composição na definição das classes
3.3.1 Métodos get() e set() e encapsulamento
3.3.2 Encapsulamento e clone
3.3.2.1 Clone predefinido de JAVA
3.3.2.2 Implementação correcta do método clone()
3.3.3 Métodos equals(Object o) e toString()
3.4 Exemplo: classe segmento
3.5 Exemplo: Porta-Moedas MultiBanco (PMMB)
3.5.1 Métodos parciais e pré-condições
3.6 Métodos e variáveis de classe
3.7 Importação estática
3.8 Classes não instanciáveis
3.9 Classes Wrapper: Integer, Double e outras
3.10 Síntese do capítulo
4 - BlueJ
4.1 Introdução
4.2 Passos na criação de aplicações
4.2.1 Janela de trabalho
4.2.1.1 Project
4.2.2 Criação de uma nova classe
4.2.3 Erros de compilação
4.2.4 Criação de instâncias
4.2.5 Interacção com as instâncias
4.3 Tools
4.4 View
5 - Hierarquia de Classes e Herança
5.1 A hierarquia de classes
5.2 O mecanismo de herança
5.2.1 Algoritmo de procura de métodos
5.2.2 Sobreposição de métodos e variáveis: referências this e super
5.2.3 Modificadores e redefinição de métodos
5.2.4 Classes sem subclasses
5.2.5 Subclasses e construtores: utilização de this() e super()
5.2.6 O topo da hierarquia: a classe Object
5.3 Criação de classes via herança: exemplos
5.3.1 Exemplo 1: subclasses de Ponto2D
Pixel
Ponto3D
5.3.2 Exemplo 2: complexos
5.4 Compatibilidade entre classes e subclasses
5.4.1 O princípio da substituição
5.4.2 Procura dinâmica de métodos: dynamic method lookup
5.4.3 Tipos covariantes e redefinição de métodos
5.5 Programação genérica via polimorfismo
5.6 Programação incremental
5.7 O problema da classificação: classes novas como subclasses de Object
5.8 Herança versus Composição
5.9 Criação de classes: regras anotadas
5.10 Síntese do capítulo
6 - Classes Abstractas e Polimorfismo
6.1 Introdução às classes abstractas
6.2 Utilização de classes abstractas
6.3 Classes abstractas e variáveis de instância
6.4 Considerações finais e exemplos
6.5 Síntese do capítulo
7 - Interfaces
7.1 Introdução
7.2 Interfaces JAVA: declaração
7.3 Hierarquia de interfaces
7.4 Implementação de interfaces
7.5 Classes abstractas versus Interfaces
7.6 Interfaces constantes e importação estática
7.7 Hierarquia múltipla de interfaces
7.8 Interfaces predefinidas de JAVA
7.8.1 A interface Serializable
7.9 Interfaces parametrizadas
7.10 Interfaces parametrizadas de colecções
7.11 Síntese do capítulo
8 - Colecções e Tipos Parametrizados
8.1 Introdução
8.2 Colecções de JAVA5/6
8.3 Tipos genéricos
8.4 Listas de tipo E: List
8.4.1 Classe ArrayList
8.4.2 Iteradores de colecções
Iterador foreach
Iterator
ListIterator
8.5 Implementação de colecções
8.6 Clone de colecções
8.7 Exemplo: listas de amigos
8.8 Exemplo: plano
8.9 Conjuntos de tipo E: Set
8.10 Exemplo: zoo
8.11 Wildcards: parte I
8.12 Auto-boxing e auto-unboxing em listas
8.13 Maps de K para V
8.14 HashMap
8.14.1 hashcode() e equals()
8.14.2 Exemplo: banco
8.14.3 Modificação das chaves de um map
8.14.4 Auto-boxing e auto-unboxing em maps
8.15 Wildcards: parte II
8.16 TreeMap
8.16.1 Exemplo: infomapa de países
8.16.2 Maps complexos
8.17 TreeSet
8.18 Filas de tipo E: Queue
8.19 Tipos enumerados
8.19.1 Tipos enumerados em JAVA
8.19.2 Métodos predefinidos
8.19.3 EnumSet
8.19.4 Atributos e métodos em enumerados
8.19.5 EnumMap
8.19.6 Propriedades adicionais
8.20 Colecções: performance
8.21 Síntese do capítulo
9 - Excepções
9.1 Introdução
9.2 O que é uma excepção?
9.3 Tratamento de excepções: try e catch
9.3.1 Exemplos de utilização
9.4 Lançamento de excepções: throw e throws
9.4.1 Exemplo: equipa robusta
9.4.2 Exemplo: stack robusta
9.4.3 Relançamento de excepções
9.5 Redefinição de métodos com throws
9.6 Excepções em construtores
9.7 Classes de excepção de JAVA
9.8 Síntese do capítulo
10 - Streams
10.1 Introdução
10.2 I/O básico
10.3 Classes não stream de java.io
10.3.1 Classe File
10.3.2 Interface FilenameFilter
10.3.3 Classe RandomAccessFile
10.4 Streams de caracteres
10.4.1 Estudo e teste das principais streams
10.4.2 Classe Writer
10.4.3 Aninhamento de streams
10.4.4 Classe BufferedWriter
10.4.5 Classe FileWriter
10.4.6 Classe PrintWriter
10.4.7 Classe Reader
10.5 Streams de bytes
10.5.1 Classes OutputStream e InputStream
10.6 Streams de objectos
10.7 Outras considerações
10.8 Escritas e leituras polimórficas
10.9 Síntese do capítulo
11 - Classes Genéricas e Classes Especiais
11.1 Introdução
11.2 Classes genéricas
11.2.1 Argumentos de tipo com limites
11.2.2 Elisão de tipos, tipos reificáveis e métodos adaptadores
11.2.3 Wildcard capture
11.2.4 Métodos genéricos
11.2.5 Inferência de tipos
11.2.6 Membros estáticos
11.2.7 Tipos parâmetro Comparable
11.2.8 Unchecked warnings
11.2.9 Restrições principais aos tipos genéricos
11.3 Classes JAVA de tipo particular
11.3.1 Classes membro estáticas
11.3.2 Classes membro
11.3.3 Classes locais e anónimas
11.4 Exemplo: Arvbin
11.5 Class e factory methods
11.6 Síntese do capítulo
Referências
Índice Remissivo
|