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



Relevanta dokument
OOP Objekt-orienterad programmering

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

Hej Då, Karel! Programmering. Vårt första Javaprogram. hh.se/db2004. Java. Grundtyper, variabler och arrayer

OOP Objekt-orienterad programmering

JAVAUTVECKLING LEKTION 3

OOP Objekt-orienterad programmering

Hur ser ett Java-program ut?

Datatyper och kontrollstrukturer. Skansholm: Kapitel 2) De åtta primitiva typerna. Typ Innehåll Defaultvärde Storlek

I Skapa Hej.java och skriv programmet. I Kompilera med javac Hej.java. I Rätta fel och repetera tills du lyckas kompilera ditt program

Objektorienterad Programmering (TDDC77)

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.

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

Föreläsning 1 & 2 INTRODUKTION

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

Programmering för språkteknologer I, VT2012. Rum

Tentamen OOP

För att skriva data till skärmen ( konsolen) används objektet System.out tillsammans med metoden println eller print.

(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

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

OOP Objekt-orienterad programmering

Objektorienterad Programmering (TDDC77)

SMD 134 Objektorienterad programmering

Programmering A. Johan Eliasson

Klassdeklaration. Metoddeklaration. Parameteröverföring

JAVAUTVECKLING LEKTION 7

Föreläsning 2. Täcker material från lektion 1, 2, 3 och 4:

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öreläsning 5&6 LOGISKA VARIABLER; IMPLEMENTERA KLASSER; MER ALGORITMER

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

Föreläsning 3-4 Innehåll

Parameteröverföring. Exempel. Exempel. Metodkropp

Kompilera och exekvera Javakod

Lite om reella tal. Programmering. I java. Om operatorers associativitet och prioritet

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

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

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

F4. programmeringsteknik och Matlab

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

1 Datorn som miniräknare. 1.1 Räkneoperationer. 1.2 Variabler

Föreläsning 3: Typomvandling, villkor och val, samt textsträngar

F2 Datatyper och variabler. ID1004 Objektorienterad programmering Fredrik Kilander

Föreläsning REPETITION & EXTENTA

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

TDDC77 Objektorienterad Programmering

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

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

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

TDIU01 - Programmering i C++, grundkurs

Klasser och objekt. Henrik Johansson. August 20, 2008

Dagens föreläsning. Repetition. Repetition - Programmering i C. Repetition - Vad C består av. Repetition Ett första C-program

System.out.println("Jaså du har "+ antaldollar + " stycken.");

[] Arrayer = Indexerad variabel

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

Tentamen , Grundläggande programmering i Java

Iteration while-satsen

Läsanvisning: Dessa OH bilder samt kap 1-3

Chapter 3: Using Classes and Objects

Uppgift: Algoritm för att beräkna kontrollsiffran i ett personnummer givet de 9 första siffrorna. Torrsimning av algoritm för personnummer

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

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.

Villkor och tester. Utförande satser bygger upp metoderna, man brukar finindela detta i: sekvenser. Ett program består i princip av: selektioner (val)

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

JAVA Mer om klasser och objektorientering

OOP F1:1. Föreläsning 1. Introduktion till kursen OOP Vad är Java? Ett första Java-program Variabler Tilldelning. Marie Olsson

1 Egna klasser. 1.1 En punkt-klass

System.out.println("Jaså du har "+ antalhusdjur+ " husdjur"); if ( antalhusdjur > 5 ) System.out.println("Oj det var många);

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

Språket Python - Del 1 Grundkurs i programmering med Python

Objektorienterad Programmering (TDDC77)

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

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

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

Föreläsning 3. Iteration while-satsen

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

Föreläsning 1 & 2 INTRODUKTION

Vad var C? okontrollerade brutala typomvandlingar tillåts. void * typinformation kvar, vild adressering, arraygränser, odenierade variabelvärden...

Föreläsning 2. Variabler, tilldelning och kodblock{} if-satsen Logiska operatorer Andra operatorer Att programmera

//Använd main som ett "handtag" för att hålla ihop programmet. //Själva programmet finns i övriga klasser.

TDDC77 Objektorienterad Programmering

TENTAMEN OOP

Övningsuppgifter till föreläsning 2 Variabler och uttryck

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

Grundläggande programmering DVG A08 & ISG A04. Allmän information. Å vem är jag då. Karlstads Universitet, Johan Öfverberg 1

Laboration 1. "kompilera"-ikonen "exekvera"-ikonen

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

Variabler och konstanter

Chapter 4: Writing Classes/ Att skriva egna klasser.

Lösningsförslag: Instuderingsfrågor, del A

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

PROGRAMMERING-Java TENTAMINA

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

OBS! All teori i detta och följande dokument kompletteras med genomgångar på lektionerna. Så det är viktigt att närvara och göra egna anteckningar.

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

Objektorienterad programmering i Java

Föreläsning 14. Filhantering

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

Översikt MERA JAVA OCH ECLIPSE. Uttryck och tilldelning. Uttryck och tilldelning. Uttryck och tilldelning. Uttryck och tilldelning

Objektorienterad programmering Föreläsning 4

Programmering i C++ En manual för kursen Datavetenskaplig introduktionskurs 5p

Java, klasser, objekt (Skansholm: Kapitel 2)

Transkript:

// En första version av BankKonto-klassen class BankKonto { private String namn; private long nr; private double saldo; private double ränta; // Klassen TestaBankKonto // Klassens uppgift är att skapa // och hålla reda på några BankKonto-objekt // och testa dess metoder public class TestaBankKonto { public void sättin(double summa) { saldo = saldo + summa; public void taut(double summa) { saldo = saldo - summa; public void saldobesked() { System.out.println(saldo); public void årsränta() { double r; r = saldo * ränta; System.out.println(r); public static void main(string [] args) { BankKonto bk1 = new BankKonto(); BankKonto bk2 = new BankKonto(); bk1.sättin(3000); bk2.sättin(200); System.out.println("Saldo bk1:"); bk1.saldobesked(); System.out.println("Saldo bk2:"); bk2.saldobesked(); bk1.taut(500); System.out.println("Saldo bk1:"); bk1.saldobesked(); System.out.println("Årsränta bk1:"); bk1.årsränta(); 1 2 Programmet producerar följande utskrift i terminalfönstret: Saldo bk1: 3000.0 Saldo bk2: 200.0 Saldo bk1: 2500.0 Årsränta bk1: 50.0 Programstruktur och terminologi Ett Javaprogram består av en eller flera klasser En klass kan beskriva någon typ av objekt som programmet hanterar - t ex klasserna BankKonto, Myra och Circle En klass kan också ha enbart adminstrativa uppgifter (t ex klassen TestaBankKonto). En klass innehåller data (attribut) och metoder 3 4

Några enkla datatyper Variabler Alla attribut (bl a) har en datatyp. En variabel är en storhet som har Hittills har vi sett exempel datatyperna ett namn (t ex ränta och saldo), int dvs heltal som 1 och -15 en datatyp (t ex int och double) och double dvs decimaltal som -3.75 och 1.0 ett värde av angiven datatyp. String dvs textsträngar som "Alles gut" och "Hej hopp OBS: Det är viktigt att hålla reda på datatyper! Attributen i en klass lagras som variabler men variabler förekommer även i andra sammanhang t ex för lagring av mellanresultat i metoder. 5 6 Variabeldeklarationer Referensvariabler Innan en variabel kan användas måste den deklareras Exempel int saldo; double x = 17; // Kan ges värde int numberofpages = 0; Ovanstånde kan vara såväl deklarationer av attribut som lokala variabler i metoder. För att hålla reda på objekt används referensvariabler String namn; Circle c; BankKonto bk1 = new BankKonto(); String hälsning = "Hej!"; 7 8

Namnregler och konventioner Tilldelningar och aritmetik Namn ( identifierare ) skall börja på bokstav och får följas av bokstäver och siffror Vissa namn är reserverade (t ex class, private, int,... ). Java är case-sensitive dvs det är skillnad på stora och små bokstäver Konventioner: Klassnamn börjar med versal Variabler (inklusive attribut) ges värden med den så kallade tilldelningsoperatorn =. int x = 0; int y = 1; x = 4; y = x; x = 3 + y; y = y - 1; // Dekalartion // Deklaration // Tilldelning // Nytt värde till y // Nytt värde till x // Nytt värde till y Variabler, attribut, metoder inleds med gemen. Versal inne i namnet kan användas för att öka läsbarhet. Följ namnkonventionerna! De två sista exemplet innehöll dessutom en beräkning. Observera att tilldelningen går från höger till vänster! 9 10 Generellt: variabel = uttryck; Aritmetiska uttryck variabel och uttryck skall normalt vara av samma typ även om det finns vissa avvikelser tillåts. int i = 4; double y = 0.5; double z; z = i; y = 3; i = 0.5; i = 1.0 // OK // OK // Fel // Fel De vanliga aritmetiska operatorerna: +, -, *, / Vanliga prioriteter. Kan ändras med parenteser. Om båda operanderna är av heltalstyp blir resultatet av heltalstyp annars blir resultatet av flyttalstyp (vanligen double) Vid division av uttryck av heltalstyp stryks eventuell decimaldel av resultatet. Operatorn % används för att erhålla resten vid division. 11 12

int n = 10; int m = 25; int i; int kvot, rest; double h; kvot = m/n; // kvot får värdet 2 rest = m%n; // rest får värdet 5 h = 1/n; // h får värdet 0.0 h = 1./n // h får värdet 0.1 h = 2. + 1/n; // h får värdet 2.0 h = 0.1; i = 10*h; // fel! i = (int) (10*h); // OK. Typomvandling! java.lang.math ÔÜ Klass Math innehåller ett antal matematiska funktioner. sqrt(x) sin(x) sinus cos(x) cosinus exp(x) exponentialfuktionen Ü log(x) abs(x) max(x,y) min(x,y) PI naturliga logaritmen absolutbeloppet (heltal, flyttal) största av x och y (heltal, flyttal) minsta av x och y (heltal, flyttal) konstanten random() slumptal mellan 0 och 1 13 14 För att använda dessa metoder anger man Math framför namnet. double x = 1; double y = 3; double radie = 1.5; double area double dist = Math.PI*radie*radie; = Math.sqrt(x*x + y*y); (Senare kommer vi visa hur man kan göra för att slippa skriva Math framför funktionsnamnet.) Tärning public class Die { private int value; public void roll() { value = (int) (Math.random()*6) + 1; System.out.println("Värdet blev " + value); 15 16

In- och utmatning Program behöver ofta kommunicera med omvärlden. Med omvärlden menas här t ex användaren som sitter vid datorn, filsystemet på datorn, andra program som kör på datorn eller andra datorer, användare och program ute i det världsvida nätverket Detta brukar kallas input/output och förkortas ofta med IO. I den här kursen begränsar vi oss i första hand till kommunikation med användaren vid den egna datorn. Kommunikationen kan ske via knappar, dialogrutor, menyer etc men tills vidare använder vi ett så kallat terminalfönster för detta. Utmatning i terminalfönstret (BlueJ skapar automatiskt ett terminalfönster vid behov) Metoder: System.out.print(String s) System.out.println(String s) System.out.println() Byter rad Enbart radbyte Java gör automatiskt strängar av storheter av annan typ än String. System.out.print("PI är "); System.out.println(Math.PI); alternativt System.out.println("PI är " + Math.PI); 17 18 Scanner-klassen Man måste importera Scanner-klassen med hjälp av raden Vi skall använda den inbyggda klassen Scanner för inmatning. Först måste vi skapa ett Scanner-objekt: Scanner sc = new Scanner(System.in) import java.util.scanner; först i filen ( programdokumentet ). Därefter kan man göra Sen kan vi bl a använda dessa metoder: sc.next() Läser en sträng sc.nextline() sc.nextint() sc.nextdouble() Läser resten av raden Läser ett heltalint Läser ett flyttal Scanner sc = new Scanner(System.in); System.out.print("Vad heter du? "); String name = sc.nextline(); System.out.print("Hur gammal är du? "); int age = sc.nextint(); System.out.println("Välkommen " + name); 19 20

För att köra detta måste vi förpacka det i en klass t ex som en main-metod: import java.util.scanner; public class ScannerDemo { public static void main(string [] args) { Scanner sc = new Scanner(System.in); System.out.print("Vad heter du? "); String name = sc.nextline(); System.out.print("Hur gammal är du? "); int age = sc.nextint(); if ( age>50 ) { System.out.println("Välkommen du gamle " + name); else System.out.println("Hej spoling!"); Så här ser terminalfönstret ut efter två körningar: Vad heter du? Karl August Hur gammal är du? 87 Välkommen du gamle Karl August Vad heter du? Anders Urban Hur gammal är du? 27 Hej spoling! 21 22