320
1 http://www.tiagodemelo.info Linguagem de Programação III Prof. Tiago Eugenio de Melo [email protected] Última atualização: 27/04/13 às 10:30:47.

Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

  • Upload
    others

  • View
    4

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

1

http://www.tiagodemelo.info

Linguagem de Programação IIIProf. Tiago Eugenio de Melo

[email protected]

Última atualização: 27/04/13 às 10:30:47.

Page 2: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

2

http://www.tiagodemelo.info

Sumário Introdução à Programação Orientada a Objetos Introdução à Java Apresentação da IDE Eclipse Fundamentos da Linguagem Java Classes e objetos Encapsulamento GUI Manipulação de arquivos Associação de objetos

Page 3: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

3

http://www.tiagodemelo.info

Introdução à Orientação a Objetos

Page 4: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

4

http://www.tiagodemelo.info

Introdução

Estruturação de software Sistemas de software modernos requerem um alto

grau de confiabilidade, disponibilidade e tolerância a falhas.

Sistemas de software são intrinsecamente complicados e têm se tornado ainda mais complicados com os novos requisitos impostos pelas aplicações modernas:

Alta confiabilidade. Alto desempenho. Desenvolvimento de software rápido e barato. Complexidade e tamanhos grandes.

Page 5: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

5

http://www.tiagodemelo.info

Introdução A chave do sucesso para um promissor

desenvolvimento de software está no controle de sua complexidade.

Necessidade de melhores ferramentas e metodologias para gerenciar a complexidade.

Técnicas para redução da complexidade: Particionamento do sistema em partes que sejam

muito bem limitadas (modularidade). Representação do sistema como uma hierarquia. Maximização da independência entre as partes do

sistema (baixo acoplamento e alta coesão).

Page 6: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

6

http://www.tiagodemelo.info

Introdução Na Crise de Software (1968) foi possível

identificar vários problemas na produção de software:

Pouco predizível. Baixa qualidade. Alto custo de manutenção. Muita duplicação de esforços.

Criação de diversas metodologias de desenvolvimento.

Surgimento do Paradigma Orientado a Objetos.

Page 7: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

7

http://www.tiagodemelo.info

Introdução Objetos em software: ideias básicas

A característica mais importante (e diferente) da abordagem orientada a objetos é a unificação de dois elementos: dados e funções.

A unificação desses dois elementos deu origem ao que chamamos de encapsulamento.

Objeto = dados (privados) + funções (públicas)

Page 8: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

8

http://www.tiagodemelo.info

Introdução Abstração de Dados

Uma das tarefas mais importantes em desenvolvimento de software é a análise do domínio do problema e a modelagem das entidades e fenômenos relevantes para a aplicação.

A abstração envolve três operações: Classificação/Instanciação. Generalização/Especialização. Agregação/Decomposição.

Page 9: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

9

http://www.tiagodemelo.info

Introdução Classificação/Instanciação

Permite agrupar objetos similares em uma mesma categoria.

Exemplo

Empregado

João Maria

Cla

ssifi

caçã

o Instanc iação

Page 10: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

10

http://www.tiagodemelo.info

Introdução Generalização/Especialização

A generalização permite que todas as instâncias de uma categoria específica sejam também consideradas instâncias de uma categoria mais abrangente.

O inverso não é necessariamente válido. Exemplo:

Empregado

Secretária EngenheiroMotorista Gen

era l

izaç

ão

Especia lização

Page 11: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

11

http://www.tiagodemelo.info

Introdução Agregação/Decomposição

Agregação é uma abstração que permite a identificação das categorias constituintes de outras categorias.

Ela é um mecanismo que forma o todo a partir das partes. Exemplo:

Agr

ega ç

ão

Decom

p osição

Page 12: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

12

http://www.tiagodemelo.info

Introdução Agregação vs Generalização

Agregação e generalização são noções completamente diferentes e complementares.

Elas são conceitos ortogonais. Nas hierarquias de generalização/especialização a

noção de herança está implicitamente representada, enquanto que nas hierarquias de agregação/decomposição isso nem sempre é verdade.

Page 13: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

13

http://www.tiagodemelo.info

Introdução O modelo de objetos proporciona

modularidade, trazendo os seguintes benefícios:

Reusabilidade: software pode ser escrito a partir de componentes já existentes que podem ser usados em diversas aplicações.

Extensibilidade: novos componentes de software podem ser desenvolvidos a partir de componentes já existentes sem afetar os componentes originais.

Page 14: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

14

http://www.tiagodemelo.info

Introdução Linguagens de Programação Orientadas a

Objetos Para transformar as abstrações do mundo

diretamente nas abstrações de uma linguagem de programação é necessária a passagem por passos intermediários.

Modelo OO da realidade

Realidade

Projeto OO

Código

Page 15: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

15

http://www.tiagodemelo.info

Introdução Breve história da orientação a objetos:

1967 Simula 6719721976198319881995

Artigo de Dahl sobre ocultamento da informaçãoPrimeira versão de Smalltalk

Primeira versão de C++Primeira versão de EifelPrimeira versão de Java

Page 16: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

16

http://www.tiagodemelo.info

Introdução Programação Orientada a Objetos

Programação orientada a objetos é um modelo de programação baseado em conceitos, tais como objetos, classes, tipos, ocultamento de informações, herança e polimorfismo.

A essência da programação orientada a objetos é a resolução de problemas baseada na identificação de objetos do mundo real pertencentes ao domínio da aplicação e o processamento requerido por esses objetos e, então, na criação de simulações deles.

Page 17: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

17

http://www.tiagodemelo.info

Introdução Programação Orientada a Objetos

Características positivas: Modularidade. Suporte explícito para generalização/especialização. Visão unificada de dados e processos. Atividade incremental e evolucionária. Reusabilidade.

Page 18: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

18

http://www.tiagodemelo.info

Introdução Muito do interesse no modelo de objetos é

devido à crescente percepção da indústria de software de que ele é uma maneira melhor de construir programas complexos, pois consegue promover a reutilização de software, melhorando a sua qualidade e reduzindo o seu custo de desenvolvimento.

Page 19: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

19

http://www.tiagodemelo.info

Introdução Linguagens Orientadas a Objetos vs

Linguagens Baseadas em Objetos Uma linguagem é baseada em objetos quando ela

dá apoio explícito somente ao conceito de objetos. Uma linguagem é baseada em classes quando ela

dá apoio para a criação de objetos e existe um mecanismo de agrupamento de objetos para a criação de novas classes, mas não dá suporte para um mecanismo de herança.

JavaScript é um exemplo de linguagem baseada em objetos.

Page 20: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

20

http://www.tiagodemelo.info

Introdução Uma linguagem é dita orientada a objetos

quando ela proporciona suporte linguístico para objetos, requer que esses objetos sejam instâncias de classes e, além disso, oferece suporte para um mecanismo de herança.

Resumindo:

Linguagem Orientada a Objetos = Objetos + Classes + Herança

Page 21: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

21

http://www.tiagodemelo.info

Introdução Linguagens Orientadas a Objetos vs

Linguagens Procedurais C é um exemplo de linguagem que é orientada a

ações, enquanto Java é orientada a objetos. A unidade de programação em C é a

função/procedimento, enquanto que em Java é a classe.

No paradigma procedural usam-se os verbos para identificação dos requisitos, enquanto que no paradigma orientado a objetos usam-se os substantivos.

Page 22: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

22

http://www.tiagodemelo.info

Introdução Comparação entre linguagens orientadas a

objetos e linguagens procedurais:

Paradigma Procedural Paradigma de Objetostipos de dados classes/tipos abstratos de dados

variável objeto/instânciafunção/procedimento operação/serviçochamada de função envio de mensagem

Page 23: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

23

http://www.tiagodemelo.info

Introdução Erros comuns quando se conhece a Orientação

a Objetos Pensar na POO simplesmente como uma

linguagem Supor que se está programando de maneira

orientada a objetos simplesmente porque se está utilizando uma linguagem orientada a objetos.

Medo de reutilização Os programadores gostam de criar e muitas

vezes não consideram interessante reutilizar um componente.

Muitos programadores não confiam no software que não escreveram.

Page 24: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

24

http://www.tiagodemelo.info

Introdução Erros comuns quando se conhece a Orientação

a Objetos Pensar na POO como uma solução para tudo

Apesar das vantagens da POO, existem situações em que não se deve usar a OO.

Page 25: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

25

http://www.tiagodemelo.info

Objetos e classes Objetos

Um objeto é uma entidade que possui um estado que pode ser alterado ao longo do seu tempo de vida.

O seu estado interno pode ser alterado através do envio de mensagens.

O envio de uma mensagem por um objeto implica na execução de uma operação correspondente da interface pública do objeto recipiente.

A única maneira de outras comunidades se comunicarem com outros objetos é através do envio de mensagens.

Page 26: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

26

http://www.tiagodemelo.info

Objetos e classes Portanto, um objeto encapsula (i) estado (dados) e

(ii) métodos (código) que podem acessar dados. Ilustração do conceito de objeto:

Objetos também possuem um comportamento bem definido e uma identidade que é única.

Page 27: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

27

http://www.tiagodemelo.info

Objetos e classes O comportamento define como um objeto age e reage em

termos de suas mudanças de estado e passagem de mensagens.

Na teoria de tipos abstratos de dados, o termo comportamento é usado para denotar a interface abstrata (ou interface pública) de um objeto.

Operação é definida como sendo alguma ação que um objeto realiza sobre um outro objeto para elicitar uma reação.

Identidade é a propriedade de um objeto que o distingue dos demais objetos.

Em resumo, um objeto possui: (i) um estado, (ii) um comportamento bem definido e (iii) uma identidade única.

Page 28: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

28

http://www.tiagodemelo.info

Objetos e classes Classes

Uma classe é uma descrição de um molde que especifica as propriedades e o comportamento de um conjunto de objetos similares.

Todo objeto é instância de apenas uma classe. Atributos são propriedades nomeadas de um objeto e que

armazenam os estados abstratos de cada objeto. Operações caracterizam o comportamento de um objeto e

são o único meio de acessar, manipular e modificar os atributos de um objeto.

Métodos são as implementações das operações que compõem a interface pública de um objeto.

Page 29: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

29

http://www.tiagodemelo.info

Módulos e Pacotes Módulos/Pacotes agrupam as classes

relacionadas. Eles definem restrições de acesso do seu

conteúdo para clientes fora do módulo. Módulos utilizam o conceito de tipo abstrato de

dados (TAD), possuindo duas partes: Especificação. Implementação.

Page 30: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

30

http://www.tiagodemelo.info

Encapsulamento É definido como sendo uma técnica para

minimizar as interdependências entre módulos programados independentemente, através de interfaces externas restritas.

Benefícios: Manutenção. Evolução do software.

Page 31: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

31

http://www.tiagodemelo.info

Encapsulamento Existem quatro opções definidas:

Pública. Qualquer um dos três tipos de clientes pode fazer acesso, manipular e invocar diretamente atributos e métodos declarados como public.

Privada. Atributos e métodos declarados como private são acessíveis somente dentro da própria classe. Não estão disponíveis para clientes por instanciação, herança ou módulo.

