50
Classes e Objetos em Java Classes e Objetos em Java Disciplina: Programação Orientada a Disciplina: Programação Orientada a Objetos Objetos Ricardo Satoshi Ricardo Satoshi

Classes e Objetos em Java Disciplina: Programação Orientada a Objetos Ricardo Satoshi Ricardo Satoshi

Embed Size (px)

Citation preview

Page 1: Classes e Objetos em Java Disciplina: Programação Orientada a Objetos Ricardo Satoshi Ricardo Satoshi

Classes e Objetos em JavaClasses e Objetos em Java

Disciplina: Programação Orientada a ObjetosDisciplina: Programação Orientada a Objetos

Ricardo SatoshiRicardo Satoshi

Page 2: Classes e Objetos em Java Disciplina: Programação Orientada a Objetos Ricardo Satoshi Ricardo Satoshi

2

Classes em JavaClasses em Java

Um dos principais resultados das fases de análise e projeto OO: Definição de um modelo conceitual para o domínio da

aplicação, contemplando as classes relevantes e suas associações.

O uso de uma linguagem de modelagem, tal como o diagrama de classes UML, permite expressar esse resultado de maneira organizada e padronizada. Uma classe é um gabarito para a definição de objetos. propriedades (atributos) e comportamentos (métodos)

Page 3: Classes e Objetos em Java Disciplina: Programação Orientada a Objetos Ricardo Satoshi Ricardo Satoshi

3

Definição de Classes em JavaDefinição de Classes em Java

Diagrama de Classes: a representação de classes contempla três tipos básicos de informação:

Automóvel

- nomeProprietario: String- modelo: String- placa: String- ano: Integer

+ transferirProprietario (nome: String): void+ mudarPlaca (nPlaca: String): void+ imprimir (): void

Nome da classe: Um identificador para a classe que permite referenciá-la posteriormente (por exemplo, no momento da criação de um objeto). Atributos:

nome: um identificador para o atributo. tipo: o tipo do atributo (inteiro, real, caracter, outra classe, etc.) valor_default: opcionalmente, pode-se especificar um valor inicial para o atributo.

Page 4: Classes e Objetos em Java Disciplina: Programação Orientada a Objetos Ricardo Satoshi Ricardo Satoshi

4

Definição de Classes em JavaDefinição de Classes em Java

visibilidade: opcionalmente, pode-se especificar o quão acessível é um atributo de um objeto a partir de outros objetos. Valores possíveis são: - private:nenhuma visibilidade externa+ public:visibilidade externa total# protected:visibilidade externa limitada.

Métodos: nome: um identificador para o método. tipo: quando o método tem um valor de retorno, o tipo desse valor. lista de argumentos: quando o método recebe parâmetros para sua

execução, o tipo e um identificador para cada parâmetro. visibilidade: como para atributos, define o quão visível é um método a

partir de objetos de outras classes.

Page 5: Classes e Objetos em Java Disciplina: Programação Orientada a Objetos Ricardo Satoshi Ricardo Satoshi

5

