Permalänk
Medlem

C# objektorientering

Jag har fått i uppgift att konstruera en bank applikation (fake). Jag har kommit så långt att jag konstruerat två klasser, en för ett sparkonto och en för ett privatkonto. Jag har lyckats bygga koden på ett sådant sätt att jag kan överföra pengar mellan konton, hämta saldo genom en "override" ToString genom funktionen:

public override string ToString() { return string.Format("Sparkonto: saldo: {0}", accountBalance); }

För att hämta saldo:

public decimal getBalance { get { return accountBalance; } }

Samt insättning och uttag:

public void deposit(decimal amount) { accountBalance += amount; } public bool withdraw(decimal amount) { if (accountBalance >= amount) { accountBalance -= amount; return true; } Console.WriteLine("Ditt uttag ({1}) överstiger ditt saldo ({0}), uttag misslyckades.", getBalance, amount); return false; }

Jag vet inte alls om jag gjort rätt eller om jag ens kommer lyckas men detta är kravspecfikationen för hur applikationens olika delar ska se ut:

OBS: använder även interface.

Summering:
Jag ska bygga en bankapplikationen som kan överföra och sätta in pengar på ett konto, klart.
Lägga till datum och typ av transaktion i historik för överföringen, ej klart.
Jag ska kunna binda kreditkort till ett specifikt typ av konto (service), ej klart.
Skapa en kundprofil, ej klart.

Visa signatur

Citera om du vill ha svar, hjälpte jag dig, gilla svaret!
Felkod40

Permalänk

Vad är frågan?

Varför har du olika klasser för sparkonto och privatkonto? Borde båda rymmas inom klassen "BankAccount"

Visa signatur

Asus Striker II Extreme / XFX Geforce GTX 280 / Q9450 @ 3.6GHz/ TRUE Noctua 120/ 4x1GB Corsair TWIN3X2048-1333C9DHX / X25-M G2 80gb Velociraptor / Win 7 Ultimate x64/ Antec P190

MovieDatabase

Permalänk
Medlem
Skrivet av KurreKula:

Vad är frågan?

Varför har du olika klasser för sparkonto och privatkonto? Borde båda rymmas inom klassen "BankAccount"

Jag förstår mig på hur man skapar klasser och använder dom, inte utöver det.
Idén är att man ska bygga en "fake" bank som ska kunna binda flera kort till ett och samma konto (om det är servicekonto), framtidskonto med högre ränta, privatkonto med möjlighet till krediter. Sedan ska transaktioner och uttag vara möjliga och de ska även lagras för att kunna hålla historik över.

Om inte detta vore nog ska även varje konto ha information om kunden, alltså allt: förnamn, efternamn, personnummer, postadress, adress, hemtelefon och mobilnummer.

Jag tror klassdiagrammet ser ut något i stil med denna:

När det kommer till kontohistoriken utgår jag från att man skulle kunna lagra uttag i en jagged array string: index, belopp, tidpunkt.
Alltså utskriften: Saldo: 100.57 SEK - 2011-11-25 osv.

Kredit då menar man att man kan övertrassera antar jag, alltså "låna" av banken.

Har bifogat mitt nuvarande projekt i denna .rar filen.
Har garanterat flertal fel

Visa signatur

Citera om du vill ha svar, hjälpte jag dig, gilla svaret!
Felkod40

Permalänk
Medlem
Skrivet av freddyfresh:

Jag förstår mig på hur man skapar klasser och använder dom, inte utöver det.
Idén är att man ska bygga en "fake" bank som ska kunna binda flera kort till ett och samma konto (om det är servicekonto), framtidskonto med högre ränta, privatkonto med möjlighet till krediter. Sedan ska transaktioner och uttag vara möjliga och de ska även lagras för att kunna hålla historik över.

Om inte detta vore nog ska även varje konto ha information om kunden, alltså allt: förnamn, efternamn, personnummer, postadress, adress, hemtelefon och mobilnummer.

