1 / 62

Luokan muodostin

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ä.

Download Presentation

Luokan muodostin

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. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 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. tMyn

  2. Olion tuhoamiseen liittyvät vaiheet ovat olion tyhjennys ja olion tilanvapautus. tMyn

  3. 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. tMyn

  4. 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: tMyn

  5. 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. tMyn

  6. 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. tMyn

  7. 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ä. tMyn

  8. 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ä. tMyn

  9. 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ä!). tMyn

  10. 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. tMyn

  11. 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ää): tMyn

  12. tMyn

  13. tMyn

  14. tMyn

  15. Varmistetaan seuraavaksi, että järjestelmän generoima oletusmuodostin ei ainakaan osaa alustaa tietojäseniä millään järjellisillä arvoilla: tMyn

  16. tMyn

  17. tMyn

  18. tMyn

  19. Muutetaan seuraavaksi oletusmuodostinta siten, että ohjelman käyttäjä antaa tarvittavat arvot jäsenmuuttujille HTML-lomakkeen kautta: tMyn

  20. HTML-tiedosto näyttää tältä: tMyn

  21. PHP-tiedosto näyttää tältä: tMyn

  22. tMyn

  23. tMyn

  24. tMyn

  25. tMyn

  26. tMyn

  27. Manuaalista voi lukea, että exit()-funktiolle voi antaa argumentiksi merkkijonon, joten tämä toimii aivan yhtä hyvin: tMyn

  28. 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: tMyn

  29. tMyn

  30. tMyn

  31. tMyn

  32. tMyn

  33. tMyn

  34. tMyn

  35. tMyn

  36. tMyn

  37. 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ä. tMyn

  38. 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. tMyn

  39. tMyn

  40. tMyn

  41. tMyn

  42. 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. tMyn

  43. tMyn

  44. tMyn

  45. tMyn

  46. Tällä hetkellä (tätä kirjoitellessa) luokassa ei voi olla monta parametrillista muodostinta erilaisia alustustilanteita varten (muodostimen kuormittaminen): tMyn

  47. tMyn

  48. tMyn

  49. tMyn

  50. Tällä hetkellä (tätä kirjoitellessa) luokassa ei voi olla omatekoista oletusmuodostinta ja parametrillista muodostinta yhtä aikaa toteutettuna: tMyn

More Related