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



Relevanta dokument
1 Egna klasser. 1.1 En punkt-klass

OOP Objekt-orienterad programmering

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

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

Tentamen , Grundläggande programmering i Java

Tentamen , Introduktion till Java, dtaa98, dtea53

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

Java: Utvecklingsverktyg, datatyper, kontrollstrukturer

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

Föreläsning 3-4 Innehåll

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

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

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

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

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

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

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

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

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

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

Tentamen OOP

DD2310. Javaprogrammering för Pythonprogrammerare. Johan Boye

Föreläsning 14. Filhantering

int iarray[]= new int[3]; // deklarera ett heltalsfält med tre heltal int jarray[]={ 1, 3, 5, 7, 9, 11, 13, 15}; // initierat fält 8 element

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

PROGRAMMERING-Java Omtentamina

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

Command line argumenter. Objektorienterad Programmering (TDDC77) Vad blir resultatet? Nu då? Ahmed Rezine. Hösttermin 2016

Objektorienterad Programmering (TDDC77)

4 13 / %.; 8 </" '': " / //&' " " ' * TelefonKostnad +,-%&. #!" $% " &' . > / ' 5 /' * 13/ &' static Math 1+" &'/ % 12 "" static "' * 1 /") %& &

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

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

JAVAUTVECKLING LEKTION 7

F2 Datatyper och variabler. ID1004 Objektorienterad programmering Fredrik Kilander

Objektorienterad programmering i Java

Föreläsning 2, vecka 8: Repetition

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

JAVA Mer om klasser och objektorientering

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

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 3. Iteration while-satsen

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

OOP Objekt-orienterad programmering

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

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

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

Iteration while-satsen

Lösningsförslag övning 2.

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

Lösningsförslag till tentamen

Föreläsning REPETITION & EXTENTA

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

Kapitel 6. Hakparenteser fšr att ange index MŒnga všrden av samma typ

OOP Objekt-orienterad programmering

Outline. Objektorienterad Programmering (TDDC77) Att instansiera en klass. Objekt. Instansiering. Åtkomst. Abstrakt datatyp.

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

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

Föreläsning 1 & 2 INTRODUKTION

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

Objektorienterad Programmering (TDDC77)

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

Föreläsning 3. Iteration. while-satsen for-satsen do-satsen

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

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

Klasser och objekt. Henrik Johansson. August 20, 2008

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

Outline. I Vi kan lätt göra samma sak för fyra variabler... I Hur gör vi för 400 inlästa värden? I Ofta behöver man flera likadana variabler

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.

Kompilera och exekvera Javakod

Objekt och klasser - Introduktion

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

1 Iteration. 1.1 for-satsen

Chapter 4: Writing Classes/ Att skriva egna klasser.

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

1 Grafiska komponenter, händelsehantering

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

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

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

EDAA20 Föreläsning Klassen ArrayList. Viktiga operationer på ArrayList. Generisk klass

PROGRAMMERING-Java TENTAMINA

Föreläsning 6: Metoder och fält (arrays)

Del A (obligatorisk för alla)

