Design av en klass BankAccount som representerar ett bankkonto

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

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

Objekt och klasser - Introduktion

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

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

Chapter 4: Writing Classes/ Att skriva egna klasser.

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

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

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

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

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

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

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

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

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.

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

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

Enkla variabler kontra referensvariabel

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

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

Föreläsning 5-6 Innehåll

Tentamen i Grundläggande programmering STS, åk 1 fredag

Klasser och objekt. Henrik Johansson. August 20, 2008

TUTORIAL: KLASSER & OBJEKT

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

Malmö högskola 2008/2009 CTS

JAVA Mer om klasser och objektorientering

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

Laboration 1 - Grunderna för OOP i Java

Lösningsförslag övning 2.

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

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

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

Att deklarera och att använda variabler. Föreläsning 10. Synlighetsregler (2) Synlighetsregler (1)

Programmeringsteknik I. Föreläsning 3: Klasser och arrayer

Objekt och referenser

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

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

PROGRAMMERINGSTEKNIK TIN212

2 b) Bodega bodegan = new Bodega(); double moms = 0.235; String namn = "Vargtass"; System.out.println(namn + " " + moms + bodegan.ändra(moms, namn); S

Objektorientering. Objekt och metoder. Objektorientering. Viktiga begrepp. Klass. Objekt. Deklarativ programmering

Projektuppgift - Banken

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

2 b) Följande finns definierat: public class Spel String titel = "Spel"; Dice[] tärningar = new Dice[10]; tärningar[0] = new Dice("Röd"); tärningar[1]

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

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

Vad är ett objekt? Tillstånd och beteende. Vad är ett objekt? Exempel

TDDE10 TDDE11, 725G90. Objektorienterad programmering i Java, Föreläsning 2 Erik Nilsson, Institutionen för Datavetenskap, LiU

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

Föreläsning 3: Abstrakta datastrukturer, kö, stack, lista

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

Tentamen i Grundläggande programmering STS, åk 1 fredag

I STONE. I Variabler, datatyper, typkonvertering. I Logiska och matematiska uttryck. I Metoder-returvärde och parametrar. I Villkorssatser if/else

Dagens föreläsning. Arrayer och klasser. Medan ni väntar: Gå till m.voto.se/prog11 och svara på några gamla tentamensfrågor! (26 januari 2018 F3 1 )

Föreläsning 8 Programmeringsteknik och Matlab 2D1312/2D1305. Klass Object, instans av klass public/private Klassvariabler och klassmetoder

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

Tentamen i Programmeringsteknik I

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

