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

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

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

JAVA Mer om klasser och objektorientering

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

Lab5 för prgmedcl04 Grafik

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

Laboration 10 - Eclipse

Chapter 4: Writing Classes/ Att skriva egna klasser.

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

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

Övningar Dag 2 En första klass

Laboration 1 - Grunderna för OOP i Java

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

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

Programmering i C++ EDA623 Objektorienterad programutveckling. EDA623 (Föreläsning 5) HT / 33

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

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

2D1311 Programmeringsteknik för Bio1 och Bio2, vt 2003 Fiktivt prov På flervalsfrågorna är endast ett svar rätt om inget annat anges i frågan! Det rik

Java, klasser, objekt (Skansholm: Kapitel 2)

Tentamen. Datalogi I, grundkurs med Java 10p, 2D4112, Lördagen den 30 november 2002 kl , salar E33, E34

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

ID1004 Laboration 4, November 2012

Grundkurs i programmering, 6 hp (725G61) Dugga 2 tillfälle 2

Föreläsning 5-6 Innehåll

Högskolan Dalarna sid 1 av 7 DI-institutionen Hans-Edy Mårtensson Sten Sundin

TUTORIAL: KLASSER & OBJEKT

TENTAMEN OOP

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

Laboration 10 - NetBeans

Variabler som hör till enskilda objekt. Deklareras på översta nivån i klassen och i regel som private.

Laboration 1 Introduktion till Visual Basic 6.0

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

Här beskrivs Eclipse, den programutvecklingsmiljö som utnyttjas i programmeringskurserna. Mera information finns på:

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.

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

Föreläsning 13 Innehåll

Idag. Javas datatyper, arrayer, referenssemantik. Arv, polymorfi, typregler, typkonvertering. Tänker inte säga nåt om det som är likadant som i C.

"Är en"-relation. "Har en"-relation. Arv. Seminarium 2 Relevanta uppgifter. I exemplet Boll från förra föreläsningen gällde

HI1024 Programmering, grundkurs TEN

PROGRAMMERINGSTEKNIK TIN212

Objekt och klasser - Introduktion

PROGRAMMERING-JAVA TENTAMINA

Malmö högskola 2008/2009 CTS

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

Objektorienterad programmering i Java I

Tentamen. Grundläggande programmering i Java A 5p, DTAA

TENTAMEN OOP

F4 Klasser och Metoder. ID1004 Objektorienterad programmering Fredrik Kilander

Fält av referenser. Konstruktorerna används för att skapa Bilar och Trafikljus.

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

Introduktion till Datalogi DD1339. Föreläsning 2 22 sept 2014

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

Föreläsning 3-4 Innehåll. Diskutera. Metod. Programexempel med metod

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

Grundläggande programmering, STS 1, VT Sven Sandberg. Föreläsning 14

Enkla variabler kontra referensvariabel

Föreläsning 3-4 Innehåll

F8 - Arv. ID1004 Objektorienterad programmering Fredrik Kilander

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper

Introduktion till arv

OOP Objekt-orienterad programmering

Subklasser och arv Inledning till grafik (JFrame och JPanel). Något om interface. Objektorienterad programvaruutveckling GU (DIT011) Subklasser

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

Tentamen. Lösningsförslag

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

Programmering i C++ EDA623 Arv. EDA623 (Föreläsning 6) HT / 42

LÖSNINGSFÖRSLAG TENTAMEN

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

Objektsamlingar i Java

Design av en klass BankAccount som representerar ett bankkonto

725G61 - Laboration 5 Grundläggande objektorientering. Johan Falkenjack

Laboration 3, uppgift En klass för en räknare

Klasser och objekt. Henrik Johansson. August 20, 2008

Föreläsning 8 SLUMPTAL, SIMULERING + INTRODUKTION TILL VEKTORER

OOP Objekt-orienterad programmering

Objektorienterad Programkonstruktion. Föreläsning 7 24 nov 2015

Lösningsförslag övning 2.

DD2385 Programutvecklingsteknik Några bilder till föreläsning 1 24/ Kursöversikt Javarepetition/Javaintroduktion

Målen med OOSU. Objektorienterad programmering. Objektorienterad programmering. Karlstads Universitet, Johan Öfverberg 1

Tentamen. 2D4135 vt 2005 Objektorienterad programmering, design och analys med Java Lördagen den 28 maj 2005 kl

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

TDIU01 Programmering i C++

OOP Objekt-orienterad programmering

Instruktion för laboration 1

