Wstęp do programowania obiektowego w C++
Pole
Nikt jednak nie zawracał by sobie głowy takim sposobem pisania oprogramowania gdyby możliwości klas były tak prymitywne jak powyższy przykład. Zapomnieliśmy przecież o tym, że nasz długopis może mieć wysunięty bądź wsunięty wkład. Oczywiste jest to, że jeżeli wkład jest wsunięty to nie możemy nic napisać. Rozbudujmy więc nasz program o kolejną funkcję.
Aby wiedzieć czy wkład jest wysunięty czy nie musimy tą informację gdzieś zapisać. Do tego celu wykorzystamy pole czyli innymi słowy zmienną:
bool czyWysuniety = false;
Klasa Dlugopis:
class Dlugopis {
    
public:
    bool czyWysuniety = false; //zakładamy, że wkład jest wsunięty (pesymistyczny przypadek)
    
    void pisz(string tekst) {
        cout << tekst;
    }
    
};Jak widać, nowe pole dodałem po słowie kluczowym public ponieważ ono też musi być publiczne gdyż jego wartość będziemy modyfikować z poziomu funkcji main (czyli poza klasą). Od razu również przypisałem wartość false zakładając pesymistyczny przypadek. Należy jednak pamiętać iż wartości w klasie inicjalizujemy za pomocą konstruktora o czym będzie w dalszej części tego artykułu.
Następnym krokiem będzie zmodyfikowanie metody pisz(), tak aby zablokować możliwość „pisania” w momencie w którym wkład długopisu jest wsunięty. Do tego celu użyjemy zwykłą instrukcję warunkową IF:
void pisz(string tekst) {
     if(czyWysuniety)
          cout << tekst;
}Cała klasa:
class Dlugopis {
    
public:
    bool czyWysuniety = false;
    
    void pisz(string tekst) {
        if(czyWysuniety)
            cout << tekst;
    }
    
};No i pozostało przejść do maina gdzie ustawiamy po prostu wartości pola czyWysuniety. Robi to się analogicznie jak odwoływanie do metod:
Ogólny kod:
nazwaObiektu.nazwaPola = wartosc;
W naszym programie:
dlugopis1.czyWysuniety = true; //wysuwamy wkład
Cały kod:
#include <iostream>
using namespace std;
class Dlugopis {
    
public:
    bool czyWysuniety = false;
    
    void pisz(string tekst) {
        if(czyWysuniety)
            cout << tekst;
    }
    
};
int main() {
    
    Dlugopis dlugopis1;
    
    dlugopis1.pisz("Napisałeś ten tekst..."); //to nie zostanie napisane
    
    dlugopis1.czyWysuniety = true;
    
    dlugopis1.pisz("Wkład wysunięty?"); //to już zostanie napisane, bo wkład jest wysunięty
    
    return 0;
}Jak widać nasz program powoli zaczyna mieć ręce i nogi. Doskonale widać na tym przykładzie jak prosto w mainie dzięki klasą można modyfikować różne „stany” na przykład określając w którym momencie funkcja pisz() ma „pisać”.