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

Relevanta dokument
Classes och Interfaces, Objects och References, Initialization

Objektorienterad Programmering (OOP) Murach s: kap 12-16

TDIU01 - Programmering i C++, grundkurs

Användarhandledning Version 1.2

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

"Är en"-relation. "Har en"-relation. Arv. Seminarium 2 Relevanta uppgifter. I exemplet Boll från förra föreläsningen gällde

Visual Basic, en snabbgenomgång

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

TUTORIAL: KLASSER & OBJEKT

Laboration 1 - Grunderna för OOP i Java

TENTAMEN OOP

Objektorienterad programmering i Java I

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

TENTAMEN OOP

OOP Objekt-orienterad programmering

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

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

Objektorientering: Lagring, räckvidd och livstid

TENTAMEN OOP

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

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

Objektorienterad programmering Föreläsning 9. Copyright Mahmud Al Hakim Agenda (halvdag)

Programmering B med Visual C

Objektorienterad programmering

Föreläsning 8 - del 1: Objektorienterad programmering (forts.) - Exempel

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

Klasshierarkier - repetition

Föreläsning 8. Arv. Arv (forts) Arv och abstrakta klasser

Classes och Interfaces, Objects och References Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016

Objektorienterad Programmering (TDDC77)

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

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

Klassdeklaration. Metoddeklaration. Parameteröverföring

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Muddy. Funktioner / metoder. Punktnotation. Evalueringsordning

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

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

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

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

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

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

Arrayer (fält)

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

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

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

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

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

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

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

LÖSNINGSFÖRSLAG TENTAMEN

Java, klasser, objekt (Skansholm: Kapitel 2)

Tentamen i TDP004 Objektorienterad Programmering Lösningsförslag

TDDE10 TDDE11, 725G90/1. Objektorienterad programmering i Java, Föreläsning 2 Erik Nilsson, Institutionen för Datavetenskap, LiU

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

TENTAMEN PROGRAMMERING I JAVA, 5P SOMMARUNIVERSITETET

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

i LabVIEW. Några programmeringstekniska grundbegrepp

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

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

a. Vilka av följande påståenden är riktiga? Observera att felaktigt valda påståenden ger poängavdrag. (4p)

Planering Programmering grundkurs HI1024 HT 2014

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

Outline. Objektorienterad Programmering (TDDC77) Signatur. Klassen calculator. Överlagring (overloading) Arv (inheritance) Ahmed Rezine

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

Prova på-laboration i Ruby

Introduktion till PHP

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

Objektorientering: Lagring och livstid

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

Objektorienterad Programmering (TDDC77)

Arv. Objektorienterad och komponentbaserad programmering

Imperativ programmering. Imperativ programmering konstruktioner i Lisp. Datastrukturer (kap ) arraystruktur poststruktur

Objektorienterad programmering i Java

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

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

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.

TDDD78 Objektorientering: Lagring och livstid

E02 "The Review" Föreläsning 2, HT2013 Grunderna, repetition. Johan Leitet. Kurs: 1dv403 Webbteknik I

TDDC77 Objektorienterad Programmering

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

DAT043 - Föreläsning 7

Beräkningsvetenskap föreläsning 2

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

Anteckningar 1: Grundläggande saker

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

729G04 Programmering och diskret matematik. Python 3: Loopar

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

Lösningsförslag övning 2.

Metodanrop - primitiva typer. Föreläsning 4. Metodanrop - referenstyper. Metodanrop - primitiva typer

TDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 6 Erik Nilsson, Institutionen för Datavetenskap, LiU

Omtentamen för TDA540 Objektorienterad Programmering. Institutionen för Datavetenskap CTH HT-16, TDA540. Dag: , Tid:

Tentamen i Grundläggande programmering STS, åk 1 lördag

Inledande programmering med C# (1DV402) Tärningarna ska kastas

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

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

Laboration A Objektsamlingar

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

Objektorienterad Programkonstruktion. Föreläsning 2 2 nov 2016

TDDE10 TDDE11, 725G90. Objektorienterad programmering i Java, Föreläsning 2 Erik Nilsson, Institutionen för Datavetenskap, LiU

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

OOP Objekt-orienterad programmering

