Isaias Camilo Boratti Professor Adjunto do Departamento de Informática e de Estatística Universidade Federal de Santa Catarina Programação Orientada a Objetos em Java Conceitos Preliminares O Modelo de Objetos Representação de Classes em Java Implementação de Classes Desenvolvimento de Programas Especialização de Classes Manipulação de Arranjos Outros Recursos de POO e Java Visual Books Sumário 1 Conceitos Preliminares .................................................................13 1.1 Introdução .....................................................................................13 1.2 O Processo de Abstração .............................................................14 1.3 Operações de Abstração .............................................................16 1.3.1 Classificação/Instanciação .....................................................17 1.3.2 Generalização/Especialização ...............................................19 1.3.3 Agregação/Decomposição ......................................................21 1.3.4 Associação ..................................................................................25 1.4 Resumo ...........................................................................................26 1.5 Exercícios Propostos .....................................................................27 2 O Modelo de Objetos ....................................................................29 2.1 Objetos ............................................................................................29 2.2 Representação Visual de Objetos ..............................................33 2.3 Classes ............................................................................................34 2.4 Representação de Classes ...........................................................37 2.5 Aspectos de Linguagem ..............................................................38 2.6 O Computador ..............................................................................39 2.7 Mensagem ......................................................................................40 2.8 Resumo ...........................................................................................43 2.9 Exercícios Propostos .....................................................................44 3 Representação de Classes em Java ............................................45 3.1 Introdução .....................................................................................45 3.2 Primeiros Programas Java ...........................................................45 3.3 Um Programa com Objetos ........................................................48 3.4 Identificadores em Java ...............................................................57 3.5 Tipos de Valores ............................................................................59 3.6 Objetos e Variáveis .......................................................................60 3.7 Criação de Objetos e Variáveis ..................................................61 3.8 Seqüência de Caracteres .............................................................63 3.9 Aspectos de Funcionamento ......................................................64 3.10 Compilação ..................................................................................68 3.11 Conclusões ...................................................................................70 3.12 Resumo .........................................................................................71 3.13 Exercícios Propostos ...................................................................72 4 Implementação de Classes ..........................................................75 4.1 Aspectos de Interface ...................................................................75 4.2 Implementação de Métodos .......................................................76 4.2.1 Implementação de Construtores ............................................78 4.2.2 Implementação de Métodos ....................................................81 4.3 Escopo .............................................................................................84 4.4 Documentação Interna à Implementação ...............................86 4.5 Parâmetros .....................................................................................87 4.6 Passagem de Argumentos ...........................................................93 4.7 Problema Resolvido ......................................................................93 4.8 Implementação de Objetos .........................................................96 4.9 Outros Tipos de Valores em Java .............................................100 4.9.1 Tipo int ........................................................................................101 4.9.2 Tipo short ....................................................................................101 4.9.3 Tipo byte .....................................................................................101 4.9.4 Tipo long .....................................................................................101 4.9.5 Tipo double .................................................................................102 4.9.6 Tipo float .....................................................................................102 4.10 Atribuição em Java ....................................................................103 4.10.1 O Processo de Atribuição ......................................................103 4.10.2 Atribuições Permitidas ...........................................................104 4.10.3 Conversão Explícita de Tipo .................................................104 4.11 Expressões Aritméticas ..............................................................105 4.11.1 Operadores Aritméticos .........................................................105 4.11.2 Hierarquia das Operações Aritméticas ...............................106 4.11.3 Exponenciação .........................................................................107 4.11.4 Operadores Aritméticos de Atribuição ...............................107 4.11.5 Operadores de Incremento e Decremento .........................108 4.12 Expressões Lógicas .....................................................................109 4.12.1 Hierarquia dos Operadores ...................................................111 4.12.2 Aplicações com Expressões Lógicas ....................................112 4.13 Modelagem de Classes ..............................................................113 4.14 Resumo .........................................................................................113 4.15 Exercícios Propostos ...................................................................115 5 Desenvolvimento de Programas .................................................121 5.1 Introdução .....................................................................................121 5.2 Métodos com Processos de Repetição .......................................122 5.3 Métodos com Processos de Seleção ...........................................127 5.4 Comandos de Repetição e Seleção ............................................130 5.4.1 Comando do-while ...................................................................130 5.4.2 Comando while .........................................................................132 5.4.3 Comando for ..............................................................................133 5.4.4 Comando break .........................................................................134 5.4.5 Comando if .................................................................................135 5.4.6 Comando switch .......................................................................137 5.4.7 Comparando Objetos ...............................................................139 5.5 Encapsulamento ...........................................................................141 5.5.1 Definição e Importância ..........................................................141 5.5.2 Encapsulamento em Java ........................................................143 5.5.3 A Palavra-chave this ................................................................151 5.5.4 Interface de uma Classe ...........................................................152 5.6 Exercícios Resolvidos ..................................................................153 5.7 Exercícios Propostos .....................................................................171 6 Especialização de Classes ............................................................183 6.1 O Processo de Especialização .....................................................183 6.2 Implementação da Especialização ............................................185 6.2.1 A Palavra-chave extends .........................................................185 6.2.2 A Palavra-chave super .............................................................191 6.3 O Mecanismo da Herança ..........................................................192 6.3.1 Herança .......................................................................................192 6.3.2 A Classe Object ..........................................................................194 6.3.3 Reutilização de Código ............................................................195 6.4 Problema Resolvido: Jogo de Dados .........................................197 6.5 Sobreposição de Métodos ............................................................201 6.5.1 Regras de Sobreposição ............................................................204 6.5.2 Acesso ao Método da Superclasse .........................................210 6.6 Compatibilidade de Endereços - Subtipagem .........................211 6.6.1 Subtipagem .................................................................................211 6.6.2 O Operador instanceof .............................................................213 6.7 Polimorfismo ..................................................................................213 6.8 Classes Abstratas ..........................................................................215 6.9 Sobrecarga de Métodos ...............................................................221 6.10 Conclusões ...................................................................................223 6.11 Exercícios Propostos ...................................................................223 7 Manipulação de Arranjos .............................................................227 7.1 Introdução .....................................................................................227 7.2 Construção de Arranjos ..............................................................227 7.3 Problema Resolvido: Avaliação de Alunos ..............................232 7.4 Problema Resolvido: Coleção de Valores Inteiros ..................242 7.5 Problema Resolvido: Coleção de Figuras .................................253 7.6 Problema Resolvido: Fila de Pessoas .........................................264 7.7 Algumas Operações com Arranjos ...........................................272 7.8 Arranjos Multidimensionais .......................................................274 7.9 Matriz como um Objeto ..............................................................278 7.10 Exercícios Propostos ...................................................................282 8 Outros Recursos de POO e Java .................................................289 8.1 Introdução .....................................................................................289 8.2 Atributos de Classe ......................................................................289 8.3 Métodos de Classe ........................................................................291 8.4 Principais Métodos da Classe Math ..........................................293 8.5 Manipulação de Strings ..............................................................298 8.6 A Classe Empacotadora Character ...........................................301 8.7 Exercício Resolvido - Tratamento de Strings ...........................303 8.8 Pacotes ............................................................................................305 8.9 Exercícios Propostos .....................................................................307 Referências .........................................................................................309