Programmering 1 med ActionScript poa ng

Storlek: px
Starta visningen från sidan:

Download "Programmering 1 med ActionScript 3.0 100 poa ng"

Transkript

1 Programmering 1 med ActionScript poa ng Innehåll Kort om kursen... 4 Del 1 - Om programmering i AS Allmänt om programmering... 5 Många nya ord att lära sig... 5 Allmänna ord för AS3-program... 5 Vanliga programmeringsord... 5 Olika tecken som ofta används i AS Reserverade ord som ingår i AS3-språket... 7 Program som behövs... 7 Ett första program i AS3 Hello world!... 7 Att ändra fönsterstorleken mm... 9 Om Flash-program... 9 Del 2 - Variabler och datatyper Ändra värdet i en variabel Slå ihop två strängar Del 3 - Funktioner Färdiga funktioner Färdig funktion med returvärde Slumpa tal Del 4 - Textfält Visa text i Flash-fönstret Ange färg och storlek för text i ett textfält Att placera ett textfält på scenen Del 5 - Skapa egna funktioner Kodblock och indentering Att skapa en funktion Att skapa en funktion med parametrar Parameter med defaultvärde Funktion för att visa text i Flash-fönstret

2 Att skapa en funktion med returvärde Vad är funktioner bra för? Del 6 - Klasser och objekt Klassmetoder vs instansmetoder Konstruerare / Konstruktor Globala variabler och lokala variabler Utöka en klass (Arv) Olika ord för samma sak Importera en klass Vanliga klasser i AS Klassdiagram och objektdiagram i UML Grafikhantering Rita enkel grafik Ladda in grafik till programmet Del 8 - Händelsehantering Lyssna på tangenttryckningar Lyssna på mushändelser Lyssna efter en ny ram Använda en timer och lyssna efter timer-händelse Del 8 - Logiska uttryck och villkor Datatypen Boolean Logiska uttryck Villkor med if och else Exempel på program som använder villkor Boll som studsar mot väggarna Klicka på kvadrat Superenkelt ritprogram Del 10 Datatyper och typomvandling Typomvandling Inmatning Tips Att flytta grafiska objekt Göra en knapp Algoritmer

3 Aktivitetsdiagram Några enkla spel Fält (Array) Loopar Skjuta i alla riktningar Sökning och sortering XML och filhantering Rekursion Övningar och frågor

4 Kort om kursen I den här kursen ska du få lära dig grunderna i programmering. Du kommer t.ex. att lära dig att slumpa tal, att få grafik att röra sig på skärmen samt att skapa enkla spel. I början är det många nya saker och ord att komma in i och förstå. Det kan kännas som rätt meningslösa program som vi skriver i början av kursen. Men det är viktigt att läsa sig grunderna i programmering innan man går vidare för att göra mer komplicerade program. Grunderna i programmering är i stort sätt de samma oavsett vilket programmeringsspråk man använder. Alltså spelar det inte så stor roll om det är C++, C#, Java, Python, PHP, ActionScript eller något annat modernt språk. Kan man programmera i ett ut av de språken är det relativt lätt att sätta sig in i ett av de andra. ActionScript 3.0 (AS3) är ett objektorienterat programmeringsspråk skapat av Adobe. Dess syntax, d.v.s. regler för hur man skriver programkoden, liknar den för Java och C# en hel del. Två av anledningarna till att vi ska använda AS3 i kursen är att man relativt snabbt kan komma in på grafikhantering med AS3 och att språket passar bra för att göra spel som sen lätt kan köras på internet. Det bästa sättet att lära sig programmering är att programmera. Men du behöver även förstå teori och se på programkod som andra har skrivit för att bli en bra programmerare. I slutet av häftet finns en del exempelkod och övningsuppgifter att jobba med. Du får gärna jobba på i din egen takt genom att läsa i häftet och försöka lösa övningsuppgifterna. Har du möjlighet att jobba även hemma så kommer det att göra att du lär dig fortare och har bättre chanser att klara kursen med ett högt betyg. Lycka till! \Håkan Lundberg 4

5 Del 1 - Om programmering i AS3 Allmänt om programmering Kommer Källkod, maskinkod Kompilering, interpretering Variabler, funktioner, objekt, händelsehantering Många nya ord att lära sig Följande ord är sådana som ofta återkommer i programmering med ActionScript. Förr eller senare måste du lära dig dem. Det kommer förmodligen att ta några veckor innan du förstår dem alla. Försök att så fort som möjligt lära dig vad de innebär, då blir det lättare att förstå teoridelarna och uppgifterna du ska göra i kursen. Allmänna ord för AS3-program Programkod/Kod Används för att skriva program som körs på en dator. ActionScript 3.0 (AS3) Ett programspråk för att göra Flash-program. as-fil (exempel.as) En fil som innehåller programkod skriven i AS3. Maskinkod Består av ettor och nollor som kan köras i datorns processorn. exe-fil (exempel.exe) En fil som innehåller maskinkod, även kallad binärkod. Kompilering Gör om programkod till en annan kod, i vårt fall till swf-kod. swf-fil (exempel.swf) En fil som innehåller swf-kod som kan köras i Flash-spelaren. Interpretering Tolkar swf-koden och gör om den till maskinkod. Flash Player Ett program som sköter tolkningen av swf-kod till maskinkod. (Kallas även för Flash-spelaren. Finns ofta redan installerat på datorn.) Vanliga programmeringsord Data Ett värde (eller flera värden), t.ex. ett heltal, ett decimaltal eller en text. Variabel Används för att laga data som kan ändras under programmets gång. Kan ses som en namngiven ask som kan hålla data. Konstant Som en variabel, men datat får inte ändras under programmets gång. Datatyp Bestämmer vad för slags data som får ligga i en variabel. o int Datatyp för heltal. (int är en förkortning av integer som betyder heltal.) o Number Datatyp för decimaltal. o String Datatyp för text. o Boolean Datatyp för variabler som kan ha värdet true eller false. Kommentar Används för att kommentera koden så den blir lätt att förstå. Görs med två stycken snedsträck. // Här en kommentar Variabeldeklaration Används för att skapa en ny variabel. I AS3 skriver man: var variabelnamn:datatyp; var minvariabel:string; // En variabel för text-data Sträng/Textsträng Ett annat ord för text i programmeringssammanhang. Referens Ett värde som refererar/pekar till en minnescell där data ligger lagrad. 5

6 Funktion Ett namngivet kodblock som utför något. Kan anropas från en annan funktion. Argument Det man skickar med till en funktion. Indata till en funktion. Parameter En slags variabler som används för att ta emot argument/indata i en funktion. Klass Ett namngivet kodblock som kan bestå av både variabler och funktioner. Används ofta som en mall för att skapa objekt. Objekt En slags kopia av en klass som har sitt eget unika data lagrat i variabler. Instans Ett annat ord för objekt. Instansvariabel En variabel som håller information om ett objekt av en viss klass. Attribut Ett annat ord för instansvariabel. Egenskap Ett annat ord för instansvariabel. Metod Ett annat namn för en funktion som ligger i en klass. Konstruktor Den metod som anropas när man skapar ett objekt av en klass. Har alltid samma namn som klassen. Den kan ha parametrar. new-operatorn Används för att skapa ett nytt objekt av en klass. var objektnamn:klassnamn = new Klassnamn(); Indentering Ett annat ord för indrag av en programrad. Används för att göra programkoden lättare att läsa och överblicka. Händelsehantering Används för att göra interaktiva program, t.ex. via mus och tangentbord. Händelselyssnare Kan läggas till ett objekt som ska lyssna efter en speciell händelse. Händelsehanterare En funktion som anropas när en viss händelse inträffat. Lyssnarfunktion Samma sak som händelsehanterare, bara ett annat namn. Händelseobjekt Håller information om en viss händelse. Skickas med till händelsehanteraren. Fält/Array Används för att lagra flera värden i en slags lista. Element Ett fält består av flera element som kan innehålla ett värde. Index Ett tal som anger positionen för ett element i ett fält. Indexering Används för att komma åt ett visst element i ett fält. Villkor (Selektion) Används för att göra val av vilken kod som ska köras. Skapas genom att använda if- och else-satser. Loop (Iteration) Används för att få ett kodblock att upprepas flera gånger. Skapas genom att använda for- eller while. Logiskt uttryck Används i villkor och loopar. Har värdet true eller false. if (tal1 == tal2) //kodblock Olika tecken som ofta används i AS3 Startklammer Används för att markera starten på ett block av programkod. Slutklammer Används för att markera slutet på ett block av programkod. Semikolon ; Används för att markera slutet på en programsats (ofta en rad). Kolon : Används vid variabel- och funktionsdeklarationer. Startparentes ( Används t.ex. vid anrop av en funktion, t.ex minfunktion() Slutparentes ) Används t.ex. vid anrop av en funktion, t.ex minfunktion() Hakparenteser [] Används för vid t.ex. indexering av fält. Citattecken " Används för att angränsa textsträngar, t.ex. "Hej på dig". Tilldelningstecken = Används för att tilldela (ge) en variabel ett värde. Lika med == Används för att avgöra om två variabler innehåller samma sak. Kommentartecken // Används för att kommentera programkoden. 6