Visível pela subclasse. Se um atributo ou método é declarado como protected, somente os clientes por herança têm acesso a eles.

Acesso ao Módulo/Pacote. Sem a especificação do controle de acesso, atributos e métodos são declarados como friendly.

Page 32: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

32

http://www.tiagodemelo.info

Derivação das classes As classes podem ser derivadas de três

formas: Clientes por instanciação: são os que criam

instâncias da classe e manipulam essas instâncias através dos métodos.

Clientes por herança: são as subclasses que herdam os métodos e estrutura da classe.

Clientes por módulo: são as classes que estão dentro do mesmo módulo/pacote.

Page 33: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

33

http://www.tiagodemelo.info

Herança O que é herança?

Mecanismo para derivar novas classes a partir de classes existentes através de um processo de refinamento.

Uma classe derivada herda a representação de dados e operações de sua classe base.

Além disso, pode adicionar novas operações, estender a representação de dados ou redefinir a implementação de métodos já existentes.

Page 34: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

34

http://www.tiagodemelo.info

Herança Terminologia:

Classe derivada ou subclasse ou classe filha: é uma classe que herda parte dos seus atributos e métodos de outra classe.

Classe base ou superclasse ou classe pai: é uma classe a partir da qual classes novas podem ser derivadas.

Exemplo

Page 35: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

35

http://www.tiagodemelo.info

Herança A herança é usada para a construção de:

Implementação. Comportamento.

Page 36: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

36

http://www.tiagodemelo.info

Herança múltipla

A herança múltipla permite combinar diversas classes para produzir uma nova classe.

Quando uma classe herda de mais de um pai, existe a possibilidade de conflitos: operações e atributos com mesmo nome, mas com semânticas diferentes.

Exemplo:

Page 37: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

37

http://www.tiagodemelo.info

Agregação versus Generalização O uso de heranças longas ou de herança

múltipla podem confundir programadores. Exemplo:

Page 38: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

38

http://www.tiagodemelo.info

Herança A herança é uma forma de reutilização de software

em que novas classes são criadas a partir das classes existentes, absorvendo seus atributos e comportamentos e adicionando novos recursos que as novas classes exigem.

Em relação ao nível, a hierarquia pode ser realizada de dois modos:

Direta, em que uma subclasse herda explicitamente da superclasse, através da palavra-chave extends.

Indireta, em que uma subclasse herda de dois ou mais subníveis acima na hierarquia da classe (pacotes).

Page 39: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

39

http://www.tiagodemelo.info

Herança O ocultamento de informações é mantido através do

controle de acesso, com o uso da palavra private.

A subclasse pode, entretanto, acessar os membros public e protected de sua superclasse.

A subclasse também pode usar os membros com acesso de pacote de sua superclasse se a subclasse e a superclasse estiverem no mesmo pacote.

Quando um método de subclasse sobrescreve um método de uma superclasse, o método de superclasse pode ser acessado a partir da subclasse que precede o nome do método de superclasse com a palavra-chave super, seguida pelo operador ponto (.).

Page 40: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

40

http://www.tiagodemelo.info

Herança Membros de classe definidos como final possuem valor

fixo e podem ser usados fora da classe. Assim, sendo recomenda-se que sejam declarados como public.

O objeto de uma subclasse pode ser tratado como um objeto de sua superclasse, mas o contrário não é necessariamente verdadeiro.

Assim como o projetista de sistemas não-orientados a objetos deve evitar a proliferação desnecessária de funções, o projetista de sistemas orientados a objetos deve evitar a proliferação desnecessária de classes.

A proliferação pode classes cria problemas de gerenciamento e pode impedir a reutilização de softwares.

Page 41: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

41

http://www.tiagodemelo.info

Polimorfismo O que é polimorfismo?

Significa que variáveis podem referenciar mais do que um tipo.

Não é um conceito novo e várias linguagens de programação aplicam.

Funções são polimórficas quando seus operandos (parâmetros atuais) podem ter mais do que um tipo.

Tipos são ditos polimórficos se suas operações podem ser aplicadas a operandos de mais de um tipo.

Page 42: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

42

http://www.tiagodemelo.info

Acoplamento dinâmico O que é acoplamento?

Acoplamento é uma associação possivelmente entre um atributo e uma entidade.

Exemplo: Variáveis são entidades de programas e seus atributos

são seu nome, seu tipo e sua área de armazenamento.

Page 43: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

43

http://www.tiagodemelo.info

Acoplamento dinâmico Um acoplamento pode ser estático ou

dinâmico. Um acoplamento é estático ou adiantado se

ocorre antes do tempo de execução e permanece inalterado durante a execução do programa.

Um acoplamento é dinâmico ou atrasado se ocorre durante o tempo de execução e muda no curso da execução do programa.

A maior vantagem do acoplamento dinâmico é que as associações podem ser alteradas em tempo de execução.

Page 44: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

44

http://www.tiagodemelo.info

Acoplamento dinâmico Em programação orientada a objetos, temos o

uso de verificação estática de tipos associada com acoplamento dinâmico.

O acoplamento dinâmico é usado para a associação do nome de uma operação à sua implementação.

Essa associação é decidida apenas em tempo de execução, pois a implementação a ser executada depende do tipo do objeto que recebe a mensagem.

Page 45: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

45

http://www.tiagodemelo.info

Acomplamento dinâmico Exemplo de Python:

Page 46: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

46

http://www.tiagodemelo.info

Acoplamento dinâmico Classes Abstratas vs. Classes Concretas

Uma classe abstrata é uma classe que não tem instâncias diretas, mas cujas classes descendentes têm instâncias diretas.

Uma classe concreta é uma classe que pode ser instanciada.

Existem duas ideias principais envolvidas com a noção de classe abstrata:

Presença de operações abstratas. Habilidade de criar instâncias.

Page 47: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

47

http://www.tiagodemelo.info

Acoplamento dinâmico Classes Abstratas vs. Classes Concretas

Se uma classe contém operações abstratas então a classe não pode ser instanciada porque se um objeto for criado, ele não será capaz de responder a todas as mensagens.

Portanto, a presença de uma operação abstrata implica na inabilidade de instanciar objetos.

Entretanto o contrário não é verdadeiro.

Page 48: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

48

http://www.tiagodemelo.info

Acoplamento dinâmico O que é delegação?

Mecanismo parecido com o de herança, mas que opera diretamente entre objetos.

Exemplos de linguagens de programação: Self. Actor.

Neste modelo, os objeto são vistos como protótipos ou exemplares que delegam seu comportamento para objetos relacionados chamados delegados.

Um relacionamento delaga-para pode ser estabelecido dinamicamente.

Page 49: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

49

http://www.tiagodemelo.info

Pacotes Introdução

À medida que os aplicativos se tornam mais complexos, os pacotes ajudam os programadores a administrar a complexidade dos componentes.

Os pacotes também facilitam a reutilização de software, permitindo que os programas importem classes de outros pacotes.

Outro benefício dos pacotes é que eles fornecem uma convenção para nomes de classe únicos. Isto evita os conflitos de nomes de classes desenvolvidas por programadores diferentes.

Page 50: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

50

http://www.tiagodemelo.info

Pacotes Passos para criação de uma classe reutilizável:

Definir uma classe public. Se a classe não for public, ela pode ser utilizada somente por outras classes no mesmo pacote.

Escolher um nome de pacote e adicionar uma instrução package ao arquivo do código-fonte para a definição da classe reutilizável.

Compilar a classe de modo que ela seja colocada na estrutura de diretórios de pacotes apropriada.

Importar a classe reutilizável para dentro de um programa e utilizar a classe.

Page 51: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

51

http://www.tiagodemelo.info

Construtores Quando um objeto é criado, seus membros podem ser

inicializados por um método construtor.

O construtor é um método com o mesmo nome que a classe.

As variáveis podem ser inicializadas de três formas:

1.Com seus valores default (Java):• 0 para valores numéricos.• False para valores lógicos.• Null para referências.

2.Em um construtor da classe.

3.Ou seus valores podem ser configurados mais tarde, depois que o objeto for criado.

Page 52: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

52

http://www.tiagodemelo.info

Construtores Os construtores nunca são herdados – eles são

específicos para a classe em que são definidos.

Quando um objeto de uma subclasse é instanciado, o construtor da superclasse deve ser chamado para fazer qualquer inicialização necessária das variáveis de instância da superclasse do objeto de subclasse.

Uma chamada explícita ao construtor de superclasse (através da referência super) pode ser fornecida como a primeira instrução no construtor de subclasse.

Caso contrário, o construtor de subclasse chamará o construtor default da superclasse ou o construtor sem argumentos implicitamente.

Page 53: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

53

http://www.tiagodemelo.info

Construtores Métodos que fazem a interface externa de uma classe

devem ser declarados como public, sendo herdados pelas sub-classes.

Variáveis devem ser private.

Se tiver o objetivo de que a classe seja usada como super-classe por outras pessoas, deve-se manter as variáveis como private e prover métodos de acesso e manipulação como public. Controla-se assim a manipulação da classe base por parte da classe derivada.

Usamos o atributo protected quando definimos classes dentro de um package e desejamos dar ao usuário do pacote acesso apenas às sub-classes.

Page 54: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

54

http://www.tiagodemelo.info

Introdução à Java

Page 55: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

55

http://www.tiagodemelo.info

História do Java No ano de 1992, a Sun Microsystems formou

uma equipe para desenvolver inovações tecnológicas.

Essa equipe foi liderada por James Gosling.

Page 56: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

56

http://www.tiagodemelo.info

História do Java A ideia era criar um interpretador para

pequenos dispositivos, facilitando a reescrita de software para aparelhos eletrônicos.

O projeto resultou na criação de uma linguagem conhecida como Oak (baseada em C e C++).

Page 57: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

57

http://www.tiagodemelo.info

História do Java O nome Java surgiu como uma referência a

uma cafeteria local, cujo café vinha de uma ilha da Indonésia de mesmo nome.

Em 1993, a Sun aposta no potencial da linguagem para uso na WEB, com o chamado conteúdo dinâmico.

Page 58: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

58

http://www.tiagodemelo.info

História do Java Em 1994, foi construído um navegador

chamado HotJava. Em maio de 1995, a Sun anunciou o

lançamento oficial da linguagem Java. Em janeiro de 1996, a Netscape decide dar

suporte a Java. Nesse mesmo ano, foi disponibilizada a

primeira versão da linguagem (JDK 1.0).

Page 59: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

59

http://www.tiagodemelo.info

O que é Java? Um conjunto de especificações. Uma linguagem de programação. Um conjunto de Application Programming

Interface (APIs). Máquina virtual.

Page 60: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

60

http://www.tiagodemelo.info

Características de Java Simplicidade

Pode ser utilizada sem larga experiência ou treinamento intenso.

Programadores de C e C++ terão uma familiaridade com Java.

Page 61: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

61

http://www.tiagodemelo.info

Características de Java Orientada a objetos

Java é uma linguagem de programação orientada a objetos (pura).

Tudo em Java são classes ou instâncias de classes.