DI-institutionen Sid 1 av 6 Hans-Edy Mårtensson Sten Sundin

Klasshierarkier - repetition

UML. Klassdiagr. Abstraktion. Relationer. Överskugg. Överlagr. Aktivitetsdiagram Typomv. Typomv. Klassdiagr. Abstraktion. Relationer.

DAT043 - Föreläsning 7

Föreläsning 4 Innehåll. Abstrakta datatypen lista. Implementering av listor. Abstrakt datatypen lista. Abstrakt datatyp

Metoder (funktioner) Murach s: kap Winstrand Development

Arv: Fordonsexempel. Arv. Arv: fordonsexempel (forts) Arv: Ett exempel. En klassdefinition class A extends B {... }

Tentamen DE12, IMIT12, SYST12, ITEK11 (även öppen för övriga)

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

DD1342 Programkonstruktion för F1,

Eclipse en handledning

Konstruktion av klasser med klasser

Användarhandledning Version 1.2

Laboration A Objektsamlingar

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Felsökning. Datatyper. Referenstyper. Metoder / funktioner

5. En metod som anropar sig själv a) får inte förekomma i Java-program b) kallas destruktiv c) kallas iterativ d) kallas rekursiv 6. Vilka värden har

Transkript:

Laboration 4, ISG A04 och DVG A08 HT-09 Laborationen går ut på att skapa en enkel bankbok. Ni skall i bankboken kunna registrera upp till 30 transaktioner som kan bestå av insättning, uttag eller checkuttag. Laborationen är indelad i ett antal steg där det sista steget skall dokumenteras och lämnas in. Var noga med att läsa igenom allt i aktuellt steg innan ni börjar koda. Viktig information, om tex namngivning av metoder, kan komma på slutet. Steg 1. Skapa klassen Transaktion. Klassen skall ha följande privata attribut: int belopp String datum Skriv metoder för att tilldela respektive fråga efter attributens värden (setbelopp, getbelopp, etc.). I klassens konstruktor skall ni initiera attributen till lämpliga värden. 1(5)

Transaktion t=new Transaktion(); System.out.println("Aktuellt belopp är "+t.getbelopp()); System.out.println("Beloppet bokfört "+t.getdatum()); Prova gärna med att ändra så att användaren får ange belopp och datum. Du kan också lägga till och göra flera transaktioner men ovanstående main-metod skall fungera. Steg 2. I detta steg skall ni skapa en enkel bankbok för att kunna testa er Transaktionsklass. Denna bankbok skall i senare steg utökas/förbättras men till en början skall den uppfylla några grundläggande attribut och metoder. En bankbok, i denna laboration, är en klass som håller reda på ett antal transaktioner, max 30 stycken. Först så skall ni i er klass Transaktion lägga till en metod som tar balansen (som den är innan detta anrop) som parameter och sedan returnerar en ny balans efter att den förändrats av aktuellt värde på transaktionen. Ni ska nu fortsätta att arbeta med en ny klass: bankboksklassen. Er bankbok skall ha följande privata attribut: en vektor med 30 platser av typen Transaktion int antal genomförda transaktioner Ni behöver skapa tre metoder förutom konstruktorn i bankboksklassen. Skapa en metod för att registrera en transaktion i bankboken. Transaktionen skickas med som en parameter till metoden. Ni skall alltså lägga till en skapad transaktion till er vektor. Det är transaktionerna i denna vektor som är er bankbok. Skapa en metod för att skriva ut alla gjorda transaktioner. Det handlar alltså om en metod som går igenom er vektor och skriver ut varje transaktion (med datum och belopp). Till slut så behövs även en metod för att räkna ut aktuellt saldo. Denna metod skall använda en lokal variabel vars värde är 0 från början och sedan förändra detta värde genom att iterera igenom vektorn. Förändringen av variabeln skall ske med hjälp av den nya metoden i Transaktion beskriven ovan. Efter att ni itererat igenom vektorn skall värdet i variabeln returneras. 2(5)