7 Reserverade ord som ingår i AS3-språket var Används för att deklarera/skapa en variabel. const Används för att skapa en konstant. package All kod ligger lagrade i paket. class Används för att skapa en klass. function Används för att skapa en funktion/metod. import Används för att importera en klass till sitt program. Program som behövs För att ett program i AS3 ska kunna köras på en dator krävs att den har ett program som heter Flash Player installerat. Om det programmet inte finns på din dator kan du hämta det på Det är Flash-spelaren (Flash Player) som gör att ett program skrivet i programspråket AS3 kan köras på en dator. Tack vara Flash-spelaren så kan ett program skrivet i AS3 köras på olika operativsystem. När man skriver sina program underlättar det mycket att använda en så kallad IDE (Integrated Development Environment), på svenska kan man säga utvecklingsmiljö. En gratis och bra IDE för AS3 är FlashDevelop (för Windows), en annan är Flash Builder (för Mac och Windows). På skolan kör vi med FlashDevelop för att programmera i AS3. Se Ladda gärna ner FlashDevlop hemma om du kör Windows. (Man kan även skriva AS3-kod i Flash Professional, ett program som används för att skapa grafik och animationer i Flash. Men det är inte gratis.) Ett första program i AS3 Hello world! Vi ska nu göra ett första program i AS3. Du kommer förmodligen inte att förstå alla detaljer på en gång, men det gör ingenting. Först måste vi skapa ett nytt projekt i FlashDevelop. Starta FlashDevelop och välj i menyn: Project / New project / AS3 project [Bilder] Öppna filen Main.as genom att dubbelklicka på den i mappen src i filträdet till höger. (src är en förkortning för source som används för källkod/programkod.) FlashDevelop genererar (skapar automatiskt) en del kod när man skapar ett nytt AS3-projekt. Så här ser det ut i filen Main.as som skapas av FlashDevelop: package import flash.display.sprite; import flash.events.event; public class Main extends Sprite 7

8 public function Main():void if (stage) init(); else addeventlistener(event.added_to_stage, init); private function init(e:event = null):void removeeventlistener(event.added_to_stage, init); // entry point Förklaringar till all koden ovan kommer att ges senare. Nu nöjer vi oss med att säga att på raden under // entry point kan vi skriva vår programkod. Det som kommer efter // är en kommentar som används för att förklara programkod. Skriv på raden under // entry point följande: trace("hello World!"); Var noga med att skriva exakt så. (Det går t.ex. INTE att skriva Trace med stort T.) Testa sen att köra programmet genom att trycka på Crtl och Enter samtidigt. Det går också bra att klicka på den ljusblå pilen bland menyknapparna. Om allt går bra ska programmet starta och ge utskriften Hello World! i den så kallade output-panelen. [bild] Flash-fönstret som öppnades när programmet kördes är helt tomt. Om vi vill skriva en text i det så krävs det lite mer kod. Prova att skriva följande på raden under // entry point : var tf:textfield = new TextField(); tf.text = "Hej världen!"; tf.x = 100; tf.y = 200; stage.addchild(tf); Koden ovan kommer vi att i detalj förklara senare. För att kunna köra koden så krävs även att man lägger till en rad nästan högst upp i programmet där det finns två rader med import. Lägg där till följande kod: import flash.text.textfield; // Gör så att vi kan använda klassen TextField Testkör programmet genom att trycka på Crtl och Enter. Om allt går bra ska programmet starta och visa texten Hej världen! i Flash-fönstret. Det är tradition att det första programmet man gör när man lär sig ett nytt programspråk är att skriva ut Hello World!. Se för exempel på hur man skriver Hello World -program i en massa olika programspråk. 8

9 Att ändra fönsterstorleken mm För att sätta fönsterstorleken, bakrundsfärgen, ramhastigheten mm kan man gå till Project / Properties. [bild] Ett annat sätt att ange fönsterstorlek mm är att skriva på raden ovanför Main-klassen: [SWF(width="800", height="600", framerate="60", backgroundcolor="#ffffff")] public class Main extends Sprite... Bakgrundsfärgen anges i hexadecimalform där de två första positionerna står för röd, de två mittersta för grön och de två sista för blå. Alltså RGB (Red Green Blue). För att få röd färg skriv: #FF0000. Om Flash-program Den programkod vi kommer att skriva ska lagras i filer med extensionen.as, t.ex. Main.as. För att omvandla programkoden i en as-fil till maskinkod som kan köras i processorn så krävs två steg: [bild] 1) Kompilering Sker i FlashDevelop. Då skapas en swf-fil med s.k. bytekod. 2) Interpretering Sker i Flash-spelaren. Bytekoden omvandlas till maskinkod. När vi startar ett program vi skrivit i AS3 genom att trycka Ctrl + Enter i FlashDevelop så omvandlas först vår programkod till s.k. bytekod som lagras i en swf-fil i mappen bin. Det kallas för att programkoden kompileras till bytekod. Om något skulle vara fel i programkoden så kommer inte kompileringen att lyckas utan ett eller flera felmeddelande kommer att ges i FlashDevelop. När kompileringen är klar så körs swf-filen i programmet Flash Player (Flash-spelaren). Flash-spelaren går igenom bytekoden och tolkar/omvandlar den till maskinkod (ettor och nollor) som körs i datorns processor. Det kallas för interpretering. [bild] Vid kompileringen så skapas även en html-fil som läggs i mappen bin. Den innehåller html och JavaScript som gör att man enkelt kan köra sitt program även i en webbläsare, t.ex. FireFox. Nu är det dags att börja ta sig in i den spännande programmeringsvärlden på allvar. 9

10 Del 2 - Variabler och datatyper En variabel är som en ask med ett namn i vilken man kan lagra data. Datat är ett värde av något slag, t.ex. ett heltal, ett decimaltal, en textsträng eller ett objekt. En datatyp är det som bestämmer vad för slags data som får ligga i en variabel. De datatyper vi kommer att använda i början är int (för heltal), Number (för decimaltal) och String (för text). Man skapar en variabel genom att skriva: var variabelnamn:datatyp; Variabelnamnet bestämmer man själv (det får inte innehålla mellanslag eller punkt och måste börja med en bokstav). Ofta börjar variabelnamnet med en liten bokstav. Datatypen är, som sagt, det som bestämmer vad för slags data som det får finnas i variabeln. Om datatypen är int, får bara heltal finnas i variabeln. Är datatypen Number, ska det finnas ett decimaltal i variabeln. Är datatypen String, ska variabeln användas för att laga en textsträng, t.ex. "Hej på dig". Ett annat namn för att skapa en variabel är att deklarera en variabel. Några exempel på variabledeklarationer, d.v.s. hur man skapar variabler: var x:int; // Skapar en variabel som kan innehålla ett heltal var mitttal:int; // Skapar en till variabel som kan innehålla ett heltal var dectal:number; // Skapar en variabel som kan innehålla ett decimaltal var slump:number; // Skapar en till variabel för decimaltal var s:string // Skapar en variabel som kan innehålla en textsträng var efternamn:string; // Skapar en till variabel för text Efter varje rad brukar man sätta ett semikolon ; som fungerar ungefär som en punkt i vanligt språk. I många programmeringsspråk så måste man ha ; men i AS3 är det frivilligt. För att stoppa in ett värde i en variabel använder man sig av tilldelningstecknet =. x = 5; // Lägger talet 5 in i variabeln x mitttal = x; // Värdet i variabeln x läggs in i variabeln mitttal dectal = ; // OBS: Måste vara. när man anger ett decimaltal s = "Här kommer en textsträng som kommer att läggas in i variabeln s"; Man kan även ge en variabel ett startvärde direkt vid variabeldeklarationen: var heltal:int = -12; // Skapar en variabel för heltal som får startvärdet -12 var tal:number = 1.3; // Skapar en variabel för decimaltal som får startvärdet 1.3 var s:string = "Esperanto estas interesa lingvo."; // En variabel för text En datatyp anger vad för slags data/värde som får finnas i en variabel. Ex på datatyper i AS3: int För heltal, t.ex. 15 Number För decimaltal, t.ex String För text, t.ex. "Hej på dig" Boolean För true eller false En variabel har 3 saker: ett namn Hittar man på själv, börjar ofta med liten bokstav. 10