Sem ponteiros Java não possui ponteiros, isto é, Java não permite

a manipulação direta de endereços de memória.

Distribuída Java suporta aplicações do tipo cliente/servidor

(java.net.package).

Page 62: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

62

http://www.tiagodemelo.info

Características de Java Robusta

Java é uma linguagem fortemente tipada. Requer declaração explícita de métodos. Não suporta ponteiros, eliminando a possibilidade

de invasões de área e manipulação errônea com aritmética de ponteiros.

Page 63: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

63

http://www.tiagodemelo.info

Características de Java Coletor de lixo (garbage collector)

Mecanismo automático de gerenciamento de memória.

Permite multithreading São recursos que permitem ao desenvolvedor criar

programas capazes de executar múltiplas rotinas concorrentemente.

Independência de plataforma Programas em Java são compilados para uma

forma intermediária (bytecodes).

Page 64: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

64

http://www.tiagodemelo.info

Características de Java Tratamento de exceções

Permite o tratamento de situações excepcionais. Possui exceções embutidas e permite a criação de

novas exceções.

Segurança Pode executar programas via rede com restrições

de execução, além de itens específicos da linguagem, como ser fortemente tipada, ter assinaturas digitais em suas classes compiladas, etc.

Page 65: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

65

http://www.tiagodemelo.info

Características de Java Máquina virtual Java

Utiliza o conceito de máquina virtual. Camada responsável por interpretar os bytecodes.

Page 66: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

66

http://www.tiagodemelo.info

Características de Java Pode ser utilizada com diversas finalidades:

java.applet Appletsjava.awt Graphics, window, GUIjava.awt.datatransfer Data transfer (copy,paste)java.awt.event Eventsjava.awt.image Image (jpg, gif)java.awt.peer GUI for platform independencejava.beans JavaBeansjava.io input outputjava.lang Core languagejava.lang.reflect Reflectionjava.math Arithmeticjava.net Networkingjava.rmi +3 Remote Method Invocationjava.security +2 Securityjava.sql JDBC Sql for Databasesjava.text Internationalizationjava.util Data typesjava.util.zip Compression

Page 67: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

67

http://www.tiagodemelo.info

Processo de criação de programas em Java

Criação de programas em duas etapas:

Page 68: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

68

http://www.tiagodemelo.info

Processo de criação de programas em Java

Como é possível rodar o mesmo programas em arquiteturas diferentes (multiplataforma)?

Page 69: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

69

http://www.tiagodemelo.info

Slogan de Java

Write once, run anywhere!

Page 70: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

70

http://www.tiagodemelo.info

Plataformas Java A linguagem Java conta com três ambientes de

desenvolvimento: JSE (Java Platform, Standard Edition): é a base

da plataforma. Inclui o ambiente de execução e as bibliotecas comuns são voltadas para PCs e servidores.

JEE (Java Platform, Enterprise Edition): a edição voltada para o desenvolvimento de aplicações corporativas e para a Internet.

JME (Java Platform, Micro Edition): a edição para o desenvolvimento de aplicações para dispositivos móveis e embarcados.

Page 71: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

71

http://www.tiagodemelo.info

Plataformas Java Além dessas, existem outras plataformas:

Java Card: voltada para dispositivos embarcados com limitações de processamento e armazenamento, como smart cards.

JavaFX: plataforma para desenvolvimento de aplicações multimídia em desktop/web (JavaFX Script) e dispositivos móveis (JavaFX Mobile).

Page 72: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

72

http://www.tiagodemelo.info

Componentes de uma plataforma Java

JRE (Java Runtime Environment) É composta de uma JVM e por um conjunto de

bibliotecas que permite a execução de softwares em Java.

Apenas permite a execução de programas, ou seja, é necessário o programa Java compilado (.class).

Page 73: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

73

http://www.tiagodemelo.info

Componentes de uma plataforma Java

JDK (Java Development Kit) É composto por um compilador (javac) e JVM. Visualizador de applets, bibliotecas de

desenvolvimento. Programa de composição de documentação

(javadoc). Depurador básico de programas (jdb) e a versão

runtime do ambiente de execução (JRE).

Page 74: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

74

http://www.tiagodemelo.info

Page 75: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

75

http://www.tiagodemelo.info

Eclipse Eclipse é um ambiente integrado de

desenvolvimento (IDE – Integrated Development Environment).

É uma ferramenta multilinguagem É possível desenvolver aplicativos em diversas

linguagens como Java, PHP, Python, C/C++, entre outras.

É uma ferramenta multiplataforma. É uma IDE para escrever, editar, compilar e

executar programas.

Page 76: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

76

http://www.tiagodemelo.info

Eclipse O Eclipse é formado por um conjunto de

plugins É possível criar diagramas UML e gerar código a

partir dos modelos de dados. É possível fazer controle de versões de software

(SVN, CVS, Clear Case, entre outros). Integrar com servidores WEB (Apache, IIS, entre

outros) e de aplicação (Jboss, WebLogic, entre outros).

É possível trabalhar com interfaces gráficas (Java Swing).

Page 77: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

77

http://www.tiagodemelo.info

Eclipse O Eclipse foi desenvolvido e é mantido pela

IBM. O Eclipse é software livre. Em suma, é uma ferramenta adequada para

desenvolvimento de software com diferentes finalidades.

Page 78: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

78

http://www.tiagodemelo.info

Pontos positivos Ferramenta livre. Ferramenta gratuita. Vasta quantidade de plugins. Boa performance. Grande comunidade de usuários. Facilidade de instalação dos plugins.

Page 79: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

79

http://www.tiagodemelo.info

Instalação Requisitos

Máquina virtual Java. Download Eclipse.

Referências http://www.eclipse.org/downloads

Page 80: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

80

http://www.tiagodemelo.info

Instalação Downloads

Page 81: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

81

http://www.tiagodemelo.info

Conceitos básicos Workbench

Janela principal do Eclipse. Função: permitir que o usuário trabalhe com

projetos.

Visões São janelas apresentadas pelo workbench.

Perspectiva É um conjunto de visões agrupadas de maneira

pré-ordenada. Uma perspectiva exibe diversos pontos de vista de

um mesmo projeto.

Page 82: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

82

http://www.tiagodemelo.info

Conceitos básicos Workspace

Diretório que serve como repositório de projetos. O Eclipse identifica um workspace por meio de um

diretório.

Projeto Eclipse Um projeto Eclipse é um subdiretório dentro do

workspace que possui um arquivo chamado .project.

Um projeto Eclipse é independente do sistema operacional.

Page 83: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

83

http://www.tiagodemelo.info

Conceitos básicos Início

Page 84: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

84

http://www.tiagodemelo.info

Conceitos básicos Workspace

Page 85: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

85

http://www.tiagodemelo.info

Conceitos básicos Tela principal

Page 86: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

86

http://www.tiagodemelo.info

Conceitos básicos Criação de um projeto Java

Page 87: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

87

http://www.tiagodemelo.info

Conceitos básicos Criação de uma classe em Java

Page 88: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

88

http://www.tiagodemelo.info

Conceitos básicos Criação de um primeiro programa

Page 89: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

89

http://www.tiagodemelo.info

Conceitos básicos Criação de um primeiro programa

Page 90: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

90

http://www.tiagodemelo.info

Fundamentos de Java

Page 91: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

91

http://www.tiagodemelo.info

Fundamentos Processo de criação de um programa em Java

Page 92: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

92

http://www.tiagodemelo.info

Fundamentos Características básicas

Comentários Classes Método principal

Page 93: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

93

http://www.tiagodemelo.info

Fundamentos Características básicas

Uso de documentação Javadoc /** */

Java é case sensitive

Page 94: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

94

http://www.tiagodemelo.info

Fundamentos Características básicas

A extensão do arquivo é .java A classe pública deve ter o mesmo nome do

arquivo. Método main.

Page 95: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

95

http://www.tiagodemelo.info

Fundamentos Compilação

Execução

Page 96: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

96

http://www.tiagodemelo.info

Fundamentos Palavras-reservadas

Page 97: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

97

http://www.tiagodemelo.info

Fundamentos Tipos primitivos

Page 98: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

98

http://www.tiagodemelo.info

Fundamentos Declaração de variáveis

Declaração de constantes Uso do modificador final.

Exemplo: final int a;

Page 99: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

99

http://www.tiagodemelo.info

Fundamentos Leitura de valores a partir do teclado

Page 100: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

100

http://www.tiagodemelo.info

Fundamentos Operadores aritméticos

Page 101: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

101

http://www.tiagodemelo.info

Fundamentos Operadores relacionais

Page 102: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

102

http://www.tiagodemelo.info

Fundamentos Operadores de bits

Page 103: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

103

http://www.tiagodemelo.info

Fundamentos Operadores lógicos

Page 104: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

104

http://www.tiagodemelo.info

Fundamentos Estruturas de controle

Page 105: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

105

http://www.tiagodemelo.info

Fundamentos Estruturas de controle

Page 106: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

106

http://www.tiagodemelo.info

Fundamentos Estruturas de controle

Page 107: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

107

http://www.tiagodemelo.info

Fundamentos Estruturas de controle

Page 108: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

108

http://www.tiagodemelo.info

Fundamentos Strings

String não é um tipo primitivo de Java. String também não é um array. String define um objeto. A declaração é convencional.

Page 109: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

109

http://www.tiagodemelo.info

Classes e Objetos

Page 110: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

110

http://www.tiagodemelo.info

Classes e Objetos A Programação Orientada a Objetos (POO) é

uma técnica de programação que se baseia na construção de classes e utilização de objetos.

Os objetos são formados por dados e operações específicas, que delimitam um conjunto particular de atividades.

Page 111: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

111

http://www.tiagodemelo.info

Classes e Objetos As classes são modelos para os objetos. Um conjunto de objetos que possuem

características (atributos) e comportamentos (métodos) comuns podem usar o mesmo modelo, ou seja, pertencem a mesma classe.

Page 112: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

112

http://www.tiagodemelo.info

Classes e Objetos Assim, uma classe é um modelo para um novo

tipo de objeto que pode ser definido pelo programador. Já os objetos são instâncias de classes.

Dessa forma, pode-se afirmar que as classes são utilizadas para definir novos tipos na POO.

Page 113: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

113

http://www.tiagodemelo.info

Classes e Objetos Sintaxe de classe em Java

Page 114: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

114

http://www.tiagodemelo.info

Classes e Objetos A sintaxe da criação de um objeto é:

Page 115: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

115

http://www.tiagodemelo.info

Classes e Objetos Aquela sentença realiza três ações:

Declaração. Nesta ação, apenas se declara que um objeto será de uma determinada classe declarada, ou seja, declarações não criam objetos. Por exemplo, o comando Pessoa obj apenas declara que obj pertencerá à classe Pessoa, porém o objeto não foi criado e, conseqüentemente, não poderá ser usado antes de ser inicializado.

Instanciação. Nesta ação, o operador new cria dinamicamente um novo objeto. Ele requer uma chamada a um construtor, que é um método especial e que será detalhado na seção sobre métodos.

Page 116: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

116

