Esittely latautuu. Ole hyvä ja odota

Esittely latautuu. Ole hyvä ja odota

Luokan muodostintMyn1 Luokan muodostin Olioihin kohdistuvia automaattisia toimintoja ovat luonti, alustus, kopiointi, sijoitus, tyhjennys ja tuhoaminen.

Samankaltaiset esitykset


Esitys aiheesta: "Luokan muodostintMyn1 Luokan muodostin Olioihin kohdistuvia automaattisia toimintoja ovat luonti, alustus, kopiointi, sijoitus, tyhjennys ja tuhoaminen."— Esityksen transkriptio:

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


Lataa ppt "Luokan muodostintMyn1 Luokan muodostin Olioihin kohdistuvia automaattisia toimintoja ovat luonti, alustus, kopiointi, sijoitus, tyhjennys ja tuhoaminen."

Samankaltaiset esitykset


Iklan oleh Google