11 en datatyp Bestämmer vad för slags data som får finnas i variabeln. ett värde Kan ändras under programmets gång. En variabeldeklaration med startvärde: var variabelnamn:datatyp = värde_som_senare_kan_ändras; Ofta används något som kallas camel case för variabelnamn. Det vill säga att man skriver ihop flera ord och använder stor bokstav för varje nytt ord. T.ex. mitttal, hittilsminstavärdet, antalträffar. OBS: Man använder var bara när man skapar/deklarerar en variabel. Sen när man använder en variabel i sin programkod skriver man bara namnet på variabeln, t.ex. mitttal = 12. Ändra värdet i en variabel Variabler kan, som hörs på namnet, variera, d.v.s. värdet kan ändras under programmets gång. För att lägga in ett värde i en variabel använder man tecknet = som kallas för tilldelningstecken i programmeringssammanhang. var heltal:int = 2; // Skapar en variabel för heltal med ett startvärde... heltal = 33; // Senare i programmet kan variabeln få ett annat värde Man kan även öka eller minsta värdet i en variabel, i förhållande till värdet som finns i variabeln. Det kan göras t.ex. på följande sätt: var heltal:int = 10; // Skapar en variabel och lägger värdet 10 i den. heltal = heltal + 2; // Ökar värdet i variabeln heltal med 2. Blir 12. heltal = heltal - 5; // Minskar värdet i variabeln heltal med 5. Blir 7. Alltså, tecknet = är INTE ett matematiskt lika-med-tecken i programmeringsvärlden. Istället för att skriva variabel = variabel + värde så kan man skriva variabel += värde. Istället för att skriva variabel = variabel - värde så kan man skriva variabel -= värde. Det skrivsättet är lite kortare och används rätt ofta. var heltal:int = 10; // Skapar en variabel och lägger värdet 10 i den. heltal += 2; // Ökar värdet i variabeln heltal med 2. Blir 12. heltal -= 5; // Minskar värdet i variabeln heltal med 5. Blir 7. Slå ihop två strängar Även för textsträngar kan man använda tecknet +, men inte för summering utan för att slå ihop strängar. var namn1:string = "Anna"; // Skapar en variabel för text och lägger värdet "Anna" i den. var namn2:string = "Lena"; // Skapar en variabel för text och lägger värdet "Lena" i den. var namn3:string; // Skapar en variabel för text som från början är tom. namn3 = namn1 + namn2; // namn3 får värdet "AnnaLena" namn3 = namn1 + " " + namn2; // namn3 får värdet "Anna Lena" Att slå ihop två textsträngar kallas med ett fint ord för konkatingering. I AS3 kan man även slå ihop en textsträng och ett tal. Då omvandlas talet automatiskt till en textsträng. var s:string = "Tal:"; var tal:int = 3; 11

12 s = s + tal; // Blir "Tal:3" s = s + " " + tal; // Blir "Tal: 3" s = "" + tal; // Blir "3" Det är skillnad på ett tal, t.ex. 3 och textsträngen "3". Ett tal kan man göra matematiska beräkningar med, t.ex. multiplikation, det kan man inte med en textsträng. 12

13 Del 3 - Funktioner Allmänt om funktioner Färdiga Anropa Skapa Färdiga funktioner En funktion är en samling kod som utför något, t.ex. skriver ut ett meddelande på skärmen, ritar en cirkel i Flash-fönstret eller slumpar ett tal mellan 1 och 10. Det finns en massa färdiga funktioner i AS3 som man kan använda i sina program. Det finns även möjlighet att skapa egna funktioner, mer om det senare. Den första funktion som vi ska använda heter trace. Den används för att göra så att något skrivs i den så kallade output-panelen (en del av ett fönster i den IDE/utvecklingsmiljö du använder för att skriva ditt program, t.ex. FlashDevlop eller FlashBuilder) när programmet körs. trace("hello World!"); // Skriver texten Hello World! i output-panelen. [bild på FlashDevelop med output-panelen] Funktionen trace är går bra att använda för att se vad en viss variabel innehåller. T.ex. kan man skriva: var tal:int = 3; trace(tal); // Skriver innehållet i variabeln tal i output-panelen. trace("tal"); // Skriver texten "tal" i output-panelen. trace("variabeln tal har värdet: " + tal); Förstår du skillnaden på trace(tal) och trace("tal")? I det första fallet skrivs innehållet i variabeln tal i output-panelen, i det andra fallet skrivs texten "tal" i output-panelen. Utan citattecken räknas tal som en variabel, med citattecken runt räknas tal som en textsträng, d.v.s. tal. I stället för att säga använda en funktion kan man säga anropa en funktion. När man anropar en funktion så betyder det att programmet hoppar till den funktionen och kör den kod som finns där, sen hoppar programmet tillbaka till stället där anropet gjordes. En funktion anropas från en annan funktion, t.ex. från funktionen init (som genereras av FlashDevelop). En funktion anropas genom att skriva dess namn och två parenteser, t.ex. minfunktion(). Vissa funktioner kräver att man skickar indata mellan parenteserna till funktionen, t.ex. trace("hej"). Det som står mellan parenteserna kallas för argument. Funktionen trace kräver ett argument. Vissa funktioner kräver inget argument, vissa kräver flera argument. Via argumenten kan man skicka indata till en funktion som sen kan användas inne i den funktionen. (Mer om hur en funktion tar emot indata senare.) OBS: ALLTID NÄR MAN ANROPAR EN FUNKTION SKA MAN HA MED PARENTERSER, ÄVEN OM FUNKTINEN INTE TAR NÅGOT ARGUMENT. trace("hej världen!"); minfunktion(); // Funktion trace anropas med ett argument // Funktionen minfunktion anropas utan argument 13

14 Färdig funktion med returvärde Vissa funktioner skickar tillbaka ett värde när man anropar den. Värdet som skickas tillbaka kallas för returvärde. Ett exempel på en funktion som returnerar ett värde är random som returnerar ett slumpat decimaltal mellan 0 och 1. Funktionen random anropas genom att skriva Math.random(). Funktionen random ligger nämligen i en så kallad klass som heter Math, därför måste man skriva Math. innan funktionsnamnet anges, random i detta fall, sen följt av två parenteser. var slumptal:number = Math.random(); // Ett slumptal returneras och läggs i en variabel trace("ett slumptal mellan 0 och 1: " + slumptal); // Skriver ut slumptalet I och med att funktionen random skickar tillbaka ett värde som returvärde är det en bra idé att ha en variabel framför funktionsanropet som fångar upp returvärdet, variabeln slumptal i koden ovan. Om det inte finns en variabel framför funktionsanropet försvinner returvärdet i cyberrymden. Slumpa tal För att slumpa tal i AS3 använder man alltså: Math.random() Math kallas för en klass. Klassen Math innehåller matematiska konstanter och funktioner. En av funktionerna i klassen Math heter random och den returnerar ett slumpat decimaltal mellan 0 och 1. Funktionen random tar inga argument, alltså skriver vi funktionsnamnet följt av två parenteser: var slump:number = Math.random(); trace("slumptalet blev: " + slump); Eftersom funktionen random returnerar ett decimaltal så är det lämpligt att ha en variabel med datatypen Number framför funktionsanropet för att fånga upp returvärdet. Det är ju inte alltid man vill slumpa ett decimaltal mellan 0 och 1. Genom att använda funktionen round så avrundar man ett tal. Math.round(0.459) // Blir 0 Math.round(0.732) // Blir 1 var slumpatheltal:int = Math.round(Math.random()); // Blir antingen 0 eller 1 trace("slumptalet blev: " + slumpatheltal); Som argument till funktionen round används ovan returvärdet från funktionen random. Man kan alltså anropa en funktion inom parenteserna för en annan. Funktionen round avrundar antingen nedåt eller uppåt, beroende på den första decimalen. För att få större spridning på slumptalen kan man multiplicera returvärdet från random med ett heltal. Math.round(Math.random() * 10); // Ger ett slumptal mellan 0 och 10 Säg att Math.random() returnerade värdet Efter att ha multiplicerat det med 10 så får vi Efter avrundningen med hjälp av funktionen round så blir resultatet 4. Här följer några fler exempel: Math.round(Math.random() * 100); // Ger ett slumptal mellan 0 och 100 Math.round(Math.random() * 5); // Ger ett slumptal mellan 0 och 5 14

15 Math.round(Math.random() * 5) + 1; // Ger ett slumptal mellan 1 och 6 Math.round(Math.random() * 10) + 10; // Ger ett slumptal mellan 10 och 20 Som alternativ till round finns funktionerna ceil som alltid avrundar uppåt och floor som alltid avrundar nedåt: Math.ceil(1.2); // Ger värdet 2 Math.floor(1.9); // Ger värdet 1 Math.ceil(Math.random() * 10); // Ger ett slumptal mellan 1 och 10 Math.ceil(Math.random() * 6); // Ger ett slumptal mellan 1 och 6 Math.floor(Math.random() * 10); // Ger ett slumptal mellan 0 och 9 Math.floor(Math.random() * 10) + 10; // Ger ett slumptal mellan 10 och 19 15