http://www.tiagodemelo.info

Classes e Objetos Inicialização. Após ter sido criado, é necessário

inicializar o objeto. O processo de inicialização consiste em atribuir valores para os atributos dos objetos. Isto é realizado durante a execução do construtor.

Page 117: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

117

http://www.tiagodemelo.info

Classes e Objetos Acessibilidade

Acessibilidade, também conhecida como visibilidade, é um aspecto importante na POO, pois possibilita que o programador limite o uso de certos elementos das classes.

É com a restrição de acesso que se implementa, em grande parte, o encapsulamento das classes.

Java possui três moderadores de acesso explícitos (public, private e protected) e um especificador implícito (default).

Page 118: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

118

http://www.tiagodemelo.info

Classes e objetos Vetor de objetos

Inicialmente, devemos lembrar alguns aspectos sobre a criação de vetores em Java:

int [ ] idades; int [ ] é um tipo. Um array é sempre um objeto, portanto, a

variável idades é uma referência. É necessário criar um objeto para usar um array. idades = new int [10];

Page 119: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

119

http://www.tiagodemelo.info

Classes e objetos Vetor de objetos

Quando criamos um array de alguma classe, ela possui referências.

O objeto, como sempre, está na memória principal e, no seu array, só ficam guardadas as referências (endereços).

No exemplo abaixo, quantas contas foram criadas?

Nenhuma, pois, na verdade, foram criados 10 espaços que o programador pode utilizar para guardar uma referência a uma Conta.

Page 120: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

120

http://www.tiagodemelo.info

Classes e objetos Vetor de objetos

No exemplo anterior, para se usar o vetor Conta[ ] é necessário preenchê-lo antes.

ou diretamente:

Page 121: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

121

http://www.tiagodemelo.info

Classes e objetos Vetor de objetos

Page 122: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

122

http://www.tiagodemelo.info

Classes e objetos Devemos lembrar:

Um array de tipos primitivos guarda valores, um array de objetos guarda referências.

A partir do momento que um array foi criado, ele não pode mudar de tamanho.

Page 123: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

123

http://www.tiagodemelo.info

Classes abstratas Uma classe em Java criada para funcionar

como um tipo e que pode instanciar objetos é considerada concreta.

Diferentemente disto, uma classe em Java será considerada como abstrata se for assim declarada ou nas situações em que os seus métodos declarados não estão implementados, mas são apenas especificados.

Page 124: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

124

http://www.tiagodemelo.info

Classes abstratas Métodos que não possuem implementação

também são chamados de abstratos. Classes que possuam métodos abstratos são

consideradas também como abstratas e não podem ser instanciadas.

Page 125: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

125

http://www.tiagodemelo.info

Classes abstratas Hipóteses em que uma classe Exemplo será

abstrata: Se a classe Exemplo possuir explicitamente, pelo

menos, um método abstrato. Se qualquer superclasse de Exemplo possuir um

método abstrato e a classe Exemplo não implementá-lo.

Se a classe Exemplo declarar ou herdar um método abstrato de uma interface e a classe Exemplo não implementá-lo.

Page 126: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

126

http://www.tiagodemelo.info

Classes abstratas Sintaxe de uma classe abstrata

Sintaxe de um método abstrato

Page 127: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

127

http://www.tiagodemelo.info

Classes abstratas Exemplo

Page 128: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

128

http://www.tiagodemelo.info

Classes abstratas Exemplo

Page 129: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

129

http://www.tiagodemelo.info

Classes internas Classes internas ou aninhadas são classes

declaradas dentro de outras classes, sendo consideradas como membros das classes externas.

O uso mais comum das classes internas é para lidar com eventos.

Os objetos das classes internas são associados aos objetos das classes externas.

Para criar um objeto de uma classe interna é necessário criar primeiro um objeto da classe externa.

Page 130: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

130

http://www.tiagodemelo.info

Classes internas Exemplo

Page 131: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

131

http://www.tiagodemelo.info

Classes internas Uma classe interna tem acesso total aos

campos e métodos da classe que a envolve, incluindo aqueles de acesso privado.

De acordo com a Sun, isto não quebra o conceito de acesso privado, já que a classe aninhada também pertence à classe que a envolve.

Page 132: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

132

http://www.tiagodemelo.info

Classes internas As classes aninhadas são elementos auxiliares

e somente devem ser criadas quando sua implementação se limita a dois ou três métodos simples.

Riscos Aumenta significativamente a complexidade do

código. Dificulta o trabalho de depuração (erros de

compilador são mais confusos em classes internas).

Page 133: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

133

http://www.tiagodemelo.info

Classes finais Uma classe pode ser declarada como final se a

sua definição está completa e não se deseja que ela seja estendida.

Um erro de compilação ocorrerá se uma classe herdar de outra classe, quando esta for declarada como final.

Daí, pode-se afirmar que uma classe final não poderá ter subclasses.

Page 134: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

134

http://www.tiagodemelo.info

Classes finais A sintaxe de criação de uma classe final é:

Page 135: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

135

http://www.tiagodemelo.info

Classes anônimas Classe anônima é uma classe sem nome e

definida como uma subclasse ou para a realização de uma interface, com o propósito de servir para a instanciação de um único objeto.

Como as classes anônimas em Java comprometem a legibilidade do código, estas não devem ser usadas quando for necessário implementar mais do que dois ou três métodos de modo simples.

Assim, este tipo de classe será examinada com maior profundidade no assunto de herança.

Page 136: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

136

http://www.tiagodemelo.info

Atributos As características dos objetos ou das suas

partes são identificadas através dos seus atributos ou campos.

A sintaxe da criação de atributos é:

Page 137: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

137

http://www.tiagodemelo.info

Constantes Um atributo pode se tornar uma constante em

Java através do comando final.

Opcionalmente, é possível adicionar um moderador de acesso à constante em Java, com o objetivo de determinar o escopo dessa constante.

Page 138: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

138

http://www.tiagodemelo.info

Constantes A sintaxe da declaração de constantes em

Java é:

Page 139: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

139

http://www.tiagodemelo.info

Métodos Os métodos são blocos de rotinas associadas

aos objetos, isto é, trechos de código que permitem realizar ações ou transformações sobre os valores dos atributos, modificando o estado dos objetos e proporcionando o comportamento desejado.

Page 140: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

140

http://www.tiagodemelo.info

Métodos A sintaxe de Java para a criação de métodos é:

O moderador de acesso determina a visibilidade do método.

Em geral, os métodos são públicos para que as outras classes possam acessar os atributos privados.

Page 141: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

141

http://www.tiagodemelo.info

Métodos O tipo de retorno indica qual o tipo de valor

devolvido como resultado do método. Se o método não retornar um valor, deve-se

utilizar void para indicar, ao compilador, que não existirá retorno.

Page 142: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

142

http://www.tiagodemelo.info

Métodos Exemplos de declaração de métodos:

Page 143: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

143

http://www.tiagodemelo.info

Métodos Após a instanciação de um objeto, este pode

utilizar os seus métodos através do operador (.), também conhecido como seletor.

A sintaxe de Java para uso de métodos pelos objetos é:

Page 144: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

144

http://www.tiagodemelo.info

Métodos Exemplo

Page 145: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

145

http://www.tiagodemelo.info

Métodos construtores Construtores são métodos especiais utilizados

para inicializar e preparar novos objetos durante a sua criação.

Não existe um comando especial para diferenciar os construtores dos demais métodos. Porém, eles têm, obrigatoriamente, o mesmo nome que as suas classes.

Os construtores não têm nenhum tipo de retorno, pois o resultado de sua chamada é sempre uma nova instância.

Page 146: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

146

http://www.tiagodemelo.info

Métodos construtores Uma classe pode conter mais de um

construtor, desde que não haja construtor com igual lista de parâmetros, ou seja, com igual assinatura do método.

Java não exige que o programador escreva construtores para as classes.

Page 147: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

147

http://www.tiagodemelo.info

Métodos construtores A inicialização padrão de Java segue as

seguintes regras: Variáveis de tipo primitivo numéricas e caracteres

recebem o valor 0 (zero). Variáveis de tipo lógico recebem valor falso

(false).

Variáveis de instância recebem valor null, indicando a ausência de instâncias válidas.

Page 148: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

148

http://www.tiagodemelo.info

Métodos construtores Exemplo:

Page 149: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

149

http://www.tiagodemelo.info

Métodos construtores Operador this:

O operador this é utilizado para que um objeto possa acessar uma referência a si próprio.

Quando um método não estático é chamado por um objeto particular, o corpo do método utiliza implicitamente o operador this para referenciar as variáveis de instância do objeto e de outros métodos.

Page 150: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

150

http://www.tiagodemelo.info

Métodos construtores Exemplo de uso do comando this:

Page 151: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

151

http://www.tiagodemelo.info

Sobrecarga de métodos A sobrecarga de métodos (overload) é uma útil

característica da programação orientada a objetos que permite a existência de dois ou mais métodos com o mesmo nome, desde que possuam listas de parâmetros diferentes.

O compilador deve escolher qual método chamar.

Vários métodos podem ser sobrecarregados numa mesma classe.

Page 152: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

152

http://www.tiagodemelo.info

Sobrecarga de métodos O benefício deste recurso para o programador

é que ele pode manter o mesmo nome para operações similares, mesmo com comportamentos distintos, conseguindo melhorar a semântica do código e simplificar o uso das classes.

Page 153: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

153

http://www.tiagodemelo.info

Sobrecarga de métodos Exemplo de uso de métodos sobrecarregados:

Page 154: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

154

http://www.tiagodemelo.info

Métodos sobrescritos Quando uma classe é herdada por outra, todos

os seus métodos não privados são herdados. Porém, existem algumas situações que se

deseja alterar o comportamento de alguns desses métodos herdados.

Isto é realizado através da redefinição dos métodos da superclasse, a partir de sua reescrita, definindo-os com os mesmos nomes e com a mesma lista de parâmetros.

Page 155: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

155

http://www.tiagodemelo.info

Métodos sobrescritos Dessa forma, a chamada a um método

sobrescrito, a partir de um objeto instância da subclasse executará o comportamento redefinido pela subclasse e não mais o definido pela superclasse.

Se o objeto for instância da superclasse, o método executará o comportamento definido na própria superclasse.

Page 156: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

156

http://www.tiagodemelo.info

Métodos estáticos Existem algumas situações em que é desejável

que as várias instâncias de uma classe compartilhem alguma informação, tal como o valor de uma constante, um número de identificação, contagem ou totalização.

Esse efeito pode ser obtido com o emprego do modificador static.

Page 157: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

157

http://www.tiagodemelo.info

Métodos estáticos A sintaxe de Java para uso de métodos

estáticos é:

Page 158: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

158

http://www.tiagodemelo.info

Métodos estáticos Exemplo de uso de métodos estáticos

Page 159: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

159

http://www.tiagodemelo.info

Método main O método main(.) é o ponto de entrada de

aplicativos Java. Para criar um aplicativo, é necessário que o

programador escreva uma definição de classe que inclua o método main(.).

A declaração padrão, em Java, deste método é:

Page 160: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

160

