Files
lab-cpp-invariants/README.md
T
2026-07-21 20:11:42 +02:00

1.5 KiB

CPP06 — Hermetyzacja, niezmienniki i odpowiedzialność klasy

    Karta 06/10 kursu **C++ · Rok 2 · Semestr 1**. Standard: C++20.
    Oś merytoryczna: A Tour of C++ 3e: sekcja 4.3 i rozdział 5. Materiał książkowy jest parafrazowany;
    repozytorium zawiera samodzielne eksperymenty i testy, a nie kopię książki.

    ## Taski

    | Task | Temat | Dokładny dowód stdout |
    | --- | --- | --- |
    | Task01 | `Walidowana zmiana stanu` | `accepted=1 rejected=1 value=25` |

| Task02 | Pojemność kolejki | pushes=2 overflow=1 pops=2 empty=1 depth=0 | | Task03 | Normalizacja przedziału | start=3 end=10 width=7 |

    Każdy task jest osobnym programem w `src/task0N`. Test kompiluje wszystkie
    jednostki translacji poleceniem zgodnym z `-std=c++20 -Wall -Wextra
    -Wpedantic -Werror`, uruchamia program i porównuje dokładny wynik.

    ## Uruchomienie

    ```bash
    stemctl build native-amd64 cpp CPP06 1
    stemctl test native-amd64 cpp CPP06 1
    stemctl test native-amd64 cpp CPP06 2
    stemctl debug native-amd64 cpp CPP06 3
    ```

    Lokalnie można użyć `make build`, `make test TASK=task02` i
    `make trace TASK=task03`. Ślad debuggera trafia do `.stem/artifacts`.

    ## Granica semestru

    Ta seria nie uczy API RTOS, zaawansowanych kontenerów STL ani
    współbieżności. Są to osobne bloki następnych semestrów opisanych w
    `/home/user/dev/keys/cxx.md`.