Lektion 2. Datateknik A, Java I, 5 poäng

Storlek: px
Starta visningen från sidan:

Download "Lektion 2. Datateknik A, Java I, 5 poäng"

Transkript

1 Datateknik A, Syfte: Att förstå vad klasser och objekt är. Hur vi skriver egna enkla klasser för att sen skapa objekt av dessa. Prova på att använda metoder för att manipulera data i ett objekt. Lära sig att använda olika metoder för att läsa in data från tangentbordet. Att läsa: Kursboken, Kapitel 2 (sida 51 74)

2 Vi ska i denna lektion fortsätta med vår översikt över Javaspråket. Vi kommer sen att gå in på det mest centrala i språket, nämligen klasser och objekt. Robert Jonsson Sida 1

3 I förra lektionen nämnde vi att det i Java följer med ett antal klassbibliotek (standardbibliotek) eller paket. Paket är en modulariseringsmekanism som används för att gruppera ihop klasser som hör samman med varandra. Samtliga standarbibliotek ligger i olika paket och har namn som java.lang (klasser för de mest grundläggande funktioner i Javaspråket), java.util (stödklasser för stack, hashtabell, datum, tid etc.), java.io (klasser för fil och I/O-hantering), java.net (klasser för nätverkskommunikation och Internetklasser), java.awt (klasser för användargränssnitt). En utvecklare kan också skapa egna klassbibliotek och lägga in dem i paket. Paket lagras i en katalogstruktur baserad på ett pakets namn. När klasser från ett paket ska användas måste klasserna importeras från paketet genom en import-sats. Antingen kan alla klasser i paketet importeras, eller så kan endast de klasser som verkligen ska användas importeras. En import görs med nyckelordet import följt av namnet på paketet (och eventuellt klassen). Speciella synlighetsregler finns som bestämmer vad som ska vara åtkomligt inom och utanför ett paket. Man kan alltså mer eller mindre bestämma vilka som ska kunna använda klasserna i paketet (tolka inte vilka som vilka olika användare). Robert Jonsson Sida 2

4 Som vi nämnde i förra lektionen kan ett Javaprogram delas upp i två olika kategorier: applikationer och pplets. Vi kommer i denna kurs inte att titta speciellt mycket på Applets utan endast nämna vad det är. En Java applet har inte någon main-metod utan har istället en uppsättning metoder som webbläsaren kommer att anropa (metoderna har namn som init, destroy, start och stop som antyder när metoderna anropas). En Java applet har ett utseende som visas på den yta som den tilldelats av webbläsaren. Utseendet på denna yta definieras av appletens paint-metod, som innehåller anrop som grafiskt ritar upp ytans utseende. Programmet i bilden ovan, FirstApplet, importerar klasser från två andra paket, java.applet som innehåller klassen Applet och java.awt som innehåller Javas gränssnittsklasser (bl.a. grafikklasser). Klassen i programmet heter FisrtApplet (och sparas m.a.o. i en fil med namnet FirstApplet.java) och ärver en klass Applet (ett arv uttrycks genom nyckelordet extends följt av namnet på den klass som ärvs). Mer om arv senare. Den enda metod som klassen har är metoden paint, som bestämmer innehållet i appletens yta. Till metoden kommer ett objekt av typen Graphics att skickas och genom att anropa metoder på detta objekt bestäms utseende på den yta appleten äger. Metoden drawstring() tar tre s.k. argument. Det första är den text som ska skrivas ut, de två andra är på vilken x- respektive y-koordinat texten ska skrivas ut på (den yta vi ritar på har koordinaterna (0, 0) i övre vänstra hörnet). Metoden drawline ritar ut en linje mellan en start- och slut koordinat. I det här fallet från (0, 0) till (100,100). Utöver dessa finns det mängder med andra metoder vi kan anropa. T.ex. för att byta färg, rita cirklar m.m. För att ta reda på vilka metoder som går att anropa kan man titta i Javas API. Leta efter klassen Graphics så ser du att det finns mängder med rit-funktioner. I exemplen som följer med lektionen finns filen FirstApplet.java. Prova att kompilera den med javac och därefter köra den med java för att se vad som händer (felmeddelande). Robert Jonsson Sida 3

5 För att starta en applet krävs ett html-dokument där vi anger vilken klass (Applet) som ska köras, vi kan inte direkt köra.class-filen. Det minsta antalet s.k. html-taggar som krävs för att visa en applet är <html> och <applet>. I applet-taggen specificerar vi vilken klass vi vill köra samt vilken bredd och höjd vi tilldelar vår Applet. Det är denna yta som används för att rita upp innehållet. En Applet testas antingen genom en s.k. appletviewer i en utvecklingsmiljö, eller genom att de refereras i en HTML-sida som sedan läses in i en webbläsare. Observera att det är html-sidan som ska köras och inte class-filen. Bland exemplen till lektionen finner du filen FirstApplet.html. Prova att öppna den i en webbläsare. Du kan även prova på att använda appletviewer. Öppna ett kommandofönster och ställ dig i den katalog där html-filen ligger. Skriv sen: appletviewer FirstApplet.html Observera att html-sidan inte behöver ha samma namn som vår Applet. Robert Jonsson Sida 4

6 Appletviewern kan sägas vara en minimal webbläsare för att testa Applets. Den startas med namnet på en HTML-fil och kommer sedan att läsa denna fil och starta ett fönster med den applet som refereras i HTML-filen. Via menyer kan sedan denna Applet stoppas, startas om, parametrar och annan information avläsas. En viktig varning i samband med exekvering av en applet i en appletviewer är att appleten inte exekveras med de säkerhetskontroller som utförs när samma Applet exekverar i en riktig webbläsare. Exempelvis kan en Applet som exekveras i appletviewer läsa och skriva filer på den lokala hårddisken vilket inte en applet som exekveras i en webbläsare får/kan göra. Robert Jonsson Sida 5

7 I stort sett alltid så måste program ha indata av något slag som programmet ska bearbeta. Hittills i våra program har vi endast behandlat utdata med hjälp av System.out.println. När ett program behöver indata av någon form är det vanligtvis användaren som får mata in data från tangentbordet. Det kan t.ex. ske genom att mata in text i olika textfält. De två sätt vi kommer att jobba med i denna kurs är genom att mata in text direkt från kommandofönstret och genom dialogrutor. Oavsett vilket sätt vi använder oss av så är det en komplicerad process. Att exakt förklara hur koden som används fungerar är något som vi inte klarar av med vad vi hittills gått igenom. Detta är ytterligare exempel på kod som ni får acceptera som den är. Det första alternativet är genom att använda ett objekt av klassen BufferedReader som läser de tecken som matas in från tangentbordet. All in- och utmatning (I/O) i Java kan generera fel av något slag, så när vi använder denna metod måste vi antingen fånga felet (catch) eller kasta det vidare (throw). Detta är exempel på s.k. felhantering som vi inte kommer att gå igenom i denna kurs. Med hjälp av identifieraren input kan vi nu läsa in det användaren skriver på tangentbordet till programmet. Detta gör vi genom att anropa metoden readline(). Resultatet sparar vi i en sträng som vi ger namnet svar. Ta en titt på exemplet Input1.java för att testa inmatning med BufferedReader från kommandofönstret. Robert Jonsson Sida 6

8 Det andra alternativet är att använda klassen JOptionPane för att visa grafiska dialogrutor där användaren kan göra sina inmatningar. Med JOptionPane kan vi även skriva ut ett resultat i en dialogruta, istället för att skriva ut det på skärmen med System.out.println. I klassen JOptionPane finns det ett antal fördefinierade dialogrutor vi kan använda i vårt program. En av dessa kommer vi åt genom att anropa metoden showmessagedialog() på klassen JOptionPane. Denna metod kräver två argument (indata). Det första är var på skärmen dialogrutan ska visas. Här anger vi null vilket innebär att rutan kommer att centreras på skärmen. Det andra argumentet anger vilken text som ska visas i dialogrutan. Ex) JOptionPane.showMessageDialog(null, "Snart är det julafton"); Med en annan fördefinierad dialogruta kan vi låta användaren mata in text från tangentbordet som vi sen kan använda i programmet. Denna dialogruta kommer vi åt genom att anropa metoden showinputdialog(), också i klassen JOptionPane. Denna metod tar ett argument, vilket är en sträng med den text som ska visas i dialogrutan (frågan/uppmaningen till användaren). När användaren har skrivit in sin text och tryckt på knappen Ok (eller trycker enter) returneras det inskrivna som vi kan ta emot och lagra i en sträng. Ex)String svar = JOptionPane.showInputDialog("Vilken veckodag är det?"); När vi har ett program med ett grafiskt användargränssnitt är det viktigt att vi avslutar programmet genom att skriva System.exit(0); Argumentet 0 till metoden exit anger att programmet avslutades på ett korrekt sätt. Detta värde returneras till kommandopromten varifrån vi startade applikationen. Om vi vill kan vi ange olika felkoder istället för 0 om något fel har inträffat i programmet. Ta en titt på programmet Input2.java i exemplen för att se hur dialogrutor kan användas för in- och utmatning av data. Robert Jonsson Sida 7