http://www.tiagodemelo.info

Método main Por convenção, o método main(.) é

declarado como público. No entanto, é necessário que ele seja estático,

para que possa ser executado sem a necessidade de construir uma cópia da classe correspondente.

Page 161: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

161

http://www.tiagodemelo.info

Método main O array args, do tipo String, contém quais

argumentos que o usuário possa ter fornecido na linha de comando.

O nome do vetor é comumente chamado de args, mas poderia ter qualquer outro nome.

Page 162: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

162

http://www.tiagodemelo.info

Pacotes Pacotes são unidades de Java que agrupam

classes relacionadas. Os pacotes definem restrições de acesso do

seu conteúdo para clientes fora da unidade. A criação de pacotes é feita através da

instrução package e que deve constar na primeira linha de um arquivo-fonte de Java.

Page 163: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

163

http://www.tiagodemelo.info

Pacotes A seguir, um exemplo de criação de um pacote

em Java:

Page 164: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

164

http://www.tiagodemelo.info

Pacotes Por exemplo, num programa desenvolvido

dentro da UEA, o pacote poderia ter o seguinte nome:

A seguir, um exemplo de importação de pacotes em Java:

Page 165: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

165

http://www.tiagodemelo.info

Pacotes O asterisco indica que serão importadas todas

as classes do pacote. Para importar uma classe específica, ao invés

do uso do asterisco, o programador deveria escrever o nome da classe que deseja importar.

Page 166: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

166

http://www.tiagodemelo.info

Interfaces Interface é o mecanismo pelo qual o

programador pode definir um conjunto de operações sem se preocupar com sua implementação, indicando assim um modelo de comportamento para outras classes.

As interfaces devem conter apenas métodos sem implementação.

Conceitualmente, as interfaces equivalem aos métodos abstratos.

Page 167: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

167

http://www.tiagodemelo.info

Interfaces Também é permitida a declaração de

constantes. A sintaxe de uma interface em Java é:

Page 168: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

168

http://www.tiagodemelo.info

Interfaces Para a construção das interfaces em Java é

necessário que o nome do arquivo tenha o mesmo nome da interface.

Não deve existir implementação dos métodos das interfaces, mas apenas a declaração destes métodos.

Além disso, as constantes (atributos possíveis em uma interface) são implicitamente públicas, estáticas e finais, sendo essa a forma usual de sua declaração.

Page 169: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

169

http://www.tiagodemelo.info

Interfaces As constantes são consideradas como

estáticas porque só pode existir uma cópia do dado disponível e final porque estes dados não devem ser modificados.

Comparação entre interfaces e classes abstratas:

Page 170: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

170

http://www.tiagodemelo.info

Exercícios Como uma classe em Java é estruturada? Qual é a diferença, quanto às restrições, dos

modificadores final e static?

Por que uma classe abstrata não pode ser instanciada?

Por que uma classe concreta não pode ter métodos abstratos?

Qual é a diferença entre uma interface e uma classe abstrata?

Page 171: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

171

http://www.tiagodemelo.info

Exercícios Qual é a diferença entre um construtor e um

método? Como é possível reconhecer um construtor em

Java? Um método estático pode acessar membros de

classe não estáticos? Justifique a sua resposta.

Page 172: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

172

http://www.tiagodemelo.info

Exercícios

Page 173: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

173

http://www.tiagodemelo.info

Referências http://www.caelum.com.br/apostila-java-

orientacao-objetos/um-pouco-de-arrays

Page 174: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

174

http://www.tiagodemelo.info

Encapsulamento

Page 175: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

175

http://www.tiagodemelo.info

Encapsulamento Definição:

Mecanismo que coloca junto o código (métodos) e os dados (atributos), mantendo-os controlados em relação ao seu nível de acesso.

O conceito de encapsulamento está intimamente ligado ao conceito de ocultamento da informação (information hiding).

Objetivo: Controlar o acesso de atributos e métodos de um

objeto, através de uma interface bem definida.

Page 176: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

176

http://www.tiagodemelo.info

Encapsulamento Exemplo:

Motor de um automóvel. O motorista não precisa ter conhecimento técnico

de como funciona cada parte do motor, mas apenas saber qual é a sua finalidade e como usá-lo.

Page 177: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

177

http://www.tiagodemelo.info

Encapsulamento Vantagens:

Proteger os atributos do objeto quanto à manipulação por outros objetos (proteção contra acesso não-autorizado, valores inconsistentes, entre outras possibilidades).

Esconder a estrutura interna do objeto de modo que a interação com este objeto seja relativamente simples e, à medida do possível, siga um padrão de desenvolvimento que facilite o entendimento dos programadores que o utilizem.

Page 178: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

178

http://www.tiagodemelo.info

Abstração de dados e encapsulamento

As classes, normalmente, ocultam os detalhes de implementação dos seus usuários. Isso se chama ocultamento de informações.

Exemplo: O motorista de um veículo ao fazer uso do motor

do carro está usando o motor para se locomover, porém não precisa saber dos seus detalhes de funcionamento.

Nesse exemplo, o cliente se preocupa com a funcionalidade que o motor oferece, mas não como essa funcionalidade é implementada.

Esse conceito é conhecido como abstração de dados.

Page 179: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

179

http://www.tiagodemelo.info

Abstração de dados e encapsulamento

A Programação Orientada a Objetos (POO) tem como uma das principais atividades a criação de tipos e a expressão de interações entre objetos desses tipos.

Essa atividade está diretamente associada à noção de tipo abstrato de dados (ADT - abstract data type), que melhora o processo de desenvolvimento de programas, pois permite mais flexibilidade ao programador na criação de novos tipos de dados.

Page 180: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

180

http://www.tiagodemelo.info

Abstração de dados e encapsulamento

Assim, pode-se afirmar que um ADT captura duas noções: representação de dados e operações que podem ser realizadas nesses dados.

Programadores Java utilizam classes para implementar tipos abstratos de dados.

Page 181: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

181

http://www.tiagodemelo.info

Encapsulamento em Java O encapsulamento em Java ocorre nas

classes. Quando o programador cria uma classe, ele

especifica o código e os dados que irão formar essa classe.

Estes elementos serão chamados de membros da classe.

Page 182: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

182

http://www.tiagodemelo.info

Encapsulamento em Java O comportamento e a interface de uma

classe são definidos pelos métodos que operam nas instâncias de dados.

O encapsulamento em Java é implementado através dos seus modificadores de acesso público, protegido, privado e implícito.

Page 183: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

183

http://www.tiagodemelo.info

Encapsulamento em Java Considerando que o objetivo de uma classe é

encapsular a complexidade, existem mecanismos para ocultar a complexidade da implementação que está dentro da classe.

Cada método ou variável em uma classe pode ser definida como pública, privada ou protegida.

Page 184: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

184

http://www.tiagodemelo.info

Encapsulamento em Java A interface de uma classe possibilita que todos

os usuários externos possam acessar livremente os dados da classe pelos quais os métodos públicos permitem.

Já os métodos privados estabelecem que os dados somente podem ser acessados pelos métodos que são membros da classe.

Page 185: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

185

http://www.tiagodemelo.info

Encapsulamento em Java Considerando que os membros privados de

uma classe só podem ser acessados por outras partes do programa através dos métodos públicos desta classe, o programador em Java pode fazer uso do encapsulamento para garantir que ações inapropriadas ou imprevistas não ocorram.

Page 186: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

186

http://www.tiagodemelo.info

Encapsulamento em Java Assim, o programador em Java deve ser

bastante cuidadoso ao definir a interface pública de uma classe para não expor demasiadamente o funcionamento da classe.

Page 187: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

187

http://www.tiagodemelo.info

Encapsulamento em Java Encapsulamento em classes

Page 188: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

188

http://www.tiagodemelo.info

Encapsulamento em Java O modificador private é o mais restritivo e

não foi criado para classes, mas apenas para membros de classes.

Apesar disso, é possível empregar o modificador private nas classes.

Page 189: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

189

http://www.tiagodemelo.info

Encapsulamento em Java A dúvida comum que surge é: como uma

classe pode acessar uma classe privada? A solução é declarar a classe privada como

sendo interna. Exemplo:

Page 190: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

190

http://www.tiagodemelo.info

Classes que encapsulam valores primitivos

Os tipos primitivos em Java são oriundos de classes que possibilitam a representação de valores nativos como classes, o que é particularmente útil para uso em métodos que esperam um argumento que seja um herdeiro da classe Object.

Page 191: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

191

http://www.tiagodemelo.info

AQUI Colocar uma figura com a hierarquia das

principais classes em Java

Page 192: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

192

http://www.tiagodemelo.info

Classes que encapsulam valores primitivos

Todas as classes que correspondem aos tipos primitivos de Java fazem parte do pacote java.lang e, por isso, não é necessário nenhum comando import para utilizá-las.

Page 193: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

193

http://www.tiagodemelo.info

Modificadores de acesso em Java O encapsulamento relaciona os dados

(atributos) com o código (métodos) que os manipula.

O encapsulamento também fornece outro recurso importante que é o controle de acesso.

Através dos modificadores de acesso, os programadores podem controlar o acesso aos membros de uma classe.

Page 194: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

194

http://www.tiagodemelo.info

Modificadores de acesso em Java É através desse controle que o programador

garante que não haverá um uso indesejado dos dados de uma determinada classe.

Normalmente, uma classe é criada como uma espécie de caixa preta, que pode ser usada, porém, somente através dos seus métodos públicos que foram colocados à disposição.

Page 195: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

195

http://www.tiagodemelo.info

Modificadores de acesso em Java O modificador de acesso é uma instrução que

define como um membro de uma classe poderá ser acessado.

Java possui um rico conjunto destes modificadores.

Alguns aspectos do controle de acesso estão relacionados à herança e ao conceito de pacotes.

Page 196: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

196

http://www.tiagodemelo.info

Modificadores de acesso em Java Java possui os seguintes modificadores de

acesso: public, private e protected.

Java também define um nível de acesso padrão (default).

O modo de acesso default também é conhecido como pacote (package).

Page 197: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

197

http://www.tiagodemelo.info

Modificadores de acesso em Java Dica:

Um membro em Java pode ter no máximo um modificador de acesso.

Page 198: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

198

http://www.tiagodemelo.info

Modificadores de acesso em Java Modificador de acesso public

Este modificador permite que o membro público seja acessado por qualquer outro código do programa.

O modificador de acesso public é o mais liberal e que, portanto, exige maior responsabilidade do programador ao empregá-lo.

Page 199: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

199

http://www.tiagodemelo.info

Modificadores de acesso em Java Modificador de acesso private

Este modificador determina que o membro privado só pode ser acessado por elemento de dentro da própria classe.

O modificador de acesso private é o mais restritivo e que deve ser empregado sempre que possível.

Page 200: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

200

http://www.tiagodemelo.info

Modificadores de acesso em Java Modificador de acesso protected

Somente os atributos e métodos podem ser declarados como protected.

Um membro protegido de uma classe está disponível a todas as classes do mesmo pacote, exatamente como um recurso padrão.

