webForumDet fria alternativet

intBalance(),void deposit()

6 svar · 270 visningar · startad av farsta_online

farsta_onlineMedlem sedan jan. 2004106 inlägg
#1

I boken objektorineterad programmering och Java hittade jag nedanstående kod:

Specification Bankaccount{
Bankaccount(int iAccntNbr);
int AccntNbr();
int getBalance();
void deposit(int amount);
void withdraw(int amount);
class Bank{
public static void main(String[] args) {
Bankaccount myAccount;

myAccount = newBankaccount(123456)
myAccount.deposit(1500)
myAccount.withdraw(350)
System.out.println("På konto " + myAccount.getAccntNbr();
System.out.println("finns " + myAccount.getBalance() + " kr);
}
}

har följande funderingar:

  1. hur vet programmet att med kodsnutten

     inte getBalance();
    

    så skall saldot tas reda på?

  2. hur vet programmet att med kodsnutten

    int getAccntNbr();
    

    skall ta reda på kononummret

  3. hur vet programmet att med kodsnutten

    void deposit(int amount);
    

    jag sätter in amount kr på kontot?

finns det ngra hjälpklasser för ovanstående som Per Holm "glömde" att gå i genom?

Tack för ordet!

/Peter

jmeMedlem sedan maj 20011 967 inlägg
#2

getBalance()
getAccntNbr()
void deposit(int amount)

är metoder som finns i klassen Bank.

Antingen:

- så har författaren glömt lägga till metoderna
- så kan man hämta kompletta exemplen från nätet/diskett/cd
- så har författaren lämnat det åt läsaren ;)

farsta_onlineMedlem sedan jan. 2004106 inlägg
#3

Tack för svaret!

Men glöm inte att jag är komplett nybörjare:

jme skrev:

är metoder som finns i klassen Bank.

Antingen:

- så har författaren glömt lägga till metoderna
- så kan man hämta kompletta exemplen från nätet/diskett/cd
- så har författaren lämnat det åt läsaren

  1. hur skall jag veta att dessa är metoder som finns i klassen Bank?
  2. hittar inget på bokens hemsida - vad kan jag göra?
jmeMedlem sedan maj 20011 967 inlägg
#4

hmm, jag ser nu att i koden som du klistrat in finns några saker värda att nämnas:

int AccntNbr();
int getBalance();
void deposit(int amount);
void withdraw(int amount);

Dessa är inte färdiga metoder eftersom de saknar en metod-kropp, dvs klamrar ( { och } ). I vanliga Java-klasser så måste metoden ha dessa klammrar. Visst, metoden kan vara "tom" men klammrarna måste finnas där.

ex:

public void metod()
{ // måste finnas

} // måste finnas

Det finns några undantag, interface samt abstrakta klasser.

I Java så använder man medlemsoperatorn '.' för att anropa en metod i en viss klass, eller komma åt en medlemsvariabel i en klass.

Exempel:


Class Bank
{
    public int balance;
    
    public void deposit(int balance)
    {

    }

}

Bank bank = new Bank();

För att få värdet på balance:

int tal = bank.balance;

Jag använder medlemsoperatorn för att komma åt medlemsvariabeln balance. Egentligen så bör man ha alla medlems-objekt privata och sedan ha publika setXXX() och getXXX() metoder för att komma åt dessa objekt.

För att anropa metoden deposit():

bank.deposit(33);

Första ordet innan punkt syftar alltid på klassen. Andra ordet efter punkten syftar på klassens medlemsvariabel eller metod.

farsta_onlineMedlem sedan jan. 2004106 inlägg
#5

jme, tack för att du tog tid på dig för att förklara, MEN det löser inte mitt problem:
Varför skriver man i en lärobok från Studentlitteratur på det sättet som Per Holm gjorde i boken? Kan det vara så att så här i början (s35 av 360 sidor) skulle vara för svårt och krångligt? Eller för att han hittills bara gått igenom "klasser och operationer". Metoder kommer i nästa kapitel? Men borde inte detta kommenteras i så fall?

Nu står det bara:

I nästa eempel specifieras en klass som beskriver ett bankkonto med möjligheter till insättningar och uttag.

specifikationer

I nedanstående program visas hur man bildar ett bankkonto och därefter sätter in 1500 kr på kontot. Efter insättningen tar man omedelbart ut 350 kr och skriver ut saldot

class{
}

Jag hittade hjälpklasser här ,men eftersom jag använder eclipse har jag inte lärt mig att köra Ececutable Jar files, så jag kan inte kolla om de innehåller ngt av intresse just i detta fall

Tack för ordet
/Peter

PhorpherMedlem sedan feb. 20002 059 inlägg
#6

Det där är pseudokod. Ett sätt att beskriva funktionaliteten för t.ex. en klass. Beskriver vilka metoder som finns och vad som ska hända vid olika anrop.

Det går alltså inte att kompilera utan är en abstraktion av programkod som gör det lättare att förstå. En typ av funktionsbeskrivning helt enkelt.

farsta_onlineMedlem sedan jan. 2004106 inlägg
#7

Tackför svaret!

Phorpher skrev:

Det där är pseudokod. Ett sätt att beskriva funktionaliteten för t.ex. en klass. Beskriver vilka metoder som finns och vad som ska hända vid olika anrop.
Det går alltså inte att kompilera utan är en abstraktion av programkod som gör det lättare att förstå. En typ av funktionsbeskrivning helt enkelt

Borde inte det stått ngt om detta i boken

Genererad på 498 ms · cache AV · v20260730165559-full.f96bc7eb