9 Vi kommer nu att titta lite närmare på hur kompileringsprocessen i Java fungerar och hur den virtuella Javamaskinen jobbar. Java har, som du i det här laget redan vet, en mycket enkel struktur på sina filer där endast två filtyper används. En källkodsfil som innehåller en Javaklass måste ha samma namn som klassen följd av suffixet.java. Utifrån denna källkodsfil genereras vid kompileringen en fil med bytekod som har samma namn som klassen följt av suffixet.class. Eftersom klasser läses in dynamiskt under programmets exekvering och ingen länkning sker så behövs inga s.k. objekt-filer som länkas ihop till exekverbara filer. Endast två filer behövs,.java - och.class -filer. Fig. Endast.java -filer med källkod och.class -filer med bytekod behövs i Java. Den virtuella Javamaskinen startas med namnet på en klass och läser sedan in ytterligare klassers bytekod-filer allteftersom behov uppstår. Robert Jonsson Sida 8

10 Den virtuella Javamaskinen är den komponent som läser, tolkar och exekverar bytekod. Normalt är denna komponent skrivet för den aktuella plattformen (operativsystem och hårdvaruarkitektur) och som läser bytekoden, tolkar den, och gör anrop mot det underliggande operativsystemet. Den virtuella maskinen är alltså i högsta grad plattformsspecifik och måste skaffas om den inte redan finns inbyggd i aktuell plattform (i en del webbläsare finns en virtuell Javamaskin inbyggd). Robert Jonsson Sida 9

11 Specifikationen av den virtuella maskinen och formatet på bytekoden är mycket lik en virtuell processor så den virtuella maskinen upprätthåller begrepp som programräknare, stack, cache etc. Den enda skillnaden är att den virtuella maskinen exekveras som ett program. Både specifikationen av formatet på bytekoden och den virtuella maskinen är helt öppen, och det är teoretiskt möjligt att skriva en bytekod-kompilator för ett annat språk än Java, men detta har visat sig svårare än många trott. Den virtuella Javamaskinen laddar dynamiskt in.class -filer allt eftersom de behövs i programmet. För att exekvera en applikation anges namnet på den på en klass, varpå dess.class -fil med bytekod läses in och dess main-metod exekveras av den virtuella maskinen. Allteftersom nya klasser refereras i applikationen kommer de att läsas in dynamiskt (allt eftersom). När en.class -fil (Applet) läses från Interner så kommer koden i filen först att passas till en verifierare. Verifieraren är en speciell modul som går igenom filen och konstaterar att koden är riktig och att inga farliga operationer utförs i koden (som att läsa filer på användarens dator). Det finns i JDK (den utvecklingsmiljö vi använder i kursen) ett program, javap, som är en disassembler av bytekod och som visar bytekoden på ett för människor läsbart format. Detta program kan tillsammans med specifikationen av den virtuella maskinen rent teoretiskt användas för att lära sig bytekod-formatet (varför man nu skulle vilja det?). Observera att man med javap INTE får tillbaka den källkod som finns i java-filen. Prova gärna att använda javap på någon av de class-filer du gjort för att se vad som händer. Robert Jonsson Sida 10

12 En av de vanligaste invändningarna mot Java är att program skrivna i Java har dåliga prestanda. Invändningarna har varit och är fortfarande i vissa fall berättigad. Och det är naturligtvis arrangemanget med en virtuell maskin som i huvudsak skapar dessa prestandakostnader. Den virtuella maskinen kan ju ses som en interpretator som lägger ett extra skal över den slutliga exekveringsmiljön. Språket Java som sådant har inga konstruktioner som gör att det skulle vara långsammare än andra språk. Att uppnå högre prestanda i ett program, oavsett språk eller miljö, kan angripas på flera olika sätt: Hög nivå: genom att förbättra sin design och använda mer effektiva datastrukturer och algoritmer. Ofta kan betydande prestandavinster uppnås genom detta, eftersom dålig grunddesign nästan alltid leder till program som är långsamma. Mellannivå: genom att använda diverse tricks på språknivån som att deklarera variabler som konstanta (static), klasser och metoder som inte får ärvas eller omdefinieras (final), skapa få och stora klasser. Eller genom att använda shiftoperatorerna vid multiplicering och division. Låg nivå: genom att se till att den genererade koden kan optimeras och exekveras snabbare, d.v.s. att den fysiska exekveringen av programmet utförs snabbare på den aktuella plattformen. De nivåer som rekommenderas i första hand är den höga och den låga. Att använda tekniken på mellannivån bryter mot grundläggande principer för god programmering, och ger program som är svåra att underhålla, som inte är lika utbyggbara och förändringsbara. Robert Jonsson Sida 11

13 Vi ska nu titta på hur Java fått bättre prestanda genom att på låg-nivå förändra hur Javaprogram exekveras. En Just-In-Time (JIT) kompilator är en kompilator som översätter bytekod till plattformsspecifik kod som sedan exekveras på aktuell plattform (likt en kompilator av exempelvis C++). Kompileringen görs dock dynamiskt vid exekvering av ett program, där JITkompilatorn kopplas på den virtuella Javamaskinen. Det är alltså bytekoden som kompileras, ej den ursprungliga Javakällkoden. Den virtuella Javamaskinen är inte medveten om JIT-kompilatorn, och dess valiga säkerhetskontroller av bytekoden kommer fortfarande att utföras. JIT har diverse tricks för sig för att snabba upp exekveringen. Bl.a. kommer den att spara genererad kod för metoder så att själva översättningen från bytekod till plattformsspecifikkod endast sker en gång. Den gör enkla former av optimering av den genererade koden. Den kan tyvärr inte göra mer avancerad optimering eftersom den helt enkelt inte har tid översättningen sker ju i samband med att koden ska exekveras (just in time). Mätningar har påvisat stora effekter på exekvering av Javaprogram. Exakta måtten varierar, men alltifrån: 3-4 ggr snabbare när användargränssnittskod exekveras till ggr snabbare för beräkningar, loopar och upprepade metodanrop. Robert Jonsson Sida 12