16 Del 4 - Textfält Kommer Visa text i Flash-fönstret För att visa text i output-panelen så använder man funktionen trace. För att visa en text i Flash-fönstret (kallas även för scenen ) behöver man använda något som heter TextField. Så här kan det se ut i funktionen init: var tf:textfield = new TextField(); // Skapar ett nytt textfält och lägger det i en variabel tf.text = "Hej världen!"; // Anger vilken text som ska visas i textfältet tf.x = 100; // Anger var textfältet ska placeras i x-led tf.y = 200; // Anger var textfältet ska placeras i y-led tf.border = true; // Anger att textfältet ska ha en kant runt om stage.addchild(tf); // Gör så att textfältet i tf läggs ut på scenen När man skapar ett textfält med new TextField() så får man ett s.k. textfält-objekt som i fallet ovan lagras i en variabel tf. Ska man vara petig så lagras i variabeln tf en referens som pekar på (refererar till) en minnesadress där själva textfällt-objektet ligger lagrat. Men för enkelhetens skull så kallar vi tf för ett textfältobjekt. Alla objekt har egenskaper (properties på engelska) som håller information om objektet. En egenskap är en variabel som finns i ett objekt och håller information om objektet. Egenskaper kallas även för instansvariabler eller attribut. Genom att använda egenskaperna text, x, y och border för objektet tf så anger vi vilken text som ska visas i textfältet, var textfältet ska placeras och att textfältet ska ha en ram runt sig. För att få textfält-objektet att visas i Flash-fönstret behöver man lägga det på scenen. Det gör man genom att använda det inbyggda objektet stage som skapas automatiskt när man startar ett AS3-program. Objekt som ska visas på scenen kallas för barn. Genom att skriva stage.addchild(tf) får vi vårt textfältet-objekt att läggas ut på scenen, vilket gör att det visas i Flash-fönstret. Förutom att objekt har egenskaper som beskriver dess tillstånd så har de flesta objekt även funktioner som beskriver vad man kan göra med ett objekt. Funktioner som hör till objekt brukas kallas för metoder. En sådan funktion/metod för stage-objektet är addchild som tar ett objekt som argument, det objektet kommer att läggas till en lista av barn-objekt för scenen. Den listan kallas för display list. Alla scenens barn, d.v.s. alla objekt som finns med i display list visas i Flash-fönstret. [Bild på display list] Objektet stage (som representerar Flash-fönstret) har även egenskaper, alltså variabler som håller information om scenen. Två exempel är stagewith och stageheigt som håller information om hur stor scenen är, d.v.s hur många pixlar Flash-fönstret är på bredden och höjden. [bild på ett Flash-fönster med bredden och höjden utsatt] Vill vi att ett textfält ska hamna i mitten på scenen kan man skriva: var tf2:textfield = new TextField(); // Skapar ett textfält och lägger det i en variabel tf2.text = "Hej världen, från mitten!"; // Anger vilken text som ska visas i textfältet tf2.x = stage.stagewidth / 2; // Anger var textfältet ska placeras i x-led tf2.y = stage.stageheight / 2; // Anger var textfältet ska placeras i y-led tf2.border = true; // Anger att textfältet ska ha en kant runt om stage.addchild(tf2); // Gör så att textfältet i tf läggs ut på scenen 16

17 Nu har du sett hur man kan använda objektet stage och textfält-objekt för att visa text i Flash-fönstret. Vi kommer att jobba mycket med olika objekt senare. Objekt är nämligen det centrala i s.k. objektorienterad programmering som är den dominerande programmeringsstilen för stora program. Objektorienterad programmering ingår som ett centralt moment i kursen Programmering 1 och ännu mer i Programmering 2. Prova gärna att skriva stage. i FlashDevelop/FlashBuilder då kommer du se en lång lista på olika egenskaper och metoder som finns för det objektet. Även för ett textfält-objekt kan du prova det. Ange färg och storlek för text i ett textfält Färgen på en text i ett textfält ändrar man genom att använda egenskapen textcolor: var tf:textfield = new TextField(); // Skapar ett nytt textfält och lägger det i en variabel tf.text = "Hej igen... Nu i rött!"; // Anger vilken text som ska visas i textfältet tf.textcolor = 0xFF0000; // Färgen anger man i hexadecimal-form stage.addchild(tf2); // Gör så att textfältet i tf läggs ut på scenen För att ange en färg i AS3 skriver man 0x följt att ett tal i hexadecimal-form. Genom att använda klassen TextFormat kan man ändra storleken på texten i ett textfält: var mittformat:textformat = new TextFormat(); mittformat.size = 35; var mintext:textfield = new TextField(); mintext.defaulttextformat = mittformat; mintext.text = "Hej igen... Nu stort!"; mintext.width = 500; stage.addchild(mintext); [Hur man göra för att ändra font, kommer] Att placera ett textfält på scenen För att kunna placera ett textfält på scenen så måste man förstå hur koordinatsystemet fungerar i programmeringssammanhang. I vanliga fall så ser ett koordinatsystem ut på följande sätt: [bild] Men i programmeringssammanhang ser det ut så här: [bild] Origo (d.v.s. där x = 0 och y = 0) ligger alltså högst upp till vänster. Det är något man måste tänka på när man gör program som visar sakar i Flash-fönstret. 17

18 Del 5 - Skapa egna funktioner kommer Kodblock och indentering All vår programkod ligger i kodblock. Ett kodblock startas med en startklammer och avslutas med en slutklammer. Start- och slutklamrar kallas även för måsvingar. För att göra det lättare att hålla ordning på sina kodblock och alla klamrarna är det viktigt med indentering av sin programkod! Indentering betyder att man flyttar in den kod som ligger inuti ett block, antingen med en tab eller med t.ex. 3 mellanslag. // Startklamer. Ett kodblock startar. var tal:int = 38; // Koden i ett kodblock ska ligga intabbad så man tydligt trace(tal); //... ser de olika kodblocken och dess kod. // Slutklamer. Ett kodblock slutar. Det finns olika typer av kodblock som vi kommer att jobba med. Här tre exempel: - package Kodblocket på högst nivå. Kan vara namngivet eller utan namn. - class En klass ligger i ett paket och kan innehålla variabler, konstanter o funktioner. - function En funktion ligger ofta i en klass. (Kallas då även för metod.) Här en skiss på hur kodblocken förhåller sig till varandra: package // package-kodblocket startar class EttKlassnamn // class-kodblocket startar function ettfunktionsnamn():void // function-kodblocket startar // Slut på function-kodblocket // Kan finnas flera funktioner i en klass // Slut på class-kodblocket // Slut på package-kodblocket Här ungefär samma sak men med lite mer detaljer: package public class MinKlass private var minvar1:int; private var minvar2:string; // Ett paket är ofta utan namn (för oss) // Ett klassnamn börjar ofta med stor bokstav // Variabler som kan användas i alla funktioner //... som finns i klassen private function minfunktion():void // En funktion börjar ofta med liten bokstav var lokalvariabel:number; // En variabel som bara kan användas i minfunktion 18

19 // Slut på minfunktion-blocket // En klass kan ha många funktioner // Slut på MinKlass-blocket // Slut på paketet-blocket Orden public och private används för att ange vad som ska ses utanför klassen och vad som bara ska kunna användas inne i klassen. Sätter man public framför ett funktions-namn, kan man komma åt funktionen utanför klassen, d.v.s. från en annan klass. Skriver man private, är det inte möjligt att komma åt funktionen från en annan klass. Vi behöver inte fördjupa oss i detta nu. Det räcker med att komma ihåg att vi sätter public framför class och private framför function (och även framför var för de variabler som deklareras utanför funktioner). Man kan strunta i att skriva private framför function, det ger inget fel vid kompileringen men däremot en varning. Till en början skriver vi vår kod i funktionen init som genereras av FlashDevelop när man skapar ett nytt AS3- projekt. Så här ser det ut i filen Main.as (kommentarerna är tillagda av mig) som genereras av FlashDevelop när man skapar ett AS3-projekt: package import flash.display.sprite; import flash.events.event; // Importerar en klass för grafikhantering // Importerar en klass för händelsehantering public class Main extends Sprite // Skapar en klass Main som utökar klassen Sprite public function Main():void // Anropas när ett objekt skapas av klassen Main if (stage) init(); // Kollar om scenen är redo, i så fall anropas init else addeventlistener(event.added_to_stage, init); // Annars vänta och sen anropa init private function init(e:event = null):void // Hit kommer vi när scenen är redo removeeventlistener(event.added_to_stage, init); // Tar bort händelselyssnaren // entry point // Här kan du börja att skriva DIN KOD // Slut på funktionen init // Här kan du skriva en egen funktion. // Alltså utanför andra funktioner, men inuti klassen Main // Slut på klassen Main // Slut på paketet Det är viktigt att hålla rätt på alla start- och slutklamrar! Det är ett mycket vanligt fel i början att det blir knas med klamrarna. För att få alla klamrar på rätt plats, gör indenteringen noga!!! 19

