Programação Orientada a Objetos em Java

Documentos relacionados
Linguagem de Programação II Implementação

Programação. Orientada a Objetos: Herança. Objetos. Relacionamento entre classes. Análise e Projeto Orientados a. Objetos

UNIVERSIDADE FEDERAL DE MATO GROSSO DO SUL SISTEMAS DE INFORMAÇÃO - CÂMPUS DE COXIM FUNDAMENTOS EM ORIENTAÇÃO A OBJETOS

Encapsulamento e Métodos (Construtores e Estáticos) João Paulo Q. dos Santos

COMPORTAMENTOS - Observações

Programação Java (nível intermediário) 4. Polimorfismo

Programação Java. Marco Fagundes. - Herança, Classes Abstratas e Interfaces Marco Fagundes -

Algoritmos e Programação 2. Objetos e Classes em Java. Classes. Revisão. Definições de classes incluem (geralmente):

Interfaces. Universidade Católica de Pernambuco Ciência da Computação. Prof. Márcio Bueno.

Programação por Objectos. Java

Herança. Universidade Católica de Pernambuco Ciência da Computação. Prof. Márcio Bueno.

Programação Java. - Herança e Polimorfismo - Marco Fagundes Marco Fagundes -

Linguagem de Programação II Implementação

Implementando classes em C# Curso Técnico Integrado em Informática Fundamentos de Programação

Curso: Técnico em Informática Integrado Disciplina: POO Carga horária: 60h Período: 2º Ano Professor: Edmilson Barbalho Campos Neto LISTA 02.

