Övningsuppgift. Bankkonton. Steg 2. Författare: Mats Loock Kurs: Inledande programmering med C# Kurskod:1DV402



Relevanta dokument
Övningsuppgift. Repeterbara citat. Steg 2. Författare: Mats Loock Kurs: Inledande programmering med C# Kurskod:1DV402

Statistik över heltal

Övningsuppgift. En array baklänges. Steg 1. Författare: Mats Loock Kurs: Inledande programmering med C# Kurskod:1DV402

Gissa det hemliga talet

Inledande programmering med C# (1DV402) Summera med while"-satsen

Inledande programmering med C# (1DV402) Tärningarna ska kastas

Räkna med C# Inledande programmering med C# (1DV402)

Laborationsanvisning. Digital väckarklocka. Steg 2, laborationsuppgift 2. Författare: Mats Loock Kurs: Inledande programmering med C# Kurskod:1DV402

Inledande programmering med C# (1DV402) 85%43=42. OBS! Heltal 1 (14)

Design av en klass BankAccount som representerar ett bankkonto

Metoder. Inledande programmering med C# (1DV402)

Inledande programmering med C# (1DV402) Introduktion till programmering

Inledande programmering med C# (1DV402) 85/2=42. OBS! Heltal 1 (13)

Inledande programmering med C# (1DV402) Introduktion till C#

Bankkonto - övning. Övning 2 Skriv en metod, geträntan, som returnerar räntan.

Receptsamling med fil

Inledande programmering med C# (1DV402) Ditt första C#-program med Visual Studio

Att öva på och förstå ett program med flera samverkande klasser.

Laborationsanvisning. Geometriska figurer. Steg 2, laborationsuppgift 3. Författare: Mats Loock Kurs: Inledande programmering med C# Kurskod:1DV402

Chapter 4: Writing Classes/ Att skriva egna klasser.

"if"-satsen. Inledande programmering med C# (1DV402)

Klasser och objekt i C#

Frekvenstabell över tärningskast med C#

Malmö högskola 2008/2009 CTS

Inledande programmering med C# (1DV402) Introduktion till. eller så här är det tänkt att fungera.

TDDC74 Programmering: Abstraktion och modellering Datortenta

Det finns en referensbok (Java) hos vakten som du får gå fram och läsa men inte ta tillbaka till bänken.

Uppgiften är att beskriva en kvadrat i ett Java program. En första version av programmet skulle kunna se ut så här:

Dagens program. Programmeringsteknik och Matlab. Objektorienterad programmering. Vad är vitsen med att ha både metoder och data i objekten?

TDDC74 FÖRELÄSNING 9 ANDERS MÄRAK LEFFLER IDA/HCS

Föreläsning 5 (6) Metoder. Metoder Deklarera. Metoder. Parametrar Returvärden Överlagring Konstruktorer Statiska metoder tostring() metoden javadoc

Kort repetition. Programmeringsteknik för Bio1 och I1. Vad ska vi lära oss idag? Ett exempel

Mer om klasser och objekt

1 Uppgift 1. a) Skapar ett Company-objekt med hjälp av den överlagrade konstruktorn. Du kan själv välja värden på instansvariablerna.

TUTORIAL: KLASSER & OBJEKT

KARLSTADS UNIVERSITET 12/8/09 informatik & datavetenskap Johan Öfverberg, Kerstin Andersson Laboration 4, ISG A04 och DVG A08 HT-09

Objekt och klasser - Introduktion. Objekt. SparKonto.java 2. SparKonto.java 1. Konton.java. Ett objekt har: Ett bankkonto

Enkla variabler kontra referensvariabel

Malmö högskola 2007/2008 Teknik och samhälle

Inledande programmering med C# (1DV402) 27+15=42 1 (22)

Objektorienterad programmering D2

Introduktion till arv

Malmö högskola 2007/2008 Teknik och samhälle

Föreläsning 4. Klass. Klassdeklaration. Klasser Och Objekt

Objekt och klasser - Introduktion

PROGRAMMERINGSTEKNIK TIN212

Grundläggande programmering med C# 7,5 högskolepoäng

Det finns en referensbok (Java) hos vakten som du får gå fram och läsa men inte ta tillbaka till bänken.

LÖSNINGSFÖRSLAG Programmeringsteknik För Ing. - Java, 5p

Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp

Övningar Dag 2 En första klass

Föreläsning 8 - del 2: Objektorienterad programmering - avancerat

Creative Commons. en guide för lärare. En guide för lärare

Gissa det hemliga talet

Övning 3. Datateknik A, Java I, 5 poäng

Trådar. Aktiva objekt

Kort om klasser och objekt En introduktion till GUI-programmering i Java

TDDC74 Programmering: Abstraktion och modellering Dugga 3, kl 14 16, 25 mars 2015

Att bekanta dig med NetBeans programmeringsmiljö och skriva några enkla program med programmeringsspråket Java.

Creative Commons en guide för lärare

Diagnostiskt Prov. Antaganden Om förutsättningar saknas I en uppgift skall rimliga antaganden göras och nedtecknas.