20 Att skapa en funktion Det är viktigt att kunna skapa/skriva sina egna funktioner. Det gör att man kan dela upp sin kod och lättare återanvända den i andra program. (Även för händelsehantering i AS3, som vi kommer till senare, är det nödvändigt att kunna skriva egna funktioner.) När man skapar en variabel skriver man: var variabelnamn:datatyp; När man skapar en funktion skriver man: function funktionsnamn():datatyp // OBS: utan ; //Kodblock Raden med function funktionsnamn():datatyp kallas för funktionshuvud. Kodblocket inom klamrarna (måsvingarna) kallas för funktionskropp. Både när man anropar en funktion och när man skapar en funktion måste man ha () direkt efter funktionsnamnet. Datatypen som anges efter : när man skapar en funktion bestämmer vad för slags returvärde som ska skickas tillbaka från funktionen. Mer om det nedan. Ska funktionen inte returnera något så skriver man void istället för en datatyp. Här ett exempel: function entestfunktion():void // kodblock trace("hej från funktionen entestfunktion!"); trace("inte mycket som görs i denna funktion..."); trace("hej då funktionen entestfunktion!"); Funktionen entestfunktion kan vi anropa från funktionen init som skapats av FlashDevelop: function init(e:event = null):void // e:event = null kan vi bortse från // I funktionen init kan vi göra anrop till andra funktioner trace("nu startar init-funktionen."); trace("strax ska vi göra ett anrop till funktionen ettförstaexempel."); entestfunktion(); // Ett anrop till funktionen entestfunktion trace("nu är vi tillbaka i init-funktionen"); trace("nu är det slut på init-funktionen"); Prova gärna att skriva in koden ovan i FlashDevelop. Kör programmet. Då ska följande utskrift ges i output-panelen: Nu startar init-funktionen. Strax ska vi göra ett anrop till funktionen entestfunktion. Hej från funktionen entestfunktion! Inte mycket som görs i denna funktion Hej då från funktionen entestfunktion! Nu är vi tillbaka i init-funktionen. Nu är det slut på init-funktionen. 20

21 Alla våra program börjar i funktionen Main som anropar funktionen init. (Det är kod som skapas automatiskt av FlashDevelop när vi startar ett AS3-projekt.) I funktionen init kan vi skriva vilken kod vi vill. I exemplet ovan görs i init ett anrop till funktionen entestfunktion. När programmet kommer till den raden, hoppar det till den funktionen och kör programkoden som finns där. När programmet sen kommer till slutet av funktionen hoppas det tillbaka till den rad där anropet gjordes, alltså i funktionen init. Så långt hur man skapar en funktion utan returvärde och utan parametrar. Vad är en parameter? Det får du strax reda på. Att skapa en funktion med parametrar Nästa steg blir att skapa en funktion som anropas med ett argument, d.v.s det som anges mellan parenteserna vid ett funktionsanrop. Låt oss anta att funktionen heter visameddelande samt att den kräver en textsträng som argument. Anropet kan då se ut på följande sätt: visameddelande("halloj! Allt går bra."); // Argumentet är en textsträng En funktion som anropas med ett argument måste ha en slags variabel i sitt funktionshuvud som tar emot argumentet. Variabeln som tar emot ett värde vid ett funktionsanrop kallas för parameter. Namnet på parametern bestämmer man själv. Datatypen på parametern och på argumentet måste vara den samma. function visameddelande(textattvisa:string) : void trace("här är det som skickades till funktionen: " + textattvisa); Om argumentet "Halloj! Allt går bra." skickas med vid ett funktionsanrop till funktionen visameddelande läggs den texten in i parametern textattvisa. I funktionen kan vi sen använda textattvisa som vilken variabel som helst. Resultatet blir att vi får följande i output-panelen: Här är det som skickades till funktionen: Halloj! Allt går bra. Ett till exempel, denna gång är parametern av datatypen int (d.v.s. för heltal): function visatal(tal:int) : void trace("här är det som skickades till funktionen: " + tal); tal = tal * 10; trace("ett tal som är 10 gånger större: " + tal); Ett anrop till visatal kan se ut på följande sätt: visatal(38); // Argumentet 38 skickas med och läggs in i parametern tal Resultatet blir att vi får följande i output-panelen: Här är det som skickades till funktionen: 38 Ett tal som är 10 gånger större:

22 Hittills har vi skapat tre rätt meningslösa funktioner. Längre fram i kursen kommer du att se att vi måste kunna skriva egna funktioner för att kunna göra lite mer avancerade program. Därför är det viktigt att lära sig att skriva egna funktioner på ett grundligt sätt. Parameter med defaultvärde En sak som kan vara praktiskt i vissa situationer är att ge ett defaultvärde till en parameter. Det gör att man kan använda en funktion både med och utan argument. Ett exempel: function testmeddefaultvärde(tal:int = 10):void trace("parametern tal har värdet: " + tal); Funktionen ovan kan anropas på två sätt: Med ett heltal som argument Utan argument testmeddefaultvärde(4) testmeddefalutvärde() Anropas funktionen utan argument så ges parametern tal värdet 10 som default, eftersom det står = 10 i funktionshuvudet direkt efter datatypen, int, för parametern tal. Anropas funktionen med ett heltal som argument så kommer det talet att stoppas in i parametern tal, t.ex. 4. Även funktionen init som genereras av FlashDevelop har ett defaultvärde för parametern e, nämligen värdet null. (Värdet null betyder ett tomt värde.) Det gör att init kan anropas både med och utan argument. function init(e:event = null):void // Anropas init utan argument så får e värdet null Mer om null och datatypen (klassen) Event kommer i avsnittet om händelsehantering. Funktion för att visa text i Flash-fönstret En funktion som kan vara rätt användbar är en som visar en text i ett textfält på scenen, d.v.s. i Flash-fönstret. function visatext(texten:string, x:int, y:int) : void var tf:textfield = new TextField(); // Skapar ett nytt textfält-objekt tf.text = texten; // Anger vilken text som ska finnas i textfältet tf.x = x; // Anger var textfältet ska placeras i x-led tf.y = y; // Anger var textfältet ska placeras i y-led stage.addchild(tf); // Gör så att tf läggs ut på scenen Funktionen visatext har tre stycken parametrar, en för texten som ska visas i Flash-fönstret samt x och y för positionen för textfältet. Genom att anropa funktionen flera gånger med olika argument så visas flera texter på scenen: function init(e:event = null):void // e:event = null kan vi bortse från visatext("halloj!", 10, 50); // Visar en text på positionen 10, 50 visatext("tjena!", 100, 200); // Visar en text på positionen 100,

23 visatext("hejhopp!", 500, 400); // Visar en text på positionen 500, 400 Vid ett anrop kopieras argumenten över till parametrarna i funktionen. Alltså vid första anropet så kopieras argumentet "Halloj!" till parametern texten, argumentet 10 till parametern x och argumentet 50 till parametern y. På det sättet kan vi använda funktionen visatext till att skriva olika texter på olika ställen på scenen. Texten som ska visas och var den ska hamna styr vi genom argumenten som skickas med vid funktionsanropet. Att skapa en funktion med returvärde Vissa funktioner returnerar (skickar tillbaka) ett returvärde. Det kan t.ex. handla om en funktion som gör en beräkning och sen skickar tillbaka resultatet av beräkningen, ofta ett decimaltal. För att skapa en funktion med returvärde skriver man på följande sätt: function funktionsnamn(par1:datatyp, par2:datatyp,...):datatyp_för_returvärdet return returvärde; // Returvärdet kan t.ex. vara ett tal eller en text. Datatypen för returvärdet kan t.ex. vara int (då måste ett heltal returneras) eller String (då måste en textsträng returneras). Låt oss se ett exempel på en funktion som har ett returvärde: function ettexempelmedreturvärde():string var s:string = "Hej från funktionen ettexempelmedreturvärde!"; return s; Funktionen ettexempelmedreturvärde kan anropas från funktionen init: function init(e:event = null):void var t:string = ettexempelmedreturvärde(); // Returvärdet läggs i variabeln t trace("returvärdet är: " + t); Returvärdet måste vara av datatypen String eftersom vi har ":String" i funktionshuvudet. Därför har vi en variabel med datatypen String framför funktionsanropet för att fånga upp returvärdet som kommer från funktionen ettexempelmedreturvärde när programmet körs. Resultatet blir att följande visas i output-panelen: Returvärdet är: Hej från funktionen ettexempelmedreturvärde! Låt oss se ett exempel på en funktion som har både parameter och ett returvärde: function kvadrat(tal:int):int 23

24 var talikvadrat:int = tal * tal; return talikvadrat; Funktionen kvadrat kan anropas från funktionen init på följande sätt: function init(e:event = null):void // e:event = null kan vi bortse från var svar:int = kvadrat(5); // Ett anrop till en funktion vi skapat ovan trace("argumentet i kvadrat blir: " + svar); Det som händer när koden ovan körs är följande: 1. Programmet kommer in i funktionen init 2. Ett anrop till funktionen kvadrat görs, argumentet 5 skickas med 3. Argumentet 5 kopieras och läggs in i parametern tal 4. Koden i funktionen kvadrat körs, variabeln talikvadrat får värdet Värdet i variabeln talikvadrat skickas tillbaka som ett returvärde till funktionsanropet i init 6. Returvärdet läggs in i variabeln svar som står framför funktionsanropet till kvadrat 7. En utskrift till output-panelen görs för att presentera returvärdet med hjälp av funktionen trace Försök att komma ihåg de 7 stegen! De gäller för de flesta funktionsanrop där det finns argument/parameter och returvärde. Vad är funktioner bra för? Jo, för att: 1. Få bättre struktur och överblick på sin kod (när man har ett stort program) 2. Undvika att ha samma kod på flera ställen 3. Lättare kunna återanvända kod 4. Kunna jobba med händelsehantering i AS3 OBS: Det är superviktigt att kunna anropa och skriva egna funktioner för att komma vidare i kursen och för att lära sig mer om programmering. Öva på det mycket så att du kan det som ett rinnande vatten. 24