Além do mais, um recurso protegido de uma classe está disponível a todas as subclasses da classe que possui o recurso protegido.

Page 201: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

201

http://www.tiagodemelo.info

Modificadores de acesso em Java Modificador de acesso padrão (default)

Quando não é declarado o tipo de moderador, Java adota como o padrão (default).

Não existe a palavra-chave default em Java. Os recursos default de uma classe são acessíveis

a qualquer classe no mesmo pacote que a classe em questão.

Page 202: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

202

http://www.tiagodemelo.info

Modificadores de acesso em Java O que caracteriza um pacote em Java?

Quando um programador escreve um aplicativo que envolve várias classes diferentes, é possível que mantenha todos os seus códigos (arquivos .java) e todos os seus arquivos binários (arquivos .class) em um único diretório de trabalho.

Ao executar o código, o programador o faz a partir daquele diretório.

O ambiente de execução Java considera que todos os arquivos de classe no diretório atual de trabalho constituem um pacote.

Page 203: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

203

http://www.tiagodemelo.info

Modificadores de acesso em Java O que pode acontecer quando um programador

Java coloca várias classes num mesmo diretório sem se preocupar com o encapsulamento?

Significa que as classes deste diretório são acessíveis a quaisquer classes deste diretório, pois como se fossem do mesmo pacote.

Isto pode levar a resultados indesejados.

Page 204: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

204

http://www.tiagodemelo.info

Modificadores de acesso em Java Ordem de restrição dos modificadores de

acesso (mais restrito para mais liberal):

Page 205: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

205

http://www.tiagodemelo.info

Resumo dos moderadores de acesso

Page 206: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

206

http://www.tiagodemelo.info

Efeito dos moderadores em Java

Page 207: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

207

http://www.tiagodemelo.info

Uso dos métodos set e get Há necessidade de se ter métodos públicos

para que se possa acessar os atributos que, em geral, são privados.

O padrão adotado pelos programadores em Java para estes métodos é setNomeAtributo(.) e getNomeAtributo(.) para modificar e receber os valores dos atributos, respectivamente.

Page 208: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

208

http://www.tiagodemelo.info

Uso dos métodos set e get Então, qual é a razão de se colocar os atributos

como privados se existem métodos que podem acessá-los?

Por que não torná-los logo como públicos? Embora os métodos set() e get() possam fornecer

acesso a dados privados, o acesso é restrito pela maneira como os métodos foram implementados pelo programador. Isso ajuda a desenvolver programas mais seguros e confiáveis.

Page 209: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

209

http://www.tiagodemelo.info

Uso dos métodos set e get Exemplo:

Um atributo minuto de uma classe relógio. Sabe-se que esse atributo pode receber valores no

intervalo [0..60[. Não faria sentido qualquer valor fora desse

intervalo. Neste caso, recomenda-se o uso dos métodos gets

como uma forma de garantir a integridade dos dados das classes.

Page 210: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

210

http://www.tiagodemelo.info

Uso dos métodos set e get Dica:

Os projetistas de classe não precisam fornecer métodos set() ou get() para cada atributo private.Essas capacidades devem ser fornecidas somente quando fizerem sentido.

Page 211: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

211

http://www.tiagodemelo.info

Resumo de acesso em Java De forma resumida, os modos de acesso de

Java são: public: um recurso público que pode ser

acessado por qualquer classe. protected: um recurso protegido só pode ser

acessado por uma subclasse da classe que possui o recurso, ou por um membro do mesmo pacote da classe que possui o recurso.

Page 212: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

212

http://www.tiagodemelo.info

Resumo de acesso em Java De forma resumida, os modos de acesso de

Java são: default : um recurso padrão só pode ser acessado

por uma classe do mesmo pacote que a classe que possui o recurso.

private: um recurso privado só pode ser acessado pela classe que possui o recurso.

Page 213: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

213

http://www.tiagodemelo.info

Exercícios Quais são as restrições impostas pelos

comandos public, protected e private em Java? O modificador de acesso implícito impõe as

mesmas restrições do modificador protected? Justifique a sua resposta.

O método main de uma classe deve, obrigatoriamente, usar o modificador public? Justifique a sua resposta.

Page 214: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

214

http://www.tiagodemelo.info

Exercícios Crie uma classe em Java que: a) contenha os

atributos nome, idade e altura; b) encapsule os atributos; c) crie um método main que mostre os valores que estão nos atributos.

Page 215: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

215

http://www.tiagodemelo.info

Exercícios Crie uma classe Retangulo. A classe tem

atributos largura e altura, ambos sendo do tipo float. A classe deve ter métodos que calculam o perímetro (perimetro()) e a área (area()) do retângulo. A classe tem métodos set e get para a largura (largura) e a altura (altura). Os métodos set devem verificar se largura e altura são, cada um, números de ponto flutuante maiores que 0,0 e menores que 20,0. Escreva um programa em Java para testar a classe Retangulo.

Page 216: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

216

http://www.tiagodemelo.info

Exercícios Considere o programa a seguir e responda às

seguintes questões: A classe Tempo segue os princípios do

encapsulamento? Comente a respeito. Como é possível estender o código para atender

aos princípios do encapsulamento? Quais seriam as vantagens que isto traria? Faça as modificações necessárias no código.

Page 217: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

217

http://www.tiagodemelo.info

Exercícios

Page 218: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

218

http://www.tiagodemelo.info

GUI

Page 219: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

219

http://www.tiagodemelo.info

Introdução Uma interface gráfica (Graphical User Interface

– GUI) apresenta um mecanismo amigável ao usuário para interagir com um aplicativo.

As GUIs são construídas a partir de componentes GUI.

Esses componentes são chamados de controles ou widgets.

Page 220: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

220

http://www.tiagodemelo.info

Entrada/saída baseada em GUI simples com JOptionPane

A maioria dos aplicativos utiliza caixas de diálogo para que o usuário possa interagir.

A classe JOptionPane do Java (pacote javax.swing) fornece caixas de diálogo pré-empacotadas tanto para entrada como para saída de dados.

Esses diálogos são exibidos invocando métodos estáticos do JOptionPane.

A seguir, um exemplo de programa de soma simples.

Page 221: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

221

http://www.tiagodemelo.info

Entrada/saída baseada em GUI simples com JOptionPane

Additon.java

Page 222: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

222

http://www.tiagodemelo.info

Entrada/saída baseada em GUI simples com JOptionPane

Constantes JOptionPane static para diálogos de mensagem:

Page 223: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

223

http://www.tiagodemelo.info

Visão geral dos componentes Swing

A maioria dos componentes Swing são componentes Java puro, ou seja, foram completamente escritos, manipulados e exibidos em Java.

Eles fazem parte da Java Foundation Classes (JFC) – bibliotecas de Java para desenvolvimento de GUI para múltiplas plataformas.

Page 224: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

224

http://www.tiagodemelo.info

Visão geral dos componentes Swing

Alguns componentes básicos:

Page 225: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

225

http://www.tiagodemelo.info

Visão geral dos componentes Swing

Swing versus AWT Antes da criação do Swing, as GUIs em Java eram

construídas com componentes do Abstract Window Toolkit (AWT).

Quando um aplicativo do AWT GUI é executado em diferentes plataformas Java, os componentes do aplicativo são exibidos de maneira diferente, adaptando-se ao sistema. ↑

Os componentes Swing são implementados em Java; desse modo são mais portáteis e flexíveis do que os componentes originais do AWT. ↑

Page 226: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

226

http://www.tiagodemelo.info

Visão geral dos componentes Swing

Superclasses comuns de muitos dos componentes do Swing.

Page 227: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

227

http://www.tiagodemelo.info

Exibição de um frame

MeuPrimeiroFrame.java

Page 228: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

228

http://www.tiagodemelo.info

Exibição de um frame O que o programa anterior faz?

Cria um objeto do tipo JFrame. Torna esse objeto visível.

Observações: Por padrão, a tela terá altura e largura iguais a

zero. Ficará posicionada no canto superior esquerdo da

tela. Clicar no botão X irá ocultar a tela, mas não fechar

o programa.

Page 229: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

229

http://www.tiagodemelo.info

Exibição de um frame

MeuPrimeiroFrameMelhorado.java

Page 230: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

230

http://www.tiagodemelo.info

Exibição de textos e imagens em uma janela

A maioria das GUIs são construídas através de uma instância da classe JFrame ou como uma subclasse de JFrame.

O componente JLabel é conhecido como rótulo e empregado para exibir uma única linha de texto de leitura, uma imagem ou tanto texto como imagem.

Os aplicativos raramente alteram o conteúdo de um rótulo após a sua criação.

O programa a seguir apresenta um exemplo de uso do JLabel.

Page 231: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

231

http://www.tiagodemelo.info

Exibição de textos e imagens em uma janela

Um componente que pode conter outros componentes é denominado container.

A classe Container em Java: É uma classe abstrata que define as

funcionalidades básicas associadas a um container, tais como adicionar ou remover componentes.

A adição e a remoção de componentes é feita através dos métodos add( ) e remove( ).

A disposição dos componentes é feita através da gerência de layouts (método setLayout( )).

Page 232: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

232

http://www.tiagodemelo.info

Exibição de textos e imagens em uma janela

Exemplo que demonstra o uso de labels (rótulos).

LabelTextPos.java

Page 233: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

233

http://www.tiagodemelo.info

Exibição de textos e imagens em uma janela

Ao construir uma GUI, cada componente deve ser anexado a um contêiner, como uma janela criada com um JFrame.

Além disso, é necessário especificar onde posicionar cada componente da GUI. Isso é chamado de layout dos componentes GUI.

Java fornece vários gerenciadores de layout que podem ajudar a posicionar os componentes.

O gerenciador empregado é o GridLayout.

Page 234: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

234

http://www.tiagodemelo.info

Gerenciador de layouts BorderLayout

Os componentes são disponibilizados em cinco áreas: top, bottom, left, right e center.

Todo espaço extra é utilizado na parte central (center).

Page 235: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

235

http://www.tiagodemelo.info

Gerenciador de layouts BoxLayout

Essa classe coloca todos os componentes em uma única linha ou coluna.

Page 236: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

236

http://www.tiagodemelo.info

Gerenciador de layouts CardLayout

Essa classe permite que o programador implemente uma área que contém diferentes componentes em momentos diferentes.

Essa layout é frequentemente controlado por um combobox.

Page 237: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

237

http://www.tiagodemelo.info

Gerenciador de layouts FlowLayout

É o layout padrão para gerenciar o JPanel. Ele simplesmente coloca os componentes em uma

única linha, começando uma nova linha se o container não tiver espaço suficiente.

Page 238: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

238

http://www.tiagodemelo.info

Gerenciador de layouts GridBagLayout

É um sofisticado e flexível gerenciador de layouts. Ele alinha os componentes colocando-os dentro de

um gride de células, permitindo que os componentes possam se expandir para mais de uma célula.

As linhas podem ter diferentes alturas e as colunas podem ter diferentes larguras.

Page 239: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

239

http://www.tiagodemelo.info

Gerenciador de layouts GroupLayout

