Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migration of unmigrated content due to installation of a new plugin

Luokka (class)

Luokat ovat abstraktioita, jotka mallintavat reaalimaailman asioita. Luokat tarjoavat palveluita (metodit) ja voivat tallentaa tilansa jäsenmuuttujiin. Luokkien mallintaminen on oma taiteenlajinsa, eikä ole välttämättä oikeata tapaa mallintaa asioita, on vain parempia ja huonompia tapoja.  Seuraavassa kuvassa on esitetty erään mittausohjelman luokkamalli, jonka nimesin luokkasotkuksi, jokainen voi päätellä miksi?

Ohjelmassa käytettävät luokat esitellään yleensä omissa .h -tiedostoissaan ja luokan metodit toteutetaan omissa .cpp -tiedostoissaan. Toisaalta C++-kääntäjän kannalta ei ole väliä, onko luokat omissa tiedostoissaan vai kaikki samassa. Kun luokkien lukumäärä kasvaa, on erittäin tärkeätä, että ne löytyvät helposti. Jos kaikki luokat ovat samassa tiedostossaan, tämä vaikeuttaa löytämistä huomattavasti.

Luokka UML-mallina:

Luokka esitellään seuraavasti:

Code Block
class OmaLuokka
{
    // Tänne luokan esittely, eli jäsenmuuttujat
    QString Nimi;

    //ja metodit eli funktiot
    AsetaNimi(QString nimi);
 };  // <- Muistakaa puolipiste loppuun!

Metodeihin etuliitteitä ei yleensä laiteta.

Luokan palveluita käytetään olioiden avulla.

On muistettava, että muuttujia ei voi normaalisti alustaa luokan esittelyn yhteydessä, vaan ne täytyy alustaa muodostimessa, jossa oliot luodaan.