Chapter 4: Writing Classes/ Att skriva egna klasser.



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

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

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.

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

Objekt och klasser - Introduktion

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

Chapter 5: Conditionals and Loops

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

Design av en klass BankAccount som representerar ett bankkonto

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

Programmeringsteknik och Matlab. Dagens program. Viktiga datum. Repetitionsexempel. Repetition av if/else, for, while och Scanner

Föreläsnings 9 - Exceptions, I/O

OOP Objekt-orienterad programmering

Mer om klasser och objekt

Enkla variabler kontra referensvariabel

Del A (obligatorisk för alla)

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

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

PROGRAMMERING-JAVA TENTAMINA

TENTAMEN OOP

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

Tentamen i Programmering

Föreläsning 3-4 Innehåll

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

PROGRAMMERING-Java TENTAMINA

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

Chapter 3: Using Classes and Objects

Objektorienterad programmering. Fält som funktionsresultat. Mer om fält: att uppdatera ett parameterfält. Kontrast: Parametrar av primitiv typ

Föreläsning 1 & 2 INTRODUKTION

TENTAMEN OOP

Obligatorisk uppgift: Banksystem

Malmö högskola 2008/2009 CTS

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

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

F2 Datatyper och variabler. ID1004 Objektorienterad programmering Fredrik Kilander

Del A (obligatorisk för alla)

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

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

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

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

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

Programexempel: tärningsspel. Programexempel: tärningsspel Kasta tärning tills etta. Klassen Die Specifikation. Slumptalsgenerator Klassen Random

Föreläsning 5&6 LOGISKA VARIABLER; IMPLEMENTERA KLASSER; MER ALGORITMER

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

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

Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering

PROGRAMMERING-Java Omtentamina

DUGGA: Objektorienterade applikationer. Läs detta! Uppgifterna är inte avsiktligt ordnade efter svårighetsgrad.

ITK:P1 Föreläsning 1. Programmering. Programmeringsspråket Java. Stark typning Explicit typning Strukturerat Hög säkerhet

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

Objektorienterad Programmering (TDDC77)

Lösningsförslag övning 2.

Programmering med Java. Grunderna. Programspråket Java. Programmering med Java. Källkodsexempel. Java API-exempel In- och utmatning.

OOP Objekt-orienterad programmering

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

Menyvalen som alltid är numeriska presenteras omgivet av parenteser.

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

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

F4 Klasser och Metoder. ID1004 Objektorienterad programmering Fredrik Kilander

Tentamen, EDA501 Programmering M L TM W K V

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

Tentamen OOP

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 )

JAVA Mer om klasser och objektorientering

PROGRAMMERINGSTEKNIK TIN212

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

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.

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

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

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,, KandMa/Fy,

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

Skillnader mellan Python och Java

Datatyper. Programmering. Att definiera datatyper i Java. Laddade partiklar. (x,y) (Rx,Ry) hh.se/db2004

Läs detta! Uppgifterna är inte avsiktligt ordnade efter svårighetsgrad. Skriv ditt idnummer på varje blad (så att vi inte slarvar bort dem).

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

Kompilera och exekvera Javakod

Tentamen, EDAA20/EDA501 Programmering

Tentamen. Lösningsförslag

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

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

TENTAMEN OOP

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

Programstruktur och terminologi. Programmet producerar följande utskrift i terminalfönstret: Ett Javaprogram består av en eller flera klasser

Dagens föreläsning. Sett i datorsalarna. Mer om arrayer. Matriser. Formatering av utskrifter. Inläsning med hjälp av Scanner-klassen

F4. programmeringsteknik och Matlab

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

JAVAUTVECKLING LEKTION 7

Dagens föreläsning. Sett i datorsalarna. Mer om arrayer. Matriser. Formatering av utskrifter. Inläsning med hjälp av Scanner-klassen

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

Enkla variabler kontra referensvariabel

Att skriva till och läsa från terminalfönstret

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

Föreläsning 6. Mer om klasser och objekt. Enkla variabler kontra referensvariabel. Omslagsklassen Integer. Referensvariabler

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

Föreläsning 8: Exempel och problemlösning

TDDC77 Objektorienterad Programmering

OOP Tenta

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