Transkript:

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, Foreach loop, WHILE loop och Do While loop. Vilken typ som lämpar sig bäst beror på vad man vill göra. Ska man upprepa något ett bestämt antal gånger eller behöver en räknare så är FOR loopen att föredra. Ska man upprepa något ett obestämt antal gånger så är WHILE loopen att föredra. Foreachloopen är kraftfull och mycket användbar när man jobbar med objekt (mer om objekt senare). FOR loopen Består av tre delar. Först deklareras en s.k. räknare som ges ett startvärde. Sedan anges ett villkor som måste uppfyllas för att loopen ska köra. Sist så anges vad som ska ske efter varje upprepning (iteration). for ($i=0; $i<10; $i++) echo $i; 0123456789 I exemplet ovan skrivs värdet på räknaren $i ut. Loopen börjar på 0 och körs så länge $i är mindre än 10. I slutet av varje upprepning (iteration) så ökas $i med ett. OBS variabler såsom räknaren som deklareras inuti en loop eller annan kodblock är bara definierad inom detta block och lever så att säga bara där. Det går alldeles utmärkt att lägga andra loopar eller villkorssatser inuti en loop eller ändra startvärde, villkor och vad som ska ske efter varje upprepning. Foreach loop Denna loop lämpar sig extra bra till att iterera genom varje element i ett objekt vilket är perfekt för array er (fält) då dessa är objekt. Man kan se det som för varje element i arrayen kör följande block med kod. $djur=array("ko","katt","älg"); foreach ($djur as $d) echo $d. " "; ko katt älg I exemplet ovan så för varje element i $djur så kopieras värdet till $d (tilldelningen är by value) och sedan körs kodblocket. OBS vill vi ändra på innehållet i en array med foreach så måste vi ändra tilldelningen till by reference med tecknet &. Se exemplet nedan. $djur=array("ko","katt","älg"); foreach ($djur as &$d) $d = "En ". $d; echo $d. " "; En ko En katt En älg OBS I exemplet ovan så ändras värdena i originalarrayen. Detta enbart p.g.a & tecknet! While loop Denna loop lämpar sig bra när man inte vet hur många gånger loppen ska upprepas. OBS Det är lätt att skapa oändliga loopar så var försiktig. While loop består eg. bara av ett villkor och så länge detta uppfylls så upprepas loopen. $tal = 0; while ($tal < 10) echo $tal; $tal++; 0123456789 Exemplet ovan gör samma sak som FOR loopexemplet. Det finns en alternativ syntax för while loopen utan måsvingar som vissa anser är mer lättläst, se exempel nedan.

$tal = 0; while ($tal < 10): echo $tal; $tal++; endwhile; Samma exempel som innan fast med endwhile. 0123456789 $length=srtlen("kalle"); echo $length; I Exemplet ovan används funktionen strlen() som returnerar antalet tecken i en textsträng. Textsträngen anges som inparameter inom parentesen. 5 Do While loop En vanlig While loop kontrollerar villkoret före varje iteration. Ett logiskt alternativ är att göra det efter varje iteration. Alltså kommer koden i en Do While loop alltid att köras minst en gång medan koden i en While loop kan $tal = 0; do echo $tal; while ($tal>1) 0 skippas helt ifall villkoret inte uppfylls. Funktioner En funktion består av kod som placeras i ett namngivet kodblock. Denna kod kan sedan när som helst anropas för att köras. Detta är perfekt för att återanvända kod, exempelvis ifall man ska utföra något ofta så istället för att upprepa flera rader kod så kan man lägga dessa i en funktion och anropa funktionen (en rad kod). I PHP finns det massvis med inbyggda funktioner för att göra olika saker. Undersök alltid ifall det finns en färdig funktion i PHP innan du skriver en egen för att göra samma sak (i onödan). $name = "Jesper"; $partial=substr($name,1,4); echo $partial; I Exemplet ovan används funktionen substr() som returnerar en del av en textsträng. Funktionen tar en textsträng som inparameter följt av startposition (index börjar på noll) och antal tecken som man vill ha av textsträngen. $name = "JeSper"; echo strtoupper($name); espe I Exemplet ovan används funktionen strtoupper() som tar en textsträng som inparameter och returnerar samma textsträng med versaler (stora bokstäver). $name = "JeSper"; echo strtolower($name); JESPER jesper I Exemplet ovan används funktionen strtolower() som tar en textsträng som inparameter och returnerar samma textsträng med gemener (små bokstäver). Sträng funktioner Mycket i PHP handlar om stränghantering. Det finns massvis med användbara PHP funktioner som underlättar vid stränghantering.