Det är principer och idéer som är viktiga. Skriv så att du övertygar rättaren om att du har förstått dessa även om detaljer kan vara felaktiga.

Obs! Inget ur Javas standardbibliotek får användas i ett svar (om det inte står att man får det).

HI1024 Programmering, grundkurs TEN

Objekt och klasser - Introduktion. Objekt. Spar_Konto 2. Spar_Konto 1. Konton. Ett objekt har: Ett bankkonto. public void uttag(double belopp)

TDDC76 - Programmering och Datastrukturer

Objektinteraktion. Objektorienterad programmering Laboration 2. Syfte Att konstruera ett litet objektorienterat program med flera samverkande objekt.

Föreläsning 5-6 Innehåll. Exempel på program med objekt. Exempel: kvadratobjekt. Objekt. Skapa och använda objekt Skriva egna klasser

Föreläsning 5-6 Innehåll

Laboration 1 - Grunderna för OOP i Java

Objektorienterad programmering i Java I

Lite om felhantering och Exceptions Mer om variabler och parametrar Fält (eng array) och klassen ArrayList.

Administrativt. Programmeringsteknik för I1. Dagens program. Objektorienterad programmering

Arv och polymorfism i Java

Tentamen i Programmeringsteknik I, ES,

Tentamen ID1004 Objektorienterad programmering October 29, 2013

Objektinteraktion. Objektorienterad programmering Laboration 2. Syfte Att konstruera ett litet objektorienterat program med flera samverkande objekt.

Vem är vem på kursen. Objektorienterad programvaruutveckling GU (DIT011) Kursbok Cay Horstmann: Big Java 3rd edition.

PROGRAMMERING-JAVA TENTAMINA

TENTAMEN I PROGRAMMERING. På tentamen ges graderade betyg:. 3:a 24 poäng, 4:a 36 poäng och 5:a 48 poäng

Arv. Fundamental objekt-orienterad teknik. arv i Java modifieraren protected Lägga till och modifiera metoder med hjälp av arv Klass hierarkier

Objektorienterad programmering i Java I

PROV. 12 Egenskaper (provavsnitt)

EDAA20 Programmering och databaser. Mål komprimerat se kursplanen för detaljer. Checklista. Föreläsning 1-2 Innehåll. Programmering.

TDDD78 Objektorientering: Lagring och livstid

Introduktion. Klasser. TDP004 Objektorienterad Programmering Fö 2 Objektorientering grunder

DIAGNOSTISKT PROV. Tid. Hjälpmedel. Antaganden. Rättning. Övrigt. Diagnostiskt Prov. Klockan Inga

Objektorientering: Lagring och livstid

2I1049 Föreläsning 5. Objektorientering. Objektorientering. Klasserna ordnas i en hierarki som motsvarar deras inbördes ordning

Obligatorisk uppgift: Banksystem

Java, klasser, objekt (Skansholm: Kapitel 2)

Creative Commons en guide för lärare

Tentamen OOP

LÖSNINGSFÖRSLAG TENTAMEN

public och private Obs: private inte skyddar mot access från andra objekt i samma klass.

Labb i Datorsystemteknik och programvaruteknik Programmering av kalkylator i Visual Basic

Objektorienterad programmering

TUTORIAL: SAMLING & KONSOLL

Modularitet och tillstånd. Stora system kräver en uppdelning. En lösning: modularitet. Basera programmets struktur på den fysiska systemets struktur:

Följ dessa steg för att försäkra dig om att ditt konto aktiveras på rätt sätt. Aktivera PayPal i Jetshops gränssnitt

Transkript:

Övningsuppgift Bankkonton Steg 2 Författare: Mats Loock Kurs: Inledande programmering med C# Kurskod:1DV402

Upphovsrätt för detta verk Detta verk är framtaget i anslutning till kursen Inledande programmering med C# vid Linnéuniversitetet. Du får använda detta verk så här: Allt innehåll i verket Bankkonton av Mats Loock, förutom Linnéuniversitetets logotyp, symbol och kopparstick, är licensierad under: Creative Commons Erkännande-IckeKommersiell-DelaLika 2.5 Sverige licens. http://creativecommons.org/licenses/by-nc-sa/2.5/se/ Det betyder att du i icke-kommersiella syften får: kopiera hela eller delar av innehållet sprida hela eller delar av innehållet visa hela eller delar av innehållet offentligt och digitalt konvertera innehållet till annat format du får även göra om innehållet Om du förändrar innehållet så ta inte med Linnéuniversitetets logotyp, symbol och/eller kopparstick i din nya version! Vid all användning måste du ange källan: Linnéuniversitetet Inledande programmering med C# och en länk till https://coursepress.lnu.se/kurs/inledande-programmering-med-csharp och till Creative Common-licensen här ovan. Inledande programmering med C# (1DV402) 2 (8)

Innehåll Uppgift 5 Problem 5 Deposit 5 Withdraw 5 AddInterest 6 DisplayAccount 6 Testa programmet 6 Mål 6 Tips 6 Lösning 7 Inledande programmering med C# (1DV402) 3 (8)