FÖRSLAG TILL LÖSNINGAR FÖR TENTAMEN I INTERNETPROGRAMMERING MED JAVA, 5p för SY , kl

Transkript:

Chapter 4: Writing Classes/ Att skriva egna klasser. I dessa uppgifter kommer du att lära dig om hur man definierar egna objekt genom att skriva klasser. Detta är grunden för att förstå objekt orienterad programmering. Det är något mer abstract än tidigare programmering som ni har gjort så det är mycket viktigt att du läser i boken eller online innan du börjar med uppgifterna. Klasser beskriver typer av objekt. När vi skapar objekt av en klass, säger vi att vi instansierar ett objekt av en klass. Skapa objekt, görs på samma sätt som du skapar objekt från java bibliotek klasser. Datatyp (klassen) + variabelnamn + new + konstruerare, se nedan. Random generator = new Random() ; Account konto1 = new Account(??); Observera tekniken som används, den är alltid desamma. Del 1: Övningar Om du aldrig har programmerat är det obligatoriskt att du läser kapitlen 4 och 6 i boken samt skriver 1-2 programexempel från boken eller i online litteratur. Du måste ha förstått någorlunda klasser / objekt innan du börjar med uppgifterna. Del 2: Labb Uppgift 1 : 1. Klassen Account, se nedan, innehåller en definition för en klass som representerar ett bankkonto. Spara den i din mapp och undersök den väl. Vilka metoder finns där och vad de gör. Modifiera sedan klassen på följande sätt:

a) Fyll i koden för metoden tostring(), vilket bör returnera en sträng som innehåller namn, kontonummer och balans för kontot, alltså objektets innehåll. b) Fyll i koden för metoden chargefee(), vilket bör dra av en serviceavgift från kontot (alltså modifierar balance med fee) c) Ändra chargefee() så att istället för att den returnerar void skall den returnera balance. d) Fyll i koden för metoden changename(string newname) som tar en sträng som parameter och ändrar namnet till den nya. //******************************************************* // Account.java // // A bank account class with methods to deposit to, withdraw from, // change the name on, charge a fee to, and print a summary of the account. //******************************************************* public class Account private double balance; private String name; private long acctnum; //Constructor -- initializes balance, owner, and account number public Account(double initbal, String owner, long number) balance = initbal; name = owner; acctnum = number; // Checks to see if balance is sufficient for withdrawal. // If so, decrements balance by amount; if not, prints message. public void withdraw(double amount) if (balance >= amount) balance -= amount; else System.out.println("Insufficient funds");

// Adds deposit amount to balance. public void deposit(double amount) balance += amount; // Returns balance. public double getbalance() return balance; // Returns a string containing the name, account number, and balance. public String tostring() // Deducts $10 service fee public void chargefee() // Changes the name on the account public void changename(string ) 2. Klassen ManageAccounts (se nedan) innehåller ett skalprogram som använder Account klassen ovan. Spara den i samma mapp, och slutför det enligt kommentarerna. public class ManageAccounts public static void main(string[] args) Account acct1, acct2; //create account1 for Sally with $1000 acct1 = new Account(1000, "Sally", 1111);

//create account2 for Joe with $500 //deposit $100 to Joe's account //print Joe's new balance (use getbalance()) //withdraw $50 from Sally's account //print Sally's new balance (use getbalance()) //charge fees to both accounts //change the name on Joe's account to Joseph //print summary for both accounts 3. Ändra klassen Account så att metoderna inte tillåter insättning av negativt belopp eller uttag av större belopp än saldot. Metoderna skall returnera lämpligt meddelande om dessa problem uppstår. Testa metoderna i programmet ManageAccounts.java. 4. Om man vill ha uppsikt över hur många objekt som skapas utifrån en klass (i våra fall hur många konton) skall man lägga i klassen en variabel, till exempel, (static int nr ). Variabeln uppdateras ( increment ) i konstruktor. Lägg i klassen Account metoden nedan. Skriv färdig metoden. public static int getnrofaccounts() //metoden skall returnera variabeln nr. Testa metoden genom att lägga till 2 extra Account- objekt i programmet ManageAccounts.java. samt anropa nu metoden getnrofaccounts(). Stämmer det? Uppgift 2: Program består oftast av flera klasser. Ni ska implementera ett enkelt spel som vi kallar 24Spelet där reglerna är mycket enkla. Alla spelare kastar 4 tärningar på en gång. Spelaren som får mest poäng vinner. Programmet behöver inget grafiskt gränssnitt. Programmet består av två klasser, se nedan. a)klassen Spelare där instansvariablerna, konstrueraren och metoden getnamn() är klara. Din första uppgift är att implementera metoderna spela(), getpoäng() och nollställ() enligt beskrivningen som du finner framför metoden.