Jag tror klassdiagrammet ser ut något i stil med denna:
http://i.imgur.com/JUl6m.png

När det kommer till kontohistoriken utgår jag från att man skulle kunna lagra uttag i en jagged array string: index, belopp, tidpunkt.
Alltså utskriften: Saldo: 100.57 SEK - 2011-11-25 osv.

Kredit då menar man att man kan övertrassera antar jag, alltså "låna" av banken.

Har bifogat mitt nuvarande projekt i denna .rar filen.
Har garanterat flertal fel

Du får nog pli på det om du skapar en metod som skapar upp hela "banken" med testdata. Det är ju svårt att "använda" banken om du inte har något att leka med. Oftast så brukar det lösa sig själv eftersom man kommer på vad som saknas.

Jag har inte orkat titta på din kod men ungefär på detta sätt borde det ju fungera:

Testdata - Ett privatkonto som tillhör en kund. Kontot har ett kort kopplat.

var kund1 = new Kund(); kund1.FirstName = "Olle"; kund1.LastName = "Ekman"; var kort1 = new Kort(); var konto1 = new PrivatKonto(); konto1.Kund = kund1; konto1.KortLista.Add(kort1);

Angående kontohistoriken så borde du verkligen inte ha en "jagged array string: index, belopp, tidpunkt. "
Du borde ha en List<Transaction> som består av alla transaktioner som har gjorts mot detta konto. En transaktion borde ju ändå innehålla det du beskriver.

Dina "deposit" och "withDraw"-metoded så måste du ju skapa transaktioner, annars är den klassen meningslös.
Ex "deposit", lägg till denna rad:
var transaction = new Transaction(this,amount);

Jag vet inte hur du lagrar alla transaktioner. Gör du det globalt i en statisk klass? Gör du det per konto? Oavsett vad så måste transaktionen läggas in i listan.

Jag vet inte om du har läst något om enums än, men på något sätt måste man ju säga vad som har hänt med kontot. I dagsläget kanske du bara tolkar en negativ summa som om det är en WITHDRAW och alla positiva summor är DEPOSIT?

Visa signatur

ηλί, ηλί, λαμά σαβαχθανί!?

Permalänk
Medlem
Skrivet av Leedow:

Då blir ju följden, hur ska/bör jag konstruera Kort klassen :/
Jag har inte så van vid det mesta som har med Listor utom vanliga List<string, int, osv>.
Jag lär mig ganska snabbt däremot så bör inte vara ett så stort problem..

Men har suttit med detta ett par dagar nu så jag börjar tröttna lite :/

Om du kollat i koden utförs transaktionen i bankkonto klassen som:

//insättning public double Deposit(double amount) { if (amount > 0.0) { dBalance += amount; } return dBalance; } //uttag public double Withdraw(double amount) { if (dBalance >= amount) { dBalance -= amount; } return dBalance; }

Visa signatur

Citera om du vill ha svar, hjälpte jag dig, gilla svaret!
Felkod40

Permalänk
Medlem
Skrivet av freddyfresh:

Då blir ju följden, hur ska/bör jag konstruera Kort klassen :/
Jag har inte så van vid det mesta som har med Listor utom vanliga List<string, int, osv>.
Jag lär mig ganska snabbt däremot så bör inte vara ett så stort problem..

Men har suttit med detta ett par dagar nu så jag börjar tröttna lite :/

Om du kollat i koden utförs transaktionen i bankkonto klassen som:

//insättning public double Deposit(double amount) { if (amount > 0.0) { dBalance += amount; } return dBalance; } //uttag public double Withdraw(double amount) { if (dBalance >= amount) { dBalance -= amount; } return dBalance; }

