A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Orientação a Objetos usando Java

Apresentações semelhantes


Apresentação em tema: "Orientação a Objetos usando Java"— Transcrição da apresentação:

1 Orientação a Objetos usando Java
Patricia A. Jaques Contribuições: Luiz Gonzaga Jr

2 Classes e Objetos Para entendermos os conceitos de orientação a objetos é necessário entendermos o que é um objeto. Por exemplo, consideremos objetos do mundo real: seu cachorro, seu computador, sua bicicleta. Os objetos do mundo real tem duas características: eles tem estado e comportamento. Por exemplo, cachorros tem estados (nome, cor, tamanho) e comportamentos (latir, andar, correr). Objetos de software, assim como, objetos do mundo real possuem estado (variáveis) e comportamento (métodos). Podemos representar objetos do mundo real através de objetos de software (por exemplo, um livro), assim como, também podemos modelar conceitos abstratos (por exemplo, uma ação do usuário em uma interface gráfica).

3 Objetos: cada uma das instâncias de uma classe.
Correntista #Nome:string #Saldo: float +verificaSaldo ( ); +depositaValor ( ); +retiraValor ( ); Classes: descrevem as informações armazenadas e os serviços providos por um objeto especificação de objetos Objetos: cada uma das instâncias de uma classe. Por exemplo: cada uma das contas vai ser um objeto existe apenas em tempo de execução?!

4 Definindo uma classe em Java
class ContaCorrente { }

5 Definindo uma classe em Java
Variáveis: definem o comportamento estático do objeto. class ContaCorrente { static float montanteTotal; float saldo; String nome; // Definição dos métodos } Variáveis de Instância Variável de Classe

6 Definindo uma classe em Java
Classe ContaCorrente montanteTotal: 600 Maria 100 João 200 Joana 300

7 Definindo uma classe em Java
Métodos: definem os serviços que podem ser solicitados a uma instância (objeto), ou seja, o comportamento dinâmico de um objeto. Por exemplo, na classe ContaCorrente podem ser definidos os métodos: - verificaSaldo: retorna o saldo da conta corrente; - depositaValor: deposita um valor especificado x na conta; - retiraValor: retira um valor especificado x da conta;

8 Os métodos determinam o comportamento dos objetos de uma classe.
Quando um método é invocado, se diz que o objeto está recebendo uma mensagem (para executar uma ação). No jargão da OO, um objeto chamar um método de outro é: um objeto cliente enviar uma mensagem a um objeto servidor. Um objeto pode nunca manipular os dados internos de outros objetos. A manipulação pode ocorrer através de chamada de métodos do objeto que está tendo os valores de seus dados modificados.

9 <bloco de código> } Mutator Methods
Definição de Métodos <modificador> <tipo de retorno> <nome> (lista de argumentos) { <bloco de código> } Mutator Methods public void setData (int d, int m, int a) { ... } Acessor Methods public int getDay () { ...} public void exibeData ( ) System.out.println (d+”/”+m+”/”+a);

10 Definindo uma classe em Java
class ContaCorrente { static float montanteTotal; float saldo; String nome; float verificaSaldo ( ) return saldo; } void depositaValor (float valor) saldo = saldo + valor; montanteTotal += valor; void retiraValor (float valor) if (saldo>=valor) saldo = saldo – valor; montanteTotal -= valor; } }

11 Variável que conterá uma
Criando um objeto Objeto é uma instância de uma classe; Usamos o operador new para criar um objeto. Variável que conterá uma referência a um objeto ContaCorrente minhaConta; minhaConta = new ContaCorrente ( ); Criação do objeto ContaCorrente minhaConta = new ContaCorrente ( );