användbara funktioner för att manipulera och hantera array'er. $result = strpos("jesper","e"); echo $result; if(strpos("hej", "f") ==false); echo "Error"; 1 Error I exemplet ovan används funktionen strpos() som används till att hitta första positionen av en s.k. substring (mindre del av en sträng eller tecken) i en annan sträng. I exemplet så letar vi efter första positionen för tecknet e i strängen "Jesper" vilket returnerar positionen 1 som är index i strängen. Finns inte den eftersökta textsträngen så returneras false vilket de två sista raderna illustrerar. Matematik funktioner PHP innehåller en mängd användbara matematikfunktioner och användbara konstanter. echo round(m_pi); echo round(m_pi,3); I exemplet ovan används funktionen round() som används för att runda av decimaltal. I exemplet används matematikkonstanten M_PI som är ett fördefinierat namn för konstanten pi. Funktionen rundar av till heltal om inget annat anges men man kan även ange antal decimaler som ska användas (se rad 2). print rand(1,10); 3 3,142 I exemplet ovan används funktionen rand() som används för att generera ett slumptal, i detta fall ett tal mellan 1 och 10. Anges inga intervall så slumpas ett tal mellan 1 och 32767. Array funktioner Array'er (eller fält) är kraftfulla datastrukturer som används väldigt mycket. Det finns flera 4 $animals = array(); array_push($animals, "Cat"); array_push($animals, "Dog"); print count($animals); I exemplet ovan används funktionen array() som för att skapa en array. Sedan används funktionen array_push() som används för att lägga till ett element i slutet av en array. Sist så används funktionen count() returnerar antalet element i en array. $tal = array(1,6,3,8,5,9,0); sort($tal); print join(",", $tal); I exemplet ovan används funktionen sort() som sorterar en array. En annan variant är funktionen rsort() (reverse sort) som sorterar i omvänd ordning. Funktionen join() används till att lägga ihop alla element i en array med valfritt tecken som lim (i detta fall komma tecknet) Skapa egna funktioner Genom att skapa egna funktioner så kan vi återanvända kod och skapa snyggare kod samt skriva mindre. I exemplet ovan skapar vi en egen funktion med namnet helloworld som skriver ut en textsträng. Vi anropar funktionen genom att skriva helloworld(). Observera att vår 2 0,1,3,5,6,8,9 function helloworld() echo "Hello world!"; helloworld(); Hello World!

funktion inte tar emot någon inparameter (argument) och returnerar inte heller något. Oftast vill man att en funktion ska returnera ett värde för att kunna använda funktionen på ett mer flexibelt sätt. function test() return "Hej!"; echo test(); I exemplet ovan skapar vi en egen funktion med namnet test som till skillnad från förra exemplet returnerar textsträngen Hej!. Detta sker med kodordet return. Det går alldeles utmärkt att returnera variabler och objekt också. När vi anropar funktionen så skrivs inget ut utan vi får en textsträng som vi skriver ut med echo. Hej! function aboutme($name, $age) echo "Hej $name, du är $age"; aboutme("jesper", 35); Hej Jesper, du är 35 år I exemplet ovan skapar vi en egen funktion med namnet aboutme som tar två inparametrar. När vi anropar funktionen så anges inparametrarna i parentesen skiljt med kommatecken. OBJEKT PHP är ett objektorienterat språk och man pratar ibland om objektorienterad programmering (OOP). Ett objekt kan man se som ett paket som kan innehålla variabler och funktioner. När man pratar om objekt så kallar man variabler som hör till ett objekt för egenskaper, medlemsvariabler eller attribut och funktioner kallas ibland för metoder. I de allra flesta objektorienterade programmeringsspråken så är faktiskt allt objekt, även vanliga "variabler" och funktioner. För att skapa egna objekt så måste vi skapa klasser. En klass kan man se som en byggritning/beskrivning av ett objekt. Skapar man nya objekt så kallas det för en instans av en klass. class Frukt public $antal = 3; public $typ; $banan = new Frukt(); $banan >typ = "banan"; print $banan >antal; print $banan >typ; I exemplet ovan skapas klassen Frukt med det reserverade ordet class. Klassen har två medlemsvariabler. Ett nytt objekt $banan av typen Frukt skapas med reserverade ordet new. För att komma åt medlemsvariabler används >. class Frukt public function construct($t) $this >typ=$t; public $typ; 3 banan $banan = new Frukt("banan"); print $banan >typ; banan Objekt kan som sagt även innehålla funktioner. I exemplet ovan skapas en speciell funktion med det reserverade namnet construct. Denna funktion är en konstruktor som körs när man skapar ett nytt objekt. En konstruktor är användbar för att initialisera ett objekt och ge dess medlemsvariabler lämpliga värden. Det reserverade ordet $this hänvisar till det aktuella objektet. När ett nytt objekt med