Enligt mig så bör Kort-klassen vara hyfsat tom. Några egenskaper kanske men dessa egenskaper är ju meningslösa om de inte kommer till användning. Enligt ditt klassdiagram så är det ju bara två mindre metoder. Jag ser inte hur det är meningen att Kort-klassen ens kommer att användas. Då borde man ha någon BankTransactionHandler-klass som fungerar typ som en bankomat.
1. Kortet in
2. Validera pinkod
3. Kolla upp vem kortet tillhör och hämta rätt konto
4. Utföra transaktion

Med det sagt så vet jag/vi inte hur du egentligen ska använda alla klasser.

List<int> och List<string> fungerar på exakt samma sätt som List<Transaction> eller List<Kund>.
Defintionen är List<T> där T kan vara vilken klass/typ som helst. Med andra ord, du använder List<Transaction> på samma sätt som du använder List<int>. En till anledning till varför loggen bör vara av en List är för att en array har ett bestämt antal index-positioner. Men självklart kan du använda någon annan "Collection" typ ArrayList eller så. Jag föredrar List<T>.

Jag ser ju att du utför själva transaktionhändelsen men du måste fortfarande spara en logg över transaktionen (med tanke på vad du har skrivit tidigare). Av att döma från ditt klassdiagram så ser det ut som att du borde ha en lista med transaktioner på varje konto. En List<Transaction>-property som du lägger till en transaktion av det som nyss gjordes.

Du verkar inte ha gjort alla klasser än. Det blir väldigt svårt att "se" lösningen om man inte har allt material framför sig om man sitter fast.
Skapa alla egenskaper/properties och gör tomma metoder (om du inte vet hur själva logiken i dessa ska vara än) för allt som ska kunna göras. Sen när du försöker använda klasserna så borde du se vad det är som saknas och hur det ska byggas upp.

Visa signatur

ηλί, ηλί, λαμά σαβαχθανί!?

Permalänk
Medlem

Gammal tråd jag vet men uppgiften fortfarande lika aktuell. Har skapat en klass för Kund och en för Konto men hur skapar jag ett nytt konto för en specifik kund som är valt i en listbox?

Permalänk
Medlem

I mitt huvud något i stil med:

Kund k = new Kund(dina parametrar); k.Konto.Add(new Konto(){ kontonummer="", bank="", etc, ännu mer etc });

class Kund{ List<Konto> Konto; /*dina egenskaper eller variabler här*/ public Kund(){ Konto = new List<Konto>(); } class Konto{ /*dina egenskaper eller variabler här*/ public Konto(/*parametrar här*/){ /*sätt dina variabler till värdet av parametrarna*/ }

I din form1

List<Kund> kunder = new List<Kunder>(); /*antag dummy-värden redan finns*/ //Antages utanför selected index changed eventet är anropat, annars borde en anpassad for-loop finnas här för att jämföra namnet på den du valt mot din lista. kunder[listbox.selectedindex].Konto.Add(/*bla bla bla*/);

Beror ju helt på hur din klass ser ut och hur pass dem bygger på varann såklart.

Visa signatur

Citera om du vill ha svar, hjälpte jag dig, gilla svaret!
Felkod40

Permalänk
Medlem
Skrivet av freddyfresh:

I mitt huvud något i stil med:

Kund k = new Kund(dina parametrar); k.Konto.Add(new Konto(){ kontonummer="", bank="", etc, ännu mer etc });

class Kund{ List<Konto> Konto; /*dina egenskaper eller variabler här*/ public Kund(){ Konto = new List<Konto>(); } class Konto{ /*dina egenskaper eller variabler här*/ public Konto(/*parametrar här*/){ /*sätt dina variabler till värdet av parametrarna*/ }

I din form1

List<Kund> kunder = new List<Kunder>(); /*antag dummy-värden redan finns*/ //Antages utanför selected index changed eventet är anropat, annars borde en anpassad for-loop finnas här för att jämföra namnet på den du valt mot din lista. kunder[listbox.selectedindex].Konto.Add(/*bla bla bla*/);

Beror ju helt på hur din klass ser ut och hur pass dem bygger på varann såklart.

Tack för snabbt svar. Löste det nu.