OOP oefen opdrachten
Ik heb een complete tutorial gevoeld over OOP via http://www.killerphp.com.
Ik heb filmpjes bekeken een pdf gelezen en heb mee
geprogrammeerd met de voorbeelden en begin het nu eindelijk te snappen.
Aan het eind zegt de maker van de tutorial dat je nu oefen opdrachten
moet maken om het nu verder te leren.
Mijn vraag aan jullie is: weten jullie leuke en leerzame oefen opdrachten die ik kan maken
waarbij ik eerst nog niks met een datebase hoef te doen.
Als ik de basis echt goed snap en geen moeite meer mee hebt wou ik verder gegaan
om met OOP opdrachten te maken waarbij een database om de hoekt komt kijken.
Alvast bedankt.
Toevoeging op 21/10/2012 15:46:37:
Maak een formulier waarbij je in de php pagina alleen het formulier ziet en als je het formulier goed invult krijg je een mailtje dat het gelukt is, als het formulier niet goed ingevuld is krijg je geen mailtje maar een foutmelding op je scherm
formulier met textvelden,optievelden,meerkeuzelijst berekenknop,wisknop
zo kun je lekker aan de gang met variabelen
wat betreft het objectgeorienteerde zou je een class kunnen schrijven die verschillende rekenmethoden heeft
de uitdaging is om dan de verschillende formuliervariabelen toe te passen in je classmethoden
mvg bas
of maak een class die een <select> maakt met een constructor en een functie addoption()
of maak een class elements om html elements als <p> en <h1> uit te spugen en maak daarna een 'class
table extends elements' die elements dus gebruikt om een table uit te spugen
- Maak een menu op een OO methode. Zorg dat je makkelijk en snel een menu kunt aanpassen, met subitem's ect. Je denkt dat dit heel makkelijk is, maar het kan flink ingewikkeld worden (http://github.com/knplabs/knpmenu )
- Maak een form applicatie, hierin kun je een formulier maken en hem ook nog eens afhandelen (ook dit kan moeilijk worden, http://github.com/symfony/Form )
- Maak een hele DOM applicatie. Zorg dat je doormiddel van OO een hele HTML pagina kunt maken.
PS: Inlogsystemen zou ik nog even mee wachten, is een behoorlijk ingewikkeld project.
Gewijzigd op 21/10/2012 16:15:17 door Wouter J
of maak een class die geld op mijn bankrekening zet
Andy V op 21/10/2012 16:14:58:
of maak een class die geld op mijn bankrekening zet
gniffelgniffel
proberen te maken:
- simpele rekenmachine
- datum class
Het is fijn om te zien dat er mensen zijn die bereid zijn om te leren, Hoe vaak hoor je hier niet 'mensen ik kwam dit script op internet tegen, bla bla en nu kom ik er niet uit...'
Nee eindelijk iemand die het serieus oppakt. Succes met je studie!
Frank
succes!
Het lijken me niet echt OO opdrachten. Meer het maken van een klasse die dient als houder van een paar functies ipv als object.
Je maakt een databaseclass, registreerclass, loginclass, rekenmachineclass en een datum class.
als je geregistreerd bent kan je inloggen en als je ingelogd bent kan je het rekenmachine gebruiken
lijkt veel en moeilijk maar dit is eigenlijk nog heel eenvoudig.
Gewijzigd op 21/10/2012 21:57:55 door Andy V
Andy, eenvoudig? Een gebruikerssysteem??? Nou, dan hebben we andere ervaringen...
Ik heb aan de hand van jullie oefen opdrachten de eerste af: Rekenmachine.
Ik heb eerst in html een formulier gemaakt mat daarin 2 input text fields.
Met daaronder 4 radio types: +,-,:,*. en een bereken knop en wis knop.Met de wisknop heb ik nog niks gedaan omdat ik niet weet of ik het wissen in de index.php moet doen of in de class??
Verderop kunt mijn index.php en class_rekenen.php zien maar heb nog enkele vragen.
Als eerst:
Stuur ik alle $_POST variablen naar SetValues die ik afhandel in de class.
Ik heb in mijn index.php allemaal if, eleif statements gemaakt om undefinde errors tegen te gaan en
om te kijken welke operator is geset om hierbij de juiste functie uit de class te halen.
Mijn vraag is:
1: is de class hoe ik hem gemaakt goed (Tips/op en aanmerkingen).
2: kijk ik op de juiste manier welke operator is gepost en daarbij de juiste functie uit mijn klas haal.
3: Hoe ik nu bezig ben is dat wel helemaal OOP gericht.
Mijn index.php file
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>Untitled Document</title>
<?php include_once("classes/class_rekenen.php"); ?>
</head>
<body>
<?php
// nieuwe class aanmaken
$rekenmachine = new Rekenen();
// Stuur post values
$rekenmachine->setValues($_POST["waarde1"], $_POST["waarde2"], $_POST["operators"]);
// functies ophalen uit class maar
// eerst een vergelijkt voor de operators
if(isset($_POST["bereken"]) and (isset($_POST["operators"]) == "+")){
echo "Antwoord: ".$rekenmachine->optellen();
} elseif(isset($_POST["bereken"]) and (isset($_POST["operators"]) == "-")){
echo "Antwoord: ".$rekenmachine->aftrekken();
} elseif(isset($_POST["bereken"]) and (isset($_POST["operators"]) == ":")){
echo "Antwoord: ".$rekenmachine->delen();
} elseif(isset($_POST["bereken"]) and (isset($_POST["operators"]) == "x")){
echo "Antwoord: ".$rekenmachine->keer();
}
?>
<h1>Class Rekenmachine</h1>
<hr />
<form method="post" action="">
<table border="0" cellspacing="0">
<tr>
<td>Inputfield</td>
<td><input type="text" name="waarde1" /></td>
<td><input type="text" name="waarde2" /></td>
</tr>
<tr>
<td>Operators</td>
<td><input type="radio" name="operators" value="+" />+</td>
<td><input type="radio" name="operators" value=":" />:</td>
</tr>
<tr>
<td></td>
<td><input type="radio" name="operators" value="-" />-</td>
<td><input type="radio" name="operators" value="x" />x</td>
</tr>
<tr>
<td></td>
<td><input type="submit" name="bereken" value="Bereken" /></td>
<td><input type="submit" name="wis" value="Wis" /></td>
</tr>
</table>
</form>
</body>
</html>
<html>
<head>
<meta charset="utf-8">
<title>Untitled Document</title>
<?php include_once("classes/class_rekenen.php"); ?>
</head>
<body>
<?php
// nieuwe class aanmaken
$rekenmachine = new Rekenen();
// Stuur post values
$rekenmachine->setValues($_POST["waarde1"], $_POST["waarde2"], $_POST["operators"]);
// functies ophalen uit class maar
// eerst een vergelijkt voor de operators
if(isset($_POST["bereken"]) and (isset($_POST["operators"]) == "+")){
echo "Antwoord: ".$rekenmachine->optellen();
} elseif(isset($_POST["bereken"]) and (isset($_POST["operators"]) == "-")){
echo "Antwoord: ".$rekenmachine->aftrekken();
} elseif(isset($_POST["bereken"]) and (isset($_POST["operators"]) == ":")){
echo "Antwoord: ".$rekenmachine->delen();
} elseif(isset($_POST["bereken"]) and (isset($_POST["operators"]) == "x")){
echo "Antwoord: ".$rekenmachine->keer();
}
?>
<h1>Class Rekenmachine</h1>
<hr />
<form method="post" action="">
<table border="0" cellspacing="0">
<tr>
<td>Inputfield</td>
<td><input type="text" name="waarde1" /></td>
<td><input type="text" name="waarde2" /></td>
</tr>
<tr>
<td>Operators</td>
<td><input type="radio" name="operators" value="+" />+</td>
<td><input type="radio" name="operators" value=":" />:</td>
</tr>
<tr>
<td></td>
<td><input type="radio" name="operators" value="-" />-</td>
<td><input type="radio" name="operators" value="x" />x</td>
</tr>
<tr>
<td></td>
<td><input type="submit" name="bereken" value="Bereken" /></td>
<td><input type="submit" name="wis" value="Wis" /></td>
</tr>
</table>
</form>
</body>
</html>
Mijn class reken
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
<?php
class Rekenen {
public $waarde1;
public $waarde2;
public $operator;
/*
* $waarde 1: input waarde field 1
* $waarde 2: input waarde field 2
* $operator: +,-, x, :
*/
public function setValues($waarde1, $waarde2, $operator){
$this->waarde1 = $waarde1;
$this->waarde2 = $waarde2;
$this->operator = $operator;
}
public function optellen(){
$totaal = $this->waarde1 + $this->waarde2;
return $totaal;
}
public function aftrekken(){
$totaal = $this->waarde1 - $this->waarde2;
return $totaal;
}
public function delen(){
$totaal = $this->waarde1 / $this->waarde2;
return $totaal;
}
public function keer(){
$totaal = $this->waarde1 * $this->waarde2;
return $totaal;
}
}
?>
class Rekenen {
public $waarde1;
public $waarde2;
public $operator;
/*
* $waarde 1: input waarde field 1
* $waarde 2: input waarde field 2
* $operator: +,-, x, :
*/
public function setValues($waarde1, $waarde2, $operator){
$this->waarde1 = $waarde1;
$this->waarde2 = $waarde2;
$this->operator = $operator;
}
public function optellen(){
$totaal = $this->waarde1 + $this->waarde2;
return $totaal;
}
public function aftrekken(){
$totaal = $this->waarde1 - $this->waarde2;
return $totaal;
}
public function delen(){
$totaal = $this->waarde1 / $this->waarde2;
return $totaal;
}
public function keer(){
$totaal = $this->waarde1 * $this->waarde2;
return $totaal;
}
}
?>
Gewijzigd op 21/10/2012 23:22:35 door Mr Beronne
Maar verder is dit blijkbaar niet al te moeilijk voor je. Misschien kun je een tweede class schrijven die deze herbruikt? (zoiets als class Worteltrekken extends Rekenen)
Wouter J op 21/10/2012 22:06:48:
Andy, eenvoudig? Een gebruikerssysteem??? Nou, dan hebben we andere ervaringen...
Volgens mij zie je het wel wat te groot, ik dacht eerder aan een simpel systeempje, account maken met login,wachtwoord,email en zorgen dat je kan inloggen dat is vrij simpel te maken en eigenlijk zelfs een standaard waar je heel vaak mee te maken hebt als je aan verschillende sites werkt, zo ben ik trouwens ook begonnen in het begin is het inderdaad moeilijk maar uit moeilijke dingen daar leer je pas echt iets uit.
Toevoeging op 22/10/2012 03:17:34:
Mr Bham op 21/10/2012 23:20:53:
Beste mensen,
Ik heb aan de hand van jullie oefen opdrachten de eerste af: Rekenmachine.
Ik heb eerst in html een formulier gemaakt mat daarin 2 input text fields.
Met daaronder 4 radio types: +,-,:,*. en een bereken knop en wis knop.Met de wisknop heb ik nog niks gedaan omdat ik niet weet of ik het wissen in de index.php moet doen of in de class??
Verderop kunt mijn index.php en class_rekenen.php zien maar heb nog enkele vragen.
Als eerst:
Stuur ik alle $_POST variablen naar SetValues die ik afhandel in de class.
Ik heb in mijn index.php allemaal if, eleif statements gemaakt om undefinde errors tegen te gaan en
om te kijken welke operator is geset om hierbij de juiste functie uit de class te halen.
Mijn vraag is:
1: is de class hoe ik hem gemaakt goed (Tips/op en aanmerkingen).
2: kijk ik op de juiste manier welke operator is gepost en daarbij de juiste functie uit mijn klas haal.
3: Hoe ik nu bezig ben is dat wel helemaal OOP gericht.
Mijn index.php file
Mijn class reken
Ik heb aan de hand van jullie oefen opdrachten de eerste af: Rekenmachine.
Ik heb eerst in html een formulier gemaakt mat daarin 2 input text fields.
Met daaronder 4 radio types: +,-,:,*. en een bereken knop en wis knop.Met de wisknop heb ik nog niks gedaan omdat ik niet weet of ik het wissen in de index.php moet doen of in de class??
Verderop kunt mijn index.php en class_rekenen.php zien maar heb nog enkele vragen.
Als eerst:
Stuur ik alle $_POST variablen naar SetValues die ik afhandel in de class.
Ik heb in mijn index.php allemaal if, eleif statements gemaakt om undefinde errors tegen te gaan en
om te kijken welke operator is geset om hierbij de juiste functie uit de class te halen.
Mijn vraag is:
1: is de class hoe ik hem gemaakt goed (Tips/op en aanmerkingen).
2: kijk ik op de juiste manier welke operator is gepost en daarbij de juiste functie uit mijn klas haal.
3: Hoe ik nu bezig ben is dat wel helemaal OOP gericht.
Mijn index.php file
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>Untitled Document</title>
<?php include_once("classes/class_rekenen.php"); ?>
</head>
<body>
<?php
// nieuwe class aanmaken
$rekenmachine = new Rekenen();
// Stuur post values
$rekenmachine->setValues($_POST["waarde1"], $_POST["waarde2"], $_POST["operators"]);
?>
<h1>Class Rekenmachine</h1>
<hr />
<form method="post" action="">
<table border="0" cellspacing="0">
<tr>
<td>Inputfield</td>
<td><input type="text" name="waarde1" /></td>
<td><input type="text" name="waarde2" /></td>
</tr>
<tr>
<td>Operators</td>
<td><input type="radio" name="operators" value="+" />+</td>
<td><input type="radio" name="operators" value=":" />:</td>
</tr>
<tr>
<td></td>
<td><input type="radio" name="operators" value="-" />-</td>
<td><input type="radio" name="operators" value="x" />x</td>
</tr>
<tr>
<td></td>
<td><input type="submit" name="bereken" value="Bereken" /></td>
<td><input type="submit" name="wis" value="Wis" /></td>
</tr>
</table>
</form>
</body>
</html>
<html>
<head>
<meta charset="utf-8">
<title>Untitled Document</title>
<?php include_once("classes/class_rekenen.php"); ?>
</head>
<body>
<?php
// nieuwe class aanmaken
$rekenmachine = new Rekenen();
// Stuur post values
$rekenmachine->setValues($_POST["waarde1"], $_POST["waarde2"], $_POST["operators"]);
?>
<h1>Class Rekenmachine</h1>
<hr />
<form method="post" action="">
<table border="0" cellspacing="0">
<tr>
<td>Inputfield</td>
<td><input type="text" name="waarde1" /></td>
<td><input type="text" name="waarde2" /></td>
</tr>
<tr>
<td>Operators</td>
<td><input type="radio" name="operators" value="+" />+</td>
<td><input type="radio" name="operators" value=":" />:</td>
</tr>
<tr>
<td></td>
<td><input type="radio" name="operators" value="-" />-</td>
<td><input type="radio" name="operators" value="x" />x</td>
</tr>
<tr>
<td></td>
<td><input type="submit" name="bereken" value="Bereken" /></td>
<td><input type="submit" name="wis" value="Wis" /></td>
</tr>
</table>
</form>
</body>
</html>
Mijn class reken
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
<?php
class Rekenen {
public $waarde1;
public $waarde2;
public $operator;
/*
* $waarde 1: input waarde field 1
* $waarde 2: input waarde field 2
* $operator: +,-, x, :
*/
public function setValues($waarde1, $waarde2, $operator){
$this->waarde1 = $waarde1;
$this->waarde2 = $waarde2;
$this->operator = $operator;
}
public function optellen(){
$totaal = $this->waarde1 + $this->waarde2;
return $totaal;
}
public function aftrekken(){
$totaal = $this->waarde1 - $this->waarde2;
return $totaal;
}
public function delen(){
$totaal = $this->waarde1 / $this->waarde2;
return $totaal;
}
public function keer(){
$totaal = $this->waarde1 * $this->waarde2;
return $totaal;
}
}
?>
class Rekenen {
public $waarde1;
public $waarde2;
public $operator;
/*
* $waarde 1: input waarde field 1
* $waarde 2: input waarde field 2
* $operator: +,-, x, :
*/
public function setValues($waarde1, $waarde2, $operator){
$this->waarde1 = $waarde1;
$this->waarde2 = $waarde2;
$this->operator = $operator;
}
public function optellen(){
$totaal = $this->waarde1 + $this->waarde2;
return $totaal;
}
public function aftrekken(){
$totaal = $this->waarde1 - $this->waarde2;
return $totaal;
}
public function delen(){
$totaal = $this->waarde1 / $this->waarde2;
return $totaal;
}
public function keer(){
$totaal = $this->waarde1 * $this->waarde2;
return $totaal;
}
}
?>
Sorry dat ik dit moet zeggen maar dit is echt veeeel te eenvoudig gemaakt om het OOP te noemen, je kan bij wijze van spreken gewoon de class weglaten en alleen de functies gebruiken veel verschil ga je niet zien in de pagina waar je rekenmachine op staat.
Wat je kan proberen is om het een beetje uitgebreider te maken en dit stukje kan je ook wel kwijt in je class:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
// functies ophalen uit class maar
// eerst een vergelijkt voor de operators
if(isset($_POST["bereken"]) and (isset($_POST["operators"]) == "+")){
echo "Antwoord: ".$rekenmachine->optellen();
} elseif(isset($_POST["bereken"]) and (isset($_POST["operators"]) == "-")){
echo "Antwoord: ".$rekenmachine->aftrekken();
} elseif(isset($_POST["bereken"]) and (isset($_POST["operators"]) == ":")){
echo "Antwoord: ".$rekenmachine->delen();
} elseif(isset($_POST["bereken"]) and (isset($_POST["operators"]) == "x")){
echo "Antwoord: ".$rekenmachine->keer();
}
dan maak je een extra variabele in je class namelijk: $totaal
en die waarde roep je dan op in je pagina met $rekenmachine->totaal.
je zou eigenlijk alles qua verwerken kunnen doen in je class zelf en proberen met zo weinig mogelijk php code in jou index.php te werken.
bijvoorbeeld alleen met:
Code (php)
1
2
3
4
5
2
3
4
5
$rekenmachine = new Rekenen();
// Stuur post values en verwerk en return het resultaat
$uitkomst = $rekenmachine->uitkomst($_POST["waarde1"], $_POST["waarde2"], $_POST["operators"]);
echo $uitkomst;
// Stuur post values en verwerk en return het resultaat
$uitkomst = $rekenmachine->uitkomst($_POST["waarde1"], $_POST["waarde2"], $_POST["operators"]);
echo $uitkomst;
Toevoeging op 22/10/2012 03:52:24:
hier heb je dan mijn versie heb de class er even onder gezet omdat het toch maar 1 class is hopelijk leer je er iets uit:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>OOP Rekenmachine</title>
</head>
<body>
<?php
// nieuwe class aanmaken
if (isset($_POST["bereken"])) {
$rekenmachine = new Rekenen();
// Stuur post values en verwerk alles
$uitkomst = $rekenmachine->totaal($_POST["waarde1"], $_POST["waarde2"], $_POST["operators"]);
}
//ook handig om te weten is de korte tag voor echo namelijk: <?= heel erg handig als je een nette template wil.
//en de korte if/else ( controle ? juist : fout ) ? staat voor if, : staat voor else
?>
<p><?= (isset($uitkomst)? 'Antwoord: '.$uitkomst : '') ?></p>
<h1>Class Rekenmachine</h1>
<hr />
<form method="post" action="">
<table border="0" cellspacing="0">
<tr>
<td>Inputfield</td>
<td><input type="text" name="waarde1" /></td>
<td><input type="text" name="waarde2" /></td>
</tr>
<tr>
<td>Operators</td>
<td><input type="radio" name="operators" value="+" />+</td>
<td><input type="radio" name="operators" value=":" />:</td>
</tr>
<tr>
<td></td>
<td><input type="radio" name="operators" value="-" />-</td>
<td><input type="radio" name="operators" value="x" />x</td>
</tr>
<tr>
<td></td>
<td><input type="submit" name="bereken" value="Bereken" /></td>
<td><input type="submit" name="wis" value="Wis" /></td>
</tr>
</table>
</form>
</body>
</html>
<?php
class Rekenen {
public $waarde1;
public $waarde2;
public $operator;
/*
* $waarde 1: input waarde field 1
* $waarde 2: input waarde field 2
* $operator: +,-, x, :
*/
public function totaal($waarde1, $waarde2, $operator) {
self::setValues($waarde1, $waarde2, $operator);
return self::bereken();
}
public function bereken() {
switch ($this->operator) {
case '+':
return self::optellen();
case '-':
return self::aftrekken();
case ':':
return self::delen();
case 'x':
return self::keer();
}
}
public function setValues($waarde1, $waarde2, $operator) {
$this->waarde1 = $waarde1;
$this->waarde2 = $waarde2;
$this->operator = $operator;
}
public function optellen() {
$totaal = $this->waarde1 + $this->waarde2;
return $totaal;
}
public function aftrekken() {
$totaal = $this->waarde1 - $this->waarde2;
return $totaal;
}
public function delen() {
$totaal = $this->waarde1 / $this->waarde2;
return $totaal;
}
public function keer() {
$totaal = $this->waarde1 * $this->waarde2;
return $totaal;
}
}
?>
<html>
<head>
<meta charset="utf-8">
<title>OOP Rekenmachine</title>
</head>
<body>
<?php
// nieuwe class aanmaken
if (isset($_POST["bereken"])) {
$rekenmachine = new Rekenen();
// Stuur post values en verwerk alles
$uitkomst = $rekenmachine->totaal($_POST["waarde1"], $_POST["waarde2"], $_POST["operators"]);
}
//ook handig om te weten is de korte tag voor echo namelijk: <?= heel erg handig als je een nette template wil.
//en de korte if/else ( controle ? juist : fout ) ? staat voor if, : staat voor else
?>
<p><?= (isset($uitkomst)? 'Antwoord: '.$uitkomst : '') ?></p>
<h1>Class Rekenmachine</h1>
<hr />
<form method="post" action="">
<table border="0" cellspacing="0">
<tr>
<td>Inputfield</td>
<td><input type="text" name="waarde1" /></td>
<td><input type="text" name="waarde2" /></td>
</tr>
<tr>
<td>Operators</td>
<td><input type="radio" name="operators" value="+" />+</td>
<td><input type="radio" name="operators" value=":" />:</td>
</tr>
<tr>
<td></td>
<td><input type="radio" name="operators" value="-" />-</td>
<td><input type="radio" name="operators" value="x" />x</td>
</tr>
<tr>
<td></td>
<td><input type="submit" name="bereken" value="Bereken" /></td>
<td><input type="submit" name="wis" value="Wis" /></td>
</tr>
</table>
</form>
</body>
</html>
<?php
class Rekenen {
public $waarde1;
public $waarde2;
public $operator;
/*
* $waarde 1: input waarde field 1
* $waarde 2: input waarde field 2
* $operator: +,-, x, :
*/
public function totaal($waarde1, $waarde2, $operator) {
self::setValues($waarde1, $waarde2, $operator);
return self::bereken();
}
public function bereken() {
switch ($this->operator) {
case '+':
return self::optellen();
case '-':
return self::aftrekken();
case ':':
return self::delen();
case 'x':
return self::keer();
}
}
public function setValues($waarde1, $waarde2, $operator) {
$this->waarde1 = $waarde1;
$this->waarde2 = $waarde2;
$this->operator = $operator;
}
public function optellen() {
$totaal = $this->waarde1 + $this->waarde2;
return $totaal;
}
public function aftrekken() {
$totaal = $this->waarde1 - $this->waarde2;
return $totaal;
}
public function delen() {
$totaal = $this->waarde1 / $this->waarde2;
return $totaal;
}
public function keer() {
$totaal = $this->waarde1 * $this->waarde2;
return $totaal;
}
}
?>
De reken klasse is nu gewoon een verzameling functies geworden, een echt object kun je het niet noemen.
Quote:
Volgens mij zie je het wel wat te groot, ik dacht eerder aan een simpel systeempje, account maken met login,wachtwoord,email en zorgen dat je kan inloggen dat is vrij simpel te maken en eigenlijk zelfs een standaard waar je heel vaak mee te maken hebt als je aan verschillende sites werkt, zo ben ik trouwens ook begonnen in het begin is het inderdaad moeilijk maar uit moeilijke dingen daar leer je pas echt iets uit.
Hmm, vrij simpel even de klassen die je dan zo'n beetje nodig hebt: User, UserMapper, MapperInterface, DatabaseInterface, PDODatabase, PDOMySQLDatabase, PDOOracleDatabase, MySQLIDatabase, ...
Wouter J op 22/10/2012 10:11:54:
Hmm, vrij simpel even de klassen die je dan zo'n beetje nodig hebt: User, UserMapper, MapperInterface, DatabaseInterface, PDODatabase, PDOMySQLDatabase, PDOOracleDatabase, MySQLIDatabase, ...
voor 1 tabelletje met users heb je al die classes helemaal niet nodig, gewoon een class die verbinding maakt met de db en dat je query's ermee kan maken is meer dan genoeg voor een eenvoudig login systeempje. Je ziet het dus idd veel te groot maar ja dat mag ook wel als programmeur, maar omdat dit dan een simpele oefening is om een beetje basis OOP te leren zeg ik het nogmaals dat al die classes niet nodig zijn om een simpele verbinding te maken met een database.
Gewijzigd op 22/10/2012 11:21:31 door Andy V
En ook moet je doorhebben dat je tussen die Database klasse en de User klasse nog een klasse nodig hebt, een DataMapper of Active Record of een ORM ect.
Wouter J op 22/10/2012 11:37:27:
Andy, je moet als je oefent met OO juist doorhebben dat je je systeem zo flexibel mogelijk kunt maken. Hierdoor moet je doorhebben dat je een verbinding kan maken door het Adapter pattern toe te passen.
En ook moet je doorhebben dat je tussen die Database klasse en de User klasse nog een klasse nodig hebt, een DataMapper of Active Record of een ORM ect.
En ook moet je doorhebben dat je tussen die Database klasse en de User klasse nog een klasse nodig hebt, een DataMapper of Active Record of een ORM ect.
dat is in het begin veel te moeilijk als je niet eens weet hoe classes werken, dus ik blijf bij mijn punt. Wat hij net gemaakt heeft is gewoon een class met functies, dus ik neem aan dat hij nog niet helemaal weet hoe dat allemaal in elkaar zit vandaar dat je best eerst iets eenvoudig kan doen, even experimenteren met classes niet meteen groot denken maar gewoon de code leren kennen al is dat niet zo moeilijk maar in het begin kan dat toch best verwarrend zijn allemaal.
Ik zie de code leren kennen meer als stap 2 in het OO leren proces. Ik begrijp daarom ook 95% van alle OO tutorials niet, die hebben maar 1 hoofdstuk over het 'moeilijke OO denken' en daarna 101 hoofdstukken over de syntax van OO. Het nadenken in objecten is juist stap 1, je moet leren dat het niet om de code draait maar om de gedachte erachter (vandaar met slogan 'Een script is meer dan code alleen').