28. september 2003 - 13:24Der er
16 kommentarer og 1 løsning
Brug af abstrakte klasser.
Kære eksperter
Jeg er ved at lave et program der holder styr på et mobilabonnement.
Man kan:
i) Indbetale penge på sin konto ii) Købe samtaler iii) Købe SMS'ere
Mit problem består i, at jeg ikke kan opdatere saldoen i klassen abonnement, som følge af en indbetaling, uden at den smider en nullpointer exception.
Følgende klasse tager mod en indbetaling:
/** * Klassen Indbetaling modellerer en indbetaling * på en konto for et mobilabonnement. * * @version 28. september 2003 */ public class Indbetaling extends Transaktion {
// Bemærk at den har superklassen Transaktion
private int indbetalingsBeløb;
/** * Konstruktør, der opretter en indbetaling * * @param beløb Det beløb, som indbetales. */ public Indbetaling(int beløb) {
indbetalingsBeløb = beløb; }
public String toString() {
return "De har indbetalt " + indbetalingsBeløb + " kroner"; }
/** * Returnerer det beløb, som skal konteres kundens konto * * @return Beløbet, som skal konteres kundens konto */ public int beløb() { return indbetalingsBeløb; } }
Denne klasse bruger den abstrakte klasse Transaktion:
public abstract class Transaktion { /** * beløb er en abstrakt metode, der skal returnere det beløb, * som skal konteres kundens konto når transaktionen bliver udført. * * @return Beløbet, som skal konteres kundens konto. */ public abstract int beløb(); }
Hvis der f.eks. sker en indbetaling på 4, kan man se at beløbet i Transaktion også er 4.
Her er Abonnement:
import java.util.*;
/** * Klassen Abonnement modellerer et mobilabonnement hos Talkmore. * * @author Michael E. Caspersen & Jesper Makholm Byskov * @version 23. september 2003 */ public class Abonnement {
private String telefonnummer; private List transaktioner; private int saldo; private Transaktion tr; public Abonnement (String telefonnummer) { this.telefonnummer = telefonnummer; saldo = 200; transaktioner = new ArrayList(); }
/** * Tilføjer en transaktion til listen over transaktioner * * @param t Transaktionen, der skal tilføjes */ public void tilføjTransaktion(Transaktion t) {
transaktioner.add(t); }
public String toString() { String temp = "Abonnenten er " + telefonnummer + " . Abonentens saldo er " + saldo;
return temp; }
/** * Returnerer saldoen på kontoen * * @return Saldoen på kontoen */ public int saldo() {
return saldo - tr.beløb(); } }
Hvordan får jeg den til at opdatere beløbet i Abonnement - således, at hver gang beløb ændres i Transaktion , at saldo opdateres i Abonnement ?
Jeg får forstår bare stadig ikke hvordan jeg får fat i beløb fra Abonnement klassen. Det ser ud som om, at alt hvad der foregår i Transaktion er utilgængeligt herfra.
(selvom jeg ikke er helt sikker på at jeg har forstået alting)
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.