14 Ingenting förhindrar att Javakod kompileras direkt till plattformsspecifik kod, d.v.s. att källkoden kompileras till en exekverbar fil på aktuell plattform (i Windows en exefil. Olika leverantörer av utvecklingsmiljöer som exempelvis Symantech har också lanserat sådana kompilatorer. En utvecklare kan då välja att antingen få bytekod genererad eller att få en plattformsspecifik exekverbar fil. Med en ren kompilator kan också mer avancerad optimering göras eftersom denna optimering då görs i samband med kompileringen, och det finns då hur mycket tid som helst till detta. Vissa hävdar att sådana kompilatorer ger program med jämbördiga prestanda som exempelvis kompilerad C++ kod. Sun avråder dock kraftigt mot denna lösning eftersom det bryter mot Javas plattformsoberoende. Robert Jonsson Sida 13

15 HotSpot är en ny teknik för att implementera virtuella maskiner som bygger på något som kallas adaptiv optimering. Den virtuella maskinen analyserar varje Javaprogram när den exekverar, och använder denna information till att omedelbart optimera de kritiska s.k. hot spots som ett program har (de områden i programmet där de största datorresurserna förbrukas). Genom att optimera endast dessa kritiska områden frigörs tid att göra mer avancerade optimeringar. Med adaptiv optimering kan bättre optimeringar göras än med en ren kompilator, eftersom mer information finns om programmets exekvering (en ren kompilator studerar endast källkoden före programmets exekvering). Sun påstår att i och med HotSpot kommer Javaprogram inte att ha någon prestandakostnad alls jämfört med plattformsspecifika program. Vilket vi dock ska ta med en nypa salt. Robert Jonsson Sida 14

16 För att kort sammanfatta det hela så: Javaspråkets grundblock är klasser som beskriver egendefinierade typer och objekt (förekomster) av dessa klasser. En klass beskrivs i termer av instansvariabler (datavariabler) och metoder. En klass beskrivs i en.java -fil med samma namn som klassen. Java har också en mängd fördefinierade primitiva typer som int, long, char, boolean, float och double. För dessa datatyper finns olika typer av operatorer som exempelvis aritmetiska, jämförelse, booleska, bit, skift och tilldelningsoperatorer. Exekveringsflödet i ett Javaprogram styrs av kontrollflödeskonstruktioner, som kan vara antingen villkor (if-else, switch), iteration (while, do-while, for) eller avbrott (break, continue och return). Till Javaspråket hör ett stort antal klasser organiserade i bibliotek eller paket med klasser. Detta är klasser som utvidgar själva språket, stödklasser för datastrukturer, filoch I/O-hantering, nätverkskommunikation och Internet, Applets och användargränssnitt. Den virtuella Javamaskinen är ett plattformsspecifikt program som läser kompilerad bytekod och exekverar den på aktuell plattform. För att uppnå maximal prestanda kan olika kompileringstekniker tillämpas. Just-In-Time kompilator som översätter Javabytekoden i flykten till maskinkod på aktuell plattform. Det finns också rena kompilatorer som kompilerar Javakällkod (eller bytekod) till en exekverbar fil för aktuell plattform. Den senaste tekniken är en s.k. HotSpot virtuell maskin som utför adaptiv optimering av koden under exekveringen av programmet. Det optimerar enbart de kritiska ställena i koden, vilket medför att mer avancerad optimering kan utföras. Robert Jonsson Sida 15

17 Vi börjar nu titta på det mest väsentliga i ett objektorienterat språk som Java nämligen klasser. Som nämnts beskriver en klass en objekttyp, d.v.s. hur objekt av klassen ska representeras och vilka metoder de ska stödja. En klass beskriver objektens egenskaper och beteende, d.v.s. vilka instansvariabler och metoder objektet har. Instansvariabler används för att lagra information om objektet och metoderna används för att behandla denna information. När klassen väl är skriven fungerar den som en ritning för de objekt som ska skapas av klassen. Utifrån klassbeskrivningen skapas sen olika objekt. Man brukar säga att man skapar instanser (förekomster) av klassen, objekten instansieras. Robert Jonsson Sida 16

18 En klass börjar alltid med en klassdeklaration, vilken i sin tur börjar med nyckel ordet class följt av namnet på klassen. Vi har redan nu provat på att skapa ett flertal olika klasser och alla har börjat med en klassdeklaration. Därefter ramas klassens innehåll in med en påbörjande vänsterklammer { och en avslutande högerklammer }. Det som ingår i klassen kallas för medlemmar, och en medlem kan antingen vara ett instansvariabel eller en metod. Hittills har våra klasser endast innehållit en enda medlem, metoden main(). En klassdeklaration kan också innehålla en specifikation om klassen ska ärva en annan klass och ha speciella modifierare för att ge klassen andra speciella egenskaper. Robert Jonsson Sida 17

19 Vi ska nu testa på att skriva en första klass enligt specifikationen ovan. Det brukar vara vanligt att med UML visa hur klassens specifikation ser ut (vilka instansvariabler och metoder den innehåller). Enligt beskrivningen ska klassen representera en punkt och namnet på klassen väljs lämpligen till Punkt (alla klasser ska ha STOR första bokstav i varje ord). I ett s.k. klassdiagram (UML) placerar vi namnet på klassen överst. För att kunna lagra information om punktens koordinater behöver vi två variabler. Eftersom dessa tillhör klassen blir det klassens instansvariabler. Vi döper dem till xkord respektive ykord och väljer datatypen int (heltal). Vi ska kunna sätta nya värden på koordinaterna och måste då ha metoder för detta (instansvariablerna används för att lagra information om objektet och metoderna används för att behandla denna information). Vi behöver därför metoderna setx() och sety(). För att kunna skriva ut koordinaterna använder vi metoden print(). Observera att namnen på instansvariablerna och metoderna hade kunnat väljas till något annat. Vi har nu klart för oss hur klassen ska se ut. Återstår nu bara att skriva koden. Robert Jonsson Sida 18

20 I denna klass finns det nu fem medlemmar: medlemsmetoderna setx(), sety() och print(), samt instansvariablerna xkord och ykord. Ordningen på medlemmarna spelar ingen roll, de hade kunnat stå i en annan ordning. Vi hade till exempel kunnat börja med att skriva medlemsmetoden setx() och därefter våra instansvariabler. Det viktiga är att vi skriver dem inom klassdeklarationen. Dock är det vanligt att samla alla instansvariabler överst och därefter metoderna. På de följande sidorna tittar vi närmare på de olika delarna i klassen. Robert Jonsson Sida 19

21 Varje klass börjar som vi redan nämnt med en klassdeklaration. Klassdeklarationen ger klassens dess namn, samt specificerar hur klassen kan användas, t.ex. vilka andra klasser/objket som kommer att få tillgång till klassen och om klassen i fråga ärver egenskaper från någon annan klass. En klassdeklaration består av en eller flera åtkomstmodifierare, därefter nyckelordet class, följt av det namn du vill ge din klass. Sist kan man ange om man vill att klassen ska ärva eller implementera någon annan klass. Både klassmodifierare och eventuella arv behöver inte anges. Om de utesluts kommer Java att använda default-värden. Java kommer då att begränsa tillgången till klassen något samt att låta den ärva från klassen Object (som är en Superklass till alla klasser i Java). Det normala är att använda public som åtkomstmodifierare för klasser. Detta innebär att vilka andra klasser som helst kan skapa ett objekt av klassen. Observera att vi aldrig kan använda åtkomstmodifieraren private i en klassdeklaration. I exemplen har jag skrivit en klass, Privat.java, där jag använd private i klassdeklarationen. Prova att kompilera och köra denna klass för att se vad som händer. Robert Jonsson Sida 20

22 En instansvariabel är en datavariabel som lagras i ett objekt. Samtliga instansvariabler i ett objekt representerar tillsammans objektets information. En person kan t.ex. representeras med instansvariabler för personens namn, ålder och personnummer och en punkt kan representeras med x- och y-koordinat. I objektorienterad programmering försöker man kapsla in ett objekts information och göra det osynligt för andra. Därför används normalt åtkomstmodifieraren private för instansvariabler. Detta innebär att inga andra klasser kan få en direkt åtkomst till det värde som finns lagrat i en instansvariabel. Det är endast den egna klassen som kan komma åt de värden som finns lagrade i instansvariabler. Om andra klasser behöver tillgång till vissa instansvariabler är det bättre att tillhandahålla speciella set- och get-metoder än att deklarera instansvariabler som publikt (därför har vi i klassen Punkt satt private för instansvariablerna för att gömma information om koordinaterna från andra klasser, men har publika set()- metoder för att ändra värdet på instansvariablerna). Instansvariablerna behöver inte deklareras på något speciellt ställe utan kan stå före, mellan eller efter metoderna. Men normalt samlar man alla instansvariabler på ett och samma ställe för att göra koden mer lätt läst (och då vanligtvis överst i koden direkt efter/under klassdeklarationen). Robert Jonsson Sida 21

23 I vårt exempel deklareras två instansvariabler, xkord och ykord. Deklarationerna består av en åtkomstmodifierare (private), en datatyp (int), samt ett namn (xkord). Åtkomstmodifieraren specificerar om objekt av andra klasser ska ha tillgång till denna medlem. I detta fall är instansvariabeln deklarerat som privat och är därför inte tillgänglig för objekt av andra klasser. Datatypen specificerar vilka värden som kan lagras i instansvariabeln och vilka operationer som kan utföras på den. xkord och ykord är av typen int, som endast kan lagra heltal. Instansvariabelnamnet är det namn vi döper typen till. Det är detta namn vi sen använder för att referera eller identifiera vår variabel med, och som vi använder för att utföra operationerna med. Som datatyp kan anges primitiva typer som int, char, double, men också namn på andra klasser som Punkt. Robert Jonsson Sida 22

24 Metoderna i en klass beskriver de tjänster som klassen tillhandahåller. Metoderna är den del i en klass som innehåller den aktiva delen (där något egentligt arbete utförs). Metoder innehåller den kod som verkligen utför någonting. All aktiv kod som exekveras finns i metoder i klassen. Det finns inget sätt att deklarera metoder utanför en klass (som t.ex. i C++). Att utföra den kod som finns i en metod sker via s.k. metodanrop. Metoder är de delar i en klass som innehåller exekverbara satser. En metod är ett namngivet block av kod som utför en viss uppgift. Genom att associera ett namn till metoden kan detta namn användas för att exekvera satserna i metoden via s.k. metodanrop. De klasser vi hittills har skrivit har endast innehållit main()-metoden. Denna kan inte anropas av andra klasser utan anropas av den virtuella maskinen när klassen först startas. Robert Jonsson Sida 23

25 Vår exempelklass (Punkt) har tre metoder: setx() sety() och print(). En metod definieras med en eller flera modifierare. Normalt deklareras alltid en metod som public eftersom vi vill att andra klasser (objekt) ska kunna anropa metoden för att exekvera den kod som finns skriven där. T.ex. vill vi att andra klasser ska kunna anropa setx()och sety() för att kunna ändra punktens koordinater, eller print() för att kunna skriva ut information om punkten. Alla metoder har en returtyp som anger vad som returneras från metoden när alla kod i den har exekverats. Som returtyp kan man ange någon av de primitiva datatyperna (int, char, double etc), men man kan även returnera andra objket från en klass. Anger man nyckelordet void returnerar metoden inget värde. Main()-metoden deklareras alltid som void och den returnerar därför inget. Namnet på metoden kan man själv välja. Samma regler som för namn på instansvariabler och variabler gäller när vi namnger en metod. Tillskillnad från klasser där förstabokstaven i varje ord har STOR bokstav, så har vi liten bokstav på första ordet i metoden. Eventuellt resterande ord i metodnamnet får STOR bokstav. En metod kan eventuellt ha en eller flera parametrar, som anges inom parenteser (i vårt fall har metoden setx en parameter). Parametrar används för att skicka data till den metod som anropas. I vårt fall ovan måste vi skicka in det nya värdet på x- eller y-koordinaten när metoderna setx eller sety anropas. Slutligen kommer kodsatserna för metoden inom matchande klamrar (precis som i fallet med klassdeklarationen). Definitionen av metoden kan läggas vart som helst inom klassdeklarationen, men läggs normalt efter deklarationen av instansvariabler. Vi har nu gått igenom alla deklarationer i klassen (dock inte den kod metoderna innehåller). I exemplen som följer med lektionen finner du klassen Punkt.java. Prova att kompilera och köra den. Som du kommer att se får vi ett felmeddelande när vi kör klassen. Vad är det för felmeddelande och varför får vi ett fel? Robert Jonsson Sida 24

26 Som du märkte när du försökte köra klassen Person så fick du ett felmeddelande. Anledningen är att klassen saknar en main()-metod och är därför ingen körbar Javaapplikation. Kom ihåg att alla applikationer i Java måste innehålla en main()- metod. För att vi ska kunna använda klassen Person måste vi skapa ett objekt av klassen. När klassen är definierad (dess instansvariabler och metoder är skapade) så är det sedan möjligt att skapa objekt av klassen. Som nämnts så är objekt en instans (förekomst) av klassen, och fungerar som en variabel av den typ som klassen definierat. Ett objekt av klassen kan skapas var som helst i en applikation där klassen är åtkomligt (inom klassen eller i andra klassers metoder). När objektet är skapat är det möjligt att referera och använda de metoder och instansvariabler som deklarerats som tillgängliga (publika) i klassen. De metoder och instansvariabler som inte deklarerats som tillgängliga är skyddade och dolda inuti objektet och är inte tillgängliga för andra klasser och objekt. Robert Jonsson Sida 25

27 Ett objekt skapas genom att använda operatorn new. Det är endast med new vi kan skapa objekt i Java. För att skapa ett objekt av klassen Punkt skriver vi: Punkt p1 = new Punkt(); Här sker både en deklaration och en tilldelning på samma gång. Vi deklarerar variabeln p1 till att vara av (den egendefinierade) typen Punkt. I p1 kan vi med andra ord lagra objekt som är skapade av klassen Punkt. Vi tilldelar även variabeln p1 ett nytt objekt av klassen Punkt. Efter operatorn new skrivs namnet på klassen och inom parenteser eventuella argument till klassens konstruktormetod (konstruktorn beskrivs senare). new kommer då att skapa ett objekt av angiven klass genom att reservera utrymme för objektet i minnet och sen initiera det (bl.a. skapa instansvariabler och eventuellt tilldela dessa värden). Från new-operatorn returneras sedan en referens till detta objekt. Referensen i exemplet tas emot och lagras i variabeln p1 (brukar ibland kallas referensvariabel). Se figuren till höger i bilden. Variabeln p1 är deklarerad att vara av typen Punkt, vilket ska läsas som att den är avsedd att hålla en referens till ett Punkt-objekt. Via referensen p1 (namnet på variabeln) kommer man åt de instansvariabler och metoder som det refererade objektet har och som är deklarerad att vara publika. I Java hanteras objekt alltid via objektreferenser, vilket leder till att man kan höra både termen objektet p1 och objektreferensen p1 när man talar om variabeln i fråga. Jag kommer att använda objektet p1 när det pratas om variabler/instansvariabler som är tänkt att lagra ett objekt. Skillnaden mellan instansvariabler/variabler som lagrar data av en primitiv typ och de som lagrar ett objekt är att i variabeln för primitiva typer lagras värdet, medan det för ett objekt lagras en referens (adress till objektet i minnet) till objektet. Observera att detta kan liknas med pekare i C++, men riktigt så är inte fallet. Robert Jonsson Sida 26

28 När objektet skapats är det möjligt att anropa objektets publika metoder. Att anropa en metod på ett objekt görs genom punktnotation där man skriver objektets namn följt av en punkt och därefter metodnamnet och metodens eventuella parametervärden (data som ska skickas till metoden för bearbetning) inom parenteser. Programsatsen avslutas som alltid med ett semikolon (vilket inte klass- och metoddeklarationer gör). Det sätt vi kommer att prova de klasser vi skriver i denna kurs är genom att skapa en, vad jag kallar, testklass. I denna testklass skapar vi ett objekt av den riktiga klassen och provar att anropa metoder m.m. I UML kan vi rita detta enligt bilden ovan. Ta nu och öppna klassen PunkTest.java som finns i exemplen. Där provar vi att skapa objekt av klassen Punkt och anropar dess metoder. Kompilera och kör klassen. Det är även möjligt att i klassen Punkt ha en main()-metod och då inte behöva en testklass. Detta demonstreras i Punkt2.java. Givetvis kan vi från en och samma klass skapa många objekt. Detta visas i PunktTest2.java. Robert Jonsson Sida 27

29 Instansvariabler som deklareras på klassnivå i Java har en räckvidd som sträcker sig genom hela klassen där den är deklarerad. D.v.s. vi kan i klassens alla metoder (oavsett om de är publika eller privata) använda klassens instansvariabler. Jag har hittills enbart deklarerat en instansvariabel, inte tilldelat instansvaribeln något värde i samband med deklarationen. Vad tror du händer om vi i en metod försöker att skriva ut värdet på skärmen, innan vi gett instansvariabeln ett värde? Prova att i PunktTest.java ändra koden så att metoden print() anropas före setx() och sety(). Vad är det som skrivs ut? Robert Jonsson Sida 28

30 I samband med att instansvariablerna deklareras är det också möjligt att tilldela dem värden. T.ex: private inte xkord = 100; Initieringen av instansvariablerna kommer att göras i samma ordning som de står uppräknade i klassen, och det är inte tillåtet att i en initiering använda en instansvariabel som är deklarerat efter den aktuella instansvariabeln. Alla instansvariabler intitieras innan en eventuell konstruktor körs (mer om konstruktorn senare). Om ingen initiering ges kommer primitiva variabler att sättas till värdet 0 och objekt referenser till att sättas till null. Instansvariabler av typen boolean kommer att tilldelas värdet false. Robert Jonsson Sida 29

31 OBS! Deklarationen av z1 hade inte kunnat stå före deklarationen av x och y! Robert Jonsson Sida 30

32 Det finns fyra stycken möjliga åtkomstformer till instansvariabler och metoder: Publik åtkomst (public) Skyddad åtkomst (protected) Privat åtkomst (private) Och paket åtkomst. På varje instansvariabel och metod kan åtkomst specificeras genom att som modifierare använda något av nyckelorden public, protected eller private. Om ingenting anges erhålls den fjärde formen, paketåtkomst. Robert Jonsson Sida 31

33 En medlem (instansvariabel eller metod) som har publik åtkomst är tillgänglig för alla, d.v.s. anropningsbar både inom klassen och för de som skapat objekt av klassen. Normalt är de flesta metoder publika. Även klassen kan deklareras med en åtkomstmodifierare. En klass som deklareras som public är åtkomlig i paket utanför det paket som den är definierad i. Mer om paket och detta i senare lektioner. Robert Jonsson Sida 32

34 Skyddad åtkomst deklareras med modifieraren protected, och innebär att metoden och/eller instansvariablen: Är åtkomlig inom klassen, d.v.s. för andra metoder inom klassen. Är åtkomlig för subklasser, d.v.s. de som ärvt ifrån klassen. Är åtkomlig för andra metoder inom samma paket som klassen. Inte är åtkomlig för dem som skapat objekt av klassen. Robert Jonsson Sida 33

35 Ett instansvariabel eller metod som är deklarerats som privat är garanterat endast tillgänglig inom sin egen klass. De är inte åtkomliga ifrån de som skapat objekt av klassen, inte åtkomliga från subklasser, och inte åtkomliga från andra klasser inom samma paket. Normalt bör instansvariabler vara privata eftersom de data som en klass har inte bör vara synligt utåt, utan bara kommas åt indirekt via klassens metoder. Det kan ibland också finnas privata metoder som är interna hjälpmetoder för andra (publika) metoder. Robert Jonsson Sida 34

36 Om ingen av nyckelorden public, protected, private anges framför en instansvariabel eller en metod får den som default paketåtkomst. Det finns inget nyckelord för att uttryckligen ange paketåtkomst. Med paketåtkomst gäller följande regler för dessa klassmedlemmar: De är åtkomliga inom det paket i vilken klassen ingår. De är inte åtkomliga utanför det paket i vilket klassen ingår. Generellt gäller att man inte bör använda sig av paketåtkomst utan alltid skriva om en medlem ska vara public, protected eller private. Robert Jonsson Sida 35

37 Vi ska nu skapa ytterligare en klass och testklasser. Enligt beskrivningen ovan ska klassen denna gång representera en person och namnet på klassen väljs därför till Person. För att kunna lagra information om personens namn och personnummer behöver vi två instansvariabler. Vi döper dem till namn och persnr och väljer datatypen String (sträng eftersom det är text som ska lagras). Instansvariablerna ska vi sätta till private och i UML-klassdiagram visar vi att åtkomstmodifieraren ska vara private genom att sätta ett minustecken (-) framför namnet. Vi ska kunna sätta nya värden på personens namn och personnummer och vi måste skapa två metoder för detta (instansvariabler används för att lagra information om objektet och metoderna används för att behandla denna information). Vi behöver därför metoderna setnamn() och setpersnr(). För att kunna skriva ut information om personen använder vi återigen en metod med namnet print(). Eftersom vi vill att andra klasser/objekt ska kunna anropa våra metoder måste vi använda public som åtkomstmodifierare. I UML markerar vi detta genom att sätta ut ett plustecken (+) framför namnet. För att se hur koden för denna klass skrivs kan du ta en titt på Person.java i exemplen. Till denna har jag skapat tre testklasser. Den första, PersonTest1, skapar ett objekt på vanligt sätt som vi hittills gjort. I PersonTest2 använder vi Bufferedreader för att fråga användaren efter vilket namn och personnummer objektet ska ha. I PersonTest3 använder vi dialogrutor för att fråga efter objektets data. Robert Jonsson Sida 36

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

Föreläsning 4. Klass. Klassdeklaration. Klasser Och Objekt Föreläsning 4 Klasser Och Objekt Klass Beskrivning av en objekttyp Beskriver egenskaper och beteende (fält och metoder) Klassen fungerar som en ritning Objekt skapas från klassbeskrivningen - instansieras

Läs mer

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

Programmering med Java. Grunderna. Programspråket Java. Programmering med Java. Källkodsexempel. Java API-exempel In- och utmatning. Programmering med Java Programmering med Java Programspråket Java Källkodsexempel Källkod Java API-exempel In- och utmatning Grunderna Ann Pan panda@nada.kth.se Rum 1445, plan 4 på Nada 08-7909690 Game.java

Läs mer

Att prova på en enkel Applet och att lära sig olika sätt att hämta data från tangentbordet. Du får även prova på att skapa din första riktiga klass.

Att prova på en enkel Applet och att lära sig olika sätt att hämta data från tangentbordet. Du får även prova på att skapa din första riktiga klass. Datateknik A, Syfte: Att prova på en enkel Applet och att lära sig olika sätt att hämta data från tangentbordet. Du får även prova på att skapa din första riktiga klass. Att läsa: Lektion 2 Uppgifter:

Läs mer

(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

(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 (Man brukar säga att) Java är... Denna föreläsning Allmänt om Java Javas datatyper, arrayer, referenssemantik Klasser Strängar enkelt baserat på C/C++ objekt-orienterat från början dynamiskt utbyggbart

Läs mer

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

Föreläsning 5 (6) Metoder. Metoder Deklarera. Metoder. Parametrar Returvärden Överlagring Konstruktorer Statiska metoder tostring() metoden javadoc Föreläsning 5 (6) Metoder Metoder Parametrar Returvärden Överlagring Konstruktorer Statiska metoder tostring() metoden javadoc Metoder Deklarera public void setnamn(string n) Åtkomstmodifierare Returtyp

Läs mer

Lektion 3. Datateknik A, Java I, 5 poäng

Lektion 3. Datateknik A, Java I, 5 poäng Datateknik A, Syfte: Att få en djupare förståelse hur metoder i Java konstrueras och används. Veta vad en konstruktor är och hur vi använder dem för att skapa objekt. Kunna generera dokumentation med hjälp

Läs mer

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

Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering Föreläsning 1 Objektorienterad programmering DD1332 Introduktion till Java Kompilering, exekvering, variabler, styrstrukturer Kompilering och exekvering Ett program måste översättas till datorns språk

Läs mer

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. Exempel på program med objekt. Exempel: kvadratobjekt. Objekt. Skapa och använda objekt Skriva egna klasser Föreläsning 5-6 Innehåll Exempel på program med objekt Skapa och använda objekt Skriva egna klasser public class DrawSquare { public static void main(string[] args) { SimpleWindow w = new SimpleWindow(600,

Läs mer

Föreläsning 5-6 Innehåll

Föreläsning 5-6 Innehåll Föreläsning 5-6 Innehåll Skapa och använda objekt Skriva egna klasser Datavetenskap (LTH) Föreläsning 5-6 HT 2017 1 / 32 Exempel på program med objekt public class DrawSquare { public static void main(string[]

Läs mer

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

Kort om klasser och objekt En introduktion till GUI-programmering i Java Kort om klasser och objekt En introduktion till GUI-programmering i Java Klasser En klass är en mall för hur man ska beskriva på något. Antag att vi har en klass, Bil. Den klassen innehåller en lista på

Läs mer

Lektion Java Grunder. Javas historia. Programmeringsspråket Java. Skillnaderna mellan Java och C++ JVM (Javas Virtuella Maskin)

Lektion Java Grunder. Javas historia. Programmeringsspråket Java. Skillnaderna mellan Java och C++ JVM (Javas Virtuella Maskin) Lektion Java Grunder Javas historia Ursprungligen utvecklades Java (1991) för att användas i olika typer av konsumentelektronik (mikrovågsugnar, videoapparater) av programmerare på Sun. Språket kallades

Läs mer

Java: Utvecklingsverktyg, datatyper, kontrollstrukturer

Java: Utvecklingsverktyg, datatyper, kontrollstrukturer Java: Utvecklingsverktyg, datatyper, kontrollstrukturer Sven-Olof Nyström Uppsala Universitet 13 juni 2005 1 Utvecklingsverktyg för Java Vi rekommenderar Suns utvecklingsverktyg (SDK, tidigare JDK), se

Läs mer

TDIU01 - Programmering i C++, grundkurs

TDIU01 - Programmering i C++, grundkurs TDIU01 - Programmering i C++, grundkurs Sammanfattning period 1 Eric Elfving Institutionen för datavetenskap 1 oktober 2013 Översikt Ett C++-programs uppbyggnad Variabler Datatyper Satser Uttryck Funktioner

Läs mer

OOP Objekt-orienterad programmering

OOP Objekt-orienterad programmering OOP Objekt-orienterad programmering OOP F1:1 Delkursansvarig Epost Kursens webbsidor sm@fc.dsv.su.se http://people.dsv.su.se/~sm/oop/ Föreläsning 1 Introduktion till kursen OOP Vad är Java? Ett första

Läs mer

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

LÖSNINGSFÖRSLAG Programmeringsteknik För Ing. - Java, 5p UMEÅ UNIVERSITET Datavetenskap 010530 LÖSNINGSFÖRSLAG Programmeringsteknik För Ing. - Java, 5p Betygsgränser 3 21,5-27 4 27,5-33,5 5 34-43 Uppgift 1. (4p) Hitta de fel som finns i nedanstående klass (det

Läs mer

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

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 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 riktiga provet tar 45 minuter (en lektionstimme) och det

Läs mer

Objektorienterad programmering i Java I. Uppgifter: 2 Beräknad tid: 5-8 timmar (OBS! Endast ett labbtillfälle) Att läsa: kapitel 5 6

Objektorienterad programmering i Java I. Uppgifter: 2 Beräknad tid: 5-8 timmar (OBS! Endast ett labbtillfälle) Att läsa: kapitel 5 6 Laboration 2 Objektorienterad programmering i Java I Uppgifter: 2 Beräknad tid: 5-8 timmar (OBS! Endast ett labbtillfälle) Att läsa: kapitel 5 6 Syfte: Att kunna använda sig av olika villkors- och kontrollflödeskonstruktioner

Läs mer

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

Arv: Fordonsexempel. Arv. Arv: fordonsexempel (forts) Arv: Ett exempel. En klassdefinition class A extends B {... } En klassdefinition class A extends B {... Arv definierar en klass A som ärver av B. Klassen A ärver alla fält och metoder som är definierade för B. A är en subklass till B. B är en superklass till A. class

Läs mer

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

Uppgiften är att beskriva en kvadrat i ett Java program. En första version av programmet skulle kunna se ut så här: Att skapa en klass kvadrat Uppgiften är att beskriva en kvadrat i ett Java program. En första version av programmet skulle kunna se ut så här: public class Kvadrat { private int sida; Det var väl inte

Läs mer

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling metoder Föreläsning 2 Objektorienterad programmering DD1332 Array [modifierare] String metodnamn (String parameter) Returtyp (utdata typ) i detta fall String Indata typ i detta fall String 1 De får man

Läs mer

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

Idag. Javas datatyper, arrayer, referenssemantik. Arv, polymorfi, typregler, typkonvertering. Tänker inte säga nåt om det som är likadant som i C. Idag Javas datatyper, arrayer, referenssemantik Klasser Arv, polymorfi, typregler, typkonvertering Strängar Tänker inte säga nåt om det som är likadant som i C. Objectorienterad programmering Sida 1 Ett

Läs mer

F4. programmeringsteknik och Matlab

F4. programmeringsteknik och Matlab Programmeringsspråk Föreläsning 4 programmeringsteknik och Matlab 2D1312/ 2D1305 Introduktion till Java Kompilering, exekvering, variabler, styrstrukturer 1 Ett program är en eller flera instruktioner

Läs mer

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

Programmering i C++ En manual för kursen Datavetenskaplig introduktionskurs 5p Programmering i C++ En manual för kursen Datavetenskaplig introduktionskurs 5p Skriven av Michael Andersson Introduktion Programmering I högnivåspråk fokuserar på själv problemet (algoritmen) istället

Läs mer

JAVA Mer om klasser och objektorientering

JAVA Mer om klasser och objektorientering JAVA Mer om klasser och objektorientering Begreppet package - paket Package används när man t ex vill skapa ett eget bibliotek med klasser. Sen är det då meningen att man ska importera detta paket i det

Läs mer

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

Föreläsning 8 - del 2: Objektorienterad programmering - avancerat Föreläsning 8 - del 2: Objektorienterad programmering - avancerat Johan Falkenjack johan.falkenjack@liu.se Linköpings universitet Sweden December 4, 2013 1 Innehåll Arv och andra viktiga begrepp Abstrakta

Läs mer

Objektorienterad programmering i Java

Objektorienterad programmering i Java Objektorienterad programmering i Java Föreläsning 4 Täcker i stort sett kapitel 6 i kursboken Java Software Solutions 1 Läsanvisningar Den här föreläsningen är uppbyggd som en fortsättning av exemplet

Läs mer

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

Grundkurs i programmering, 6 hp (725G61) Dugga 2 tillfälle 2 AID-nummer: Datum: 2014-12-18 Kurskod: 725G61 Provkod: LAB1 Grundkurs i programmering, 6 hp (725G61) Dugga 2 tillfälle 2 Skrivningstid: 2014-12-18 klockan 8.00-10.00. Hjälpmedel: Inga. För varje fråga

Läs mer

4.4 Swing ett interaktivt grafiskt gränssnitt

4.4 Swing ett interaktivt grafiskt gränssnitt 4.4 Swing ett interaktivt grafiskt gränssnitt Våra javaprogram har hittills bara haft utdata, inga indata. Det var utdata som skrevs ut från programmet till bildskärmen antingen med metoden showmessagedialog()

Läs mer

Klassdeklaration. Metoddeklaration. Parameteröverföring

Klassdeklaration. Metoddeklaration. Parameteröverföring Syntax: Class Declaration Modifier Class Body Basic Class Member Klassdeklaration class Class Member Field Declaration Constructor Declaration Method Declaration Identifier Class Associations Motsvarar

Läs mer

Lektion 7. Datateknik A, Java I, 5 poäng

Lektion 7. Datateknik A, Java I, 5 poäng Datateknik A, Syfte: Att kunna skapa och använda fält av både primitiva typer och egendefinierade klasser. Kunna skriva en egen enkel algoritm för sortering samt använda befintliga klasser i Javas API

Läs mer

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

EDAA20 Programmering och databaser. Mål komprimerat se kursplanen för detaljer. Checklista. Föreläsning 1-2 Innehåll. Programmering. EDAA20 Programmering och databaser Mål komprimerat se kursplanen för detaljer Läsperiod 1 7.5 hp anna.aelsson@cs.lth.se http://cs.lth.se/edaa20 Mer information finns på kursens webbsida samt på det utdelade

Läs mer

TUTORIAL: KLASSER & OBJEKT

TUTORIAL: KLASSER & OBJEKT TUTORIAL: KLASSER & OBJEKT I denna tutorial lär vi oss att använda klasser och objekt samt hur vi bygger en enkel applikation kring dessa. I tutorialen kommer det finnas en mängd kod som du antingen kan

Läs mer

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

ITK:P1 Föreläsning 1. Programmering. Programmeringsspråket Java. Stark typning Explicit typning Strukturerat Hög säkerhet ITK:P1 Föreläsning 1 Att programmera i språket Java DSV Peter Mozelius Programmering Olika typer av programmering som t ex: o Imperativ programmering (C, Pascal m fl) o Funktionell programmering (Lisp,

Läs mer

Föreläsning 13 Innehåll

Föreläsning 13 Innehåll Föreläsning 13 Innehåll Arv Repetition Om tentamen Datavetenskap (LTH) Föreläsning 13 HT 2017 1 / 32 Diskutera Här är början på klassen MemoryWindow som använts på en lab. Vad kan menas med extends SimpleWindow?

Läs mer

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

Idag. statiska metoder och variabler. private/public/protected. final, abstrakta klasser, gränssnitt, delegering. wrapper classes Idag statiska metoder och variabler private/public/protected final, abstrakta klasser, gränssnitt, delegering wrapper classes ett lite större exempel Objectorienterad programmering Sida 1 Vad vi vet om

Läs mer

SMD 134 Objektorienterad programmering

SMD 134 Objektorienterad programmering SMD 134 Objektorienterad programmering Dagens agenda: Typer i Java: primitiva datatyperna, referenstyper Variabler och variabeltilldelningar med primitiva typer Konstanter av de olika typerna. Heltalsräkning

Läs mer

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

public och private Obs: private inte skyddar mot access från andra objekt i samma klass. public och private En metod som är public får anropas från alla metoder i alla klasser. Ett attribut som är public får avläsas och ändras från alla metoder i alla andra klasser. En metod som är private

Läs mer

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

Vem är vem på kursen. Objektorienterad programvaruutveckling GU (DIT011) Kursbok Cay Horstmann: Big Java 3rd edition. Institutionen för Datavetenskap Göteborgs universitet HT2009 DIT011 Vem är vem på kursen Objektorienterad programvaruutveckling GU (DIT011) Kursansvarig : Katarina Blom, tel 772 10 60 Rum: 6126 (E-huset)

Läs mer

LÖSNINGSFÖRSLAG TENTAMEN

LÖSNINGSFÖRSLAG TENTAMEN LÖSNINGSFÖRSLAG TENTAMEN OBJEKTORIENTERAD PROGRAMMERING I JAVA 5P FRISTÅENDE KURS, DAG (ITM - ÖSTERSUND) MÅNDAG 2 JUNI, 2003, KL. 8-13 TID: 5 TIMMAR ANTAL UPPGIFTER: 8 MAX POÄNG: 43 BETYGSKALA: UNDERKÄND

Läs mer

NetBeans 7. Avsikt. Projektfönster

NetBeans 7. Avsikt. Projektfönster NetBeans 7 Avsikt Att bekanta dig med NetBeans programmeringsmiljö, dvs att med hjälp av NetBeans 1. skapa ett nytt projekt 2. skriva in källkod (sparas som.java-fil) 3. kompilera (översätta) koden till

Läs mer

Objektorienterad Programmering (TDDC77)

Objektorienterad Programmering (TDDC77) Objektorienterad Programmering (TDDC77) Föreläsning II: utmatning, variabler, typer Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2016 Kompilera och köra programmet under terminal 2: I Skapa Hej.java

Läs mer

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

2I1049 Föreläsning 5. Objektorientering. Objektorientering. Klasserna ordnas i en hierarki som motsvarar deras inbördes ordning 2I1049 Föreläsning 5 Objektorienterad programmering i Java KTH-MI Peter Mozelius Objektorientering Världar uppbyggda av objekt Inte helt olikt vår egen värld Ett sätt att modularisera våra system Objekten

Läs mer

Klassen javax.swing.timer

Klassen javax.swing.timer Klassen javax.swing.timer I Swing finns en klass Timer som man kan använda för att upprepa en vis kodsekvens med jämna tidsmellanrum. Ett objekt av klassen Timer exekveras som en egen tråd. Ett objekt

Läs mer

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

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 Kompilera och köra programmet Objektorienterad Programmering (TDDC77) Föreläsning II: utmatning, variabler, typer Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2016 under terminal 2: I Skapa Hej.java

Läs mer

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

Tentamen. Datalogi I, grundkurs med Java 10p, 2D4112, Lördagen den 30 november 2002 kl , salar E33, E34 Tentamen Datalogi I, grundkurs med Java 10p, 2D4112, 2002-2003 Lördagen den 30 november 2002 kl 9.00 14.00, salar E33, E34 Inga hjälpmedel 30 poäng ger säkert godkänt, 40 poäng ger betyg 4 50 poäng ger

Läs mer

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

Högskolan Dalarna sid 1 av 7 DI-institutionen Hans-Edy Mårtensson Sten Sundin Högskolan Dalarna sid 1 av 7 DI-institutionen Hans-Edy Mårtensson Sten Sundin TENTAMEN I IKB007 INTERNETPROGRAMMERING MED JAVA, 5p för SY2 2001-03-16, kl 14.00-18.00 Hjälpmedel: Inga hjälpmedel är tillåtna

Läs mer

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

OOP F1:1. Föreläsning 1. Introduktion till kursen OOP Vad är Java? Ett första Java-program Variabler Tilldelning. Marie Olsson OOP F1:1 Föreläsning 1 Introduktion till kursen OOP Vad är Java? Ett första Java-program Variabler Tilldelning OOP Objekt-orienterad programmering Delkursansvarig: First Class-konferens: Kursens webbsidor:

Läs mer

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

Dagens program. Programmeringsteknik och Matlab. Objektorienterad programmering. Vad är vitsen med att ha både metoder och data i objekten? Programmeringsteknik och Matlab Övning 4 Dagens program Övningsgrupp 2 (Sal Q22/E32) Johannes Hjorth hjorth@nada.kth.se Rum 4538 på plan 5 i D-huset 08-790 69 02 Kurshemsida: http://www.nada.kth.se/kurser/kth/2d1312

Läs mer

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

Att skriva till och läsa från terminalfönstret Att skriva till och läsa från terminalfönstret Oftast används grafiska komponenter i Java för att kommunicera med användaren (användargränssnitt), men det finns objekt i standardbiblioteken för de tillfällen

Läs mer

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

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Felsökning. Datatyper. Referenstyper. Metoder / funktioner 732G11 Linköpings universitet 2011-01-21 1 2 3 4 5 6 Skapa program Kompilera: Källkod Kompilator bytekod Köra: Bytekod Virtuell maskin Ett riktigt program Hej.java class Hej { public static void main (

Läs mer

Classes och Interfaces, Objects och References, Initialization

Classes och Interfaces, Objects och References, Initialization Classes och Interfaces, Objects och References, Initialization Objekt-orienterad programmering och design (DIT953) Niklas Broberg/Johannes Åman Pohjola, 2018 Abstract class En abstract class är en class

Läs mer

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

Inkapsling tumregler. Åtkomstmodifikatorer, instantiering, referenser, identitet och ekvivalens, samt klassvariabler. public och private Inkapsling tumregler Åtkomstmodifikatorer, instantiering, referenser, identitet och ekvivalens, samt klassvariabler Tobias Wrigstad (baserat på material från Tom Smedsaas) 5 november 2010 1. Man skall

Läs mer

Idag. Exempel, version 2. Exempel, version 3. Ett lite större exempel

Idag. Exempel, version 2. Exempel, version 3. Ett lite större exempel Idag Ett exempel Undantag Substitutierbarhet, subtyper, subklasser När val av metod beror av typerna hos två objekt Lite om överlagring Exempel, version 2 Notera: för samtliga figurer gäller: arean av

Läs mer

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

UML. Klassdiagr. Abstraktion. Relationer. Överskugg. Överlagr. Aktivitetsdiagram Typomv. Typomv. Klassdiagr. Abstraktion. Relationer. Översikt Klasshierarkier UML klassdiagram Relation mellan klasser mellan klasser och objekt Association ning ing andling Programmering tillämpningar och datastrukturer 2 UML UML Unified Modeling Language

Läs mer

Objektorienterad programmering i Java

Objektorienterad programmering i Java bild 1 Objektorienterad programmering i Java Föreläsning 2 Till och med kapitel 4 (och 5) i kursboken Java Software Solutions bild 2 Läsanvisningar Den här föreläsningen är i huvudsak uppbyggd kring ett

Läs mer

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

FÖRSLAG TILL LÖSNINGAR FÖR TENTAMEN I INTERNETPROGRAMMERING MED JAVA, 5p för SY , kl Högskolan Dalarna sid 1 av 6 DI-institutionen Hans-Edy Mårtensson Sten Sundin FÖRSLAG TILL LÖSNINGAR FÖR TENTAMEN I INTERNETPROGRAMMERING MED JAVA, 5p för SY2 2001-03-16, kl 14.00-18.00 1. Grunderna i

Läs mer

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.

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. EDAA20 Programmering och databaser Mål komprimerat se kursplanen för detaljer Läsperiod 1 7.5 hp anna.axelsson@cs.lth.se http://cs.lth.se/edaa20 Mer information finns på kursens webbsida samt på det utdelade

Läs mer

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

Introduktion till Datalogi DD1339. Föreläsning 2 22 sept 2014 Introduktion till Datalogi DD1339 Föreläsning 2 22 sept 2014 Namn Fält1 Fält2 Fält3 Metod1 Metod2 Metod3 Metod4 public class { public class { Åtkomst, public betyder fullt tillgänglig utifrån public

Läs mer

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

DI-institutionen Sid 1 av 6 Hans-Edy Mårtensson Sten Sundin DI-institutionen Sid 1 av 6 Hans-Edy Mårtensson Sten Sundin TENTAMEN I IKB007 INTERNETPROGRAMMERING MED JAVA för SY2 1999-03-17, kl 14.00-18.00 Hjälpmedel: En lärobok i Java programmering Återlämningstillfälle:

Läs mer

Lab5 för prgmedcl04 Grafik

Lab5 för prgmedcl04 Grafik Lab5 för prgmedcl04 Grafik Viktigt läs detta först:den här labblydelsen är ganska lång, detta betyder inte att labben tar lång tid.en hel del av lydelsen är anvisning om hur man går tillväga för att kunna

Läs mer

Programmering A. Johan Eliasson johane@cs.umu.se

Programmering A. Johan Eliasson johane@cs.umu.se Programmering A Johan Eliasson johane@cs.umu.se 1 Jag Undervisar mest grundläggande programmering på Institutionen för datavetensakap Applikationsutveckling för iphone Applikationsutveckling i Java Datastrukturer

Läs mer

Tentamen ID1004 Objektorienterad programmering May 29, 2012

Tentamen ID1004 Objektorienterad programmering May 29, 2012 Omtentamen för ID1004 Objektorienterad programmering HT11, 29 maj 2012, 09-13 Denna tentamen examinerar 3 högskolepoäng av kursen. Inga hjälpmedel är tillåtna. Tentamen består av 12 frågor. Varje fråga

Läs mer

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

Föreläsning 3-4 Innehåll. Diskutera. Metod. Programexempel med metod Föreläsning 3-4 Innehåll Diskutera Vad gör programmet programmet? Föreslå vilka satser vi kan bryta ut till en egen metod. Skriva egna metoder Logiska uttryck Algoritm för att beräkna min och max Vektorer

Läs mer

Objektorienterad programmering i Java

Objektorienterad programmering i Java bild 1 Objektorienterad programmering i Java Föreläsning 1 Kapitel 1-3 i kursboken Java Software Solutions bild 2 Läsanvisningar Kapitel 1 är en repetition av det ni förväntas kunna sedan tidigare. Det

Läs mer

Java, klasser, objekt (Skansholm: Kapitel 2)

Java, klasser, objekt (Skansholm: Kapitel 2) Java, klasser, objekt (Skansholm: Kapitel 2) Uppsala Universitet 11 mars 2005 Objectorienterad programmering Sida 1 Vad är en klass? En klass är ett sätt att beskriva en mängd objekt och deras gemensamma

Läs mer

Eclipse. Avsikt. Nu ska ett fönster liknande figuren till höger synas.

Eclipse. Avsikt. Nu ska ett fönster liknande figuren till höger synas. Eclipse Avsikt Att bekanta dig med Eclipse programmeringsmiljö, dvs att med hjälp av Eclipse 1. skapa ett nytt projekt 2. skriva in källkod (sparas som.java-fil) 3. kompilera (översätta) koden till byte-kod

Läs mer

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

Lite om felhantering och Exceptions Mer om variabler och parametrar Fält (eng array) och klassen ArrayList. Institutionen för Datavetenskap Göteborgs universitet HT2009 DIT011 Objektorienterad programvaruutveckling GU (DIT011) Föreläsning 3 Innehåll Lite om felhantering och Exceptions Mer om variabler och parametrar

Läs mer

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

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 Datalogi I, grundkurs med Java 10p, 2D4112, 2002-2003 Exempel på tentafrågor i Java Först följer frågor av flervalstyp. Frågorna är inte ordnade efter svårighetsgrad. 1. Skillnaden mellan typerna int och

Läs mer

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

Programmering för språkteknologer II, HT2011. Rum Programmering för språkteknologer II, HT2011 evelina.andersson@lingfil.uu.se Rum 9-2035 http://stp.ling.uu.se/~evelina/uv/uv11/pst2/ Kursplan Mål Efter avslutad kurs skall studenten för att förtjäna betyget

Läs mer

Föreläsning 3-4 Innehåll

Föreläsning 3-4 Innehåll Föreläsning 3-4 Innehåll Skriva egna metoder Logiska uttryck Algoritm för att beräkna min och max Vektorer Datavetenskap (LTH) Föreläsning 3-4 HT 2017 1 / 36 Diskutera Vad gör programmet programmet? Föreslå

Läs mer

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

Klasser i Java kan ha metoder och egenskaper. Metoder beskriver funktioner som klassen kan utföra. Egenskaper beskriver innehållet i klassen. TT Kapitel 3. Husdjur & Fisk Javaklasser Translation by Leif Lourié Java program består av klasser som beskriver saker (objekt) som finns på riktigt. Även om det finns många olika sätt att skriva program

Läs mer

Kopiering av objekt i Java

Kopiering av objekt i Java 1 (6) Kopiering av objekt i Java Först När du läser detta papper bör du samtidigt studera dokumentationen för klasserna Object, Cloneable (java.lang) och ArrayList (java.util). Mycket blir klarare genom

Läs mer

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

Datatyper och kontrollstrukturer. Skansholm: Kapitel 2) De åtta primitiva typerna. Typ Innehåll Defaultvärde Storlek De åtta primitiva typerna Java, datatyper, kontrollstrukturer Skansholm: Kapitel 2) Uppsala Universitet 11 mars 2005 Typ Innehåll Defaultvärde Storlek boolean true, false false 1 bit char Tecken \u000

Läs mer

2D1339 Programkonstruktion för F1, ht 2004

2D1339 Programkonstruktion för F1, ht 2004 2D1339 Programkonstruktion för F1, ht 2004 Kontrollskrivning 1 Onsdag 24/11 2004 kl 11.15 12.00 Endast ett svar är rätt på varje fråga! Om mer än ett svar givits blir det noll poäng på frågan. Alla skriftliga

Läs mer

TENTAMEN OOP

TENTAMEN OOP TENTAMEN OOP 2013-08-08 ANVISNINGAR Påbörja varje ny uppgift på nytt blad. Skriv endast på ena sidan av bladen. Skriv tydligt - oläsbara svar beaktas ej. BETYGSÄTTNING Max antal poäng är 30. För att bli

Läs mer

F4 Klasser och Metoder. ID1004 Objektorienterad programmering Fredrik Kilander

F4 Klasser och Metoder. ID1004 Objektorienterad programmering Fredrik Kilander F4 Klasser och Metoder ID1004 Objektorienterad programmering Fredrik Kilander fki@kth.se Klasser och objekt Klasser definierar (utgör idén) Objekt instantierar (utgör förekomsten) En klassdefinition Många

Läs mer

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

Programmering för språkteknologer I, VT2012. Rum Programmering för språkteknologer I, VT2012 evelina.andersson@lingfil.uu.se Rum 9-2035 http://stp.lingfil.uu.se/~evelina/uv/uv12/pst1/ Idag - Kursplan - Börja programmera - Lokala variabler - aritmetiska

Läs mer

Lektion 5. Datateknik A, Java I, 5 poäng

Lektion 5. Datateknik A, Java I, 5 poäng Datateknik A, Syfte: Att lära sig utöka befintliga klasser med hjälp av arvsmekanismen och skapa egna klasshierarkier. Att lära sig använda verktyget jar för att packa ihop Javafiler. Att läsa: Kursboken,

Läs mer

Introduktion till arv

Introduktion till arv Introduktion till arv 6 INTRODUKTION TILL ARV Arv Generell-Speciell Arv för att utnyttja det vi redan gjort Återanvändning Basklass Härledd klass Varför arv? Inför en subklass för att uttrycka specialisering

Läs mer

Laboration 1 - Grunderna för OOP i Java

Laboration 1 - Grunderna för OOP i Java Uppdaterad: 2006-08-31 Laboration 1 - Grunderna för OOP i Java Inledning Laborationen går ut på att lära sig grunderna för objektorienterad programmering, samt motsvarande språkkonstruktioner i Java. Labben

Läs mer

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

Objektorientering. Objekt och metoder. Objektorientering. Viktiga begrepp. Klass. Objekt. Deklarativ programmering och metoder Introduktion till objektorienterad programmering Markus Saers markus.saers@lingfil.uu.se orientering Deklarativ programmering Beskriver förutsättningarna för något Prolog Imperativ programmering

Läs mer

Parameteröverföring. Exempel. Exempel. Metodkropp

Parameteröverföring. Exempel. Exempel. Metodkropp Exempel atriangle.changesize (100, 50); // OK atriangle.changesize (100); // fel antal atriangle.changesize ( 1, 50); // fel datatyp char c = atriangle.getarea (); // fel datatyp Parameteröverföring I

Läs mer

Parsing med Recursive Descent, Avbildningsklasser. Syntaxdiagram. Syntaxdiagram och kodning expression. Betrakta följande uttryck

Parsing med Recursive Descent, Avbildningsklasser. Syntaxdiagram. Syntaxdiagram och kodning expression. Betrakta följande uttryck Betrakta följande uttryck a +(b + c) d + e (f + g h) Parsing med Recursive Descent, Avbildningsklasser Tobias Wrigstad (baserat på bilder från Tom Smedsaas) 22 november 2010 Beräkning med regler: multiplikation

Läs mer

Tentamen OOP 2015-03-14

Tentamen OOP 2015-03-14 Tentamen OOP 2015-03-14 Anvisningar Fråga 1 och 2 besvaras på det särskilt utdelade formuläret. Du får gärna skriva på bägge sidorna av svarsbladen, men påbörja varje uppgift på ett nytt blad. Vid inlämning

Läs mer

Objektorienterad Programkonstruktion. Föreläsning 3 7 nov 2016

Objektorienterad Programkonstruktion. Föreläsning 3 7 nov 2016 Objektorienterad Programkonstruktion Föreläsning 3 7 nov 2016 Klass/instans Med hjälp av nyckelordet static kan vi bestämma att en metod eller ett fält ska tillhöra själva klassen i stället för en specifik

Läs mer

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

Introduktion. Klasser. TDP004 Objektorienterad Programmering Fö 2 Objektorientering grunder Introduktion TDP004 Objektorienterad Programmering Fö 2 Objektorientering grunder OO är den mest använda programmeringsparadigmen idag, viktigt steg att lära sig och använda OO. Klasser är byggstenen i

Läs mer

Anteckningar 1: Grundläggande saker

Anteckningar 1: Grundläggande saker UPPSALA UNIVERSITET Institutionen för lingvistik och filologi Mats Dahllöf http://stp.ling.uu.se/ matsd/uv/uv11/pst1/ Programmering för språkteknologer I Anteckningar 1: Grundläggande saker 1 Programmering

Läs mer

Klasser och objekt. Henrik Johansson. August 20, 2008

Klasser och objekt. Henrik Johansson. August 20, 2008 Föreläsning 5 Klasser och objekt Henrik Johansson August 20, 2008 Ett objekt är en modell av ett fysisikt eller ett tänkt ting. Objektet och det som vi kan göra med det beskrivs av en mall, en klass. Ett

Läs mer

Arv. Fundamental objekt-orienterad teknik. arv i Java modifieraren protected Lägga till och modifiera metoder med hjälp av arv Klass hierarkier

Arv. Fundamental objekt-orienterad teknik. arv i Java modifieraren protected Lägga till och modifiera metoder med hjälp av arv Klass hierarkier Arv Fundamental objekt-orienterad teknik arv i Java modifieraren protected Lägga till och modifiera metoder med hjälp av arv Klass hierarkier Programmeringsmetodik -Java 165 Grafisk respresentation: Arv

Läs mer

1 Egna klasser. 1.1 En punkt-klass

1 Egna klasser. 1.1 En punkt-klass 1 Egna klasser Vi har bekantat oss med klasser genom att se hur vi kan använda olika klasser. I synnerhet klassen Scanner och klassen Math. För scannerklassen skapade vi en instans för att sedan utnyttja

Läs mer

Design av en klass BankAccount som representerar ett bankkonto

Design av en klass BankAccount som representerar ett bankkonto 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

Läs mer

Modern Programmering (2546) Tentamen lördag 30.09.2000

Modern Programmering (2546) Tentamen lördag 30.09.2000 Modern Programmering (2546) Tentamen lördag 30.09.2000 Svara på minst sex frågor. Om du svarar på alla sju frågorna faller den fråga bort som ger minst antal poäng. Maximalt 70 poäng. Det krävs 35 poäng

Läs mer

Föreläsning REPETITION & EXTENTA

Föreläsning REPETITION & EXTENTA Föreläsning 18 19 REPETITION & EXTENTA Programmeringsteknik på 45 minuter Klasser och objekt Variabler: attribut, lokala variabler, parametrar Datastrukturer Algoritmer Dessa bilder är inte repetitionsbilder

Läs mer

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

Föreläsnings 9 - Exceptions, I/O Föreläsnings 9 - Exceptions, I/O Josef Svenningsson Tisdag 6/11 Undantag - Exceptions Kommer ni ihåg det här programmet? Det var ett av de första ni såg i första föreläsningen. import javax.swing.*; public

Läs mer

NetBeans 5.5. Avsikt. Projektfönster

NetBeans 5.5. Avsikt. Projektfönster NetBeans 5.5 Avsikt Att bekanta dig med NetBeans programmeringsmiljö, dvs att med hjälp av NetBeans 1. skapa ett nytt projekt 2. skriva in källkod (sparas som.java-fil) 3. kompilera (översätta) koden till

Läs mer

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.

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. 1 Uppgift 1 Klassen Company Banken FinanceTrust som tidigare bara haft privatpersoner som kunder vill nu bygga ut sitt datasystem så att även företag kan registreras som kunder. Skriv klassen Company som

Läs mer

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

Outline. Objektorienterad Programmering (TDDC77) Att instansiera en klass. Objekt. Instansiering. Åtkomst. Abstrakt datatyp. Objektorienterad Programmering (TDDC77) Föreläsning X: Klass diagram, inkapsling, arv Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2017 Att instansiera en klass Objekt I Man instansierar (skapar

Läs mer

TENTAMEN. Kurs: Objektorienterad programmeringsmetodik 5DV133 Ansvarig lärare: Anders Broberg. VT-13 Datum: 13-06-05 Tid: kl 16.00-20.

TENTAMEN. Kurs: Objektorienterad programmeringsmetodik 5DV133 Ansvarig lärare: Anders Broberg. VT-13 Datum: 13-06-05 Tid: kl 16.00-20. Umeå Universitet Datavetenskap Anders Broberg 130605 TENTAMEN Kurs: Objektorienterad programmeringsmetodik 5DV133 Ansvarig lärare: Anders Broberg VT-13 Datum: 13-06-05 Tid: kl 16.00-20.00 Namn: Personnummer:

Läs mer

Objekt och klasser - Introduktion

Objekt och klasser - Introduktion Objekt och klasser - Introduktion Begreppet objekt Hur klasser används för att skapa objekt Fördefinierade klasser Metoder och parameteröverföring Definiera klasser Modifierare Statiska variabler och metoder

Läs mer

Objektorienterad Programmering (TDDC77)

Objektorienterad Programmering (TDDC77) Objektorienterad Programmering (TDDC77) Föreläsning II: utmatning, variabler, typer Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2017 Outline Java Språket Utmatning av Sträng litteraler Variabler

Läs mer