2 b) Följande finns definierat: public class Käk String titel = "Chili con carne"; Krydda[] kryddor = new Krydda[10]; kryddor[0] = new Krydda("Svartpe

Del A (obligatorisk för alla)

TENTAMEN OOP

Idag. statiska metoder och variabler. private/public/protected. final, abstrakta klasser, gränssnitt, delegering. wrapper classes

Mer om klasser och objekt

(Man brukar säga att) Java är... Denna föreläsning. Kompilering av Java. Historik: Java. enkelt. baserat på C/C++ Allmänt om Java

Tentamen i Programmeringsteknik MN

Lab5 för prgmedcl04 Grafik

TENTAMEN OOP

Dagens text. Programmeringsteknik. Mer om Scanner-klassen. Dialogrutor (klassen JOptionPane) Bubbelsortering. Omslagsklasser.

ID1004 Laboration 4, November 2012

Objektsamlingar i Java

Föreläsning 13 Innehåll

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

TDDE10 TDDE11, 725G90/1. Objektorienterad programmering i Java, Föreläsning 2 Erik Nilsson, Institutionen för Datavetenskap, LiU

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

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

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

F8 - Arv. ID1004 Objektorienterad programmering Fredrik Kilander

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

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

OOP Objekt-orienterad programmering

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

Tentamen. DD2385 Programutvecklingsteknik vt 2013 Onsdagen den 22 maj 2013 kl Hjälpmedel: penna, suddgummi, linjal

Objektorienterad Programmering DAT043

Tentamen ID1004 Objektorienterad programmering October 29, 2013

F4 Klasser och Metoder. ID1004 Objektorienterad programmering Fredrik Kilander

Java, klasser, objekt (Skansholm: Kapitel 2)

Objektorienterad programmering D2

Programmering för språkteknologer II, HT2014. Rum

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

Tentamen i Programmeringsteknik I

Presentation av trafiksimuleringsprojektet

Classes och Interfaces, Objects och References, Initialization

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

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

Inkapsling tumregler. Åtkomstmodifikatorer, instantiering, referenser, identitet och ekvivalens, samt klassvariabler. public och private

TENTAMEN: Objektorienterad programmering. Läs detta! Skriv din tentamenskod på varje blad (så att vi inte slarvar bort dem).

Föreläsning 7: Objektorienterad programmering - introduktion

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

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

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

Transkript:

Klasser Kommer ta upp följande begrepp: Design av en klass Implementera en klass Testa en klass med en mainmetod Instansvariabler, lokala variabler, formella parametrar, aktuella parametrar och variablers räckvidd (scope) Synlighet (private, public) Inkapsling Motiv för att ha klasser Javadoc Klasser 1

Design av en klass BankAccount som representerar ett bankkonto Steg 1: Instansvariablerna Ett bankkonto har ett saldo ett kontonummer Vi döper klassens två instansvariabler till balance och accountnumber, som bör vara av typen: double resp. String (alternativt accountnumber är en int) Klasser 2

Steg 2: Konstruktorerna Hur önskar man konstruera/skapa ett BankAccount-objekt? Jo, kanske så här: BankAccount b = new BankAccount("1294-695"); dvs vi anger kontonumret. Saldot i det skapade kontot skall bli noll. Konstruktorn har en String-parameter. Klasser 3

Steg 3: Metoderna Accessors? Få veta saldot. Få veta kontonumret. Vi namnger dem getbalance: returnerar saldot getaccountnumber: returnerar kontonumret Metoderna har inga parametrar. Klasser 4

Steg 4: Metoderna forts... Mutators? Stoppa in pengar Ta ut pengar (Metod för att kunna ändra kontonumret är nog ologiskt) Vi namnger metoderna deposit, har en parameter som är beloppet som stoppas in withdraw, har en parameter som är beloppet som tas ut Metoderna returnerar inget... Nja, är det så säkert det? Tänk om vi försöker ta ut ett för stort belopp? Metoden withdraw bör kanske returnera en? boolean Klasser 5

Den färdiga designen sammanfattad i ett s.k. klassdiagram Klassen BankAccount: Instansvariabler: -balance: double -accountnumber: String Konstruktorer: +BankAccount(accNum:String) Metoder: +deposit(b:double):void Inte så säker metod +withdraw(b:double):void +getbalance(): double +getaccountnumber(): String - Betyder private + betyder public Klasser 6

Från klassdiagrammet skriver vi klassen i en (text)fil BankAccount.java. (http://www.it.uu.se/edu/course/homepage/prog1/ht16/talks/t03/bankaccount.java) Det är i denna fil som hela klassen finns beskriven, dvs är definierad. Vi kikar på hur den färdiga klassen ser ut. Vi ser att den innehåller en tostring-metod, en metod som returnerar en String, med info om objektet. Syftet med den metoden är att man skall kunna skriva ut ett objekts info i textform för att t.ex. kunna skriva ut med System.out.println. Vi testar klassen i DrJava s Interactions. Klasser 7

Vi studerar klassen Test_BankAccount (http://www.it.uu.se/edu/course/homepage/prog1/ht16/talks/t03/test_bankaccount.java) som har en mainmetod som testar klassen BankAccount vi kör denna. Vi tar bort (kommenterar bort) tostring-metoden och kör Test_BankAccount igen och studerar vad som händer. Vi modifierar metoden withdraw i klassen BankAccount så att den blir säkrare så att den kontriollerar att det finns pengar att ta ut. Testar klassen med Test_BankAccount. Tar upp vad som händer när man kör main-metoden sats för sats, vilka delar/satser i klassen BankAccount körs och hur ser det ut minnet i varje steg. Notera att man kan skriva en main-metod i klassen BankAccount Klasser 8

Instansvariabler, lokala variabler, formella parametrar, aktuella parametrar Vi tar upp dessa begrepp med klassen BankAccount och programmet TestBankAccount som exempel. Tar även upp begreppet räckvidd (scope) för variabler. Klasser 9

Synlighet: public resp private public: åtkomst från andra klasser private: åtkomst bara inom klassen (finns även åtkomsttypen protected) Skriver man varken eller blir det s.k. paketsynlighet, dvs det blir public i de klasser som finns i samma mapp i filsystemet, annars private. I den här kursen kommer vi konsekvent att sätta instansvariablerna till private och metoderna (och klasserna) till public. Om instansvariablerna vore public? Då kan man komma åt instansvariablerna med punktnotation, exempelvis: BankAccount b = new BankAccount("ABC-123"); b.balance = 10000; b.accountnumber = "ABC-523"; b.balance = -999999999; Kommer åt instansvariablerna med punktnotation Skyddet för instansvariablerna finns därmed inte, vilket medför att objekt kan hanteras helt fel. Metoderna behövs inte Klasser 10

Javadoc? Vi klickar på Javadoc i DrJava för klassen BankAccount och ser vad som händer? Klasser 11

Vi jämför med klassen Turtle Vi kikar på instansvariablerna som finns överst i Turtle.java Vi kikar på javakoden för några metoder Vi skapar en Turtle och kollar vad tostringmetoden ger för resultat och kikar på metodens javakod Vi kikar på dokumentationsfilen (finns på kurswebbens länksida) Klasser 12

Inkapsling Till ett objekt hör metoder och instansvariabler. All kommunikation med objektet sker via metoder. Endast objektet vet om sina instansvariabler. Via metoderna kan man ändra instansvariablerna och få veta dess värden. Få veta värdet av instansvariabel Ändra instansvariabel Instansvariabler Ändra något i objektet Få veta något om objektet Klasser 13

Inkapsling ett nyckelbegrepp inom objektorienterad programmering Ett objekts exakta beteende och funktion är dold för omvärlden. Varje klass är en abstraktion och visar ett gränssnitt mot omvärlden som specificerar hur andra klasser får interagera med den. Detta garanterar att alla förändringar av ett objekt sker genom programkod som tillhör objektets klass. Ett visst objekt kan inte påverka ett annat objekt på annat sätt än genom detta objekts gränssnitt. Klasser 14

Motiv för BankAccount-klassen Antag att vi ska skriva ett program som hanterar bankkonton som har ett kontonummer och ett saldo Alt 1 - med en String-variabel och en double-variabel String accountnumber = "1272-9"; double balance = 999.00; Alt 2 med en BankAccount-variabel BankAccount b = new BankAccount("1272-9"); b.deposit(999.00); Punktnotationen: Före punkten står objektet. Efter står metodens namn Alt 1: Två variabler för att hantera ett bankkonto. Alt 2: En variabel som refererar till två värden (kontot). Alt 2: Metoderna i klassen BankAccount garanterar en robust hantering av ett bankkonto Klasser 15

Om fler bankkonton Alt 1 - med en String-variabel och en double-variabel String accountnumber1 = "1272-9"; double balance1 = 999.00; String accountnumber2 = "1414-6"; double balance1 = 23.00; Alt 2 med en BankAccount-variabel BankAccount b1 = new BankAccount("1272-9"); b.deposit(999.00); BankAccount b2 = new BankAccount("1414-6"); b.deposit(23.00); Nästa föreläsning: Fiffigare med arrayer av BankAccount Klasser 16