Web programmering
This presentation is the property of its rightful owner.
Sponsored Links
1 / 16

Web-programmering PowerPoint PPT Presentation


  • 76 Views
  • Uploaded on
  • Presentation posted in: General

Web-programmering. Objektorientert programmering i PHP del 2. I dag. Litt mer avansert bruk av objektorientert PHP Gjennomgang av kode. Oppgaveløsning Ukeoppgaver. Oblig 1 leveres 6. mars. Objektorientert PHP forts. Omfang ( Scope ) på attributter og metoder Get , Set funksjoner Arv

Download Presentation

Web-programmering

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Web programmering

Web-programmering

Objektorientert programmering i PHP del 2


I dag

I dag

  • Litt mer avansert bruk av objektorientert PHP

  • Gjennomgang av kode.

  • Oppgaveløsning

    • Ukeoppgaver.

    • Oblig 1 leveres 6. mars


Objektorientert php forts

Objektorientert PHP forts.

  • Omfang (Scope) på attributter og metoder

  • Get, Set funksjoner

  • Arv

  • Bruk av sessions


Objekter og metoder funksjoner

Objekter og metoder/funksjoner

<?php

Class bil

{

public $tank;

public $forbruk;

function rekkevidde()

{

$rekkevidde = $this->tank/$this->forbruk;

return $rekkevidde;

}

}

$volvo = new bil();

$volvo->tank = 80;

$volvo->forbruk = 0.7;

$rekkeviddeImil = $volvo->rekkevidde();

echo "Rekkevidden til bilen er ";

echonumber_format($rekkeviddeImil,0)." mil";

?>

Rekkevidden til bilen er 114 mil


Omfang scope p attributter

Omfang (scope) på attributter

  • Public (åpen utenfor klassen)

  • Private (kan bare brukes inne i klassen)

  • Protected (brukes inne i klassen og arvede klasser)

  • Const (konstant)

  • Var (samme som public)


Eksempel p omfang av variabler

Eksempel på omfang av variabler

<?php

Class bil

{

public $tank;

private $forbruk;

var $antallHK;

const $antallHjul = 4;

}

$volvo = new bil();

$volvo->tank = 80;

$volvo->forbruk = 0.7; // dette går ikke!

$volvo->antallHK = 230;

echo $volvo->antallHjul;

?>

Vil resultere i en ”fatal” error når det kjøres


Omfang av metoder functions

Omfang av metoder (functions)

  • Public (åpen utenfor klassen)

  • Private (kan bare brukes inne i klassen)

  • Protected (brukes inne i klassen og arvede klasser)

  • Ikke noe før function = public


Eksempel omfang metoder

Eksempel, omfang metoder

<?php

Class bil

{

public $tank;

public $forbruk;

private function beregn()

{

$rekkevidde = $this->tank/$this->forbruk;

return $rekkevidde;

}

publicfunction rekkevidde()

{

$res=this->beregn();

return $res;

}

}

$volvo = new bil();

$volvo->tank = 80; $volvo->forbruk = 0.7;

echo $volvo->rekkevidde();

echo $volvo->beregn();

?>

Vil resultere i en ”fatal” error når det kjøres


Bruk av private attributter

Bruk av private attributter

  • Bruk Privat for alle attributter i klasser

  • Skriv så egne metoder for å operere på disse

  • Eks:

  • Private $navn

  • Public Functionset_navn($navn)

  • Public Functionget_navn();


Eksempel get set

Eksempel, get, set

<?php

Class bil

{

private $tank;

publicfunctionset_tank($innTank)

{

$this->tank = $innTank;

}

publicfunctionget_tank()

{

return$this->tank;

}

}

$volvo = new bil();

$volvo->set_tank(80);

echo$volvo->get_tank;

?>

  • Dette for å sikre at all manipulasjon av variabelen tank skjer via metoder.

  • Kan utvide disse


Eksempel get set utvidelse

Eksempel, get, set, utvidelse

<?php

Class bil

{

private $tank;

publicfunctionset_tank($innTank)

{

if($innTank>0)

{

$this->tank = $innTank;

}

}

publicfunctionget_tank()

{

return $this->tank;

}

}

$volvo = new bil();

$volvo->set_tank(80);

echo $volvo->get_tank;

?>

  • Nå kan det bare settes inn lovlige verdier

  • En tank kan ikke inneholde et negativt tankvolum.


Web programmering

Arv

  • Kan definere en klasse som arver egenskaper (metoder og attributter) fra en annen klasse.

  • Eksempel:

    • En klasse bil

    • En klasse lastebil som arver egenskapene til bil-klassen (extends)

    • Lastebil-klassen kan ha egne egenskaper og benytte egenskapene til bil-klassen.


Eksempel arv

<?php

class lastebil extends bil{

private $lasteKapasitet;

publicfunctionset_lasteKapasitet($last)

{

$this->lasteKapasitet=$last;

}

}

class bil {

private $tank;

publicfunctionset_tank($tank)

{

$this->tank=$tank;

}

publicfunctionget_tank($tank)

{

return $this->tank;

}

}

$volvo = new lastebil();

$volvo->set_tank(70);

$volvo->set_lasteKapasitet(1000);

?>

Eksempel, arv

Lastebil

Bil

$tank

$lastekapasitet

set_tank($tank)

get_tank($tank)

set_lastekapasitet($last)


Eksempel arv bruk av constructor

<?php

class lastebil extends bil{

private $lasteKapasitet;

public function __construct($last,$tank) {

parent:: __construct($tank);

$this->lasteKapasitet=$last;

}

public functionget_lasteKapasitet() {

return $this->lasteKapasitet;

}

}

class bil {

private $tank;

public function __construct($tank) {

$this->tank=$tank;

}

public functionget_tank() {

return $this->tank;

}

}

$volvo = new lastebil(1000,70);

echo "Tanken er ".$volvo->get_tank();

?>

Eksempel, arv, bruk av constructor


Statiske metoder som i java

Statiske metoder (som i Java)

classfilhandterer

{

// håndterer all filskriving

staticfunctionskriv_fil($tekst)

{

$filref=fopen("kjoretoy.txt","a");

$ok = fwrite($filref,$tekst);

}

}

// kall til denne klassen/metoden:

filhandterer::skriv_fil($stringTilFil);

  • Brukes der det ikke er hensiktsmessig å opprette objekter

  • Generelle klasser/metoder

  • Kanskje litt overkill da man bare kan bruke en funksjon.


Sessions og objekter

Sessions og objekter

  • Kan legge objekter inn i sessionvariable

  • Husk å ha alle klasse definisjonene i alle filene som bruker objektene i sessionene.

    • Samle gjerne alle klassene i en fil og inkluder den i alle de andre

  • Noen mer komplekse strukturer fungerer ikke som sessionsvariable

    • Bla. referanser til objekter.


  • Login