public class Spelare private String namn; // instansvariabler private int poäng; /*konstrueraren */ public Spelare( String nm) namn=nm; poäng= 0; /* returnerar namn */ public String getnamn( ) return namn; /* metoden ska simulera tärningskastet genom att slumpa 4 st värden mellan 1 och 6. Summan av alla dessa värden skall tilldelas till klassen variabel poäng*/ public void spela( ) // skriv din kod här /* metoden skall returnera antalet poäng */ public int getpoäng() // skriv din kod här /* metoden sätter variabel poäng till noll */ public void nollställ () // skriv din kod här b) Din andra uppgift är att skriva själva spelet alltså klassen SpelProgram. Där skall du använda klassen Spelare och skapa två Spelare-objekt. Låt de spela tre omgångar och utse vinnaren genom att skriva ut ett meddelande som innehåller texten Vinnaren är och vinnarens namn förstås. Vinnare är den spelare som har vunnit två av de tre omgångar spel. Glöm inte att nollställa Spelare-objekten inför varje omgång och spara antalet vinster för varje spelare. public class SpelProgram public static void main (String [] arg) // skriv din kod här OBS! Spelarens namn skall läsas in från tangentbordet. Slumpa tal med hjälp av ett Random-objekt. Konstrueraren från klassen Random och metoden nextint() som ska användas för att slumpa tal är definierade som nedan:

Uppgift 3: Bank Dispenser Nu skall vi göra ett enkelt bank program. Det mesta är färdig implementerad. 1. Lägg i klassen Account en ny metod public long getacctnum () // body. Metoden skall returnera acctnum. 2. I programmet nedan finns ett enkelt bank program. Banken har bara ett Account- objekt och en meny för att göra bank operationer. Spara klassen nedan (i samma mapp med klassen Account), kompilera och kör programmet nedan. Försök förstå hur programmet fungerar. Case 1 and 3 är implementerad. Du skall skriva färdig case 2. import java.util.scanner; public class BankDispenser static Scanner scan = new Scanner(System.in); static Account account1=new Account( 1000, "Svensson Dan", 750123); public static void main(string[] args) printmenu(); int choice = scan.nextint(); while (choice!= 0) dispatch(choice); printmenu(); choice = scan.nextint(); public static void dispatch(int choice) switch(choice) case 0: System.out.println("Bye!"); System.exit(0); break; case 1:

System.out.println("Insert your account number"); int nr = scan.nextint(); // the program checks if the account number i corect. If yes the //programme ask for the deposit amount and execute it if( account1.getacctnum()==nr) System.out.println("Insert the amount to deposit"); int amount=scan.nextint(); account1.deposit(amount); else System.out.println( " Wrong account number"); break; case 2: // your code for withdraw break; case 3: System.out.println("Insert your account number"); int nr = scan.nextint(); if( account1.getacctnum()==nr) System.out.println( account1.tostring()); break; default: System.out.println("Sorry, invalid choice"); //---------------------------- // Print the user's choices //---------------------------- public static void printmenu() System.out.println("\n Welcome to MY BANK "); System.out.println(" ===="); System.out.println("0: Quit"); System.out.println("1: Deposit" ); System.out.println("2: Withdraw"); System.out.println("3: Show account information"); System.out.print("\nEnter your choice: ");

2. Som du ser, finns det bara ett konto objekt i programmet. Nu skall du skapa ett konto till i din BankDispenser, t.ex. static Account account2=new Account( 2000, "Anderson Amilia", 881203); Ändra i programmet så att du kan göra konto operationer på account2 också. Hur skulle programmet ändras om du skulle ha 100 konto? Det behövs ett annat sätt att strukturera programmet. Tänk hur?.