12 Acessando variáveis e métodos de um objeto Operador ponto (.)
class AcessaContaCorrente { public static void main (String args [ ]) { ContaCorrente minhaConta = new ContaCorrente ( ); minhaConta.nome = “Maria”; float saldo; saldo = minhaConta.verificaSaldo ( ); minhaConta.depositaValor (200); ContaCorrente outraConta = new ContaCorrente ( ); outraConta.nome = “Joao”; saldo = outraConta.verificaSaldo ( ); } Nome: Maria Saldo: 0 Saldo: 200 Nome: Joao Saldo: 0

13 Exercício 1 – Criando Objeto ContaCorrente
Implemente a classe ContaCorrente da seção 3.1.2 Implemente um método print() que exiba na tela os dados do dono da conta corrente. Crie uma outra classse que se chama AcessaContaJoao No método main(), crie uma conta para o “João da Silva” com saldo = 1000. Exiba os dados da conta chamando o método print( ). Faça um saque de 135. Exiba novamente os dados.

14 Características de um Objeto
Um objeto possui 3 características: Comportamento: (métodos) Definido pelas mensagens que ele aceita, ou seja, os métodos que ele possui. Estado: (dados) Informações que objeto armazena. É representado pelas valores armazenados nas variáveis de instância do objeto. Pode se modificar constantemente. Uma mudança no estado do objeto é conseqüência de mensagens enviadas ao objeto (chamada de métodos do objeto), quando o código está bem encapsulado. Identidade: (referência) Cada objeto possui uma identidade diferente. Embora dois objetos podem possuir o mesmo estado.

15 Método Construtor Método que é automaticamente executado ao ser criado o objeto; É usado para inicialização de variáveis ou para a chamada de outros métodos; Os métodos construtores tem o mesmo nome que a classe; Não é obrigatório criar um construtor. Caso não exista a declaração de um construtor, o compilador gera automaticamente um construtor default. Pode haver mais de um método construtor mas eles tem que ter número de parâmetros diferentes ou tipos de parâmetros diferentes.

16 Método Construtor class ContaCorrente { static float montanteTotal;
float saldo; String nome; public ContaCorrente (String nomeDono) nome = nomeDono; saldo = 0; } float verificaSaldo ( ) return saldo; // restante do código

17 Acessando variáveis e métodos de um objeto Operador ponto (.)
class AcessaContaCorrente { public static void main (String args [ ]) { ContaCorrente minhaConta = new ContaCorrente (“Maria”); minhaConta.nome = “Maria”; float saldo; saldo = minhaConta.verificaSaldo ( ); minhaConta.depositaValor (200); ContaCorrente outraConta = new ContaCorrente (“Joao”); outraConta.nome = “Joao”; saldo = outraConta.verificaSaldo ( ); } Nome: Maria Saldo: 0 Saldo: 200 Nome: Joao Saldo: 0

18 Finalização de um Objeto
Método finalize ( ); Não recebe parâmetros e não retorna resultado; É chamado antes do Garbage Collection liberar a área de memória do objeto; Como, muitas vezes, um programa Java pode finalizar a execução sem o Garbage Collection ter liberado todos os recursos, não há garantia que este método seja chamado. Por isso, não é muito usado.

19 Operador this Java inclui um valor de referência especial, chamado this, que é usado dentro de qualquer método para referir-se ao objeto corrente. O valor de this refere-se ao objeto do qual o método corrente foi chamado.

20 Operador this var1=8; var1=4; class TestaThis { int var1 = 4;
public void metodo () int var1 = 8; System.out.println (var1); } class TestaThis { int var1 = 4; public void metodo () int var1 = 8; System.out.println (this.var1); } var1=8; var1=4;

21 Operador this class ContaCorrente { static float montanteTotal;
float saldo; String nome; public ContaCorrente (String nome) this.nome = nome; saldo = 0; } ... // restante do código

22 Variáveis Estrutura membro Método Construtor Métodos Método Main
class ContaCorrente { } void retiraValor (float valor) { if (saldo>=valor) saldo = saldo – valor; montanteTotal -= valor; } static float montanteTotal; float saldo; String nome; public ContaCorrente (String nome) { this.nome = nome; saldo = 0; } Método Construtor public static void main (String args [ ]) { ContaCorrente minhaConta = new ContaCorrente ("Maria"); minhaConta.depositaValor (200); float saldo = minhaConta.verificaSaldo ( ); System.out.println (saldo); } float verificaSaldo ( ) { return saldo; } void depositaValor (float valor) saldo = saldo + valor; montanteTotal += valor; Métodos Método Main

23 Exercício 2 – Classe Pessoa
Implemente a classe Pessoa Uma pessoa possui: um nome; uma data de nascimento; um endereço; implemente o método print ( ) : exibe na tela os dados da Pessoa. No método public static void main : crie dois objetos do tipo Pessoa: um que represente você e outro que represente o colega do lado.

24 Sobrecarga de Métodos É possível criar métodos com mesmo nome, mas lista de parâmetros diferentes. Isto é chamado de sobrecarga de métodos (ou overloading). É reconhecido em tempo de compilação. É devido a esta propriedade que podemos ter dois métodos construtores com parâmetros diferentes.

25 Sobrecarga de Métodos class ContaCorrente {
static float montanteTotal; float saldo; String nome; public ContaCorrente (String nome) this.nome = nome; saldo = 0; } public ContaCorrente (String nome, float saldo) this.saldo = saldo; ... // restante do código

26 Exercício 2 – Classe Pessoa
Na classe Pessoa Crie um método construtor que crie um objeto Pessoa recebendo como parâmetro o nome da Pessoa e outro que não receba nada como parâmetro. No método public static void main : crie dois objetos do tipo Pessoa: um que represente você, não passando nada para o método construtor; outro que represente o colega do lado: passando o nome do colega como parâmetro.

27 Passagem de Parâmetros por Valor
Passagem de Argumentos para Métodos em Java: Java passa somente argumentos por Valor O argumento passado para outro método não pode ser alterado Não há passagem de argumentos por referência Se um argumento passado for um objeto (instância de uma classe): as variáveis membros deste objeto poderão ser alteradas; Mas a referência do próprio objeto não pode ser alterada.

28 Passagem de Parâmetros por Valor
class TestaPassagemParametros{ public static void trocaValorPrimitivo (int num){ num = num +6; } public static void trocaValorObjeto (ContaCorrente c) { c.saldo = 300; public static void trocaReferenciaObjeto (ContaCorrente c){ c = new ContaCorrente ("Mulher Maravilha", 200);

29 val=11 saldo=0 saldo=300 nome=SuperHomem
public static void main (String args [ ]) { int val = 11; trocaValorPrimitivo (val); System.out.println ("val = "+val); ContaCorrente minhaConta = new ContaCorrente ("SuperHomem"); System.out.println (minhaConta.saldo); trocaValorObjeto (minhaConta); trocaReferenciaObjeto (minhaConta); System.out.println (minhaConta.nome); } val=11 saldo=0 saldo=300 nome=SuperHomem

30 Exercicio Implemente o exercício anterior, porém tentando passar como parâmetro para um novo método uma String. Neste método faça a variável String receber a referência para um outro parâmetro. public static void trocaReferenciaString (String str){ str = “azul”; } O que acontece? Por quê?

31 Modificadores de Acesso

32 Encapsulamento class ContaCorrente {
private static float montanteTotal; private float saldo; private String nome; public ContaCorrente (String nomeDono) nome = nomeDono; saldo = 0; } public float verificaSaldo ( ) return saldo; public void depositaValor (float valor) { saldo = saldo + valor; montanteTotal += valor; } public void retiraValor (float valor) if (saldo >= valor) saldo = saldo – valor; montanteTotal -= valor; public static float obtemTotalBanco ( ) return montanteTotal;

33 Encapsulamento Vantagem: Quando alterar os tipos dos dados de uma classe não é necessário alterar as classes que acessam essa classe. class Pessoa { public String nome; } class AcessaPessoa { public static void main (String args [ ]) { Pessoa p = new Pessoa ( ); p.nome = "Patty"; public String data; p.data = "4/4/1976";

34 class Pessoa { public String nome; } class AcessaPessoa { public static void main (String args [ ]) { Pessoa p = new Pessoa ( ); p.nome = "Patty"; public int dia; public int mes; public int ano; p.dia = 4; p.mes = 4; p.ano = 4;

35 public setNome (String nome) { this.nome = nome; }
class Pessoa { private String nome; private String data; public setNome (String nome) { this.nome = nome; } public setData (String data) { this.data = data; public String getNome () { return nome; public String getData () { return data; class AcessaPessoa { public static void main (String args [ ]) { Pessoa p = new Pessoa ( ); p.setNome ("Joao"); p.setData ("3/4/1967"); }

36 class Pessoa { private String nome; private int dia; private int mes; private int ano; public setNome (String nome) { this.nome = nome; } public setData (String data) { int v [] = separaData (data); dia = v[0]; mes = v[1]; ano = v[2]; public String getNome () { return nome; public String getData () { String data = dia + "/" + mes + "/" + ano; return data; class AcessaPessoa { public static void main (String args [ ]) { Pessoa p = new Pessoa ( ); p.setNome ("Joao"); p.setData ("3/4/1967"); }

37 Encapsulamento Aumenta Reusabilidade Minimiza tempo de debug

38 Exercício 3 - Encapsulamento
Agora que você aprendeu o conceito de encapsulamento, encapsule os atributos da classe Pessoa: Os dados são private e seus valores podem ser acessados e modificado pelos métodos mutator (set...) e acessor (get...);

39 Herança Chamamos de herança quando novas classes herdam propriedades (dados e métodos) de outras classes existentes. Esse é um importante recurso da orientação a objetos que permite a reutilização de código. As classes que herdam as propriedades são chamadas subclasses; A classe pai é chamada superclasse.

40 class Ponto { int x, y; public Ponto (int x, int y) { this.x = x; this.y = y; } public Ponto ( ) { this (-1, -1); // o this também pode ser usado para chamar // construtores public void print ( ) { System.out.print (“\n”+x +", "+ y);

41 class Ponto3D extends Ponto { int z;
super class Ponto3D extends Ponto { int z; public Ponto3D (int x, int y, int z) { this.x = x; this.y = y; this.z = z; } public Ponto3D ( ) { this (-1, -1, -1); super (x, y); Código igual na classe pai e filho Chamando construtor da classe pai

42 class Ponto3D extends Ponto { int z;
public Ponto3D (int x, int y, int z) { super (x, y); // chama o construtor Ponto (x, y) this.z = z; } public Ponto3D ( ) { this (-1, -1, -1); public void printPonto3D ( ) { print ( ); System.out.print (", "+z); Chama método print( ) da classe pai

43 class Herança { public static void main (String args [ ]) { Ponto p1 = new Ponto (1,1); Ponto3D p2 = new Ponto3D (2,2,2); p1.print ( ); p2.printPonto3D ( ); } 1, 1 2, 2, 2

44 Implemente a classe Aluno
Exercício 4 - Herança Implemente a classe Aluno A classe Aluno é subclasse da classe Pessoa A classe Aluno, além de conter os dados de uma pessoa, vai ter uma nota e uma turma. Crie métodos acessor e mutator para os atributos nota e turma. Escreva um método print2() que chame o método print() da classe pai (Pessoa) que irá exibir nome, data de nasc e endreço do aluno e exiba na tela a nota e a turma do aluno. No método public static void main: crie 1 objeto aluno que represente voce como aluno do curso Java. Que nota você se dá? :o)

45 Sobreposição (Overloading)
class Ponto3D extends Ponto { int z; public Ponto3D (int x, int y, int z) { super (x, y); // chama o construtor Ponto (x, y) this.z = z; } public Ponto3D ( ) { this (-1, -1, -1); public void printPonto3D ( ) { print ( ); System.out.print (", "+z); Chama método print( ) da classe pai print super.

46 Polimorfismo 1, 1 3, 3, 3 2, 2, 2 class Polimorfismo {
public static void main (String args [ ]) { Ponto p1 = new Ponto (1,1); Ponto3D p2 = new Ponto3D (2,2,2); Ponto p3 = new Ponto3D (3,3,3); p1.print ( ); p2.print ( ); p3.print ( ); } 3, 3, 3 1, 1 2, 2, 2 A capacidade de um objeto decidir qual método aplicará para si na hierarquia de heranças é chamada de polimorfismo. A idéia do polimorfismo é que embora a mensagem seja a mesma, os objetos poderão ter comportamentos diferentes.

47 Se não usar casting é gerado erro
Dinamic Binding Ponto3D p1 = new Ponto3D ( ); Ponto p2 = new Ponto3D ( ); Ponto3D p3 = new Ponto ( ); Ponto p2 = new Ponto3D ( ); Ponto3D p4 = (Ponto3D) p2; Se não usar casting é gerado erro em tempo de compilação

48 Um método não pode ser menos acessível que o método que ele sobrescreve (na classe pai).
class Ponto { private void print ( ) { ... } class Ponto3D extends Ponto { public void print ( ) {

49 Exercício 5 – sobreposição
Na classe Aluno (criada no exercício anterior) faça a sobreposição do método print da classe pai (classe Pessoa) , substituindo o método print2( ) .

50 Classes Abstratas Problema: Queremos construir um array de Polígonos.
Um polígono pode ser um Retângulo, um Quadrado, uma Elipse ou um Triângulo. E terão dois métodos básicos: area ( ) e circunferencia ( ). Mas um array só guarda objetos do mesmo tipo? Solução: criar uma classe abstrata que declare os métodos area() e circunferencia(), mas não os implementando, pois a área de um Triângulo é diferente da área de um Quadrado.

51 Classes Abstratas abstract class Shape { String cor; public abstract double area ( ); public abstract double circunference ( ); public String getType () { Class c = this.getClass(); return c.getName(); } Enquanto o programa executa, Java mantém o que é chamado de identificação do tipo em tempo de execução (RTTI). Permite saber a qual classe um objeto pertence. Podemos acessar essa informação usando a classe Class.

52 Classes Abstratas class Rectangle extends Shape {
protected double w, h; public Rectangle (double w, double h) { this.w = w; this.h = h; } public double getWidth () { return w; public double getHeight () { return h; public double area () { return w*h; public double circunference () { return 2*(w+h); } } // da class Rectangle class Circle extends Shape { public static final double PI = ; protected double r; public Circle (double r) { this.r = r; } public double getRadius () { return r; public double area () { return PI*r*r; public double circunference () { return 2*PI*r; } // da class Circle

53 Apenas métodos podem ser abstratos;
Classes Abstratas Apenas métodos podem ser abstratos; Se uma classe contiver pelo menos um método abstract, ela deve ser declarada como abstract; Uma classe abstrata não pode ser instanciada. Só podem ser instanciadas as classes filhas que implementarem os métodos abstracts; Se uma subclasse não implementar os métodos abstracts da classe abstract, ela também será abstract. Classes abstratas podem ter variáveis e métodos não abstratos, ou seja, implementados. Métodos abstract não podem ser private, static e final. Se o método não contiver corpo, tenho que declara-lo bastract senão dá erro em tempo de compilação. Se uma classe tiver algum método abstract, ela tem que ser declarada abstract, senão gera erro em tempo de compilação.

54 System.out.println ("O objeto "+i+ " é um "+shapes [i].getType());
Classes Abstratas class ClassesAbstratas { public static void main (String args [ ]) { Shape [ ] shapes = new Shape [2]; shapes [0] = new Circle (2); shapes [1] = new Rectangle (1, 3); double totalArea = 0; for (int i=0; i<shapes.length; i++) { System.out.println ("O objeto "+i+ " é um "+shapes [i].getType()); // ou utilizo instanceof //if (shapes [i] instanceof Circle) System.out.println ("É um Circle"); totalArea += shapes[i].area(); } System.out.println ("Área total de todos os objetos é "+totalArea);

55 Exercício 7 – Classes Abstratas
Implemente uma classe Hexagono. Essa classe tambem herda propriedades da classe abstrata Shape. O hexagono possui apenas um atributo que o compimento do lado s (Todos os lados tem comprimentos iguais). Implemente os métodos area e circunference do hexagono: A area de um hexagono é: 3/2*Math.sqrt(3)*s*s A circunferência de um hexagono é: 6*s. Implemente o método main e crie um hexagono de lado s=5. Qual é a area e circunferência deste hexagono? Mostre estas informações na tela. s

56 Interfaces Uma interface não pode possuir nenhuma implementação; Todos os métodos são abstratos, mesmo que o programador omita o modificador abstract; Todos os métodos são públicos, mesmo que o modificador public seja omitido; Todas as variáveis em uma interface são constantes, mesmo que não sejam declaradas como static final;

57 Não é possível criar uma instância de uma interface.
Interfaces interface MinhaInterface { int getSize ( ); void setSize (int param); } class MinhaClasse implements MinhaInterface { int size; public int getSize ( ) { return size; } public void setSize (int tam) { size = tam; Não é possível criar uma instância de uma interface. Para criar uma instância é preciso implementar a interface.

58 Podemos declarar classe abstrata Shape como interface:
Interfaces Java não permite herança múltipla, por isso uma classe pode ser subclasse(extends) apenas de uma superclasse mas implementar (implements) várias interfaces. Podemos declarar classe abstrata Shape como interface: retirar implementação do método Type(); as classes que implementam Shape podem herdar propriedades de outra classes.

59 Inner Class Inner class, ou nested class, é um conceito que surgiu a partir da versão JDK 1.1. Nas versões anteriores do JDK eram permitidas apenas classes top-level que pertenciam a pacotes. A partir da versão JDK 1.1, o Java suporta classes que são membros de outras classes, ou seja, classes que são definidas dentro do escopo de uma outra classe ou são anônimas, definidas dentro de uma expressão. Inner classes são um fenômeno do compilador e não do interpretador. Ou seja, o compilador gera o código necessário para que a inner class acesse os dados da enclosing class.

60 As inner classes tem as seguintes propriedades:
O nome da inner class tem que ser diferente do nome da enclosing classe (classe o qual está dentro). A inner classe pode usar variáveis e métodos da enclosing classe. A inner classe pode ser definida como abstract. A inner classe pode ser uma interface implementada por outra inner classe. Inner classes podem ser declaradas private ou protected. Os modificadores de proteção não previnem a inner classe de acessar variáveis membros de outras classes e da enclosing class.

61 Outras classes, que não a enclosing classe, não enxergam a inner classe.
Inner classes podem acessar variáveis private da enclosing class. Se uma inner classe for declarada como static, ela se torna uma top-level classe e perde a capacidade de acessar variáveis da enclosing class. Inner classes não podem possuir variáveis membros static. Se a inner classe precisa usar uma variável static, essa variável deve ser declarada na enclosing class. A enclosing class pode acessar livremente os dados da inner class, mesmo os privados (private).

62 import java.awt.*; import java.awt.event.*; public class TestaInnerClass { private Frame f; private TextField tf; public static void main (String args []) { TestaInnerClass inner = new TestaInnerClass (); inner.inicio(); } public void inicio () { f = new Frame ("Exemplo de Inner Class"); f.add (new Label ("Clique e arraste o mouse aqui."), BorderLayout.NORTH);

63 tf = new TextField (30); f.add (tf, BorderLayout.SOUTH); f.addMouseMotionListener (new Tratador1()); f.addMouseListener (new Tratador2()); f.setSize(300, 200); f.setVisible(true); } // A classe Tratador1 é uma inner classe public class Tratador1 extends MouseMotionAdapter { public void mouseDragged (MouseEvent e) { String s = "Mouse Dragging: X = " + e.getX() + " Y = " + e.getY(); tf.setText (s); } // da inner class Tratador1

64 public class Tratador2 extends MouseAdapter
{ public void mouseEntered (MouseEvent e) String s = "Mouse entrou"; tf.setText (s); } public void mouseExited (MouseEvent e) String s = "Mouse saiu"; } // da inner class Tratador2 } // da enclosing class TestaInnerClass

65 Classes Anônimas (Anonymous Class)
f.addMouseMotionListener (new MouseMotionAdapter ( ) { public void mouseDragged (MouseEvent e) String s = "Mouse Dragging: X = " + e.getX( ) + " Y = " + e.getY( ); tf.setText (s); } ); Classes Anônimas não possuem métodos construtores. Os parâmetros são repassados ao construtor da classe pai.

66 Área de memória liberada pelo Garbage Collection
String str = “Primeiro espaço”; System.out.println (“Usando memória original: “+str); str = “Outro espaço”; System.out.println (“Usando outro espaço de memória: “+str); str Primeiro espaço Outro espaço 10 100 Área de memória liberada pelo Garbage Collection

67 Exercício 6 - Agregação Ponto Reta Implemente a classe Ponto.
Um ponto tem dois atributos do tipo inteiro: As coordenadas x e y. Além disso, um ponto também tem os métodos: Método construtor: Inicializa as coordenadas x e y com os valores passados como parametro para o método. setaCoordenadas (int x, int y): que recebe como parametro os novos valores das coordenadas. exibe (): Que exibe os valores dos atributos x e y. Implemente a classe Reta. Uma Reta possui 2 atributos do tipo Ponto: O ponto inicial e o ponto final da Reta. Uma Reta possui os métodos: Método Construtor: recebe 4 valores inteiros e inicializa as coordenadas x e y de cada ponto. exibe( ): exibe as coordenadas x e y de cada ponto. Implemente a classe TestaReta: que possui apenas o método main. Dentro do método main: crie uma reta e inicialize o Ponto Inicial com x=2, y = 3 e o Ponto Final com x=5, y=6. chame o método exobe da classe Reta. Ponto Reta TestaReta


Carregar ppt "Orientação a Objetos usando Java"

Apresentações semelhantes


Anúncios Google