Exemplo: Classe AutomovelExemplo: Classe Automovelpublic class Automovel { public String nomeProprietario; public String modelo; public String placa; public int ano;

public Automovel (String nomeProprietario, String modelo, String placa, int ano){

this.nomeProprietario = nomeProprietario; this.modelo = modelo; this.placa = placa; this.ano = ano; } public void imprimir (){ System.out.println(nomeProprietario+ " possui um(a)

"+modelo+ " com placa "+placa+ " e ano "+ano); }

Page 6: Classes e Objetos em Java Disciplina: Programação Orientada a Objetos Ricardo Satoshi Ricardo Satoshi

6

Exemplo: Classe AutomovelExemplo: Classe Automovel public void transferirProprietario (String nome) { this.nomeProprietario = nome; } public void mudarPlaca (String nPlaca) { this.placa = nPlaca; } public static void main (String args []){ Automovel a; a = new Automovel ("Eduardo", "Palio", "JWO2125", 2002); a.imprimir(); System.out.println ("***Transferencia de Proprietario***"); a.transferirProprietario("Rosa"); a.imprimir(); a = new Automovel ("Rodrigo", "Parati", "JSX6481", 1999); a.imprimir(); System.out.println ("***Mudanca de Placa***"); a.mudarPlaca("SDK2581"); a.imprimir(); }}

Page 7: Classes e Objetos em Java Disciplina: Programação Orientada a Objetos Ricardo Satoshi Ricardo Satoshi

7

Definição de Classes em JavaDefinição de Classes em JavaEm Java, classes são definidas através do uso da palavra-chave class. Sintaxe para definir uma classe:

[modificador] class NomeDaClasse { // corpo da classe... } Após a palavra-chave class, segue-se o nome da classe, que deve ser um identificador válido

para a linguagem. [modificador] é opcional; se presente, pode ser uma combinação de public e abstract ou final.

A definição da classe propriamente dita está entre { e }, que delimitam blocos na linguagem Java.

Este corpo da classe usualmente obedece à seguinte seqüência de definição: As variáveis de classe, iniciando pelas public, seguidos pelas protected, e finalmente pelas private. Os atributos (ou variáveis de instância) dos objetos dessa classe, seguindo a mesma ordenação definida para

as variáveis de classe. Os construtores de objetos dessa classe. Os métodos da classe, geralmente agrupados por funcionalidade.

Page 8: Classes e Objetos em Java Disciplina: Programação Orientada a Objetos Ricardo Satoshi Ricardo Satoshi

8

Definição de Classes em JavaDefinição de Classes em Java

Toda classe pode também ter um método main associado Esse método como já mencionado é utilizado pelo interpretador Java

para dar início à execução de uma aplicação.

Java também oferece outra estrutura, denominada interface Possui sintaxe similar à de classes mas contém apenas a especificação

da funcionalidade que uma classe deve conter, sem determinar como essa funcionalidade deve ser implementada.

Propriedades de uma classe podem ser obtidas através das funcionalidades oferecidas na classe java.lang.Class

Page 9: Classes e Objetos em Java Disciplina: Programação Orientada a Objetos Ricardo Satoshi Ricardo Satoshi

9

Classe final (final)Classe final (final)

Uma classe definida como final não pode ser estendida. A compilação do arquivo Reeleicao.java final class Mandato { }

public class Reeleicao extends Mandato { } Erro de compilação:

Can't subclass final classes: class Mandato public class Reeleicao extends Mandato { ^ 1 error

Page 10: Classes e Objetos em Java Disciplina: Programação Orientada a Objetos Ricardo Satoshi Ricardo Satoshi

10

Modificadores de acesso em Modificadores de acesso em JavaJava

public Amplia a visibilidade padrão (está restrita a todos os

membros que fazem parte de um mesmo pacote) deixando-a sem restrições.

Uma classe definida como pública pode ser utilizada por qualquer objeto de qualquer pacote.

Uma unidade de compilação (um arquivo fonte com extensão .java) pode ter no máximo uma classe pública, cujo nome deve ser o mesmo do arquivo.

As demais classes na unidade de compilação, não públicas, são consideradas classes de suporte para a classe pública e têm a visibilidade padrão.

Page 11: Classes e Objetos em Java Disciplina: Programação Orientada a Objetos Ricardo Satoshi Ricardo Satoshi

11

Modificadores de acesso em Modificadores de acesso em JavaJava

Um atributo público de uma classe pode ser diretamente acessado e manipulado por objetos de outras classes.

Um método público de uma classe pode ser aplicado a um objeto dessa classe a partir de qualquer outro objeto de outra classe.

protected Restringe a visibilidade do membro modificado, atributo ou

método, apenas à própria classe e àquelas derivada desta. private Restringe a visibilidade do membro modificado, método ou

atributo, exclusivamente a objetos da própria classe que contém sua definição.

Page 12: Classes e Objetos em Java Disciplina: Programação Orientada a Objetos Ricardo Satoshi Ricardo Satoshi

12

Variáveis de ClasseVariáveis de Classe

Cada objeto definido a partir de uma classe terá sua cópia separada dos atributos definidos para a classe.

O mecanismo para realizar esse compartilhamento é a definição de variáveis da classe. Uma variável de classe tem sua declaração

precedida pela palavra-chave static.

Page 13: Classes e Objetos em Java Disciplina: Programação Orientada a Objetos Ricardo Satoshi Ricardo Satoshi

13

Variáveis de ClasseVariáveis de Classe

Várias constantes são definidas em Java como

public static final

a classe Math (java.lang) de Java, por exemplo, define as constantes E (2.71828...) e PI (3.14159...). Para ter acesso a esses valores, basta precedê-los com o nome da classe e um ponto, como em double pi2 = Math.PI/2;

Outro exemplo de variável public static final é a variável out da classe System. Essa variável, System.out, está associada a um objeto que representa a saída padrão.

Page 14: Classes e Objetos em Java Disciplina: Programação Orientada a Objetos Ricardo Satoshi Ricardo Satoshi

14

Atributos ou Variáveis de Atributos ou Variáveis de InstânciaInstância

Sintaxe para definir um atributo em uma classe é:

[modificador] tipo nome [ = default]; onde

modificador (opcional), uma combinação de public, protected ou private; final;

tipo:deve ser um dos tipos primitivos da linguagem Java ou o nome de uma classe;

nome: deve ser um identificador válido. default: (opcional) é a especificação de um valor inicial para a

variável.

Page 15: Classes e Objetos em Java Disciplina: Programação Orientada a Objetos Ricardo Satoshi Ricardo Satoshi

15

Atributo finalAtributo final

Um atributo final pode indicar um valor constante, que não deve ser alterado pela aplicação. Apenas valores de tipos primitivos podem ser utilizados para definir constantes. É possível ter atributos de uma classe que sejam final mas não recebem valor na declaração, mas sim nos construtores da classe.Argumentos de um método que não devem ser modificados podem ser declarados como final, também, na própria lista de parâmetros.

Page 16: Classes e Objetos em Java Disciplina: Programação Orientada a Objetos Ricardo Satoshi Ricardo Satoshi

16

Métodos em JavaMétodos em Java

A definição de métodos reflete de forma quase direta a informação que estaria presente em um diagrama de classes UML, a não ser por uma diferença vital: o corpo do método.Dica: uma boa prática de programação é manter a funcionalidade de um método simples, desempenhando uma única tarefa. O nome do método deve refletir de modo adequado a tarefa realizada. Se a funcionalidade do método for simples, será fácil encontrar um nome

adequado para o método.

Os métodos são essencialmente procedimentos que podem: Manipular atributos de objetos para os quais o método foi definido. Definir e manipular variáveis locais Receber parâmetros por valor através da lista de argumentos

Page 17: Classes e Objetos em Java Disciplina: Programação Orientada a Objetos Ricardo Satoshi Ricardo Satoshi

17

Métodos em JavaMétodos em JavaSintaxe para definir um método em uma classe é:

[modificador] tipo nome(argumentos) { corpo do método } onde:

modificador (opcional), uma combinação de: public, protected ou private; abstract ou final; e static.

tipo: indicador do valor de retorno, sendo void se o método não tiver um valor de retorno;

nome: deve ser um identificador válido argumentos: são representados por uma lista de parâmetros separados por vírgulas, onde

cada parâmetro obedece à forma tipo nome.

Sintaxe de chamada ou acesso a métodos:objeto.nomeDoMetodo( )

Page 18: Classes e Objetos em Java Disciplina: Programação Orientada a Objetos Ricardo Satoshi Ricardo Satoshi

18

Métodos em JavaMétodos em Java

Usualmente, métodos definidos em uma classe são aplicados a objetos daquela classe. Há situações nas quais um método pode fazer uso dos recursos de uma classe para realizar sua tarefa sem necessariamente ter de estar associado a um objeto individualmente. Java define os métodos da classe, cuja declaração deve

conter o modificador static. Um método estático pode ser aplicado à classe e não

necessariamente a um objeto.

Page 19: Classes e Objetos em Java Disciplina: Programação Orientada a Objetos Ricardo Satoshi Ricardo Satoshi

19

Métodos em JavaMétodos em Java

Exemplos de alguns métodos estáticos em Java incluem os métodos definidos nas classes:

java.lang.Character java.lang.Integer java.lang.Double java.lang.Math

Exemplo: para atribuir a raiz quadrada de 4 a uma variável raiz:

double raiz = Math.sqrt(4.0);

Page 20: Classes e Objetos em Java Disciplina: Programação Orientada a Objetos Ricardo Satoshi Ricardo Satoshi

20

Método finalMétodo final

Um método que é definido como final em uma classe não pode ser redefinido em classes derivadas (subclasses). Considere o seguinte exemplo: class ComFinal { final int f() { return 1; } } public class ExtComFinal extends ComFinal { int f() { return 0; }}

A tentativa de compilação dessa unidade geraria a seguinte mensagem de erro:The method int f() declared in class ExtComFinal cannot override the final method of the same signature declared in class ComFinal. Final methods cannot be overridden. int f() { ^ 1 error

Page 21: Classes e Objetos em Java Disciplina: Programação Orientada a Objetos Ricardo Satoshi Ricardo Satoshi

21

Objetos em JavaObjetos em Java

O que é um objeto? Sob o ponto de vista da programação, um objeto não é

muito diferente de uma variável no paradigma de programação convencional.

Exemplo: quando se define uma variável do tipo int em C ou em Java, essa variável tem:

um espaço em memória para registrar o seu estado atual (um valor); um conjunto de operações associadas que podem ser aplicadas a ela,

através dos operadores definidos na linguagem que podem ser aplicados a valores inteiros (soma, subtração, inversão de sinal, multiplicação, divisão inteira, resto da divisão inteira, incremento, decremento).

Page 22: Classes e Objetos em Java Disciplina: Programação Orientada a Objetos Ricardo Satoshi Ricardo Satoshi

22

Objetos em JavaObjetos em Java

Da mesma forma, quando se cria um objeto, esse objeto adquire: um espaço em memória para armazenar seu estado (os valores de seu

conjunto de atributos, definidos pela classe) e um conjunto de operações que podem ser aplicadas ao objeto (o conjunto

de métodos definidos pela classe).

É através de objetos que (praticamente) todo o processamento ocorre em aplicações desenvolvidas com linguagens de programação OO.Objetos são instâncias de classes: Precisam ser criados a fim de que, através de sua manipulação, possam

realizar seu trabalho. Após a conclusão de suas atividades, objetos podem ser removidos. Arranjos de tipos primitivos ou de objetos são criados e manipulados de

forma análoga a objetos.

Page 23: Classes e Objetos em Java Disciplina: Programação Orientada a Objetos Ricardo Satoshi Ricardo Satoshi

23

Como criar um objeto em Como criar um objeto em JavaJava

A criação do objeto é feita através da aplicação do operador new (uma vez que a classe a partir da qual deseja-se criar o objeto exista):

new NomeDaClasse(); Essa expressão invoca o construtor da classe A aplicação do operador new ao construtor da classe retorna uma

referência para o objeto. Para que o objeto possa ser efetivamente manipulado, essa referência deve

ser armazenada por quem determinou a criação do objeto: NomeDaClasse umaRef;umaRef = new NomeDaClasse(); NomeDaClasse umaRef = new NomeDaClasse(); umaRef é uma variável que guarda uma referência para um objeto do tipo

NomeDaClasse. As duas formas apresentadas são equivalentes.

Page 24: Classes e Objetos em Java Disciplina: Programação Orientada a Objetos Ricardo Satoshi Ricardo Satoshi

24

Como criar um objeto em Como criar um objeto em JavaJava

Objetos nunca são manipulados diretamente, mas sempre através de uma variável que contém uma referência para o objeto.

Internamente, uma referência conterá: O endereço para a área de memória que contém o

objeto, mas isso é irrelevante sob o ponto de vista do programador.

Page 25: Classes e Objetos em Java Disciplina: Programação Orientada a Objetos Ricardo Satoshi Ricardo Satoshi

25

Manipulação de objetosManipulação de objetos

Quando se declara uma variável cujo tipo é o nome de uma classe, como em:

String nome; não está se criando um objeto dessa classe, mas simplesmente uma

referência para um objeto da classe String, a qual inicialmente

não faz referência a nenhum objeto válido:

nome

?

Quando um objeto dessa classe é criado, obtém-se uma referência válida, que é armazenada na variável cujo tipo é o nome da classe do objeto.

Page 26: Classes e Objetos em Java Disciplina: Programação Orientada a Objetos Ricardo Satoshi Ricardo Satoshi

26

Manipulação de objetosManipulação de objetos

Quando se cria uma string como em

nome = new String("POO/Java"); nome é uma variável que armazena uma referência para um

objeto específico da classe String - o objeto cujo conteúdo é "POO/Java":

nome

(Outras informações…)

POO/Javareferência

objeto

É importante ressaltar que a variável nome mantém apenas a referência para o objeto e não o objeto em si.

Page 27: Classes e Objetos em Java Disciplina: Programação Orientada a Objetos Ricardo Satoshi Ricardo Satoshi

27

Manipulação de objetosManipulação de objetos

Assim, uma atribuição como

String outroNome = nome; não cria outro objeto, mas simplesmente uma outra

referência para o mesmo objeto:

nome

(Outras informações…)

POO/Javareferência

objeto

outronome

O único modo de aplicar os métodos a um objeto é através de uma referência ao objeto.

Page 28: Classes e Objetos em Java Disciplina: Programação Orientada a Objetos Ricardo Satoshi Ricardo Satoshi

28

Manipulação de objetosManipulação de objetos Para criar um novo objeto com o mesmo conteúdo

do objeto existente, o método clone() pode ser aplicado a este:

String outraString = nome.clone(); nome

(Outras informações…)

POO/Javareferência

objeto

outronome

(Outras informações…)

POO/Javareferência

objeto

outraString

próximo

Page 29: Classes e Objetos em Java Disciplina: Programação Orientada a Objetos Ricardo Satoshi Ricardo Satoshi

29

ConstrutoresConstrutores

Um construtor é um método especial, definido para cada classe. Determina as ações associadas à inicialização de cada objeto criado. É invocado apenas no momento da criação do objeto através do

operador new. A assinatura de um construtor diferencia-se das assinaturas dos

outros métodos por não ter nenhum tipo de retorno (nem mesmo void).

O nome do construtor deve ser o próprio nome da classe. O construtor pode receber argumentos, como qualquer método.

Usando o mecanismo de sobrecarga, mais de um construtor pode ser definido para uma classe.

Page 30: Classes e Objetos em Java Disciplina: Programação Orientada a Objetos Ricardo Satoshi Ricardo Satoshi

30

ConstrutoresConstrutores

Toda classe tem pelo menos um construtor sempre definido. Se nenhum construtor for explicitamente definido pelo

programador da classe, um construtor default, que não recebe argumentos, é criado pelo compilador Java.

Se o programador da classe criar pelo menos um método construtor, o construtor default não será criado automaticamente - se ele o desejar, deverá criar um construtor sem argumentos explicitamente.

volta

Page 31: Classes e Objetos em Java Disciplina: Programação Orientada a Objetos Ricardo Satoshi Ricardo Satoshi

31

Referência thisReferência this

Quando um método é aplicado a um objeto, de algum modo deve ser sinalizado ao método a qual objeto a invocação está se referindo. Exemplo:

String s1 = "java"; String s2 = "linguagem de programação oo"; int x1 = s1.length(); // 4 int x2 = s2.length(); // 27 Nesse exemplo, o método aplicado às duas strings é o mesmo - length(). Como o método sabe qual o objeto que ele deve "olhar" para saber o que

fazer? • presença de um "parâmetro secreto", que é passado a todo método, que é

uma referência ao objeto que está realizando a invocação.

Page 32: Classes e Objetos em Java Disciplina: Programação Orientada a Objetos Ricardo Satoshi Ricardo Satoshi

32

Referência thisReferência this

Em termos de uma linguagem procedimental, isso seria o equivalente a ter para as duas últimas linhas do exemplo anterior:

int x1 = length(s1); int x2 = length(s2);

Se necessário, o próprio método pode ter acesso a essa referência em seu código.

Essa referência é passada através da palavra-chave this, reservada para esse propósito.

Exemplos de uso de this A palavra-chave this é utilizada principalmente em dois contextos:

1. Diferenciar atributos de objetos, de parâmetros ou variáveis locais de mesmo nome;

2. Acessar o método construtor a partir de outros construtores.

Page 33: Classes e Objetos em Java Disciplina: Programação Orientada a Objetos Ricardo Satoshi Ricardo Satoshi

33

Referência thisReferência this

Esse exemplo ilustra esses dois usos: public class EsteExemplo { int x; int y; // exemplo do primeiro caso:

public EsteExemplo(int x, int y) { this.x = x; this.y = y;

} // exemplo do segundo caso:

public EsteExemplo ( ) { this(1, 1);

} }

Page 34: Classes e Objetos em Java Disciplina: Programação Orientada a Objetos Ricardo Satoshi Ricardo Satoshi

34

Remoção de objetosRemoção de objetos

Em linguagens de programação OO, a criação de objetos é um processo que determina a ocupação dinâmica de muitos pequenos segmentos de memória.

Se esse espaço não fosse devolvido para reutilização pelo sistema, a dimensão de aplicações desenvolvidas com linguagens de programação OO estaria muito limitada.

As duas abordagens possíveis são: Dedicar essa tarefa ao programador ou Deixar que o sistema seja o responsável por esta retomada de

recursos.

Page 35: Classes e Objetos em Java Disciplina: Programação Orientada a Objetos Ricardo Satoshi Ricardo Satoshi

35

Remoção de objetosRemoção de objetos

O problema da primeira abordagem é que o programador pode não considerar todas as possibilidades

Na segunda abordagem, recursos adicionais do sistema são necessários para a manutenção da informação necessária para saber quando um recurso pode ser retomado e para a execução do processo que retoma os recursos.

C++ é uma linguagem que adota a primeira estratégia. A remoção de objetos é efetivada explicitamente pelo programador

(através do operador delete), que pode também especificar o procedimento que deve ser executado para a liberação de outros recursos alocados pelo objeto através de um método destructor.

Page 36: Classes e Objetos em Java Disciplina: Programação Orientada a Objetos Ricardo Satoshi Ricardo Satoshi

36

Remoção de objetosRemoção de objetos

Java adota a abordagem de ter um garbage collector verifica que objetos não têm nenhuma referência válida, retomando

o espaço dispensado para cada um desses objetos. O programador não precisa se preocupar com a remoção

explícita de objetos. Pode ser necessário liberar outros recursos que tenham sido

alocados para o objeto. O método finalize() especifica o que deve ser feito antes

do espaço do objeto ser retomado pelo garbage collector. Esse método é definido na classe Object como protected. Portanto,

se for necessário redefiní-lo o programador deve também declará-lo como protected.

Page 37: Classes e Objetos em Java Disciplina: Programação Orientada a Objetos Ricardo Satoshi Ricardo Satoshi

37

Exemplo: Classe Time1Exemplo: Classe Time1

// Time1.java// A definição da classe Time1 mantém a hora no formato 24-horas.

// Pacotes do núcleo Javaimport java.text.DecimalFormat;

public class Time1 extends Object { private int hour; // 0 - 23 private int minute; // 0 - 59 private int second; // 0 - 59

// O construtor Time1 inicializa cada variável de instância // com zero. Assegura que cada objeto Time1 object inicia em // um estado consistente.

Page 38: Classes e Objetos em Java Disciplina: Programação Orientada a Objetos Ricardo Satoshi Ricardo Satoshi

38

Exemplo: Classe Time1Exemplo: Classe Time1

public Time1() { setTime( 0, 0, 0 ); }

// Configura um valor de hora usando hora Universal.Verifica // a validade dos dados. Configura os valores inválidos como zero. public void setTime( int h, int m, int s ) { hour = ( ( h >= 0 && h < 24 ) ? h : 0 ); minute = ( ( m >= 0 && m < 60 ) ? m : 0 ); second = ( ( s >= 0 && s < 60 ) ? s : 0 ); }

Page 39: Classes e Objetos em Java Disciplina: Programação Orientada a Objetos Ricardo Satoshi Ricardo Satoshi

39

Exemplo: Classe Time1Exemplo: Classe Time1

// converte para String no formato de hora universal public String toUniversalString() { DecimalFormat twoDigits = new DecimalFormat( "00" );

return twoDigits.format( hour ) + ":" + twoDigits.format( minute ) + ":" + twoDigits.format( second ); }

Page 40: Classes e Objetos em Java Disciplina: Programação Orientada a Objetos Ricardo Satoshi Ricardo Satoshi

40

Exemplo: Classe Time1Exemplo: Classe Time1

// convert para String no formato de hora padrão public String toString() { DecimalFormat twoDigits = new DecimalFormat( "00" ); return ( (hour == 12 || hour == 0) ? 12 : hour % 12 ) + ":" + twoDigits.format( minute ) + ":" + twoDigits.format( second ) + ( hour < 12 ? " AM" : " PM" ); }

} // fim da classe Time1

Page 41: Classes e Objetos em Java Disciplina: Programação Orientada a Objetos Ricardo Satoshi Ricardo Satoshi

41

Exemplo: Classe TimeTesteExemplo: Classe TimeTeste

// TimeTeste.java// Classe TimeTeste para a Classe Time1

// Pacotes de extensão Javaimport javax.swing.JOptionPane;

public class TimeTeste {

// cria objeto Time1 e o manipula public static void main( String args[] ) { Time1 time = new Time1(); // chama o construtor Time1

Page 42: Classes e Objetos em Java Disciplina: Programação Orientada a Objetos Ricardo Satoshi Ricardo Satoshi

42

Exemplo: Classe TimeTesteExemplo: Classe TimeTeste

// acrescenta a versão String da hora ao String de saída String output = “A hora universal inicial é: " + time.toUniversalString() + "\nA hora padrão inicial é: " + time.toString() + "\nChamada Implícita toString(): " + time;

// muda a hora e acrescenta a versão String da hora a saída time.setTime( 13, 27, 6 ); output += "\n\nHora Universal após setTime é: " + time.toUniversalString() + "\nHora Padrão após setTime é: " + time.toString();

Page 43: Classes e Objetos em Java Disciplina: Programação Orientada a Objetos Ricardo Satoshi Ricardo Satoshi

43

Exemplo: Classe TimeTesteExemplo: Classe TimeTeste

// usa valores inválidos para mudar a hora e acrescenta // versão String da hora a saída time.setTime( 99, 99, 99 ); output += "\n\nApós tentativas de configurações inválidas: " + "\nHora Universal: " + time.toUniversalString() + "\nHora Padrão: " + time.toString();

JOptionPane.showMessageDialog( null, output, "Testando a Classe Time1", JOptionPane.INFORMATION_MESSAGE );

System.exit( 0 ); }

} // fim da classe TimeTeste

Page 44: Classes e Objetos em Java Disciplina: Programação Orientada a Objetos Ricardo Satoshi Ricardo Satoshi

44

Exemplo: Classes e ObjetosExemplo: Classes e Objetosimport java.text.*;public class Empregado {

private String nome; private String salario;

public Empregado (String n, String s){ nome = n; salario = s; } public void imprimir (){ System.out.println(nome + " " + salario); }

Page 45: Classes e Objetos em Java Disciplina: Programação Orientada a Objetos Ricardo Satoshi Ricardo Satoshi

45

Exemplo: Classes e ObjetosExemplo: Classes e Objetos public void aumentarSalario (double porPercentual){ double sal = Double.parseDouble (salario); sal *= 1 + porPercentual / 100; NumberFormat nf = NumberFormat.getCurrencyInstance(); nf.setMinimumFractionDigits (2); salario = String.valueOf (nf.format(sal)); } public static void main (String args []){ Empregado [] e = new Empregado [3]; e[0] = new Empregado ("Harry Hacker", "3500"); e[1] = new Empregado ("Carl Cracker", "7500"); e[2] = new Empregado ("Tony Tester", "3800"); int i; for (i = 0; i < 3; i++){ e[i].aumentarSalario(10);} for (i = 0; i < 3; i++){ e[i].imprimir(); } }}

Page 46: Classes e Objetos em Java Disciplina: Programação Orientada a Objetos Ricardo Satoshi Ricardo Satoshi

46

Exemplo: Classes e ObjetosExemplo: Classes e Objetos

public class Pessoa{ private String nome; private int idade;

// construtor da classe public Pessoa(String n, int i) { this.nome = n; this.idade = i; }

public void imprimir() { System.out.print("Oi ! Meu nome eh " + nome); System.out.println(". Tenho " + idade + " anos de idade."); }

Page 47: Classes e Objetos em Java Disciplina: Programação Orientada a Objetos Ricardo Satoshi Ricardo Satoshi

47

Exemplo: Classes e ObjetosExemplo: Classes e Objetos

public static void main (String args[]) { Pessoa p; p = new Pessoa("Joao", 20); p.imprimir(); System.out.println("--------"); p = new Pessoa("Maria", 37); p.imprimir(); System.out.println("--------"); }}

Page 48: Classes e Objetos em Java Disciplina: Programação Orientada a Objetos Ricardo Satoshi Ricardo Satoshi

48

Exemplo: Classes e ObjetosExemplo: Classes e Objetos

public class Motocicleta{ private String marca; private String cor; private boolean estadoDoMotor; public void mostrarAtributos() { System.out.println("Esta motocicleta e uma " + marca + " " + cor); if (estadoDoMotor == true) System.out.println("O motor esta ligado."); else System.out.println("O motor esta desligado."); }

Page 49: Classes e Objetos em Java Disciplina: Programação Orientada a Objetos Ricardo Satoshi Ricardo Satoshi

49

Exemplo: Classes e ObjetosExemplo: Classes e Objetos

public void ligarMotor() { if (estadoDoMotor == true) System.out.println("O motor ja esta ligado."); else { estadoDoMotor = true; System.out.println("Agora o motor esta ligado."); } }

Page 50: Classes e Objetos em Java Disciplina: Programação Orientada a Objetos Ricardo Satoshi Ricardo Satoshi

50

Exemplo: Classes e ObjetosExemplo: Classes e Objetospublic static void main (String args[]) { Motocicleta m = new Motocicleta(); m.marca = "Yamaha RZ350"; m.cor = "amarela"; System.out.println("Mostrando atributos..."); m.mostrarAtributos(); System.out.println("--------"); System.out.println("Ligando o motor..."); m.ligarMotor(); System.out.println("--------"); System.out.println("Chamando o metodo mostrarAtributos..."); m.mostrarAtributos(); System.out.println("--------"); System.out.println("Ligando o motor..."); m.ligarMotor(); } }