namn $banan av typen Frukt skapas med det reserverade ordet new så anropas konstruktorn. Konstruktorn i exemplet tar en textsträng som inparameter och tilldelar medlemsvariabeln $typ värdet av inparametern. class Frukt public function skriv($t) echo $t; Hej! $banan = new Frukt(); $banan > skriv("hej!); Ett sista exempel för att illustrera funktioner i ett objekt (metoder). Här skapas ett nytt objekt $banan av typen Frukt. Sedan anropas metoden skriv som tar en inparameter och skriver ut den. Exemplet visar tre användbara metoder. is_a() kontrollerar ifall ett objekt är en instans av en viss klass. Metoden property_exists() kontrollerar ifall objektet har namngiven medlemsvariabel. Metoden method_exists() kontrollerar ifall objektet har namngiven metod. Alla metoder anropas med objektets namn först följt av en textsträng. Arv Inom OOP så kan man använda något som kallas arv (inheritance på engelska). Detta är användbart då vi kanske har en klass som är en specialvariant av en annan klass. Exempelvis ifall vi har en generell klass Bil och en klass Lastbil. Då är det praktiskt ifall vi kan ange att klassen Lastbil automatiskt ska ha många av egenskaperna och metoderna som Bil har. Detta kan vi göra genom arv och då används det reserverade ordet extends i PHP. Objekt och klassmetoder Det finns ett antal nyttiga metoder som är användbara då vi jobbar med objekt. class Person function construct($name) $this >name = $name; public function dance() return "I'm dancing!"; $me = new Person("Kalle"); if (is_a($me, "Person")) echo "I'm a person, "; if (property_exists($me, "name")) echo "I have a name, "; if (method_exists($me, "dance")) echo "and I know how to dance!"; I'm a person, I have a name, and I know how to dance class Bil public $harmotor = "Ja"; class Lastbil extends Bil $fordon = new Lastbil(); print $fordon >harmotor; I exemplet ovan har vi klassen Lastbil som ärver av klassen Bil. Klassen Lastbil ärver egenskaper och metoder från klassen Bil. I detta fall är Lastbil en subklass (child) till Bil som då kan kallas superklass (parent eller basklass). Ibland vill man skriva över metoder som ärvs av en superklass. Detta görs enkelt genom att göra en ny implementation av metoden i subklassen. Ja

class Bil public function tuta() echo "tuut"; class Lastbil extends Bil public function tuta() echo "TUUT!"; TUUT! $fordon = new Lastbil(); $fordon >tuta(); I exemplet ovan har superklassens (Bil) metod tuta() skrivits över av subklassens metod med samma namn. Ibland kan det vara så att man vill förhindra subklasser från att skriva över metoder. Detta går att åstadkomma med det reserverade ordet final. class Bil final public function tuta() echo "tuut"; class Lastbil extends Bil public function tuta() echo "TUUT!"; tuut $fordon = new Lastbil(); $fordon >tuta(); I exemplet ovan har superklassens (Bil) metod tuta() inte skrivits över av subklassens metod med samma namn pga. Nyckelordet final. På liknande sätt så går det att skydda medlemsvariabler genom att skapa klasskonstanter som ej går att ändra på. Detta görs med reserverade ordet const. class Frukt const info = "Ätbar"; echo Frukt::info; $banan = new Frukt(); echo $banan::info; ÄtbarÄtbar I exemplet ovan skapas en klasskonstant som ej går att ändra på med det reserverade ordet const. Observera att konstanter börjar inte med $ och man kommer åt dem med :: En annan viktig sak är att man behöver inte skapa ett objekt för att använda en klasskonstant. I exemplet används klasskonstanten dels direkt via klassen och dels via objektet $banan. Som vi såg i förra exemplet så kan det vara användbart att komma åt saker i en klass utan att behöva skapa en instans av klassen (nytt objekt) utan att egenskapen eller metoden är en konstant. Detta går att åstadkomma med det reserverade ordet static. class Bil public static function tuta() echo "tuut"; public static $hjul=4; Bil::tuta(); echo Bil::hjul; tuut 4 I exemplet ovan deklareras metoden tuta() och egenskapen $hjul som static. Detta gör dem till klassgemensamma metoder och egenskaper. De går att ändra på men är desamma oavsett hur många instanser som skapas av klassen. Statiska egenskaper och metoder går att använda utan att skapa instanser av klassen. Åtkomst sker med ::