2203$( Föreläsning ii - Mer om Java bla this och konstruktorer. Exempel: lampa

Klasser i Java kan ha metoder och egenskaper. Metoder beskriver funktioner som klassen kan utföra. Egenskaper beskriver innehållet i klassen.

Typkonvertering. Java versus C

Lösningsförslag till tentamen i EDA011/EDA017 Programmeringsteknik för F, E, I, π och N 25 maj 2009

Lösningsförslag till tentamen

DAT043 Objektorienterad Programmering

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

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

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

Föreläsning 4. Klasser och objekt

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

Skillnader mellan Python och Java

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

Objektorienterad Programmering (TDDC77)

Outline. Objektorienterad Programmering (TDDC77) En frukt har ett namn. Man kan lägga en frukt i en korg... Hashing. Undantag. Ahmed Rezine.

Objektorienterad Programmering (TDDC77)

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.

Transkript:

1 Vad vi vet Vi har tidigare sett exemplet med inmatning från tangentbordet. Exemplet innehåller flera aspekter av klasser och objekt. import java.util.*; class KeyboardReading { public static void main(string [] arg) { Scanner tgb = new Scanner(System.in); System.out.println("Hur många endollarmynt har du?"); int antaldollar; antaldollar = tgb.nextint(); System.out.println("Jaså du har "+ antaldollar + " stycken."); Först och främst definierar vi en egen klass, rad 3, döpt KeyboardReading som innehåller en statisk metod main(... ). Main definierar som bekant startpunkten i våra applikationer och har därför en särställning. Vi utnyttjar klassen Scanner på rad 7. Rad 7 kan skrivas om som Scanner tgb; tgb = new Scanner(System.in); Omskrivningen visar hur skapandet av tgb kräver två steg. 1, deklarationen av identifieraren. Deklarationen gör att vi får ett namn tgb för att hålla reda på instanser av typen Scanner. Med enbart deklarationen är emellertid tgb inget objekt. Satsen tgb = new Scanner(... ) krävs alltså för att skapa Scannerobjektet. Då objektet är skapat kan vi använda instansens metoder, bla antaldollar = tgb.nextint(); Konstruktion av objekt: new Scanner(System.in) Anrop av metod: tgb.nextint() Vi utnyttjar en statisk medlem i klassen System på rad 8. Rad 8 kan skrivas om som PrintWriter skrivare = System.out; skrivare.println("hur många endollarmynt har du?"); Här innebär steg 1 att vi skapar en identifierare, ett alias, till den statiska medlemmen System.out. tilldelningen till skrivare är snarlik den tidigare rad 7. Skillnaden är att den statiska medlemmen System.out redan är konstruerad; det hände då javatolken startade. Steg 2 är ett metodanrop på samma sätt som tgb.nextint().

1.1 Centrala delar i en klass Klasser består av medlemmar. En medlem kan vara en konstruerare, ett attribut eller en metod. En medlem kan dessutom vara statisk eller ickestatisk. Den statiska medlemmen hör till klassen och kan därför sägas delas mellan alla objekt av klassen. Normalfallet är en ickestatisk medlem som är unik för varje objekt. Mer om det senare. Det vi sett tidigare är god exempel på hur en klass instansieras för att skapa ett objekt, och hur vi sedan kan använda metoder för att låta objekten utföra operationer. - Konstruktion: new Scanner() - metodanrop tgb.nextint() - statiska medlemmar, klassmedlemmar, System.out Formen på de olika operationerna är: Konstruktion: o = new Klassnamn(); o måste vara deklarerad med rätt typ. o kallas för objekt, eller en instans av Klassnamn. Ex Scanner tgb = new Scanner(); Metodanrop: objekt.metod( argument ) Ex tgb.nextint() Tänk på att metoden ofta utvärderas till ett värde, jfr 3 + 6 utvärderas till en int ex int i = 3 + 6; nextint() utvärderas också till en int, så det är naturligt att skriva int antaldollar = tgb.nextint(); Statiska medlemmar Klassnamn.medlem Ex. System.out medlemmen är out. Några korta ord om public static void main Då javatolken startar vårt program finns ingen instans av vår klass, javatolken gör alltså ett anrop som liknar KeyboardReader.main( argument ); Det vore onödigt att först skapa en instans av KeyboardReader och därefter anropa en metod. Därför måste main deklareras static! 1.2 Javadokumentationen Javadokumentationen är uppdelad i klasser, där varje klass har fått en egen sida. Det finns utöver klassidorna en uppdelning i paket. Där paketen länkar vidare till en samanställning av klasserna inom varje paket. Här visas startsidan:

Vi ser uppdelningen i paket och en lista med alla klasser i alla paket! Det är en lång lista. Om man känner klassnamnet gör man klokt i att söka efter klassen genom att markera/aktivera fönstret "All Classes", därefter söka efter klassen (Ctrl-f i Internet Explorer och Firefox). Om vi gör det för Scannerklassen. Man bockar med fördel för rutan "Matcha endast hela ord". Ett klick på Scannerlänken och vi ser dokumentationen för Scannerklassen

Alla klasser är dokumenterade enligt samma mönster: - Klassnamn och relaterade klasser - Översikt - Exempelkod (inte alltid) - Detaljinformation och tips (inte alltid) - Sammanfattning attribut - Sammanfattning Konstruerare - Sammanfattning Metoder - Detaljinformation om medlemmar Det vi ser i bilden är Klassnamn och relaterade klasser tillsammans med översikt och början på exempelavsnittet. Scannerklassen har inga attribut, så om vi tittar på sammanfattningsavsnittet ser vi:

Den konstruerare vi har använt är nummer tre Scanner(InputStream source) eftersom System.in är av typen InputStream. Om vandrar ner i metodavsnittet finner vi bland annat nextint() som vi använt tidigare.

Den nextint() metod vi använt är metod nummer tre i listan. I nummer fyra kan man dessutom ange en bas för heltalet, exempelvis basen 16 om man vill läsa in hexadecimala tal. Det skulle då se ut som // läs in ett hexadecimalt tal int hexvärde = tgb.nextint( 16 ); Om man då matar in exempelvis FF via tangentbordet får då heltalet värdet 255 (eller FF om man tänker i basen 16 :-). Länken för nextint() ger detaljerad information om metoden. 1.2.1 Andra viktiga klasser -String -Math Exempel: Räkna hur många tecken en användare matat in i ex text: import java.util.*; public class StringLength { public static void main(string[] args) { Scanner keyb = new Scanner(System.in); System.out.println("Ange ditt förnamn:"); String input = keyb.next(); // String innehåller metoden length():int int inputlength = input.length(); System.out.println("Ditt namn innehåller "+inputlength+" tecken"); En stor del i att lösa ett givet problem består i att finna rätt klass för uppgiften och därefter leta igenom dokumentationen för att finna rätt metod/metoder för att lösa uppgiften. Exempel: Räkna ut hur långt man kastar en boll Formel x = 2*v*v*cos(a)*sin(a)/g Där x är längden på kastet, v är utgångshastigheten på kastet, a är vinkeln man kastar, g är jordgravitationen 9.81 m/s².

import java.util.*; public class ThrowLength { public static void main(string[] args) { final double g = 9.81; // g går inte att ändra med final Scanner keyb = new Scanner(System.in); // inmatningar System.out.println("Hur fort kastar du? (m/s)"); double speed = keyb.nextdouble(); System.out.println("I vilken vinkel kastar du? (0-90 grader)"); double angle = keyb.nextdouble(); angle *= Math.PI/180.0; // grader till radianer för sin och cos // resultat double length = 2*speed*speed*Math.cos(angle)*Math.sin(angle)/g; System.out.println("Du kastar då "+length+" meter."); Leta rätt på metoderna i javadokumentationen som används i de båda exemplen. Den stora skillnaden mellan klasserna String och Math är att Stringklassen beskriver något konkret, nämligen en text. Math klassen är bara en behållare för metoder och attribut, såsom PI, som hör till matematik. Alla Mathklassen metoder är därför deklarerade statiska, vi kommer aldrig skapa ett Mathobjekt. Syntaxen för alla Mathmedlemmar är därför Math.medlem, ex Math.sin(3.1416). Syntaxen för alla Stringmedlemmar är däremot String objekt = "Hej"; objekt.medlem