Systeemityö ja projektityöskentely

Sorakuilu

Demonstraatio, olio-ohjelmoinnin perusteita

Demon kuva luokkakaaviona

Luokkakaaviossa pisteviivan yläpuolella näkyvät luokan ominaisuudet. - -merkki nimen edessä tarkoittaa private-määrettä eli niitä ei vuoraan käsitellä luokan ulkopuolella.

Katkoviivan alapuolella ovat luokan toiminnot, määre on public ja esitellään + -merkillä.

Demossa toteutetaan luokat ja erotetaan ulkoasun tuottaminen omaksi tiedostokseen. Tätä lähestymistapaa kehitämme myöhemmin pidemmälle.

Luokka Opiskelija (opiskelija.php)

<?php
class Opiskelija
{

    private 
$nimi;
    private 
$email;
    private 
$puh;


    public function 
__construct($nimi$email) {
        
$this->nimi $nimi;
        
$this->email $email;
    }

    public function 
haeNimi() {
        return 
$this->nimi;
    }

    public function 
haeEmail() {
        return 
$this->email;
    }
}
?>

Luokka Opetusryhma (opetusryhma.php)

<?php 
class  Opetusryhma
{
    private 
$ryhmannimi;
    private 
$aloitusvuosi;
    private 
$oma_opettaja;
    private 
$opiskelijat = array();


    public function 
__construct($ryhmannimi,$aloitusvuosi)
    {
        
$this->ryhmannimi $ryhmannimi;
        
$this->aloitusvuosi $aloitusvuosi;
    }

    public function 
lisaa($opiskelija) {
            
$this->opiskelijat[] = $opiskelija;
    }
    
    public function 
haeRyhmannimi ()
    {
        return 
$this->ryhmannimi//näytä, miksi ei voi käyttää suoraa viittausta, publicin ja privaten ero
    
}

    public function 
nimilista() {
        
$nimet = array();
        foreach(
$this->opiskelijat as $opiskelija) {
            
$nimet[] = $opiskelija->haeNimi();
        }
        return 
$nimet;
    }
}
?>

Tiedosto index.php

Tämä tiedosto kutsuu muita tiedostoja (jatkossa sen sisältö jakaantuu kahteen eri tiedostoon (kontrolleriin ja reitittimieen).

<?php

require "opiskelija.php";
require 
"opetusryhma.php";

$opetusryhma = new Opetusryhma('TiViDO',2019);
$opetusryhma->lisaa(new Opiskelija("Jaakko""jaakko@netti.fi"));
$opetusryhma->lisaa(new Opiskelija("Jorma""jorma@gmail.com"));
$opetusryhma->lisaa(new Opiskelija("Jaana""jaana67@gmail.com"));
$ryhma $opetusryhma->haeRyhmannimi();
$opiskelijat $opetusryhma->nimilista();

require 
'opetusryhma.view.php';
?>

Tiedosto (opetusryhma.view.php)

Tämä tiedosto rakentaa kaiken html:n, muiden tehtävä on muokata tietoja taustalla.

Huomaa nopea tapa kirjoittaa <?php echo korvautuu <?= merkeillä.

<html>
<head>
<title>Oliodemo</title>
</head>
<body>

<h1>Ryhmä <?=$ryhma;?></h1>
<h2>Opiskelijaluettelo</h2>
<?php
foreach($opiskelijat as $opiskelija)
{
    echo 
$opiskelija."<br>";
}
?>
</body>
</html>