Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migrated to Confluence 4.0
Wiki Markup
Luokan määrittely alkaa avainsanalla class, jota seuraa luokan nimeävä tunniste. Tätä seuraa lohko, jossa listataan luokan metodit ja jäsenmuuttujat. Luokan määrittelyn jälkeen luokan nimi toimii funktiona, joka palauttaa luokan instanssin eli olion. Saman luokan oliot sisältävät samat jäsenfunktiot ja metodit, mutta niiden sisältämä tieto voi olla yksittäisillä olioilla erilaiset.

...

Code Block

 
Luokan ja olion ero on sama kuin muuttujatyypin ja yksittäisen muuttujan. Esimerkiksi kaikki kokonaisluku muuttujat sisältävät kokonaislukuja, mutta yksittäisillä muuttujilla on eri arvot kuten 5 tai \-99.
 
Jäsenmuuttujat sisältävät yksittäisen olion tiedot luokkakohtaisissa tietokentissä. Metodit - toiselta nimeltään jäsenfunktiot - käyttävät luokan jäsenmuuttujia. Metodit määritellään samalla tavalla kuin tavalliset funktiot, mutta niiden pitää olla luokka määrityksen sisällä. Lisäksi, käyttääkseen luokan jäsenmuuttujia, määrittelyssä ensimmäiseksi parametriksi täytyy antaa luokkaa kuvaava muuttuja - tavallisesti sille annetaan nimi self; jäsenmuuttujia voi käyttää pisteoperaattorin avulla.
 
Tässä on yksinkertainen luokka container, jolla on yksi jäsenmuuttuja ja metodeja, jotka palauttavat sen arvon muunneltuna. Ohjelmassa tehdään kaksi oliota ja sijoitellaan niiden jäsenmuuttujaan arvo ja palautetaan se useammalla tavalla.

{code}
class container:
    _value = 0
    def getSquare(self):
        return self.value ** 2
    def getNegation(self):
        return -self.value
 
s = "olion a arvo on %s\nolion b arvo on %s\n"
a = container()
b = container()
 
print(s % (a.value, b.value))
 
a.value = 7
b.value = a.getSquare()
 
print(s % (a.value, b.value))
 
a.value = b.getNegation() + 4
b.value = "abcdef"
 
print(s % (a.value, b.value))
 
input("Paina Enter-näppäintä lopettaaksesi...")
{code}
Ohjelman tiedon ja toiminnallisuuden (siis muuttujien ja funktioiden) järjestäminen luokkiin tällä tavalla on olio-ohjelmoinnin perusajatus. Se lisää ohjelmaan modulaarisuutta; suuret ohjelmat on helpompi hahmottaa kun ne on jaettu pienempiin osiin. Olio-ohjelmointi lisää myös uudelleenkäytettävyyttä koska luokat - samoin kuin funktiot - voidaan säilöä erillisiin moduleihin ladattaviksi uusiin ohjelmiin.