Programação Orientada a Objetos
Aula 1
Luciana Balieiro Cosme
IFNMG Câmpus Montes Claros
Curso: Ciência da Computação
6 de fevereiro de 2015
1 / 99
Apresentação
Ementa
Introdução à Programação Orientada a Objetos
Introdução à notação UML
Objetos, classes, encapsulamento, ligações, associações, herança,
generalização, especialização e polimorfismo.
Pacotes, agregação, composição, classes abstratas e interfaces.
Aplicação dos conceitos de orientação a objetos
Tratamento de Exceções.
Interface gráfica com o usuário
Persistência de dados.
Desenvolvimento de sistemas
2 / 99
Apresentação
Avaliação
Listas de exercı́cios: 10 pontos
1a Avaliação: 20 pontos. Data: 13/03/2015
2a Avaliação: 25 pontos. Data: 24/04/2015
3a Avaliação: 25 pontos. Data: 12/06/2015
Trabalho Final: 20 pontos. Data: 26/06/2015
3 / 99
Apresentação
Referências Bibliográficas
DEITEL, Harvey M.; DEITEL, Paul J. Java: como Programar. 8. ed.
São Paulo: Pearson Prentice Hall, 2010. (Deitel & Deitel, 2010)
MANZANO, Jose Augusto N. G.; COSTA JR., Roberto Affonso. Java
7: Programação de Computadores. São Paulo: Érica, 2011.
HORTSMANN, Cay. Padrões e Projeto Orientados a Objetos. 2. ed.
Porto Alegre: Bookman, 2007.
4 / 99
Introdução
História e Motivação
O conceito surgiu em 1960 devido a preocupação com a qualidade
dos softwares (Manzano & Costa Jr., 2011)
Reaproveitamento de código
Tempo de desenvolvimento
5 / 99
Introdução
História e Motivação
Primeira Linguagem: Simula I/Simula 67
Abstração de dados
Classes
Smalltalk (Dr. Alan Kay), Ada, Object Pascal, C++, Java, C#
30 anos de desenvolvimento para ser melhor aceita a partir de 1990
6 / 99
Introdução
Programação orientada a objetos
Chave: Objeto
1
Objetos do mundo real: cachorro, televisão, bicicleta
Objetos compartilham duas caracterı́sticas: estado e comportamento
Ex.: Cachorros tem estado (nome, cor, raça) e comportamento (latir,
abanar o rabo)
Objetos de software: estado (atributos/variáveis) e comportamento
(métodos/funções).
1
http://docs.oracle.com/javase/tutorial/java/concepts/object.html
7 / 99
Introdução
Objetos
(a)
(b)
Figura: Objeto
2
2
Adaptado de http://docs.oracle.com/javase/tutorial/java/concepts/object.html
8 / 99
Introdução
Conceitos Básicos
Abstração: consiste de focar nos aspectos essenciais. Capacidade de
representar cenários complexos com termos simples.
Encapsulamento
consiste em separar os aspectos externos de um objeto acessı́veis a
outros objetos, dos detalhes internos de implementação do objeto que
permanecem escondidos dos outros objetos. Ex.: Embreagem
os dados só poderão ser alterados pelas funções dos próprios objetos.
9 / 99
Introdução
Conceitos Básicos
Compartilhamento
Herança de estrutura de dados e comportamento permite que
estruturas comuns sejam compartilhadas
10 / 99
Introdução
Classes e objetos (Manzano & Costa Jr., 2011)
Classe: conjunto de objetos, define os atributos e os métodos em
comum de um determinado objeto
Uma classe pode ser definida a partir de uma classe já existente
Objeto é uma ocorrência especı́fica de uma classe, uma instância da
classe
Objeto é o elemento que sofre a ação direta e indireta do programa
É possivel definir objetos a partir de uma classe
Os objetos podem interagir com outros por meio de métodos.
Comunicação por mensagem
11 / 99
Introdução
Atributos e métodos (Manzano & Costa Jr., 2011)
Atributo é o conjunto de caracterı́sticas de um objeto
Método pode ser visto como uma função/funcionalidade de um objeto
Um atributo ou método pode ser público, privado ou protegido.
12 / 99
Introdução
Leituras complementares
2.1, 2.2 e 2.3 (Manzano & Costa Jr., 2011)
13 / 99
UML
Unified Modeling Language - UML
Linguagem gráfica para projeto de sistemas de software
Surgiu em 1994 e hoje é a representação gráfica mais utilizada para
modelar sistemas orientados a objetos
São 13 tipos diagramas para documentar os modelos de sistema
14 / 99
UML
Diagrama de classe
As classes contém atributos e operações
Identificar atributos (nome, tipo, visibilidade, valor inicial)
Tipo: tipo primitivo (int, boolean, double) ou uma classe
Exemplo: numeroConta: Integer = 0 (da classe ContaBancária)
Operações/métodos
Exemplo: nomedaOperação (parâmetro1: tipoDoParâmetro,
parâmetro2: tipoDoParâmetro, ...) : tipo de retorno
15 / 99
UML
Visibilidade
Public: permite que os membros das classes sejam acessados por
qualquer outro escopo (+)
Private: acesso restrito ao escopo da classe (-)
Protected: acesso restrito a classe e as derivadas (#)
16 / 99
UML
Exemplo
Exemplo de software para modelagem UML: Dia
http://dia-installer.de/
Figura: Software Dia
17 / 99
UML
Exemplo
Figura: UML: Diagrama de classe
18 / 99
UML
Leituras complementares
Capı́tulo 12 (Deitel & Deitel, 2010)
19 / 99
Linguagem Java
Linguagem Java
Surgiu em 1991 como um projeto da Sun Microsystems
Lançada oficialmente em 1995 e popularizou com Web
20 / 99
Linguagem Java
Motivação
Compilada em Código Intermediário /Portabilidade
Propósito Geral
Orientada a Objetos
Grande comunidade de desenvolvedores
Grande adoção da indústria: IBM, Oracle
Ecossistema de frameworks, API’s (Silva, 2014)
21 / 99
Linguagem Java
Crı́ticas
Rı́gida
Burocrática
Produtividade: Mais funcionalidade, menos código
Expressividade: verbosa (Silva, 2014)
22 / 99
Linguagem Java
Mercado
Figura: Rank
4
4
http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html
23 / 99
Linguagem Java
Instalação: ambiente Windows
Downloads
Netbeans: https://netbeans.org/downloads/
JDK:
http://www.oracle.com/technetwork/java/javase/downloads/jdk8downloads-2133151.html
Leitura complementar: 1.3 (Manzano & Costa Jr., 2011)
24 / 99
Linguagem Java
Exemplo 1: Olá, mundo
Figura: Código Java
25 / 99
Linguagem Java
Olá, mundo
// Comentário
Declarando uma classe: public class Olamundo
Todo programa Java consiste em pelo menos uma classe
Por convenção os nomes de classe iniciam com letra maiúscula (não
deve iniciar com dı́gito nem ter espaço)
Ponto de partida de cada aplicativo Java: public static void main()
Saı́da do programa: System.out.println(”Olá, mundo”);
Tudo tem que estar dentro de uma classe
Toda classe pública tem que estar dentro de um arquivo com o seu
nome e terminar com a extensão .java
package: servem para agrupar classes afins sobre um mesmo nome
26 / 99
Linguagem Java
Processo de Compilação
Figura: (Silva, 2014)
27 / 99
Linguagem Java
Compilação tradicional
Figura: (Manzano & Costa Jr., 2011)
28 / 99
Linguagem Java
Compilação Java
Figura: (Manzano & Costa Jr., 2011)
29 / 99
Linguagem Java
Versões do Java
Java SE - Standard Edition: Para aplicações console, desktop ou web
de pequeno e médio porte
Java EE - Enterprise Edition: Para grandes aplicações corporativas
distribuı́das
Java ME - Micro Edition: Aplicativos para dispositivos móveis e
embarcados
30 / 99
Linguagem Java
Instalações
JRE - Java Runtime Environment
Somente executa aplicativos desenvolvidos em Java
Contém o interpretador e API
JDK - Java Development Kit
Para desenvolver aplicativos Java
Contém o interpretador, as API’s e o compilador
31 / 99
Linguagem Java
Processo de compilação
.java: Arquivo de texto que contém o código fonte em java
.class: Arquivo binário que contém uma classe java compilada em
bytecode
.jar: Arquivo binário que contém diversas classes compiladas de um
ou mais pacotes
32 / 99
Linguagem Java
Um pouco mais sobre Linguagem Java
Tipos primitivos e conversão de tipos
Entrada e Saı́da padrão
Operadores
Estruturas de controle
Vetores
Implementação dos conceitos básicos de orientação a objetos
33 / 99
Linguagem Java
Tipos primitivos
Lógico: boolean
Caractere
char : 1 byte
Inteiros
byte : 1 byte
short : 2 bytes
int : 4 bytes
long : 8 bytes
Ponto Flutuante
float : 4 bytes
double : 8 bytes
34 / 99
Linguagem Java
Variáveis e constantes
[final] <tipo> nomeVariavel [=< valor >];
final faz menção a uma constante
35 / 99
Linguagem Java
Operadores aritméticos
Operador
++ e - %
/e*
-e+
Operação
Inversão de sinal
Incremento e decremento
Resto da divisão
Divisão e multiplicação
Subtração e adição
Tipo
unário
unário
binário
binário
binário
36 / 99
Linguagem Java
Operadores aritméticos: Regras de precedência
Operações de inversão de sinal, incremento, decremento (pré e pós
fixados) são aplicadas primeiro. Se houver mais de uma operação,
elas serão aplicadas da direita para esquerda
Operações de multiplicação, divisão e resto de divisão são aplicadas
em seguida. Se houver mais de uma operação, elas serão aplicadas da
esquerda para direita
Operações de adição e subtração sao aplicadas por último. Se houver
mais de uma operação, elas serão aplicadas da esquerda para direita
37 / 99
Linguagem Java
Exemplo 2: Altura
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class Altura {
public static void main(String[] args) {
String nome;
float altura;
System.out.print(”Digite seu nome: ”);
BufferedReader br = new BufferedReader(new
InputStreamReader(System.in));
try{
nome = br.readLine();
}catch(Exception e){
nome = ””;
}
38 / 99
Linguagem Java
Exemplo 2: Altura - Parte 2
System.out.print(”Digite seu altura: ”);
try{
altura = Float.parseFloat(br.readLine());
}catch(Exception e){
altura = 0;
System.out.printf(”Erro: \%s\n”, e.getMessage());
}
System.out.printf(”Nome: \%s, Altura:\%.2f\n”, nome, altura);
}
}
39 / 99
Linguagem Java
Exemplo 2: try/catch
o bloco try/catch tem por finalidade o tratamento do bloco de
instruções para efetivação da entrada e/ou conversão de tipo
após a instrução catch há uma exceção caso ocorra erro
40 / 99
Linguagem Java
Exemplo 3: Somando dois números
import java.util.Scanner;
public class Adicao {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int num1, num2, soma;
System.out.println(”Digite o primeiro numero: ”);
num1 = input.nextInt();
System.out.print(”Digite o segundo numero: ”);
num2 = input.nextInt();
soma = num1 + num2;
System.out.printf(”Soma: \%d\n”, soma);
}
}
41 / 99
Linguagem Java
Entrada
Classe Scanner
Scanner s = new Scanner(System.in);
s.nextLine(); //string
s.nextInt(); //inteiro
s.nextFloat(); //float
entre outros (nextByte() (int), nextLong()(int), nextDouble(),
nextChar())
42 / 99
Linguagem Java
Saı́da
System.out.println(); //termina com nova linha
System.out.print(); //cursor após o texto
System.out.printf(); //texto formatados
43 / 99
Linguagem Java
Operadores relacionais
Sı́mbolo
==
!=
>
¡
>=
¡=
Significado
igual a
diferente
maior que
menor que
maior ou igual que
menor ou igual que
Menor precedência para == e !=
Todos são avaliados da esquerda para direita
44 / 99
Linguagem Java
Operadores lógicos
Sı́mbolo
&&
||
(acento circunflexo)
!
Significado
E
ou
ou exclusivo
negação
Avaliação curto-circuito.
Ex: (genero == FEM ) && (cont++)
Para se genero for diferente de FEM
Operadores booleanos (& e |). Sempre avaliam seus dois operandos.
Todos são avaliados da esquerda para direita
45 / 99
Linguagem Java
Desvio condicional
Simples
if(condição)
{
instruções;
}
Composto
if(condição)
{
instruções;
}
else
{
instruções;
}
As chaves são opcionais no caso de uma instrução
46 / 99
Linguagem Java
Switch-case
switch (variável)
{
case <opção 1>: operação; break;
case <opção 2>: operação; break;
default : operação; break;
}
a cláusula default é opcional;
a cláusula break desvia o processamento para fora do switch, também
é opcional.
aceita valores string, a partir do Java 7
47 / 99
Linguagem Java
Comandos de Repetição
Verificação condicional inicial
while (condição)
{
instruções;
}
Verificação condicional final
do
{
instruções;
}
while(condição);
As chaves são opcionais no caso de uma instrução
48 / 99
Linguagem Java
Comandos de Repetição
Com variável de controle
for (< inicialização>;<condição>;<incremento>)
{
instruções;
}
49 / 99
Linguagem Java
Arranjos (Vetores e matrizes)
Arranjos unidimensional
Sintaxe: tipo nomeVetor[ ] = new tipo[dimensão];
Exemplo: float media[ ] = new float[8];
Arranjos bidimensional
Sintaxe: tipo nomeMatriz[ ] = new tipo[linha][coluna];
Exemplo: float nota[ ] [ ] = new float[8][2];
50 / 99
Linguagem Java
Exemplo 4: Repetição e vetores
package vetores;
import java.util.Scanner;
public class Vetores {
public static void main(String[] args) {
float nota[] = new float[5];
float media = 0;
Scanner s = new Scanner(System.in);
for (int i=0;i<5;i++){
System.out.print(”Digite a nota do aluno ” + (i + 1) + ”: ”);
nota[i] = s.nextFloat();
media += nota[i];
}
media /=5;
System.out.printf(”Media: \%.2f\n ”, media);
}
}
51 / 99
Linguagem Java
Exemplo 5: Vetores dinâmicos
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class Vetores {
public static void main(String[] args) {
List<Float> lista = new ArrayList<>();
float media = 0;
Scanner s = new Scanner(System.in);
for (int i=0;i<5;i++){
System.out.print(”Digite a nota do aluno ” + (i + 1) + ”: ”);
lista.add(s.nextFloat());
media +=lista.get(i);
}
media /=5;
System.out.printf(”Media: \%.2f\n”, media);
}
52 / 99
}
Linguagem Java
Leituras complementares
Capı́tulo 3, 4, 8 (Manzano & Costa Jr., 2011)
Capı́tulo 2, 4, 5 e 7 (Deitel & Deitel, 2010)
53 / 99
Linguagem Java
Exercı́cios
1
Faça um programa em Java que apresente os quadrados dos números
inteiros entre um intervalo fornecido pelo usuário.
2
Faça um programa que apresente o resultado do fatorial de um
número qualquer fornecido pelo usuário
3
Faça um programa que leia 8 números inteiros em um vetor A.
Construa uma vetor B com os elementos do vetor A multiplicados por
3 e exiba o resultado.
54 / 99
Linguagem Java
Classes e objetos
Relembrando: O que são classes e objetos?
55 / 99
Linguagem Java
Classes e objetos
Relembrando: O que são classes e objetos?
Classe: conjunto de objetos, define os atributos e os métodos em
comum de um determinado objeto;
55 / 99
Linguagem Java
Classes e objetos
Relembrando: O que são classes e objetos?
Classe: conjunto de objetos, define os atributos e os métodos em
comum de um determinado objeto;
Objeto é uma ocorrência especı́fica de uma classe, uma instância da
classe
55 / 99
Linguagem Java
Atributos e métodos
Atributo:
56 / 99
Linguagem Java
Atributos e métodos
Atributo: é o conjunto de caracterı́sticas de um objeto
O tempo de vida do atributo está ligado ao tempo de vida do objeto
que o contém;
Ele é criado junto com o objeto e é destruı́do junto com o objeto
Método:
56 / 99
Linguagem Java
Atributos e métodos
Atributo: é o conjunto de caracterı́sticas de um objeto
O tempo de vida do atributo está ligado ao tempo de vida do objeto
que o contém;
Ele é criado junto com o objeto e é destruı́do junto com o objeto
Método: pode ser visto como uma função/funcionalidade de um
objeto
56 / 99
Linguagem Java
UML: Diagrama de Classe
Figura: Diagrama de classe elaborado no software Dia
57 / 99
Linguagem Java
Instanciação
58 / 99
Linguagem Java
Classe Aluno
Adicione ao projeto/pacote a classe Aluno
package exemplopoo;
public class Aluno {
private String nome;
private float media;
public boolean verificaMedia (float mediaGlobal){
if (media>=mediaGlobal)
return true;
else return false;
}
}
59 / 99
Linguagem Java
Instanciação
60 / 99
Linguagem Java
Modificadores de acesso
Privado: os atributos ou métodos só são acessiveis a métodos da
classe em que estão declarados
A variável nome está encapsulada e não pode ser alterada
externamente a classe
Público: acesso externo
61 / 99
Linguagem Java
Métodos get e set
Métodos públicos para manipular os campos privados
set atribui valor (podem garantir consistência; em geral retornam
void)
get obtem valor (podem controlar como o cliente acessará uma
variável de instância)
Chamados de métodos modificadores pois, em geral, modificam o
estado do objeto
62 / 99
Linguagem Java
Valores consistentes versus valores corretos
Por ex.: Para um atributo minuto da classe Hora.
Um valor consistente deve estar entre 0 e 59;
Um valor correto seria o minuto real naquela hora;
Assim, se são 5:17 e acidentalmente é fornecido 5:19, este valor é
consistente mas não é correto;
Tratamento de exceções para valores inconsistentes;
métodos predicados: para testar se uma condição é verdadeira ou
false. Ex.: Método isEmpty() da classe ArrayList
63 / 99
Linguagem Java
Classe Aluno
Acrescente na classe Aluno os métodos:
package exemplopoo;
public class Aluno {
...
public void setNome(String n){
nome = n;
}
public String getNome(){
return nome;
}
public void setMedia(float m){
media = m;
}
public float getMedia(){
return media;
}
}
64 / 99
Linguagem Java
Instância
package exemplopoo;
import java.util.Scanner;
public class ExemploPOO {
public static void main(String[] args) {
Aluno aluno1 = new Aluno();
Scanner input = new Scanner(System.in);
System.out.print(”Digite o nome do aluno: ”);
aluno1.setNome(input.nextLine());
System.out.printf(”Nome digitado: %s\n”, aluno1.getNome());
}
}
Acrescente a média, utilize o método Verifica e acrescente mais um aluno.
65 / 99
Linguagem Java
Resumo
Uma classe é definida pelo programador, reusável
Uma classe contém nome, atributos e métodos
Uma classe encapsula os dados (em atributos) e os algoritmos (em
métodos)
Uma instância é uma realização/ocorrência de um item especı́fico da
classe
Para uma instância: crie um identificador da instância (aluno 1) de
uma classe (Aluno)
Construa a instância usando o operador new
Aluno aluno1 = new Aluno();
66 / 99
Linguagem Java
Resumo
Toda classe que contém o método main é executável diretamente
pelo java.exe
Se uma classe não contém o método Main, ele só é executada quando
chamada por outra (direta ou indiretamente) que contém este
método.
67 / 99
Linguagem Java
Algumas Convenções
O prefixo do nome de um pacote é único e deve sempre ser escrito em
letras minúsculas. Por ex.: O nome do domı́nio da
empresa/organização
br.com.empresa.pacote
empresa.pacote.subpacote
Os nomes de classe devem ser substantivos, com a primeira letra de
cada palavra interna maiúscula. Tente manter os nomes simples e
descritivos e no singular. Ex.: class DiarioClasse
68 / 99
Linguagem Java
Algumas Convenções
Os métodos devem ser verbos. No caso composto com a primeira
letra minúscula e a primeira letra de cada palavra interna maiúscula.
Ex.: verificaNota();
Os nomes de variáveis devem começar com letras minúsculas. No
caso composto com a primeira letra minúscula e a primeira letra de
cada palavra interna maiúscula. Ex.: float mediaGlobal;
Os nomes de constantes devem ser todas as letras maiúsculas. Ex.:
final int MAX LARGURA; 1
1
http://www.oracle.com/technetwork/java/javase/documentation/codeconventions135099.html
69 / 99
Linguagem Java
Operador ponto
Primeiro: nome da instância, depois o operador . para referenciar um
atributo ou um método
Ex.: aluno1.verificaNota();
Para invocar o método verificaNota da instância aluno1
70 / 99
Linguagem Java
Exercı́cio de fixação
Crie uma classe conforme o diagrama abaixo;
instancie um objeto e permita que o usuário forneça os dados para os
atributos. O método apresentaMensagem() deve exibir uma
mensagem de boas-vindas com o nome do curso e do professor. Crie
tambem as propriedades get e set.
71 / 99
Linguagem Java
Exercı́cio de fixação
Crie uma classe conforme o diagrama abaixo;
instancie um objeto e permita que o usuário faça várias operações de
crédito, débito e consulta ao saldo
72 / 99
Linguagem Java
Construtores
São métodos especiais usados para: Instanciar o objeto (i.e. alocar
memória) e/ou inicializar os valores dos atributos;
Os construtores não tem tipo de retorno;
Podem ter ou não parâmetros;
O construtor default (sem parâmetros) é criado automaticamente e
inicializa todos os atributos com seus valores padrão (null, true ou
false, 0, por exemplo);
Não existem destrutores em java;
Possuem o mesmo nome da classe;
Se for declarado qualquer construtor, o compilador não fornecerá um
construtor padrao.
73 / 99
Linguagem Java
Construtor padrão
O construtor default (sem parâmetros) é criado automaticamente e
inicializa todos os atributos com null;
package exemplopoo;
public class ExemploPOO {
public static void main(String[] args) {
Aluno aluno1 = new Aluno();
System.out.printf(”Nome: %s\n”, aluno1.getNome());
}
}
Será impresso null
74 / 99
Linguagem Java
Modificando o construtor padrão
Acrescente na classe Aluno:
public Aluno(String n, int m){
nome = n;
media = m;
}
O código anterior do main funciona?
75 / 99
Linguagem Java
Modificando o método main
Aluno aluno1 = new Aluno(”Luciana”, 6);
System.out.printf(”Nome: %s\n”, aluno1.getNome());
O que será impresso?
76 / 99
Linguagem Java
Sobrecarga de construtores
Mais de um método construtor. Acrescente na classe Aluno:
public Aluno(String n){
nome = n;
}
77 / 99
Linguagem Java
No método main
Aluno aluno1 = new Aluno(”Luciana”, 6);
System.out.printf(”Nome: %s\n”, aluno1.getNome());
System.out.printf(”Media digitada: %.2f\n”, aluno1.getMedia());
Aluno aluno2 = new Aluno(”Joe Joe”);
System.out.printf(”Nome: %s\n”, aluno2.getNome());
System.out.printf(”Media digitada: %.2f\n”, aluno2.getMedia());
O que será impresso?
78 / 99
Linguagem Java
UML
Diagrama de classe com construtor
79 / 99
Linguagem Java
Sobrecarga de métodos
Métodos com o mesmo nome, porém com assinaturas diferentes
Significa que o mesmo nome de método pode ter diferentes
implementações (versões)
80 / 99
Linguagem Java
Sobrecarga de métodos
Na classe Aluno, acrescente:
public boolean verificaMedia (float mediaGlobal){
if (media>=mediaGlobal)
return true;
else return false;
}
public boolean verificaMedia (float n1,float n2, float mediaGlobal){
media = (n1+n2)/2;
if (media>=mediaGlobal)
return true;
else return false;
}
81 / 99
Linguagem Java
Exercı́cio de fixação
Exercı́cios 3.13, 3.14, 3.15 e 3.16 (Deitel & Deitel, 2010)
3.13 Crie uma classe chamada fatura para que uma loja de
suprimentos de informática possa utilizá-la para representar uma
fatura de um item vendido. Uma fatura deve incluir o número
(String), a descrição (String), a quantidade comprada de um item
(int) e o preço (double). Sua classe deve ter um construtor que
inicializa as variáveis de instância. Forneça mtodos get e set para cada
atributo. Além disto, forneça um método chamado getValorFatura
que calcula o valor da fatura (quantidade x preço) e depois retorne o
resultado. Se a quantidade não for positiva retorne como zero. Se o
preço não for positivo, ele deve ser configurado com zero.
82 / 99
Linguagem Java
Métodos e atributos estáticos
Métodos que muitas vezes definem tarefas frequentemente utilizadas;
modificador static
Classe.MetodoStatic(argumentos)
Uma variável estática é usada quando todos os objetos precisam da
mesma cópia da variável
83 / 99
Linguagem Java
Métodos e atributos estáticos
package messagebox;
import javax.swing.JOptionPane;
public class Messagebox {
public static void main(String[] args) {
JOptionPane.showMessageDialog(null, ”Ola, mundo!”);
}
}
84 / 99
Linguagem Java
Alguns considerações
this: para se referir a instância dentro de uma classe
public Circulo(double raio) {
this.raio = raio;
}
// ”this.raio”refere-se a variável de instância
// ”radio”refere-se ao argumento
85 / 99
Linguagem Java
Algumas considerações
A classe String pertence ao pacote java.lang, que é importado
implicitamente
classes do mesmo diretório: são consideradas como estando no
mesmo pacote e são importadas implicitamente
Declaração import não são necessárias se utilizarmos nomes de classe
totalmente qualificados. Ex.:
java.util.Scanner s = new java.util.Scanner(System.in);
86 / 99
Linguagem Java
Algumas considerações
Variáveis declaradas no corpo de um método são variáveis locais ao
método
Quando cada objeto mantém sua própria cópia de um atributo, o
atributo é conhecido como uma variável de instância
tipos primitivos (int, float, char, boolean, etc.) e tipos por referência
(classes)
a palavra-chave new solicita memória para armazenar o objeto e
chama o construtor correspondente
87 / 99
Linguagem Java
O método toString()
Cada classe Java bem projetada deve ter um método toString()
público que retorna uma descrição do objeto. Você pode chamar o
método toString () explicitamente chamando instancia.toString () ou
implicitamente através println () ou operador de concatenação de
string ’+’ .
public String toString() {
return ”Circulo com raio = ” + raio;
}
...
Circulo c1 = new Circulo();
System.out.println(c1.toString());
88 / 99
Linguagem Java
Coleta de Lixo (garbage collection)
JVM realiza a coleta de lixo automática para liberar memória
ocupada por um objeto não utilizado;
O método finalize() da classe Object é chamado pelo coletor de lixo
para realizar a limpeza de terminação antes do coletor reinvindicar a
memória;
Porem, não há garantias que o coletor vai executar uma hora
especifica ou antes do objeto terminar;
Toda classe Java tem métodos da classe Object
89 / 99
Linguagem Java
Exercı́cio de fixação
Classe Time
90 / 99
Linguagem Java
Classe Time
package timetest;
public class Time {
private int hora;
private int minuto;
private int segundo;
private static int cont=0;
public String toString(){
return String.format(”%02d:%02d:%02d”, getHora(),
getMinuto(), getSegundo());
}
...
91 / 99
Linguagem Java
Classe Time
//get
public int getHora(){
return hora;
}
public int getMinuto(){
return minuto;
}
public int getSegundo(){
return segundo;
}
public static int getCont() {
return cont;
}
public static void setCont(int aCont) {
cont = aCont;
}
92 / 99
Linguagem Java
Classe Time
//set
public static void setCont(int aCont) {
cont = aCont;
}
public void setHora(int hora) {
if(hora>=0 && hora<24)
this.hora = hora;
else this.hora = 0;
}
public void setMinuto(int minuto) {
if(minuto>=0 && minuto<60)
this.minuto = minuto;
else this.minuto = 0;
}
public void setSegundo(int segundo) {
if(segundo>=0 && segundo<60)
this.segundo = segundo;
else this.segundo = 0;
}
93 / 99
Linguagem Java
Classe Time
Construtores
public Time(){
this(0,0,0);
}
public Time(int h){
this(h,0,0);
}
public Time(int h, int m){
this(h,m,0);
}
public Time(int h,int m, int s){
setHora(h);
setMinuto(m);
setSegundo(s);
}
94 / 99
Linguagem Java
Classe TimeTest
package timetest;
public class TimeTest {
public static void main(String[] args) {
Time t1 = new Time();
Time t2 = new Time(2);
Time t3 = new Time(21,34);
Time t4 = new Time(2,24,10);
Time t5 = new Time(25,61,61);
System.out.println(”Construtores: ”);
System.out.printf(”t1 − construtor padrao: %s\n”, t1);
System.out.printf(”t2 − construtor com hora: %s\n”, t2);
System.out.printf(”t3 − hora e minuto: %s\n”, t3);
System.out.printf(”t4 − hora, minuto e segundo: %s\n”, t4);
System.out.printf(”t5 − valores inconsistentes: %s\n”, t5);
System.out.printf(”Contador de objetos: %d\n”, Time.getCont());
}
95 / 99
}
Linguagem Java
Exercı́cio de fixação: Classes Livro e Autor
Composição: capacidade que permite a uma classe conter referências a
objetos de outras classes como membro.
96 / 99
Linguagem Java
Leituras complementares
Enum: seção 8.9 (Deitel & Deitel, 2010)
Capı́tulo 7 (Manzano & Costa Jr., 2011)
Capı́tulo 3, 6 e 8(Deitel & Deitel, 2010)
97 / 99
Linguagem Java
Exercı́cios complementares
8.4 e 8.6 (Deitel & Deitel, 2010)
Exercı́cios avaliativo.
98 / 99
Linguagem Java
Referências
Deitel, H. M., & Deitel, P. (2010). Java: como programar. Pearson
Prentice Hall.
Manzano, J. A. N. G., & Costa Jr., R. (2011). Java 7: Programação de
computadores. Érica.
Silva, P. C. L. (2014). Notas de aula. IFNMG Câmpus Januária.
99 / 99
Download

Aula 1 - Luciana Balieiro