É um gerenciador de layout que foi desenvolvido para o uso de ferramentas que criam GUIs, mas que também pode ser utilizado manualmente.

Ele trabalha com layouts vertical e horizontal separadamente.

Page 240: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

240

http://www.tiagodemelo.info

Gerenciador de layouts SpringLayout

É um gerenciador flexível utilizado por ferramentas para construção de GUIs.

Ele permite que o programador especifique precisamente os relacionamentos entre as pontes dos componentes que estejam sob o seu controle.

Page 241: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

241

http://www.tiagodemelo.info

Campos de texto e uma introdução ao tratamento de eventos com classes aninhadas

As GUIs são baseadas em eventos. É através dos eventos que o usuário interage

com o programa. O código que realiza uma tarefa em resposta a

um evento é chamado de handler de evento. O processo total de responder a eventos é

conhecido como tratamento de evento.

Page 242: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

242

http://www.tiagodemelo.info

Campos de texto e uma introdução ao tratamento de eventos com classes aninhadas

A seguir, serão apresentados dois novos componentes GUI que podem gerar eventos

JTextFields JPasswordFields

Cada um desses componentes é uma área de linha única em que o usuário pode inserir texto pelo teclado.

Page 243: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

243

http://www.tiagodemelo.info

Campos de texto e uma introdução ao tratamento de eventos com classes aninhadas

TextFieldFrame.javaTextFieldTest.java

Page 244: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

244

http://www.tiagodemelo.info

Campos de texto e uma introdução ao tratamento de eventos com classes aninhadas

Passos necessários para configurar o tratamento de evento de um componente GUI:

Criar uma classe que represente o handler de evento.

Implementar uma interface apropriada, conhecida como interface listener de evento, classe do passo anterior.

Indicar que um objeto da classe dos passos anteriores deve ser notificado quando o evento ocorrer. Isso é conhecido como registrar um handler de evento.

Page 245: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

245

http://www.tiagodemelo.info

Tipos comuns de eventos GUI e interfaces ouvintes

Como visto anteriormente, as informações sobre o evento que ocorre quando o usuário pressiona Enter em um campo de texto são armazenadas em um objeto ActionEvent.

Há muitos tipos diferentes de eventos que podem ocorrer quando o usuário interage com uma GUI.

As informações sobre qualquer evento são armazenadas em um objeto de uma classe que estende AWTEvent.

Page 246: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

246

http://www.tiagodemelo.info

Tipos comuns de eventos GUI e interfaces ouvintes

Algumas classes de evento do pacote java.awt.event.

Page 247: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

247

http://www.tiagodemelo.info

Tipos comuns de eventos GUI e interfaces ouvintes

O tratamento de eventos pode ser resumido em três partes: a origem do evento, o objeto do evento e o ouvinte do evento.

A origem do evento é o componente GUI particular com o qual o usuário interage.

O objeto de evento encapsula informações sobre o evento que ocorreu.

O ouvinte de eventos é um objeto que é notificado pela origem de evento quando um evento ocorre.

Page 248: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

248

http://www.tiagodemelo.info

JButton Um botão é um componente que o usuário

clica para acionar uma ação específica. Java possui vários tipos de botões: botões de

comando, caixas de seleção, botões de alternação e botões de opção.

Page 249: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

249

http://www.tiagodemelo.info

JButton Hierarquia do botão Swing

Page 250: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

250

http://www.tiagodemelo.info

JButton

ComponenteJButton.java

Page 251: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

251

http://www.tiagodemelo.info

Botões que mantêm o estado Os componentes Swing contêm três tipos de

botões de estado - JToggleButton, JCheckBox e JRadioButton - que têm valores ativado/desativo ou verdadeiro/falso.

As classes JcheckBox e JradioButton são subclasses de JtoggleButton.

Um botão de comando gera um ActionEvent quando o usuário clica no botão.

Os botões de comando são criados com a classe JButton.

Page 252: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

252

http://www.tiagodemelo.info

Botões que mantêm o estado O texto na face de um JButton é chamado de

rótulo de botão e cada botão deve possuir um rótulo diferente, de forma a evitar a ambiguidade.

Page 253: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

253

http://www.tiagodemelo.info

Botões que mantêm o estado O próximo programa utiliza dois objetos JCheckBox para selecionar o estilo desejado de fonte do texto exibido em um JTextField.

Quando selecionado, aplica o estilo negrito e o outro, o estilo itálico.

Se ambos são selecionados, o estilo da fonte é negrito e itálico.

Quando o aplicativo é inicialmente executado, nenhum JCheckBox está marcado (isto é, os dois são false).

Page 254: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

254

http://www.tiagodemelo.info

Botões que mantêm o estado Os botões de opção (declarados com a classe JRadioButton) são semelhantes a caixas de seleção no sentido de que têm dois estados (selecionados e não selecionados).

Os botões de opção são utilizados para representar opções mutuamente exclusivas.

Page 255: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

255

http://www.tiagodemelo.info

JList Uma lista exibe uma série de itens a partir da

qual o usuário pode selecionar um ou mais itens.

As listas são criadas com a classe JList, que estende diretamente da classe JComponent.

A classe JList suporta listas de uma única seleção ou listas de seleção múltipla.

Page 256: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

256

http://www.tiagodemelo.info

JList Uma lista exibe uma série de itens a partir da

qual o usuário pode selecionar um ou mais itens.

As listas são criadas com a classe JList, que estende diretamente da classe JComponent.

A classe JList suporta listas de uma única seleção ou listas de seleção múltipla.

Page 257: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

257

http://www.tiagodemelo.info

Tratamento de evento de mouse Os eventos de mouse podem ser capturados

por qualquer componente GUI que deriva de java.awt.Component.

Os métodos de interfaces MouseListener e MouseMotionListener são resumidos na próxima tabela.

Page 258: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

258

http://www.tiagodemelo.info

Tratamento de evento de mouse

Page 259: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

259

http://www.tiagodemelo.info

Gerenciadores de Layout Os gerenciadores de layout são fornecidos a

fim de organizar componentes GUI em contêiner para apresentações.

Esse recurso permite que os programadores se concentrem na aparência e comportamento básicos e deixa os gerenciadores de layout processar a maioria dos detalhes de layout.

Todos os gerenciadores de layout implementam a interface LayoutManager (no pacote java.awt).

Page 260: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

260

http://www.tiagodemelo.info

Gerenciadores de Layout Há três maneiras básicas de organizar

componentes em uma GUI: Posicionamento absoluto.

Fornece o maior nível de controle sobre a aparência de uma GUI.

Basta configurar o Container como null, aí pode-se especificar a posição absoluta de cada componente GUI em relação ao canto superior esquerdo do Container.

Esta opção pode ser mais demorada que as demais.

Page 261: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

261

http://www.tiagodemelo.info

Gerenciadores de Layout Há três maneiras básicas de organizar

componentes em uma GUI: Gerenciadores de layout.

Utilizar gerenciadores de layout pode ser mais simples e rápido do que o posicionamento absoluto, porém o programador perde algum controle sobre o tamanho e o posicionamento precisos de componentes GUI.

Page 262: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

262

http://www.tiagodemelo.info

Gerenciadores de Layout Há três maneiras básicas de organizar

componentes em uma GUI: Programação visual em IDE.

Diversos IDEs fornecem ferramentas que facilitam a criação de GUIs.

O Eclipse não é uma boa ferramenta para isso. A sugestão seria o IDE Netbeans.

Page 263: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

263

http://www.tiagodemelo.info

Gerenciadores de Layout Principais gerenciadores de layout:

Page 264: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

264

http://www.tiagodemelo.info

Referências para GUIs http://www.java2s.com/Code/Java/Swing-

JFC/CatalogSwing-JFC.htm

Page 265: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

265

http://www.tiagodemelo.info

Exercícios No desenvolvimento das GUIs, aparência e

comportamento têm o mesmo significado? Justifique a sua resposta.

O que são widgets? O que você entende por componentes leves e

pesados? O que fornece a classe JFrame?

Page 266: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

266

http://www.tiagodemelo.info

ARQUIVOS

Page 267: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

267

http://www.tiagodemelo.info

Arquivos Os arquivos armazenam dados de forma

permanente (dados persistentes) porque eles existem além da duração da execução do programa.

Page 268: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

268

http://www.tiagodemelo.info

Hierarquia de dados Os caracteres em Java são caracteres Unicode

compostos de dois bytes e cada byte é composto de oito bits.

Assim como os caracteres são compostos de bits, campos são compostos de caracteres ou bytes.

Um campo é um grupo de caracteres ou bytes que transmitem um significado.

A hierarquia segue assim: bit, caracteres, campos, registros (classes) e arquivos.

Page 269: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

269

http://www.tiagodemelo.info

Hierarquia de dados Para facilitar a recuperação de registros

específicos de um arquivo, pelo menos um campo em cada registro é escolhido como uma chave de registro.

Esse campo em geral é utilizado para pesquisar e classificar registros.

Há muitas maneiras de organizar os registros de um arquivo. A mais comum é a seqüencial.

Page 270: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

270

http://www.tiagodemelo.info

Arquivos e Fluxos Java vê cada arquivo como um fluxo

seqüencial de bytes. Cada sistema operacional fornece um

mecanismo para determinar o fim do arquivo. Os arquivos podem ser fluxos baseados em

bytes (arquivos binários) ou em caracteres (arquivos de texto).

Programas em Java realizam o processamento de arquivos utilizando as classes no pacote java.io.

Page 271: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

271

http://www.tiagodemelo.info

Classe File Os objetos da classe File são utilizados

frequentemente com objetos de outras classes java.io para especificar arquivos ou diretórios a manipular.

A classe File possui quatro construtores: public File (String nome);

nome → especifica o nome de um arquivo ou diretório para associar com o objeto File.

O nome pode conter informações de caminho, bem como um nome de arquivo ou diretório.

O caminho pode ser absoluto ou relativo.

Page 272: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

272

http://www.tiagodemelo.info

Classe File public File (String caminho, String nome);

Utiliza argumento caminho para localizar o arquivo ou diretório especificado por nome.

public File (File diretorio, String nome); Utiliza o objeto diretorio para existente para

localizar o arquivo ou diretório especificado por nome;

public File (URI uri); Utiliza o objeto uri para localizar o arquivo. URI = Uniform Resource Identifier.

Page 273: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

273

http://www.tiagodemelo.info

Classe File A classe File utiliza o método isFile( )

para determinar se um objeto File representa um arquivo (não um diretório) antes de tentar abrir um arquivo.

Page 274: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

274

http://www.tiagodemelo.info

Classe File

FileDemonstration.javaFileDemonstrationTeste.java

Page 275: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

275

http://www.tiagodemelo.info

Classe File Um caracter separador é utilizado para separar

diretórios e arquivos no caminho. No Windows, o separador é uma barra

invertida (\), já no Unix o separador é uma barra normal (/).

Porém, Java processa esses dois caracteres de maneira idêntica em um nome de caminho.

Uma forma alternativa é usar o File.pathSeparator para obter o caractere separador adequado.

Page 276: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

276

http://www.tiagodemelo.info

Classe File Utilizar \ como separador de diretório em vez