Lista 05 Herança. public class PessoaFisica extends Pessoa { private String RG; public PessoaFisica(){ super(); } public String getrg(){ return RG; }

Atributos e Métodos Estáticos

Programação Orientada a Objetos. SANTOS, Rafael (PLT) e Guia de Estudo SCJP. SIERRA, Kathy e BATES, Bert

Linguagem de Programação Orientada a Objeto Construtores e Sobrecarga

Fundamentos Básicos da linguagem Java (Programação Orientada a Objetos) Prof. Responsáveis Wagner Santos C. de Jesus

Relacionamentos entre objetos

Universidade Estadual de Santa Cruz

Programação Orientada a Objetos. Métodos e Atributos. Métodos. Métodos. Alexandre César Muniz de Oliveira. Parte III

Sabemos que a classe é responsável por definir a estrutura e o comportamento de seus objetos. Portanto, os objetos são instâncias das classes.

Introdução a classes e objetos. Prof. Marcelo Roberto Zorzan Prof a. Rachel Reis

nome = n; cargo = c; salario = s; public void print() { System.out.println(nome cargo salario); public void aumento( double fator){

Programação Orientada a Objetos. Vagner Luz do Carmo - Vluzrmos

Classes, instâncias e métodos de acesso. prática

Exercícios sobre repetição. 1. Escreva um método que lê via teclado 8 números e retorna a quantidade de negativos.

Dados armazenados em um objeto podem ser tanto primitivos, tais como inteiros ou caracteres, ou referências para outros objetos.

Interfaces POO. Prof. Marcio Delamaro

Análise de Programação

Herança. Prof. Fernando V. Paulovich 23 de agosto de 2010

1 Introdução e Conceitos básicos

Orientação a objetos. Programação. Orientada a Objetos. Orientação a objetos. Orientação a objetos. Abstração e encapsulamento

Herança (parte 2) Redefinição de métodos AULA 11

PROGRAMAÇÃO ORIENTADA A OBJETOS: OCULTAR INFORMAÇÕES E ENCAPSULAMENTO

Laboratório de programação II

Sobrecarga. Algoritmos e Programação II. Aula 3 Sobrecarga

Linguagem de Programação Orientada a Objeto Polimorfismo, Classes Abstractas e Interfaces

Herança. Herança. Herança. Herança. Herança. Programação Orientada a Objetos

Especificam quem tem acesso a cada entidade, isto é, quem tem acesso a. cada classe e cada membro da classe (dados e métodos)

CIÊNCIA DA COMPUTAÇÃO - LINGUAGEM DE PROGRAMAÇÃO II REVISÃO POO

Herança e Polimorfismo

Orientação a Objetos Básica

Programação Orientada a Objetos. Professor: André Luis Meneses Silva br.geocities.com/programacao2ufs

Linguagem de Programação. Diagrama de classes

Atributos e Métodos de Classe

Exercícios sobre herança e polimorfismo

Introdução a classes e objetos. Prof. Marcelo Roberto Zorzan

[Linguagem de Programação 3] [Aula 01] [Gustavo Yoshio Maruyama]

3. Para a classe Circulo abaixo, escreva os métodos indicados pelos dois primeiros comentários.

JAVA TÓPICOS ESPECIAIS DE PROGRAMACAO ORIENTADA A OBJETOS

Introdução. Atributos em Java. Atributos. Acesso à atributos em Java. Atributo versus variável. Atributos, métodos e encapsulamento.

double [] precoa = new double [1000]; // Preço com desconto para compras Avista

Programação Orientada a Objectos - P. Prata, P. Fazendeiro. Hierarquia de classes e mecanismo de ligação

Exercícios com arrays unidimensionais

Ex: carro_desportivo poderá ser uma subclasse de automóvel (carro_desportivo é_um automóvel)

Java para Desktop. Programação Orientada à Objetos 2 JSE

Unidade: sobrecarga, construtores e herança

Strings e Arrays POO

Programação Orientada a Objetos. Aula 1.9 this e static. Prof. Bruno Moreno

CONCEITOS BÁSICOS DE ORIENTAÇÃO A OBJETOS PROF. ME. HÉLIO ESPERIDIÃO

Lição 11 Herança, polimorfismo e interfaces

Programação Orientada por Objectos 2010/11. 2º Exame 28 de Junho de 2011

Programação Orientada a Objetos JAVA - NETBEANS

Computação II - Java - Teste 1.2 Prof. Adriano Joaquim de Oliveira Cruz 2015/04/27

Aula 10 POO 1 Classes Abstratas. Profa. Elaine Faria UFU

Unidade: Classes Abstratas, Polimorfismo, Sobreposição e Interfaces

LÓGICA DE PROGRAMAÇÃO (JAVA) HERANÇA. Professor Carlos Muniz

Polimorfismo. O que é polimorfismo?

Programação Orientada a Objetos II

Roteiro. Introdução. Uma Introdução à Programação Orientada a Objetos e JAVA usando NetBeans. Objetos. Princípios da Orientação a Objetos

9 Classes Abstractas e Interfaces

Tratamento de Exceções

Polimorfismo. PARTE II: Java e OO. Polimorfismo. Polimorfismo. Polimorfismo. Polimorfismo

Linguagem de Programação IV Introdução

Classes e Objetos em Java. Algoritmos e Programação I. Classes. Classes. Modificadores de Acesso. Classes. Revisão

Programação Orientada a Objetos Aula I Declaração de classes, métodos construtores. Prof.: Bruno E. G. Gomes IFRN

Orientação a Objetos e Java

Vejamos o seguinte exemplo public class Exemplo private int testada = 20; public void testapalavra(int testada) JOptionPane.showMessageDialog(null,"Pa

Transcrição:

Programação Orientada a Objetos em Java Conceitos: Classe, Variável de Instância ou Atributos, Métodos, Objeto, Variáveis Estáticas ou de Classe, Construtores, Construtores Sobrecarregados, Herança, Polimorfismo, Sobreposição, referências this e super. Classe com variáveis de instância de acesso público: public class Exercicio01 { public String descricao = null; public double valor = 0; Classe (programa) que usa (instancia) objeto da classe Exercicio01: public class Exercicio02 { public static void main(string[] a) { * Instancia objeto da classe Exercicio01 usando * construtor padrão (sem argumentos) Exercicio01 x = new Exercicio01(); * do objeto instanciado System.out.println(x.descricao); System.out.println(x.valor); * do objeto instanciado x.descricao = "teste"; x.valor = 45.8; * do objeto instanciado System.out.println(x.descricao); System.out.println(x.valor); Reaproveitamento de código por meio do uso de um método para impressão: public class Exercicio02 { public static void main(string[] a) { Exercicio01 x = new Exercicio01(); exibe(x); x.descricao = "teste"; x.valor = 45.8;

exibe(x); private static void exibe(exercicio01 c){ System.out.println(c.descricao); System.out.println(c.valor); Classe com construtor para inicialização das variáveis de instância: public class Exercicio03 { public String descricao; public double valor; public Exercicio03() { descricao = null; valor = 0; Classe com construtores sobrecarregados: public class Exercicio04 { public String descricao; public double valor; * Construtor sem argumentos public Exercicio04() { descricao = null; valor = 0; * Construtor sobrecarregado com 2 argumentos public Exercicio04(String x, double y) { descricao = x; valor = y; Classe (programa) que usa (instancia) objetos da classe Exercicio04 com construtores diferentes: public class Exercicio05 { public static void main(string[] a) { * Instancia objeto da classe Exercicio04, usando * construtor padrão (sem argumentos) Exercicio04 x = new Exercicio04();

* Instancia objeto da classe Exercicio04, usando * o construtor sobrecarregado, com dois argumentos Exercicio04 y = new Exercicio04("teste", 4.6); System.out.println(x.descricao); System.out.println(x.valor); System.out.println(y.descricao); System.out.println(y.valor); x.descricao = "xyz"; x.valor = 32.3; y.descricao = "xpto"; y.valor = 69.5; System.out.println(x.descricao); System.out.println(x.valor); System.out.println(y.descricao); System.out.println(y.valor); Transformação das variáveis de instância em membros privados e a introdução de métodos modificadores e acessores. public class Exercicio06 { private String descricao; private double valor;

* Construtor sem argumentos public Exercicio06() { setdescricao(null); setvalor(0); * Construtor sobrecarregado com 2 argumentos public Exercicio06(String x, double y) { setdescricao(x); setvalor(y); * Método acessor (get) para variável de instância descricao public String getdescricao() { return descricao; * Método modificador (set) para variável de instância descricao public void setdescricao(string d) { descricao = d; * Método acessor (get) para variável de instância valor public double getvalor() { return valor; * Método modificador (set) para variável de instância valor public void setvalor(double v) { valor = v; Classe (programa) que usa (instancia) objetos da classe Exercicio06 e acessa e modifica suas variáveis de instância por meio de seus métodos acessores e modificadores. public class Exercicio07 { public static void main(string[] a) { * Instancia objeto da classe Exercicio04, usando * construtor padrão (sem argumentos) Exercicio06 x = new Exercicio06(); * Instancia objeto da classe Exercicio04, usando

* o construtor sobrecarregado, com dois argumentos Exercicio06 y = new Exercicio06("teste", 4.6); System.out.println(x.getDescricao()); System.out.println(x.getValor()); System.out.println(y.getDescricao()); System.out.println(y.getValor()); x.setdescricao("xyz"); x.setvalor(32.3); y.setdescricao("xpto"); y.setvalor(69.5); System.out.println(x.getDescricao()); System.out.println(x.getValor()); System.out.println(y.getDescricao()); System.out.println(y.getValor()); Classe que estende (herda) a classe Exercicio06: public class Exercicio08 extends Exercicio06 { private int quantidade; * Construtor sem argumentos public Exercicio08() {

super(); setquantidade(0); * Construtor sobrecarregado com 3 argumentos public Exercicio08(String x, double y, int q) { super(x, y); setquantidade(q); * Método acessor (get) para variável de instância quantidade public int getquantidade() { return quantidade; * Método modificador (set) para variável de instância quantidade public void setquantidade(int q) { quantidade = q; Classe (programa) que usa (instancia) objetos da classe Exercício08: public class Exercicio09 { public static void main(string[] a) { * Instancia objeto da classe Exercicio04, usando * construtor padrão (sem argumentos) Exercicio08 x = new Exercicio08(); * Instancia objeto da classe Exercicio04, usando * o construtor sobrecarregado, com três argumentos Exercicio08 y = new Exercicio08("teste", 4.6, 10); System.out.println(x.getDescricao()); System.out.println(x.getValor()); System.out.println(x.getQuantidade()); System.out.println(y.getDescricao()); System.out.println(y.getValor());

System.out.println(y.getQuantidade()); x.setdescricao("xyz"); x.setvalor(32.3); x.setquantidade(30); y.setdescricao("xpto"); y.setvalor(69.5); y.setquantidade(50); System.out.println(x.getDescricao()); System.out.println(x.getValor()); System.out.println(x.getQuantidade()); System.out.println(y.getDescricao()); System.out.println(y.getValor()); System.out.println(y.getQuantidade()); Questionário que pode ser resolvido com os exemplos acima (questões para avaliação): 1. Crie uma classe qualquer com as variáveis de instancia descrição e valor, ambas de acesso público. Determine a atribuição de valores iniciais para essas variáveis nas próprias instruções de declaração. 2. Crie uma classe que possa ser executada pela linha de comando (prompt) para instanciar (criar) um objeto da classe definida no item anterior. Exiba os valores das variáveis de instância desse objeto, modifique-os e torne a exibi-los. 3. Crie uma nova classe, similar a do exercício 1, que use um método construtor para atribuir os mesmos valores iniciais às variáveis de instância. 4. Na classe criada no item anterior, crie outro construtor, sobrecarregado, que receba os valores para as variáveis de instância, e os atribua às variáveis de instância da classe. Note que o construtor definido no item anterior (sem argumentos) deve ser mantido também na classe. 5. Crie uma classe que possa ser executada pela linha de comando (prompt) para instanciar (criar) dois objetos da classe definida nos dois últimos exercícios. Para cada um dos objetos, use um construtor diferente. Exiba os valores das variáveis de instância desses objetos, modifique-os e torne a exibi-los. 6. Tomando como base a classe criada nos exercícios 3 e 4, modifique os acesso às variáveis de instância, tornando-os privados da própria classe. Crie, com acesso público, os métodos modificadores (set) e os métodos acessores (get) para cada uma das variáveis de instância.

7. Crie uma classe que possa ser executada pela linha de comando (prompt) para instanciar (criar) dois objetos da classe definida no último exercício. Para cada um dos objetos, use um construtor diferente. Exiba os valores das variáveis de instância desses objetos, usando os métodos acessores; modifique-os, usando os métodos modificadores; e torne a exibi-los, usando os métodos acessores. 8. Crie uma classe que herde todas as características da classe criada no exercício 6 e acrescente a variável de instância quantidade, com acesso privado. Crie os métodos acessor (get) e modificador (set) para a variável de instância quantidade. 9. Crie uma classe que possa ser executada pela linha de comando (prompt) para instanciar (criar) dois objetos da classe definida no último exercício. Para cada um dos objetos, use um construtor diferente. Exiba os valores das variáveis de instância desses objetos, usando os métodos acessores; modifique-os, usando os métodos modificadores; e torne a exibi-los, usando os métodos acessores. Forma e Derivadas. Exemplo com Herança, variáveis de classe (estáticas, com modificador static) e referências this e super: public class Forma { private double medida[]; private static int conta; public Forma(int nummedidas) { medida = new double[nummedidas]; conta++; public double getmedida(int i) { return medida[i]; public void setmedida(int i, double m) { this.medida[i] = m; public int getnummedidas() { return medida.length; public static int getconta() { return conta; public class Circunferencia extends Forma { final double pi = 3.14159; private static int conta; public Circunferencia(double raio) { super(1); setmedida(0, raio); conta++; public double getperimetro() { return getmedida(0) * pi * 2;

public double getarea() { double raio = getmedida(0); return Math.pow(raio,2) * pi * 2; public static int getconta() { return conta; public class Retangulo extends Forma { private static int conta; public Retangulo(double base, double altura) { super(2); setmedida(0, base); setmedida(1, altura); conta++; public double getperimetro() { return (getmedida(0) + getmedida(1)) * 2; public double getarea() { return getmedida(0) * getmedida(1); public static int getconta() { return conta; import javax.swing.joptionpane; public class TestaForma { public static void main(string[] args) { String r1 = JOptionPane.showInputDialog("Entre com o raio:"); double raio1 = Double.parseDouble(r1); Circunferencia c = new Circunferencia(raio1); JOptionPane.showMessageDialog(null, "Perímetro: " + c.getperimetro()); JOptionPane.showMessageDialog(null, "Área: " + c.getarea()); JOptionPane.showMessageDialog(null, "Total de Formas: " + Forma.getConta()); JOptionPane.showMessageDialog(null, "Total de Circunferências: " + Circunferencia.getConta()); String r2 = JOptionPane.showInputDialog("Entre com o raio:"); double raio2 = Double.parseDouble(r1); Circunferencia d = new Circunferencia(raio2); JOptionPane.showMessageDialog(null, "Perímetro: " + d.getperimetro()); JOptionPane.showMessageDialog(null, "Área: " + d.getarea()); JOptionPane.showMessageDialog(null, "Total de Formas: " + Forma.getConta()); JOptionPane.showMessageDialog(null, "Total de Circunferências: " + Circunferencia.getConta());

String b1 = JOptionPane.showInputDialog("Entre com a base:"); String a1 = JOptionPane.showInputDialog("Entre com a altura:"); double base1 = Double.parseDouble(b1); double altura1 = Double.parseDouble(a1); Retangulo e = new Retangulo(base1, altura1); JOptionPane.showMessageDialog(null, "Perímetro: " + e.getperimetro()); JOptionPane.showMessageDialog(null, "Área: " + e.getarea()); JOptionPane.showMessageDialog(null, "Total de Formas: " + Forma.getConta()); JOptionPane.showMessageDialog(null, "Total de Retângulos: " + Retangulo.getConta()); Conta e Conta Especial. Mais um exemplo sobre o uso de classes. import java.text.decimalformat; public class Conta { private double saldo; private static int qtd; private String cliente; * Creates a new instance of Conta public Conta(String c, double s) { cliente = c; saldo = s; qtd++; void deposito(double d) { saldo+=d; void saque(double s) { saldo-=s; public void mostra() { DecimalFormat numerocomduascasasdecimais = new DecimalFormat("#0.00"); System.out.println("---------------------------------------------"); System.out.println("Total de contas abertas: " + qtd); System.out.println("---------------------------------------------"); System.out.println("Cliente: " + cliente); System.out.println("O Saldo Atual e: " + numerocomduascasasdecimais.format(saldo)); import java.text.decimalformat; public class ContaEspecial extends Conta { private double limite; public ContaEspecial(String c, double a, double b) { super(c, a); limite = b;

public ContaEspecial(String c, double b) { super(c, 0); limite = b; public void mostra() { System.out.println("---------------------------------------------"); System.out.println("Conta Especial com Limite de: " + limite); super.mostra(); public class ContaEspecialTesta { public static void main(string[] args) { if (args.length < 10) System.out.println("Quantidade de parametros inválida!"); else { Lista Parametros for (int i=0; i<args.length; i++) System.out.println("Parametro " + (i + 1) + " = " + args[i]); Testa o uso da classe Conta e ContaEspecial Conta a = new Conta(args[0], Double.parseDouble(args[1])); Conta b = new ContaEspecial(args[2], Double.parseDouble(args[3]), Double.parseDouble(args[4])); ContaEspecial c = new ContaEspecial(args[5], Double.parseDouble(args[6]),Double.parseDouble(args[7])); ContaEspecial d = new ContaEspecial(args[8], Double.parseDouble(args[9])); a.mostra(); b.mostra(); c.mostra(); d.mostra(); a.saque(20); b.saque(30); c.saque(10); d.saque(15); a.mostra(); b.mostra(); c.mostra(); d.mostra(); Exercício Propostos: 1. Crie uma classe para simular o funcionamento de um motor. A classe motor deve possuir os atributos: velocidade em RPM, fabricante, voltagem, status do motor, (ligado ou desligado), e os métodos: liga motor, desliga motor, verifica velocidade do motor.

2. Crie uma classe que utilize três objetos da classe motor e imprima na tela os valores dos atributos. 3. Usando uma classe chamada Dados para armazenar os dados da pesquisa, resolva a questão 6 da lista de exercícios V, Usando Métodos em Java. Defina as variáveis de instância como privadas e crie os métodos acessores e modificadores para cada uma. 4. Crie uma classe que estenda a classe Motor, acrescentando dois métodos: um para aumentar a velocidade e outro para reduzir a velocidade. A velocidade não pode passar de 5000 rpm e não pode ser menor que zero. 5. Crie uma classe que instancie a classe do exercício anterior e faça a velocidade do motor aumentar de 50 em 50 até atingir 5000. Ao atingir a velocidade máxima, o motor começa a reduzir a velocidade de 50 em 50 até chegar a zero. A cada mudança de velocidade, imprima uma mensagem com a atual velocidade do motor. 6. Identifique algo do seu cotidiano que possa ser representado na forma de classes e objetos. Procure um caso onde a generalização e a especialização, por meio do uso de herança, possam ser usadas. Implemente o contexto identificado em Java, criando as classes referentes ao negócio escolhido e um programa principal para testá-las.