25 Del 6 - Klasser och objekt Att förstå och kunna använda klasser och objekt är extremt viktigt i de flesta moderna programspråk. Det kommer förmodligen att ta ett tag tills att du förstår begreppen klass och objekt fullt ut. Läs gärna teoriförklaringarna flera gånger och jobba noga med övningarna utan att hasta fram, då har du goda chanser att lära dig denna centrala del av programmeringskonsten. En klass är en samling kod. Ofta har en klass både variabler och funktioner. Variablerna kallas vanligtvis för egenskaper och funktionerna kallas för metoder när de ligger i en klass. class KlassNamn var egenskapnamn1:datatyp; var egenskapnamn2:datatyp; // Kan användas i alla metoder function metodnamn1( ):datatyp function metodnamn1( ):datatyp Det finns många färdiga klasser i AS3, t.ex. TextField som vi sett exempel på ovan för att visa text i Flashfönstret. När vi vill visa en text i Flash-fönstret så skapar vi först ett objekt av klassen TextField, sen använder vi det objektet för att komma åt egenskaper som finns i textfält-objekt, t.ex. text, x, y och border. För att komma åt en egenskap i ett objekt skriver man objektnamnet, en punkt och sen egenskapsnamnet. Det kallas för punktnotation. var tf:textfield = new TextField(); // Skapar ett nytt textfält-objekt med namnet tf tf.text = "Hejhej"; tf.x = 10; tf.y = 20; tf.border = true; Även för att anropa en metod i ett objekt använder man punktnotation: // Ger egenskapen text i objektet tf ett värde // Ger egenskapen x i objektet tf ett värde // Ger egenskapen y i objektet tf ett värde // Ger egenskapen border i objektet tf ett värde tf.addeventlistener( ); stage.addchild(tf); // Anropas metoden addeventlistener i objektet tf // Anropar metoden addchild i objektet stage (Objektet stage representerar scenen och skapas automatisk när man startar ett AS3-program.) En klass består för det mesta av två delar: Del 1: För att lagra data (Egenskaper kallas även instansvariabler eller attribut) Del 2: För att kunna utföra saker (Metoder) 25

26 De flesta klasser är som en slags mall som används för att skapa objekt. Det är först när ett objekt skapas av en sådan klass som egenskaperna kan fyllas med värden. Alla objekt av en klass har sina egna värden i egenskaperna. T.ex. kan vi ha flera textfältobjekt som alla olika värden i egenskaperna text, x och y. [kod-ex] [exempel och uml-diagram] Man kan säga att en klass är en datatyp som gör det möjligt att hålla flera värden i egenskaper och som har metoder för att göra olika saker, t.ex. att bearbeta värdena (datat) som finns i egenskaperna. Om vi tänker oss en klass Person med variabler för att lagra egenskaperna vikt, längd och ålder så kan vi se Kalle som ett objekt av klassen Person med egenskaperna vikt 80, längd 180, ålder 18. Ett annat objekt av klassen Person kan vara Anna med egenskaperna vikt 75, längd 185, ålder 19. Metoder i klassen Person kan vara gå, äta, prata osv. Alla objekt av klassen Person har samma metoder och egenskaper, men egenskaperna håller olika värden för varje objekt. Lite förenklat kan man göra följande förklaring av egenskaper och metoder i objekt: Egenskaper: Metoder: Det objektet ÄR Det objektet KAN Klassmetoder vs instansmetoder Nyss lärde vi oss att man från en klass skapar objekt som man sen använder för att komma åt egenskaper och metoder genom att använda punktnotation. Alltså: Steg 1: Skapa objekt av klassen Steg 2: Använda punktnotation var objektnamn:klassnamn = new Klassnamn() objektnamn.egenskap eller objektnamn.metod() MEN Vissa metoder kan man använda genom att direkt skriva klassnamnet, följt av en punkt och sen namnet på den metod man vill anropa! T.ex. Math.random() för att anropa metoden random i klassen Math. Alltså, man hoppar över steg 1 och behöver inte skapa ett objekt av Math för att anropa random. En metod som anropas genom att skriva Klassnamn.metodnamn() kallas för klassmetod eller static-metod (p.g.a. att man använder ordet static när man skapar en sådan metod). I klassen Math är alla metoder klassmetoder. I vissa klasser så finns det både klassmetoder och vanliga metoder, s.k. instansmetoder. (T.ex. klassen Date har både instansmetoder och klassmetoder. En klassmetod markeras med [static] i dokumentationen: ) Här exempel på hur man anropar en klassmetod respektive en instansmetod: var slump:number = Math.random(); // Anropar en klassmetod via klassen Math var tf:textfield = new TextField(); // Skapar ett textfält-objekt tf.addeventlistener(mouseevent.click, klick); // Anropar en instansmetod via objektet tf De flesta klasser fungerar som en slags mall utifrån vilken man kan skapa objekt genom att skriva: 26

27 var objektnamn:klassnamn = new Klassnamn(); Man använder sen variabeln objektnamn för att komma åt egenskaper (variabler) och anropa metoder (funktioner) som finns i klassen och alltså även i objekt som skapas av klassen. objektnamn.enegenskap = ett_värde; var x:datatyp = objektnamn.enegenskap; // Läser av värdet på en egenskap objektnamn.enmetod() // Anropar en metod i ett objekt // Sätter ett värde till en egenskap i ett objekt Anledningen till att man först måste skapa ett objekt av en klass för att kunna använda det som finns i klassen är att det ska göras plats för de egenskaper som finns i klassen. Det sker när man skriver new Klassnamn(). Klass: Objekt: Som en mall utifrån vilken man kan skapa objekt. Har egenskaper (variabler) för att kunna lagra data som är unika för varje objekt. Har metoder (funktioner) som utför olika saker. Har sitt data lagrat i egenskaperna (variabler) som finns i klassen. Har metoder som kan användas till att t.ex. ändra värdet på en egenskap i objektet. [bild] En gång till: Metoder som anropas med Klassnamn.metodnamn() kallas för klassmetoder eller static-metoder. Ex: Math.random(), Math.round(...) Metoder som anropas med objektnamn.metodnamn() kallas för instansmetoder eller bara metoder. Ex: tf.addeventlistener(...), stage.addchild(...) Varför kallas en metod som anropas via ett objekt för instansmetod? Jo, för att instans är ett annat ord för objekt. Man skulle lika gärna kunna säga objektmetod, men av någon anledning så säger man inte så, utan man använder ordet instansmetod eller bara metod. Konstruerare / Konstruktor När man skapar ett objekt av en klass, skriver man new Klassnamn(). Det som händer då är att en funktion/metod med samma namn som klassnamnet anropas, därför använder man (). En funktion/metod som har samma namn som klassen kallas för konstruerare eller konstruktor. Det är nämligen den som konstruerar ett objekt av den aktuella klassen. Vi återkommer till konstruerare när vi ska lära oss att skriva egna klasser. Än så länge så skriver vi vår kod i klassen Main som genereras av FlashDevelop. När vi kör ett sådant program så skapar Flash-spelaren ett Main-objekt och anropar dess konstruerare, alltså funktionen/metoden som heter Main (samma som klassnamnet). Låt oss se på en Main-klass igen: package import flash.display.sprite; import flash.events.event; // Importerar en klass för grafikhantering // Importerar en klass för händelsehantering 27

Användarhandledning Version 1.2

Användarhandledning Version 1.2 Användarhandledning Version 1.2 Innehåll Bakgrund... 2 Börja programmera i Xtat... 3 Allmänna tips... 3 Grunderna... 3 Kommentarer i språket... 4 Variabler... 4 Matematik... 5 Arrayer... 5 på skärmen...

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

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

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

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

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

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

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

Design av interaktiv multimedia. Läs i förväg om det som övningarna kommer att beröra. Träna hemma både före och efter övningarna.

Design av interaktiv multimedia. Läs i förväg om det som övningarna kommer att beröra. Träna hemma både före och efter övningarna. Använd olika lager. Döp lagren! Organisera era bibliotek! Design av interaktiv multimedia Ge era symboler instansnamn för att hitta dem med AS. Nytt för denna kurs: Ingen ActionScript-kod i.fla-filen!

Läs mer

Exempel: Exempel: Exempel: Exempel: $djur=array("ko","katt","älg"); foreach ($djur as $d) { echo $d. " "; } Resultat. ko katt älg

Exempel: Exempel: Exempel: Exempel: $djur=array(ko,katt,älg); foreach ($djur as $d) { echo $d.  ; } Resultat. ko katt älg Loopar och upprepning Vill man upprepa kod flera gånger så istället för att skriva en massa rader så kan man lägga koden i ett kodblock som man sedan loopar. Det finns ett par olika typer av loopar, FORloop,