Uppgift Problem Klassen Account representerar ett enkelt bankkonto. Klassen innehåller fält som representerar bankkontots ägare, nummer och saldo. Räntan lagras i en symbolisk konstant, Rate. Konstanten Rate ger du värdet 3,5 % eller snarare 0.035. Figur 1. Klassdiagram över klassen Account. Klassen Account har en konstruktor som tar tre parametrar som används till att initiera fälten då ett nytt objekt instansieras av klassen. De övriga metoder i klassen används för att kunna göra olika saker som att sätta och ta ut pengar. Metoderna måste undersöka datat som skickas in till metoderna så att en transaktion kan utföras korrekt. Till exempel ska metoden Withdraw() hindra ett negativt uttag (som ju då skulle bli en insättning). Metoden AddInterest() finns också och används till att uppdatera saldot med räntan. Dessa publika metoder används för att modifiera saldot (_balance). Egenskapen Balance, som både har en get- och set-metod, är kopplad till fältet _balance men det är bara getmetoden som ska vara publik; set-metoden ska vara privat. Till uppgiften finns ett projekt där klassen Account saknas. Du ska skapa och implementera klassen Account så att Main-metoden i klassen Program fungerar. OBS! Du får inte ändra på någon kod i Main-metoden. Ingen ny kod får läggas till i klassen Program. Läs koden i Main-metoden, titta på klassdiagrammet, titta på skärmdumpen lite längre fram i detta dokument och lista ut vad klassen Account ska innehålla. (Kod ska alltid kommenteras, men i detta fall är det med avsikt som det inte finns några kommentarer i koden. Du ska kunna förstå det du behöver av koden ändå.) Deposit För att sätta in pengar på kontot anropar du metoden Deposit(). Du måste kontrollera att beloppet som ska sättas in verkligen är större än 0. Är beloppet inte större än 0 kastar du ett undantag med meddelandet "The amount can not be less than 0.". Withdraw För att ta ut pengar från bankkontot anropar du metoden Withdraw(). Du måste förvissa dig om att det finns pengar på kontot så att de räcker både till uttaget och till avgiften för uttaget innan uttaget Inledande programmering med C# (1DV402) 5 (8)

genomförs. Saknas pengar kastar du ett undantag med meddelandet "Manage your account wisely so you do not overdraw.". AddInterest Du anropar AddInterest() för att lägga till ränta till bankkontot. Multiplicera saldot med räntan och addera resultatet av multiplikationen (produkten) till saldot. DisplayAccount Då du vill presentera ett bankonto anropar du metoden DisplayAccount(). Bankkontonummer, innehavarens namn samt saldot ska presenteras. Använd tabbtecken ( \t ) för att separera de olika värden åt. För att presentera ett tal som en valuta använder du dig av formatspecificeraren c, t.ex. {0:c}. Testa programmet Har du implementerat klassen Account korrekt ska du få följande resultat av en programkörning: Figur 2. Mål Efter att ha gjort uppgiften ska du: Tips Läs om: Veta hur du skapar objekt och initierar ett objekts fält med hjälp av en konstruktor. Känna till att egenskapers get- och set-metoder kan vara en mix av public och private. Kunna använda en privat symbolisk konstant i en klass. Grunderna om klasser och objekt hittar du i inledningen av kapitel 5, som bl.a. tar upp saker som konstruktorer (constructors), accessmodifierare (access modifiers), fält (fields) och egenskaper (properties. Konstant som fält i kurslitteraturen, kapitel 5, under rubriken Encapsulating the Data. Grunderna i hur du kastar undantag hittar du i inledningen av kapitel 10. Inledande programmering med C# (1DV402) 6 (8)

Lösning Lösningen forsätter på nästa sida! Inledande programmering med C# (1DV402) 7 (8)

Fortsättning på lösningen från föregående sida! Figur 3. Implementationen av klassen Account. Fälten deklareras lämpligen som privata så dess värden inte kan manipuleras. Publika metoder får istället användas för att kontrollera så att t.ex. det inte går att ta ut mer pengar än vad som finns på kontot. Den enda konstruktor initierar objektet med de värden som så önskas. Lägg märke till att konstruktorn använder sig av egenskapen Balance för att initiera det privata fältet _balance. Varför? Därför att det inte ska vara möjligt att skapa ett Account-objekt med ett negativt tillgodohavande. Man vill ju inte börja med att vara skyldig banken pengar. Eller? Kontonumret och namnet ska inte kunna ändras då ett Account-objekt väl blivit skapat, därför har egenskaperna AccountNumber och Name endast en get-metod. Data blir då vad man ibland kallar read-only, d.v.s. det går bara att läsa. Egenskapen Balance har publik get-metod som returnerar tillgodohavandet. set-metoden är däremot privat och används av klassen internt för att ändra värdet det privata fältet _balance har. Metoderna Deposit, Withdraw och AddInterest påverkar alla på något sätt det privata fältet _balance. Diverse kontroller görs för att säkerställa att _balance inte blir negativt. Metoden DisplayAmount presenterar en textbeskrivning av ett Amount-objektets status. Lämpligare hade det varit att överskugga metoden ToString, men detta fungerar tillfredställande i denna uppgift. Inledande programmering med C# (1DV402) 8 (8)