de \\ em uma literal string é um erro de lógica.

Page 277: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

277

http://www.tiagodemelo.info

Arquivos de texto de acesso seqüencial

Java não impõe nenhuma estrutura a um arquivo.

Os três programas seguintes demonstram como criar um arquivo simples de acesso sequencial que poderia ser utilizado em um sistema de contas a receber para ajudar a monitorar os valores devidos pelos seus clientes a uma empresa.

O programa assume que o usuário insere os registros em ordem de número de conta.

Page 278: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

278

http://www.tiagodemelo.info

Arquivos de texto de acesso seqüencial

AccountRecord.javaCreateTextFile.java

CreateTextFileTest.javaReadTextFile.java

ReadTextFileTest.java

Page 279: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

279

http://www.tiagodemelo.info

Arquivos de texto de acesso seqüencial

Os dados em muitos arquivos sequenciais não podem ser modificados sem o risco de destruir outros dados no arquivo.

O problema é que a atualização do novo registro pode ser maior que o antigo registro.

O problema aqui é que os campos em um arquivo de texto – e consequentemente os registros – podem variar de tamanho.

Page 280: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

280

http://www.tiagodemelo.info

Arquivos de texto de acesso seqüencial

Portanto, os registros em um arquivo de acesso sequencial normalmente não são atualizados no lugar.

Em vez disso, o arquivo inteiro é normalmente regravado.

Page 281: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

281

http://www.tiagodemelo.info

Serialização de objeto Quando sabemos exatamente a forma pela

qual os dados são armazenados em um arquivo, podemos ler ou gravar um objeto, de um determinado tipo, a partir de um arquivo.

Java possui esse tipo de recurso, chamado de serialização de objetos.

Um objeto serializado é um objeto representado como uma sequência de bytes que inclui os dados do objeto, bem como as informações sobre o tipo do objeto e os tipos dos dados armazenados no objeto.

Page 282: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

282

http://www.tiagodemelo.info

Arquivos de acesso aleatório Os arquivos de acesso sequencial não são

apropriados para aplicativos em que a operação de busca seja importante.

Exemplos: sistemas de reserva de passagem aérea, sistemas bancários, sistemas comerciais, caixas automáticos, entre outros.

O acesso imediato pode ser realizado em arquivos de acesso aleatório e com banco de dados.

Arquivos de acesso aleatório também são chamados de acesso direto.

Page 283: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

283

http://www.tiagodemelo.info

Arquivos de acesso aleatório Para uso de arquivos de acesso aleatório é

necessário especificar o formato desses arquivos.

Várias técnicas podem ser utilizadas para criar arquivos de acesso aleatório.

Talvez a mais simples de todas seja exigir que todos os registros em um arquivo tenham o mesmo comprimento fixo.

Page 284: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

284

http://www.tiagodemelo.info

Arquivos de acesso aleatório A utilização de registros de largura fixa ajuda o

programa a calcular a localização exata de qualquer registro em relação ao início do arquivo.

Um programa pode inserir dados em um arquivo de acesso aleatório sem destruir os dados nesse arquivo.

Um RandomAccessFile é útil para aplicativos de acesso direto.

Page 285: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

285

http://www.tiagodemelo.info

Arquivos de acesso aleatório Quando um programa associa um objeto da

classe RandomAccessFile com um arquivo, ele lê ou grava os dados a partir do local no arquivo especificado pelo ponteiro de posição no arquivo e manipula todos os dados como tipos primitivos.

Por exemplo, quando se grava um valor int, quatro bytes são enviados para o arquivo de saída.

Page 286: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

286

http://www.tiagodemelo.info

Arquivos de acesso aleatório Programas de processamento de arquivos de

acesso aleatório raramente gravam um único campo em um arquivo.

Normalmente, eles gravam um objeto por vez, como mostraremos nos exemplos a seguir.

Page 287: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

287

http://www.tiagodemelo.info

Arquivos de acesso aleatório

RandomAccessAccountRecord.javaCreateRandomFile.java

CreateRandomFileTest.java

Page 288: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

288

http://www.tiagodemelo.info

Arquivos de acesso aleatório O programa a seguir grava os dados em um

arquivo que é aberto com um modo “rw” (para leitura e gravação).

Ele utiliza o método seek de RandomAccessFile para posicionar a localização exata no arquivo em um registro das informações é armazenado.

Page 289: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

289

http://www.tiagodemelo.info

Arquivos de acesso aleatório O método seek configura o ponteiro de

posição no arquivo, como um local específico no arquivo relativo ao começo do arquivo, e o método RandomAccessAccountRecord write gera saída dados na posição atual no arquivo.

O programa supõe que o usuário não insere números de conta duplicados.

Page 290: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

290

http://www.tiagodemelo.info

Arquivos de acesso aleatório

WriteRandomFile.javaWriteRandomFileTest.java

ReadRandomFile.javaReadRandomFileTest.java

Page 291: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

291

http://www.tiagodemelo.info

Abrindo arquivos com JFileChooser

Java possui a classe JFileChooser que permite exibir uma caixa de diálogo para que os usuários possam selecionar os arquivos mais facilmente.

Page 292: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

292

http://www.tiagodemelo.info

Abrindo arquivos com JFileChooser

FileDemonstration2.javaFileDemonstrationTest.java

Page 293: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

293

http://www.tiagodemelo.info

Exercícios Qual é a diferença entre arquivo binário e

arquivo texto? Explique o que é hierarquia de dados. O que é chave de registro? Escreva um programa em Java que faça a

leitura de campos pelo teclado. Faça o tratamento adequado das possíveis exceções que possam ocorrer no programa.

O que é um objeto serializado?

Page 294: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

294

http://www.tiagodemelo.info

Exercícios Quais são as principais vantagens no uso de

arquivos de acesso aleatório em relação aos arquivos de acesso seqüencial?

Implemente um programa de console capaz de armazenar em um arquivo de formato binário 100 números inteiros, gerados aleatoriamente no intervalo [0,100.000] em um arquivo, cujo nome será fornecido como argumento da aplicação. A soma dos valores deverá ser exibida na tela (mas não gravada no arquivo).

Page 295: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

295

http://www.tiagodemelo.info

Exercícios Implemente um programa de console capaz de

efetuar a leitura de um arquivo binário, cujo nome será fornecido com argumento do programa, contendo 100 valores inteiros. A soma dos valores recuperados deve ser exibida na tela.

Page 296: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

296

http://www.tiagodemelo.info

Relações entre objetos

Page 297: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

297

http://www.tiagodemelo.info

Relações Objetos não existem isolados

São formados por outros objetos. Objetos usam outros objetos Um programa OO possui vários objetos que

interagem entre si. Modelagem define quais objetos usamos em um

programa.

Page 298: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

298

http://www.tiagodemelo.info

Relações entre objetos Objetos possuem relacionamentos

Composição: um objeto pode ser formado por outros objetos. Exemplos: casa, livro, jardim, agenda de contatos, etc.

Agregação: um objeto pode conter outros objetos. Exemplo: carro (motor, pneu, porta).

Associação: objetos podem usar outros objetos. Exemplo: Trem usa estrada de ferro

Page 299: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

299

http://www.tiagodemelo.info

Composição Um livro é composto de capítulos

Capítulo é parte essencial de livro Se não existir capítulo, não existe livro Capítulo não existe fora de livro

Linha com losângulo preenchido na classe “dominante”

Livro é composto de 1 ou mais capítulos

Page 300: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

300

http://www.tiagodemelo.info

Composição

Page 301: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

301

http://www.tiagodemelo.info

Agregação Carro possui Pneu, Motor e Porta

Não são partes essenciais do carro. Retirando as portas um carro continua sendo um

carro. Pneus/portas existem como objetos independentes.

Linha com losângulo vazio na classe “dominante”.

Page 302: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

302

http://www.tiagodemelo.info

Agregação

Page 303: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

303

http://www.tiagodemelo.info

Associação Objetos que usam outros objetos

Podem ser implementados como atributos.

Page 304: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

304

http://www.tiagodemelo.info

Comentários Composição, Agregação e Associação

Mesma forma de implementar Muda apenas o conceito

Comportamento diferente Muito comum usar apenas notação da associação

Sem o losângulo. Composições e Agregações são “tipos” de

associações. Representam relacionamento “tem um”

Carro “tem uma” roda. Livro “tem um” capítulo. Trem “tem uma” estrada de ferro.

Page 305: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

305

http://www.tiagodemelo.info

Multiplicidade Indica quantidade de objetos referenciados.

Principais:

Page 306: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

306

http://www.tiagodemelo.info

Nomes Pode-se especificar o nome do atributo

Obrigar existência do atributo. Carro tem um atributo privado motor do tipo Motor.

Page 307: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

307

http://www.tiagodemelo.info

Nomes Coleções

Atributos com multiplicidade * podem ser implementados de mais de uma forma.

Array é uma delas

Page 308: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

308

http://www.tiagodemelo.info

Exemplo Modelo de objetos de uma agenda de contatos:

Page 309: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

309

http://www.tiagodemelo.info

Observações Responsabilidades

Classes de domínio não devem interagir com o usuário.

System.out.println, Scanner, etc. Elas podem ser usadas em várias interfaces com

usuário diferentes: texto, WEB, GUI, Hand-held, Celurares, etc.

Defina uma classe que represente a interface com usuário (UI – User interface)

Page 310: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

310

http://www.tiagodemelo.info

Contato

Page 311: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

311

http://www.tiagodemelo.info

Agenda (1)

Page 312: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

312

http://www.tiagodemelo.info

Agenda (2)

Page 313: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

313

http://www.tiagodemelo.info

UI (1)

Page 314: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

314

http://www.tiagodemelo.info

UI (2)

Page 315: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

315

http://www.tiagodemelo.info

UI (3)

Page 316: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

316

http://www.tiagodemelo.info

Como fazer

Page 317: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

317

http://www.tiagodemelo.info

Exercícios Implemente e execute a Agenda de contatos e

teste. Implemente o método remover

Basta fazer referência a nulo e decrementar quantidade.

Cuidado para não deixar espaços em branco, pois afeta o funcionamento do inserir.

Reimplemente o método inserir para permitir que o a agenda tenha tamanho “infinito”

Crie um novo array maior e copie as referências para o novo array, fazendo o novo array o array da agenda.

Page 318: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

318

http://www.tiagodemelo.info

Exercícios Implemente o método toString na Agenda

Retorna uma String contendo todos os contatos, um em cada linha, com nome e telefone.

Utilize a classe StringBuilder.

Page 319: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

319

http://www.tiagodemelo.info

Referências http://www.cefetrn.br/~placido

Page 320: Linguagem de Programação III Prof. Tiago Eugenio de Melo … · Introdução Erros comuns quando se conhece a Orientação a Objetos Pensar na POO simplesmente como uma linguagem

320

http://www.tiagodemelo.info

Referências bibliográficas C. M. F. Rubira. Introdução à Análise Orientada a Objetos.

Editora da Unicamp, 2002.

H. M. Deitel e P. J. Deitel. Java – Como Programar. 4a. ed. Bookman, 2003.