Läs mer

Laboration 1 Introduktion till Visual Basic 6.0

Laboration 1 Introduktion till Visual Basic 6.0 Laboration 1 Introduktion till Visual Basic 6.0 Förberedelse Förbered dig genom att läsa föreläsningsanteckningar och de kapitel som gåtts igenom på föreläsningarna. Läs även igenom laborationen i förväg.

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

public class Main extends MovieClip { var hillpage:hillpage; var ifpage:ifpage;

public class Main extends MovieClip { var hillpage:hillpage; var ifpage:ifpage; I förra övningen skapade du ett nytt Movie Clip som du döpte till IfPage och bland annat lade ut lite textrutor på. I den här övningen ska vi med hjälp av det du gjorde i förra övningen skapa ett spel

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

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

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

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

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

Bankkonto - övning. Övning 2 Skriv en metod, geträntan, som returnerar räntan. Bankkonto - övning Övningar att göra efter lärardemostration. Filen bankkonto.zip innehåller ett projekt med klassen Bankkonto. Zippa upp denna fil och öppna projektet i BlueJ och skriv vidare på klassen

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

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

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

Administrativt. Programmeringsteknik för I1. Dagens program. Objektorienterad programmering Programmeringsteknik för I1 Övning 2 Administrativt Övningsgrupp 2 (Sal E32/D32) Johannes Hjorth hjorth@nada.kth.se Rum 4538 på plan 5 i D-huset 08-790 69 02 Kontrollera att ni har fått Lab2 inrapporterad

Läs mer

Att förstå hur man konstruerar modulära program Att kunna skapa nya funktioner Att förstå hur data skickas mellan funktioner

Att förstå hur man konstruerar modulära program Att kunna skapa nya funktioner Att förstå hur data skickas mellan funktioner Lektion 4, del 1, kapitel 10 Funktioner i JavaScript Inlärningsmål Att förstå hur man konstruerar modulära program Att kunna skapa nya funktioner Att förstå hur data skickas mellan funktioner Introduktion

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

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

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

Att använda pekare i. C-kod

Att använda pekare i. C-kod Att använda pekare i C-kod (Bör användas av de som känner sig lite hemma med C-programmering!) Rev 1, 2005-11-23 av Ted Wolfram www.wolfram.se Syfte: Man kan tycka att det är komplicerat att använda pekare

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

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

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

Programstruktur och terminologi. Programmet producerar följande utskrift i terminalfönstret: Ett Javaprogram består av en eller flera klasser // 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

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

(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 2 Programmeringsteknik och C DD1316. Mikael Djurfeldt

Föreläsning 2 Programmeringsteknik och C DD1316. Mikael Djurfeldt Föreläsning 2 Programmeringsteknik och C DD1316 Mikael Djurfeldt Föreläsning 2 Programmeringsteknik och C Python introduktion Utskrift Inläsning Variabler Datatyp Aritmetiska operatorer Omvandling

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

Labb i Datorsystemteknik och programvaruteknik Programmering av kalkylator i Visual Basic

Labb i Datorsystemteknik och programvaruteknik Programmering av kalkylator i Visual Basic Labb i Datorsystemteknik och programvaruteknik Programmering av kalkylator i Visual Basic Inledning Starta Microsoft Visual Studio 2005. Välj create Project Välj VB + Vindows Application och välj ett nytt

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

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

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

Extramaterial till Matematik Y

Extramaterial till Matematik Y LIBER PROGRAMMERING OCH DIGITAL KOMPETENS Extramaterial till Matematik Y NIVÅ ETT Taluppfattning och tals användning ELEV Det finns många olika programmeringsspråk. Ett av dem är Python, som du ska få

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

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 2. Täcker material från lektion 1, 2, 3 och 4:

Föreläsning 2. Täcker material från lektion 1, 2, 3 och 4: (22 januari 2016 F2.1 ) Föreläsning 2 Täcker material från lektion 1, 2, 3 och 4: Datatyper Aritmetik Tecken och strängar Klasser, Objekt Metoder Villkor, villkorssatser och iterationer main-metoden Kodstandard

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

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

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

Variabler och konstanter

Variabler och konstanter Variabler och konstanter Deklareras automatisk när man stoppar in data i dem. X = 7 Y = A Z = Kalle Definieras av att de har: ett namn (X) en datatyp (Integer) ett värde (t.ex. 7) Lagras i datorns minne!

Läs mer

Programmering, grundkurs, 8.0 hp, Elektro, KTH, hösten 2010. Programmering: att instruera en maskin att utföra en uppgift, kräver olika språk:

Programmering, grundkurs, 8.0 hp, Elektro, KTH, hösten 2010. Programmering: att instruera en maskin att utföra en uppgift, kräver olika språk: Föreläsning 1 OH: Övergripande information Programmering: att instruera en maskin att utföra en uppgift, kräver olika språk: * maskinspråk = ettor och nollor, kan bara en maskin förstå. * programmeringsspråk

Läs mer

Objektorienterad programmering

Objektorienterad programmering Objektorienterad programmering Föreläsning 7 Copyright Mahmud Al Hakim mahmud@webacademy.se www.webacademy.se Agenda Konstanter och readonly Statiska klasser Standardklassen Math Parameteröverföring Referensen

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

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

725G61 - Laboration 5 Grundläggande objektorientering. Johan Falkenjack 725G61 - Laboration 5 Grundläggande objektorientering Johan Falkenjack November 26, 2013 1 Inledning I labb 1-3 tittade vi på de grundläggande byggstenarna i programmering. Vi lärde oss om variabler, styrstrukturer

Läs mer

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

Grundläggande programmering med C# 7,5 högskolepoäng Grundläggande programmering med C# 7,5 högskolepoäng Provmoment: TEN1 Ladokkod: NGC011 Tentamen ges för: Omtentamen DE13, IMIT13 och SYST13 samt öppen för alla (Ifylles av student) (Ifylles av student)

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

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Exempelduggan. Luffarschack. Koda spel

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Exempelduggan. Luffarschack. Koda spel 732G11 Linköpings universitet 2011-02-15 1 2 3 4 Extrapass Extrapass håller på att bokas. Blir 3-4 st. och öppet för alla. Mer info på kursmailen när bokningen är klar. i Java En funktion i Java... public

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

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

Objektorienterad programmering Föreläsning 2

Objektorienterad programmering Föreläsning 2 Objektorienterad programmering Föreläsning 2 Copyright Mahmud Al Hakim mahmud@webacademy.se www.webacademy.se Agenda Inläsning av data via dialogrutor Repetitioner (While-satsen och For-satsen) Nästlade

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

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

Grundläggande programmering, STS 1, VT Sven Sandberg. Föreläsning 12 Grundläggande programmering, STS 1, VT 2007. Sven Sandberg Föreläsning 12 I torsdags: Klassen TelefonKostnad Exemplifierar objektorienterad design, metoder, konstruktorer static Standardklassen Math Matematiska

Läs mer

Alla filer som bearbetar PHP script ska avslutas med ändelsen.php, exempelvis ska en indexsida till en hemsida heta index.php

Alla filer som bearbetar PHP script ska avslutas med ändelsen.php, exempelvis ska en indexsida till en hemsida heta index.php Introlektion PHP är ett av de enklare språken att lära sig just pga. dess dynamiska struktur. Det används för att bygga upp båda stora och mindre system. Några vanliga system som använder sig av PHP är

Läs mer

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

Föreläsning 8 Programmeringsteknik och Matlab 2D1312/2D1305. Klass Object, instans av klass public/private Klassvariabler och klassmetoder Föreläsning 8 Programmeringsteknik och Matlab 2D1312/2D1305 Klass Object, instans av klass public/private Klassvariabler och klassmetoder 1 Array och ArrayList Arrayer och ArrayList är till för att innehålla

Läs mer

Programmera i C Varför programmera i C när det finns språk som Simula och Pascal??

Programmera i C Varför programmera i C när det finns språk som Simula och Pascal?? Programmera i C Varför programmera i C när det finns språk som Simula och Pascal?? C är ett språk på relativt låg nivå vilket gör det möjligt att konstruera effektiva kompilatorer, samt att komma nära

Läs mer

TENTAMEN I PROGRAMMERING. På tentamen ges graderade betyg:. 3:a 24 poäng, 4:a 36 poäng och 5:a 48 poäng

TENTAMEN I PROGRAMMERING. På tentamen ges graderade betyg:. 3:a 24 poäng, 4:a 36 poäng och 5:a 48 poäng TENTAMEN I PROGRAMMERING Ansvarig: Jan Skansholm, tel 7721012 Betygsgränser: Hjälpmedel: Sammanlagt maximalt 60 poäng. På tentamen ges graderade betyg:. 3:a 24 poäng, 4:a 36 poäng och 5:a 48 poäng Skansholm,

Läs mer

Platser för att skriva och testa kod online. Workshop om programmering i matematikkurser, version 0.7 senast sparat

Platser för att skriva och testa kod online. Workshop om programmering i matematikkurser, version 0.7 senast sparat Cheat sheets Nedan finns referensblad för fyra olika programmeringsspråk, som kan bli aktuella att använda i matematikundervisning. MATLAB är en välkänd programvara för att göra matematiska beräkningar,

Läs mer

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

Övningsuppgifter till föreläsning 2 Variabler och uttryck Sid 1 (5) Övningsuppgifter till föreläsning 2 Variabler och uttryck Syfte Syftet med övningsuppgifterna är att träna på: Aritmetik, variabler, tilldelning, scanf och printf Generellt Diskutera gärna uppgifterna

Läs mer

TENTAMEN PROGRAMMERING I JAVA, 5P SOMMARUNIVERSITETET

TENTAMEN PROGRAMMERING I JAVA, 5P SOMMARUNIVERSITETET UMEÅ UNIVERSITET Datavetenskap 010824 TENTAMEN PROGRAMMERING I JAVA, 5P SOMMARUNIVERSITETET Datum : 010824 Tid : 9-15 Hjälpmedel : Inga Antal uppgifter : 7 Totalpoäng : 40 (halva poängtalet krävs normalt

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

Programmering A C# VT 2010. Ett kompendie över Programmering A (50p) i c# Stefan Fredriksson 2010 02 08

Programmering A C# VT 2010. Ett kompendie över Programmering A (50p) i c# Stefan Fredriksson 2010 02 08 Programmering A C# VT 2010 Ett kompendie över Programmering A (50p) i c# Stefan Fredriksson 2010 02 08 Innehåll Hjälp och referenser... 3 Kap 1 Introduktion... 3 Steg för steg... 3 Kapitel 2 Variabler...

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

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

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

Översikt MERA JAVA OCH ECLIPSE. Uttryck och tilldelning. Uttryck och tilldelning. Uttryck och tilldelning. Uttryck och tilldelning Översikt Uttryck i tilldelningssatser Typer och typomvandling Klasser Metoder Konstanter Eclipse-tips MERA JAVA OCH ECLIPSE Institutionen för datavetenskap Programmering 1 Rita Kovordányi 2 public class

Läs mer

JavaScript. Innehåll. Historia. Document object model DHTML. Varför Javascript?

JavaScript. Innehåll. Historia. Document object model DHTML. Varför Javascript? Innehåll JavaScript En introduktion till skriptspråket JavaScript och till DOM Scripting Introduktion till JavaScript och DOM JavaScript Syntax DOM och DOM Scripting Händelsehantering och CSS Historia

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

Funktioner. Linda Mannila

Funktioner. Linda Mannila Funktioner Linda Mannila 13.11.2007 Vad kan vi nu? Primitiva datatyper Tal, strängar, booleska värden Samlingsdatatyp Listan Utskrift Indata Felhantering Intro till funktioner och moduler Villkorssatsen

Läs mer

Labora&on 2 Funk&oner, if och loop övningar/uppgi:er

Labora&on 2 Funk&oner, if och loop övningar/uppgi:er Labora&on 2 Funk&oner, if och loop övningar/uppgi:er 1M322 Webbteknik 2, 7,5hp Medieteknik 2017 Rune Körnefors rune.kornefors@lnu.se 1. Ladda ner arbetsdokument Till övningarna i denna labora&on finns

Läs mer

Kompilera och exekvera Javakod

Kompilera och exekvera Javakod Kompilera och exekvera Javakod Förberedelser För att kunna göra dessa övningar måste du ha installerat Java Development Kit, JDK, som bland annat innehåller Java kompilatorn, javac. Hur du installerar

Läs mer

Inledande programmering med C# (1DV402) Introduktion till C#

Inledande programmering med C# (1DV402) Introduktion till C# Introduktion till C# Upphovsrätt för detta verk Detta verk är framtaget i anslutning till kursen Inledande programmering med C# vid Linnéuniversitetet. Du får använda detta verk så här: Allt innehåll i

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

Typkonvertering. Java versus C

Typkonvertering. Java versus C Typer Objektorienterad programmering E Typkonvertering Typkonvertering Satser: while, for, if Objekt Föreläsning 2 Implicit konvertering Antag att vi i ett program deklarerat int n=3; double x = 5.2; Då

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

Objektorienterad programmering Föreläsning 4

Objektorienterad programmering Föreläsning 4 Objektorienterad programmering Föreläsning 4 Copyright Mahmud Al Hakim mahmud@dynamicos.se www.webbacademy.se Agenda Introduktion till objektorientering Klasser och Objekt Instansvariabler Metoder Introduktion

Läs mer

Objektorienterad programmering D2

Objektorienterad programmering D2 Objektorienterad programmering D2 Laboration nr 2. Syfte Att få förståelse för de grundläggande objektorienterade begreppen. Redovisning Källkoden för uppgifterna skall skickas in via Fire. För senaste

Läs mer

Laboration 10 - Eclipse

Laboration 10 - Eclipse Laboration 10 - Eclipse Avsikten med laborationen är att du ska träna på att använda paket, att du ska packa några klassfiler i en jar-fil och slutligen använda innehållet i en jar-fil från en annan klass

Läs mer

TUTORIAL: SAMLING & KONSOLL

TUTORIAL: SAMLING & KONSOLL TUTORIAL: SAMLING & KONSOLL Denna tutorial är en fortsättning på den tutorial där vi skapade klassen Car och sedan objekt av denna klass. Vi skall nu lära oss att lagra dessa objekt i en samling och även

Läs mer

Programmering. Den första datorn hette ENIAC.

Programmering. Den första datorn hette ENIAC. Programmering Datorn är bara en burk. Den kan inget själv. Hur får man den att göra saker? Man programmerar den. Människor som funderar ut program som fungerar. Datorn förstår bara ettor och nollor och

Läs mer

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper Tentamen Programmeringsteknik I 2016-03-17 Skrivtid: 1400 1900 Tänk på följande Skriv läsligt. Använd inte rödpenna. Skriv bara på framsidan av varje papper. Lägg uppgifterna i ordning. Skriv uppgiftsnummer

Läs mer

JavaScript del 5 Funktioner

JavaScript del 5 Funktioner JavaScript del 5 Funktioner När man skriver JavaScriptkod eller program i andra programmeringsspråk för den delen så kan det finnas anledningar till att man vill dela upp sitt stora program i flera mindre

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

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

I STONE. I Variabler, datatyper, typkonvertering. I Logiska och matematiska uttryck. I Metoder-returvärde och parametrar. I Villkorssatser if/else Förkunskaper från tidigare föreläsningar: Objektorienterad Programmering (TDDC77) Föreläsning IX: Klasser och Objekt, Instantiering Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2015 I STONE I Variabler,

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

Föreläsning 1 & 2 INTRODUKTION

Föreläsning 1 & 2 INTRODUKTION Föreläsning 1 & 2 INTRODUKTION Denna föreläsning Vad händer under kursen? praktisk information Kursens mål vad är programmering? Skriva små program i programspråket Java Skriva program som använder färdiga

Läs mer

C++ Funktioner 1. int summa( int a, int b) //funktionshuvud { return a+b; //funktionskropp } Värmdö Gymnasium Programmering B ++ Datainstitutionen

C++ Funktioner 1. int summa( int a, int b) //funktionshuvud { return a+b; //funktionskropp } Värmdö Gymnasium Programmering B ++ Datainstitutionen C++ Funktioner 1 Teori När programmen blir större och mer komplicerade är det bra att kunna dela upp programmet i olika delar som gör specifika saker, vilket kan göra programmet mer lättläst. Ett sätt

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

MATLAB. Python. Det finns flera andra program som liknar MATLAB. Sage, Octave, Maple och...

MATLAB. Python. Det finns flera andra program som liknar MATLAB. Sage, Octave, Maple och... Allt du behöver veta om MATLAB: Industristandard för numeriska beräkningar och simulationer. Används som ett steg i utvecklingen (rapid prototyping) Har ett syntax Ett teleskopord för «matrix laboratory»

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

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

L04.1 Marodören. Inledning. Mål. Genomförande. Uppgift 1 Hello World. Moment I

L04.1 Marodören. Inledning. Mål. Genomförande. Uppgift 1 Hello World. Moment I L04.1 Marodören Inledning Genom att öva sig på de grundläggande koncepten i JavaScript öppnas vägen allteftersom till de mer avancerade funktionerna. Man måste lära sig krypa innan man kan gå, även i JavaScript!

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

Programmering B med Visual C++ 2008

Programmering B med Visual C++ 2008 Programmering B med Visual C++ 2008 Innehållsförteckning 1 Repetition och lite nytt...5 I detta kapitel... 5 Programexekvering... 5 Loop... 5 Källkod... 6 Verktyg... 6 Säkerhetskopiera... 6 Öppna, kompilera,

Läs mer

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

Kort repetition. Programmeringsteknik för Bio1 och I1. Vad ska vi lära oss idag? Ett exempel Programmeringsteknik för Bio1 och I1 Övning 2 Kort repetition Övningsgrupp 3 (Sal E33) 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/2d1310/

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

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