Bankbok b=new Bankbok(); Transaktion t=new Transaktion(); t=new Transaktion(); t.setbelopp(40); t.setdatum("20071014"); t=new Transaktion(); t.setbelopp(50); t.setdatum("20071021"); b.skrivuttransaktioner(); System.out.println("Aktuellt saldo på kontot är "+ b.beraknasaldo()); Steg 3. I de tidigare stegen har vi använt oss av objekt av typen Transaktion. I detta steg skall vi ändra så att alla transaktioner blir någon av typerna insättning, uttag eller checkuttag istället. Vitsen med detta är att visa hur arv fungerar. Er uppgift är alltså att skapa klasserna Insattning, Uttag och Checkuttag. Dessa klasser skall alla ärva funktionalitet från klassen Transaktion (lägg till extends Transaktion i klassdefinitionerna). I klassen Transaktion måste ni göra några ändringar. I metoden som ni lade till i förra steget, den som räknar ut ny balans, adderar ni antagligen transaktionens värde till det tidigare värdet. Ändra denna beräkning så att ni drar ifrån den aktuella transaktionens värde från det tidigare värdet. Detta då två av tre transaktionstyperna, uttag och checkuttag, innebär att man minskar saldot. Ni skall också lägga till två metoder i klassen Transaktion. Dessa skall båda vara tomma och skall se ut så här: public void setchecknr(int cnr){ och public String skrivut(){ return ""; Dessa metoder skall sedan omdefinieras i de klasser som ärver Transaktion, alla de klasserna skall omdefiniera skrivut() men endast klassen Checkuttag skall omdefiniera setchecknr(). Klassen Uttag skall alltså ärva klassen Transaktion. Det enda den skall göra är att omdefiniera metoden skrivut från Transaktion. Metoden skall returnera en sträng som innehåller texten uttag samt storleken och datumet för uttaget på en rad. 3(5)

Klassen Checkuttag skall, förutom att omdefiniera metoden skrivut på samma sätt som i Uttag (fast med texten checkuttag i stället för uttag) även innehålla ett privat attribut som håller reda på checknumret. Alla checkar skall ha ett unikt löpnummer med början på 1. Ni skall också omdefiniera metoden setchecknr, denna metod skall tilldela den aktuella checken sitt löpnummer. I metoden skrivut ska även checknumret skrivas ut. I klassen Insattning skall ni som i tidigare klasser omdefiniera metoden skrivut. Texten skall denna gång tala om att det är en insättning det är frågan om. Ni skall också omdefiniera metoden som räknar ut ny balans. I transaktion drar ni ju numer ifrån värdet av transaktionen. I denna metod skall ni alltså addera transaktionens värde. I klassen bankbok måste ni också göra ändringar. Det är ju bankboken som håller reda på alla transaktioner som görs och det är där vi kan hålla reda på aktuellt checklöpnummer. Ni måste alltså lägga till ett privat attribut som håller aktuellt checklöpnummer samt en metod som ökar värdet varje gång vi frågar efter det. Varje gång ni gör ett checkuttag skall ju detta värde ändras. Metoden getchecklopnr() skall alltså användas när ni vill ha ett nytt checknummer. Ni har ju sedan tidigare en metod som skriver ut alla transaktioner, denna skall inte användas längre. Varje gång ni registrerar en ny transaktion skall ni anropa den transaktionens skrivut-metod. Metoden (skrivut i Transaktion) måste dock finnas kvar men skall vara tom. Bankbok b=new Bankbok(); Transaktion t=new Insattning(); t=new Checkuttag(); t.setchecknr(b.getchecklopnr()); t.setbelopp(40); t.setdatum("20071014"); t=new Uttag(); t.setbelopp(50); t.setdatum("20071021"); t=new Insattning(); t.setdatum("20071025"); t=new Checkuttag(); t.setchecknr(b.getchecklopnr()); t.setbelopp(70); t.setdatum("20071111"); System.out.println("Aktuellt saldo på kontot är "+ b.beraknasaldo()); 4(5)

Steg 4. Detta steg borde vara enkelt om allt ovan är rätt. Ni skall nu anpassa ert program till ett grafiskt gränssnitt. Endast mindre anpassningar skall behöva göras, till exempel radbrytning i utskrifter osv. För att detta steg skall fungera måste ni göra två saker. Ändra main till new KontoSystem(); Kopiera filen GUI15.jar till någon lämplig katalog. Sedan skall ni högerklicka på ert projekt (default package) och välja Build path -> Configure Build Path I det nya fönstret väljer ni fliken Libraries och väl där väljer ni knappen Add External JARs Leta redan på filen GUI15.jar och välj den, sedan trycker ni på ok-knappen och fönstret stängs. Ni har nu i er labb en tråd som heter Referenced Libraries och om ni tittar i den så finns filen GUI15.jar. Nu skall det bara vara att köra er labb igen och den skall nu ha ett enkelt grafiskt gränssnitt. Steg 5. Detta sista steg innebär att ni skall dokumentera er lösning. För en mall för hur dokumentationen skall se ut se it's learning. 5(5)