Lataa esitys
Esittely latautuu. Ole hyvä ja odota
JulkaistuJulia Kokkonen Muutettu yli 9 vuotta sitten
1
Luokan muodostintMyn1 Luokan muodostin Olioihin kohdistuvia automaattisia toimintoja ovat luonti, alustus, kopiointi, sijoitus, tyhjennys ja tuhoaminen. Automaattiset toiminnot voivat aktivoitua järjestelmän käynnistämänä tai ohjelmoijan käynnistämänä. Olion luontiin liittyvät vaiheet ovat olion tilanvaraus ja olion alustus.
2
Luokan muodostintMyn2 Olion tuhoamiseen liittyvät vaiheet ovat olion tyhjennys ja olion tilanvapautus.
3
Luokan muodostintMyn3 Olion luontiin eli tilanvaraukseen liittyy olion tunnuksen esittely ja olion määrittely. Olion esittely liittää tunnuksen nimen olion tyyppiin eli luokkaan. Olion määrittely luo olion eli määrittely varaa keskusmuistitilan olion tiedoille. Olio saa luotaessa luokkansa mukaisen kehyksen eli luokka määrää sille varattavat tietojäsenet. Jäsenfunktiot eivät kopioidu jokaiselle oliolle, vaan kaikki luokan oliot käyttävät kertaalleen talletettua ohjelmakoodia.
4
Luokan muodostintMyn4 Olion alustus tapahtuu tilanvarauksen yhteydessä. Olion tietojäsenten alustustoimenpiteet sisältyvät erityiseen alustusta varten kirjoitettuun jäsenfunktioon, jota kutsutaan muodostimeksi (constructor). Tätä kirjoitellessa luokassa ei voi olla useita kuormitettuja (overloaded) muodostimia. Muodostimet voidaan jakaa kahteen ryhmään:
5
Luokan muodostintMyn5 oletusmuodostin (default constructor) –Olion tietojäsenten alustus oletusarvoilla tai sitten arvot kysytään ohjelman käyttäjältä. ohjelmoijan määrittelemät parametrilliset muodostimet –Olion tietojäsenten alustus ohjelmoijan tapauskohtaisesti määräämillä alkuarvoilla.
6
Luokan muodostintMyn6 Overloading a function name: If you have two or more function definitions for the same function name, that is called overloading. When you overload a function name, the function definitions must have different number of formal parameters or some formal parameters of different types. When there is a function call, the compiler uses the function definition whose number of formal parameters and types of formal parameters match the arguments in the function call.
7
Luokan muodostintMyn7 Luokkaan määritellään muodostin, jotta voitaisiin varmistaa, että olion tietojäsenet ovat alustettuja ja että ohjelma ei keskeydy ajonaikaiseen virheeseen tietojäsenen sisältöön viitattaessa. Muodostimen tehtäväksi voidaan antaa myös vaikkapa tietokantayhteyden avaaminen. Järjestelmä kutsuu muodostinta automaattisesti olion tilanvarauksen yhteydessä.
8
Luokan muodostintMyn8 Oletusmuodostin (default constructor) alustaa olion tietojäsenet oletusarvoilla tai ohjelman käyttäjän antamilla arvoilla. Oletusmuodostin voi olla järjestelmän generoima tai ohjelmoijan kirjoittama. Järjestelmä generoi luokalle oletusmuodostimen vain, jos ohjelmoija ei ole toteuttanut luokkaan muodostinta. Järjestelmän generoima muodostin ei alusta tietojäseniä. Järjestelmä kutsuu oletusmuodostinta automaattisesti olion tilanvarauksen yhteydessä.
9
Luokan muodostintMyn9 Oletusmuodostimeksi voidaan myös kutsua muodostinta, joka kysyy ohjelman käyttäjältä arvot tietojäsenille! Olion määrittely varaa oliolle keskusmuistitilan ja aiheuttaa automaattisesti oletusmuodostimen kutsun (jonka tulisi siis olla kernaasti ohjelmoijan tekemä!).
10
Luokan muodostintMyn10 Oletusmuodostimen määrittelyssä on huomioitava mm. seuraavaa: –Oletusmuodostimen nimi on (luokan nimi käy myös) __construct(). –Oletusmuodostin ei saa parametreja. –Oletusmuodostimella ei ole tyyppiä, oletusmuodostin ei siis palauta return-lauseella mitään. –Oletusmuodostinta koskevat samat näkyvyyssäännöt kuin muitakin luokan jäsenfunktioita. Oletusmuodostimeksi tulkitaan sellainen muodostin, jota voi kutsua ilman argumentteja.
11
Luokan muodostintMyn11 Jos ohjelmoija haluaa olion tietojäsenet alustettavaksi tietyillä oletusalkuarvoilla, hänen on määriteltävä itse oletusmuodostin. Toteutetaan oletusmuodostin ensiksi siten, että se alustaa olion tietojäsenet aina samoilla arvoilla (ei tietenkään ole käytännössä järkevää):
12
Luokan muodostintMyn12
13
Luokan muodostintMyn13
14
Luokan muodostintMyn14
15
Luokan muodostintMyn15 Varmistetaan seuraavaksi, että järjestelmän generoima oletusmuodostin ei ainakaan osaa alustaa tietojäseniä millään järjellisillä arvoilla:
16
Luokan muodostintMyn16
17
Luokan muodostintMyn17
18
Luokan muodostintMyn18
19
Luokan muodostintMyn19 Muutetaan seuraavaksi oletusmuodostinta siten, että ohjelman käyttäjä antaa tarvittavat arvot jäsenmuuttujille HTML-lomakkeen kautta:
20
Luokan muodostintMyn20 HTML-tiedosto näyttää tältä:
21
Luokan muodostintMyn21 PHP-tiedosto näyttää tältä:
22
Luokan muodostintMyn22
23
Luokan muodostintMyn23
24
Luokan muodostintMyn24
25
Luokan muodostintMyn25
26
Luokan muodostintMyn26
27
Luokan muodostintMyn27 Manuaalista voi lukea, että exit()-funktiolle voi antaa argumentiksi merkkijonon, joten tämä toimii aivan yhtä hyvin:
28
Luokan muodostintMyn28 Edellinen esimerkki voidaan toteuttaa toki myös niin, että kaikki koodi kirjoitetaan yhteen tiedostoon. Silloin on järjestettävä asia niin, että assosiatiivisesta taulukosta ($_POST[]) ei lueta mitään ennen kuin lomakkeelle on annettu järkeviä arvoja:
29
Luokan muodostintMyn29
30
Luokan muodostintMyn30
31
Luokan muodostintMyn31
32
Luokan muodostintMyn32
33
Luokan muodostintMyn33
34
Luokan muodostintMyn34
35
Luokan muodostintMyn35
36
Luokan muodostintMyn36
37
Luokan muodostintMyn37 Jos ohjelmoija haluaa alustaa oliot tilanvarauksen yhteydessä tapauskohtaisilla alkuarvoilla, ohjelmoija voi määritellä luokkaan parametrillisen muodostimen. Parametrillinen muodostin on aina ohjelmoijan kirjoittama. Parametrillisen muodostimen määrittelyssä noudatetaan samoja sääntöjä kuin oletusmuodostimen yhteydessä.
38
Luokan muodostintMyn38 Huomaa kuitenkin seuraavat asiat: –Parametrillisen muodostimen parametreihin voidaan määritellä tarvittaessa myös oletusarvot. –Tätä kirjoitettaessa luokka ei voi sisältää useita erilaisilla parametreilla varustettuja muodostimia. –Parametrillinen muodostin, jonka kaikilla parametreilla on oletusarvo, toimii oletusmuodostimena! –Järjestelmä ei generoi oletusmuodostinta, jos ohjelmoija on määritellyt luokkaan parametrillisen muodostimen.
39
Luokan muodostintMyn39
40
Luokan muodostintMyn40
41
Luokan muodostintMyn41
42
Luokan muodostintMyn42 Muodostin on siltä osin samanlainen kuin mikä tahansa funktio: funktion muodolliselle parametrille voidaan antaa oletusarvo. Mikäli kaikille muodollisille parametreille ei anneta oletusarvoja, niin silloin oletusarvojen antaminen on aloitettava oikeasta kulmasta, eikä parametreja saa ”jättää väliin”. Oletusarvon on oltava vakiolauseke.
43
Luokan muodostintMyn43
44
Luokan muodostintMyn44
45
Luokan muodostintMyn45
46
Luokan muodostintMyn46 Tällä hetkellä (tätä kirjoitellessa) luokassa ei voi olla monta parametrillista muodostinta erilaisia alustustilanteita varten (muodostimen kuormittaminen):
47
Luokan muodostintMyn47
48
Luokan muodostintMyn48
49
Luokan muodostintMyn49
50
Luokan muodostintMyn50 Tällä hetkellä (tätä kirjoitellessa) luokassa ei voi olla omatekoista oletusmuodostinta ja parametrillista muodostinta yhtä aikaa toteutettuna:
51
Luokan muodostintMyn51
52
Luokan muodostintMyn52
53
Luokan muodostintMyn53
54
Luokan muodostintMyn54 Kokeillaan seuraavaksi antaa parametrilliselle muodostimelle oletusarvot kaikille parametreille. Kohdellaan sitä sitten niin kuin se olisi oletusmuodostin:
55
Luokan muodostintMyn55
56
Luokan muodostintMyn56
57
Luokan muodostintMyn57
58
Luokan muodostintMyn58 Olion tietojäsenten tyhjennys tapahtuu olion tilanvapautuksen yhteydessä. Tyhjennykseen liittyvät toimenpiteet sisältyvät jäsenfunktioon hajotin (destructor). Luokassa voi olla vain yksi hajotin. Hajotinta voidaan kutsua tilanvapautushetken lisäksi myös muulloin, kun olio halutaan tyhjentää - tämä on käytännössä harvinaista. Yksi järjellinen tehtävä itse tehdylle hajottimelle voisi olla vaikka tietokantayhteyden sulkeminen.
59
Luokan muodostintMyn59 Hajottimen määrittelyssä on huomioitava mm. seuraavaa: –Hajottimen nimi on __destruct(). –Hajotin ei saa parametreja. –Hajottimella ei ole tyyppiä, hajotin ei siis palauta return- lauseella mitään. –Hajotinta koskevat samat näkyvyyssäännöt kuin muitakin luokan jäsenfunktioita.
60
Luokan muodostintMyn60
61
Luokan muodostintMyn61
62
Luokan muodostintMyn62
Samankaltaiset esitykset
© 2024 SlidePlayer.fi Inc.
All rights reserved.