O conceito central da tecnologia dos objectos é a noção de classe.

Documentos relacionados
Programação Orientada a Objectos - P. Prata, P. Fazendeiro. Cartão de fidelização de clientes das distribuidoras de combustível.

Programação Orientada a Objectos - P. Prata, P. Fazendeiro. Cartão de fidelização de clientes das distribuidoras de combustível.

5 Caso de estudo O cartão fidelidade

if (umobjecto!= null && umobjecto instanceof CartaoFidelidade){ titular.equals(((cartaofidelidade) umobjecto).titular) &&

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

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

Linguagem de Programação II Implementaçã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.

Atributos e Métodos Estáticos

Programação Orientada a Objectos - P. Prata, P. Fazendeiro

Programação Orientada a Objectos - P. Prata, P. Fazendeiro

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.

Programação Orientada a Objectos - P. Prata, P. Fazendeiro

Programação Orientada a Objetos em Java

Aula 4. TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS 2014 Marcelo Henrique dos Santos -

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

4 TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS

Relacionamentos entre objetos

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

Linguagem de programação métodos/funções

Aula 2 POO 1 Prática. Profa. Elaine Faria UFU

PROGRAMAÇÃO JAVA. Parte 3

Orientação a Objetos e Java

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

Tipos, Literais, Operadores

Tipos, Literais, Operadores

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

Quando um programa viola as restrições semânticas da linguagem, a JVM assinala um erro ao programa, sob a forma de exceção.

1. Estude e implemente a classe Exemplo1 apresentada abaixo:

Universidade Estadual de Santa Cruz

Programação com Objectos. Processamento de Dados I. 2. Classes, Atributos e Métodos

Programação por Objectos. Java

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

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

4 Conceito de Herança

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

Recursividade. Prof. Jesus José de Oliveira Neto

Linguagem de Programação II Implementação

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

DIRETORIA ACADÊMICA DE GESTÃO E TECNOLOGIA DA INFORMAÇÃO DIATINF TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS TADS

Herança e Polimorfismo

INF1636 PROGRAMAÇÃO ORIENTADA A OBJETOS

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


INF1337 LINGUAGEM DE PROGRAMAÇÃO ORIENTADA A OBJETOS

Programação Orientada a Objectos - P. Prata, P. Fazendeiro

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


Conceitos de Programação Orientada a Objetos

RESULUÇÃO DOS EXERCÍCIOS E INSTRUÇÕES DE DECISÃO (if{} e else{}) Profº André Aparecido da Silva Disponível em:

Exceções. Criando suas exceções

RESPOSTA: import java.util.arraylist; import java.util.list; class CarrinhoDeCompras2 { List<Produto> produtos;

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

Strings e Arrays POO

POO fundamentos Parte II. Professor Vicente Paulo de Camargo

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

Aula 5 POO 1 Encapsulamento. Profa. Elaine Faria UFU

A B Classe Genérica D A C. Classe Especializada. Classe Especializada. Características Herdadas

Conceitos de Programação Orientada a Objetos

Programação com Objectos. 2º Teste 2015/2016 1º Semestre

Para entender o conceito de objetos em programação devemos fazer uma analogia com o mundo real:

Atribuições: Valores, Ponteiros e Referências

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

UNIP - Ciência da Computação e Sistemas de Informação. Estrutura de Dados. AULA 6 Filas

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

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

COMPORTAMENTOS - Observações

Input / Output na linguagem java. Para isso usamos um dos construtores da classe java.io.file:

LISTA DUPLAMENTE ENCADEADA

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

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

1 Introdução e Conceitos básicos

ESQUEMA AULA PRÁTICA 1

Paradigmas de Programação. Java First-Tier: Aplicações. Orientação a Objetos em Java (I) Nomenclatura. Paradigma OO. Nomenclatura

Programação Orientada a Objetos

Sistema Futebol - Java

UNIP - Ciência da Computação e Sistemas de Informação. Estrutura de Dados. AULA 5 Pilhas

ESQUEMA AULA PRÁTICA 1

Prof. Jesus José de Oliveira Neto

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

Introdução à Programação Orientada por Objectos em Java. Enquadramento e Objectivos Abstracção Encapsulamento Herança Polimorfismo Conclusão

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

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

Encapsulamento de Dados

Programação Orientada por Objectos 2007/2008

Programação Orientada pelos Objetos B. Desenvolvimento orientado pelos objectos

Segunda Parte (3 valores) Primeira Parte (7 valores) Nome: Número: PERGUNTA NOTA PERGUNTA RESPOSTA

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

Interfaces POO. Prof. Marcio Delamaro

Análise de Programação

Pilha e Fila. Pilha em C. Definir o registro que representará cada elemento da pilha.

final class UltimosDiasMeses{ static final int[] DIAS_DO_MES = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; }

Prof. A. G. Silva. 06 de setembro de Prof. A. G. Silva INE5603 Introdução à POO 06 de setembro de / 1

AULA TEÓRICA 10. Tema 9. Interface. Tema 10. Recursividade

Paradigmas da Programação PPROG. Tipos Enumerados. Nelson Freire (ISEP DEI-PPROG 2013/14) 1/20

Orientação a Objetos AULA 09

Métodos em Java. Prof. Esp. André Aparecido da Silva (Aulas 31 a 33) Disponível em:

Transcrição:

P. Fazendeiro & P. Prata POO - TP03 / 19 _ JAVA.ClassesInstanciáveis O conceito central da tecnologia dos objectos é a noção de classe. As classes encapsulam dados (normalmente privados) operações (normalmente públicas)... e funcionam como moldes para os objectos. Um programa orientado pelos objectos é um conjunto de classes relacionadas entre si. Problema: identificar as classes necessárias para determinada aplicação bibliotecas de classes construídas pelo programador Com o programa em execução surgem (são instanciados) os objectos são instâncias das classes, com comportamento comum mas estado próprio enviam mensagens uns aos outros

P. Fazendeiro & P. Prata POO - TP03 / 20 _ Cartão de fidelização de clientes das distribuidoras de combustível. Defina e desenvolva em JAVA a classe CartaoFidelidade, que deverá apresentar uma funcionalidade semelhante ao referido cartão. Cada cartão deve possuir um titular e um número de pontos (>=0) de bonificação. Cada instância da dita classe deverá ser capaz de responder adequadamente a um conjunto de mensagens correspondentes às operações de: crédito de pontos aquando de um abastecimento ou compras débito de pontos (troca de pontos por prémios e brindes, se tal for possível) consulta do total de pontos do cartão consulta do número total de abastecimentos/compras realizados consulta do número total de brindes descontados apresentação de todos os dados do cartão (cadeia de caracteres)

P. Fazendeiro & P. Prata POO - TP03 / 21 _ Comecemos pela definição de variáveis de objecto (variáveis de instância) e método(s) construtor(es): public class CartaoFidelidade { //VARIÁVEIS DE INSTÂNCIA: private String titular; private int pontos, ndebitos, ncreditos; //nome do possuidor do cartão //saldo e número de cada tipo de operação // CONSTRUTORES: //reparem no nome (o mesmo da classe) e na //ausência de um valor de retorno public CartaoFidelidade() { //Construtor por omissão. O que acontece? public CartaoFidelidade (String tit) { titular = tit; pontos = 0; ndebitos = 0; ncreditos = 0; public CartaoFidelidade (String tit, int pts) { titular = tit; pontos = pts; ndebitos = 0; ncreditos = 0; //Porquê zero e não um? Depende da aplicação... Concentremo-nos agora nos métodos que cada instância da classe CartaoFidelidade terá de ser capaz de proporcionar:

P. Fazendeiro & P. Prata POO - TP03 / 22 _ //MÉTODOS DE INSTÂNCIA //consulta do total de pontos do cartão public int getpontos() { return pontos; //crédito de pontos aquando de um abastecimento ou compras public void creditarpontos(int pontos) { this.pontos += pontos; ncreditos += 1; //débito de pontos (troca de pontos por prémios e brindes) public void debitarpontos(int pontos) { //PRE: pontos <= this.pontos this.pontos -= pontos; ndebitos += 1; //consulta do número total de abastecimentos/compras realizados public int getnumcompras() { return ncreditos; //consulta do número total de brindes descontados public int getnumtrocas() { return ndebitos; //apresentação de todos os dados do cartão (cadeia de caracteres) public String tostring() { return "Cliente: " + titular + "\n" + "Saldo do cartão: " + pontos + "\n" + "Número de compras: " + ncreditos + "\t\tnúmero de brindes: " + ndebitos +"\n";

P. Fazendeiro & P. Prata POO - TP03 / 23 _ Crie e implemente um programa para testar a classe agora definida. Apenas um exemplo: public class TesteCartao { public static void main(string[] args) { final int ptscarro = 40, ptsboneca = 80; CartaoFidelidade carda, cardb, cardc = new CartaoFidelidade(); int ptsbrindesporatribuir, nbrindesdistrib, numcompras; carda = new CartaoFidelidade("Adalberto U.M. Fulano"); cardb = new CartaoFidelidade("Sicrano E. Beltrano", 50); carda.creditarpontos(34); carda.creditarpontos(44); cardb.creditarpontos(12); cardb.creditarpontos(45); if (carda.getpontos() >= ptsboneca) carda.debitarpontos(ptsboneca); else System.out.println("O seu saldo não lhe permite realizar esta operação"); cardb.creditarpontos(44); cardb.creditarpontos(34); cardb.creditarpontos(44); if (cardb.getpontos() >= 3 * ptscarro){ cardb.debitarpontos(ptscarro); cardb.debitarpontos(ptscarro); cardb.debitarpontos(ptscarro); //Porquê assim??? else System.out.println("O seu saldo não lhe permite realizar esta operação!\n"); ptsbrindesporatribuir = carda.getpontos() + cardb.getpontos() + cardc.getpontos(); nbrindesdistrib = carda.getnumtrocas() + cardb.getnumtrocas() + cardc.getnumtrocas(); numcompras = carda.getnumcompras() + cardb.getnumcompras() + cardc.getnumcompras();

P. Fazendeiro & P. Prata POO - TP03 / 24 _ System.out.println("É necessário provisão para " + ptsbrindesporatribuir + " pontos."); System.out.println("Já foram distribuídos " + nbrindesdistrib + " brindes."); System.out.println("Os nossos clientes já efectuaram " + numcompras + " compras.\n"); System.out.println(cardA.toString()); System.out.println(cardB.toString()); System.out.println(cardC.toString()); Resultado da execução: O seu saldo não lhe permite realizar esta operação! É necessário provisão para 187 pontos. Já foram distribuídos 3 brindes. Os nossos clientes já efectuaram 7 operações de compra. Cliente: Adalberto U.M. Fulano Saldo do cartão: 78 Número de compras: 2 Número de brindes: 0 Cliente: Sicrano E. Beltrano Saldo do cartão: 109 Número de compras: 5 Número de brindes: 3 Cliente: null Saldo do cartão: 0 Número de compras: 0 Número de brindes: 0 Responda se souber: Como obter o valor médio do número de abastecimentos realizados? Como obter o valor médio do número de brindes escolhidos? Como obter o número de cartões emitidos? Como numerar os cartões emitidos?