Nazwa zgodna z numerem zadania np. 21L_PROI_lab-2, 21L_PROI_proj-2,
21L_PROI_zad-2, 21L_PROI_zad_2, itp.
Dodanie prowadzącego do projektu: Repo -> Settings -> Members
Sensowne opisy commitów - skrótowy, ogólny opis wprowadzanych zmian
Bez plików binarnych (.gitignore) - tylko kod programu i ew. plik
konfiguracyjny projektu
Zadania laboratoryjne
Daty dotyczą oddania zdalnego - 'obrony' / oddanie na żywo możliwe w
późniejszym terminie
Lab 1. (5 pkt), data oddania: do 18.03.2021
Prosty program w C++, GitLab, valgrind, gdb.
Lab 2. (10 pkt), data oddania: do 01.04.2021
Zad. 2.1.
Wypełnianie tablicy dwuwymiarowej kolejnymi liczbami wg zadanego schematu.
Zad. 2.2.
Wybieranie elementu z tablicy dwuwymiarowej spełniającego zadany warunek.
Lab 3. (10 pkt), data oddania: do 15.04.2021
Hint do każdego zadania.
Program powinien w całości zawierać nie za dużo, ale nie za mało elementów.
Zad. 3.1.
Napisać klasę 'ComplexNumber' opisującą liczbę zespoloną.
Klasa powinna zawierać odpowiednio przeciążone operatory arytmetyczne aby umożliwić wykonywanie operacji arytmetycznych na tych liczbach.
Historię kolejnych operacji w obiektach referencyjnych należy zapamiętywać wraz z poprzednią wartością.
Napisać testy jednostkowe dla zaimplementowanych klas i sensownie wydzielonych metod/funkcji realizujących pewną logikę.
Zad. 3.2.
Napisać klasę 'Date' opisującą datę z kalendarza.
Klasa powinna umożliwiać zmianę składowych, a dla najczęściej wykorzystywanych operacji należy przeciążyć odpowiednie operatory.
Należy umożliwić i zdefiniować w stosowny sposób wybrane operacje arytmetyczne między datami.
Nie trzeba obsługiwać p.n.e.
Historię kolejnych operacji w obiektach referencyjnych należy zapamiętywać wraz z poprzednią wartością.
Napisać testy jednostkowe dla zaimplementowanych klas i sensownie wydzielonych metod/funkcji realizujących pewną logikę.
Zad. 3.3.
Napisać klasę 'Time' opisującą czas.
Klasa powinna umożliwiać zmianę składowych, a dla najczęściej wykonywanych operacji należy przeciążyć odpowiednie operatory.
Należy umożliwić i zdefiniować w stosowny sposób wybrane operacje arytmetyczne między czasem.
Nie trzeba obsługiwać stref czasowych.
Historię kolejnych operacji w obiektach referencyjnych należy zapamiętywać wraz z poprzednią wartością.
Napisać testy jednostkowe dla zaimplementowanych klas i sensownie wydzielonych metod/funkcji realizujących pewną logikę.
Zad. 3.4.
Napisać klasę 'Matrix' opisującą macierz liczb.
Klasa powinna umożliwiać zmianę poszczególnych elementów macierzy.
Należy umożliwić proste operacje arytmetyczne między macierzami oraz liczbami - przeciążyć odpowiednie operatory.
Historię kolejnych operacji w obiektach referencyjnych należy zapamiętywać wraz z sumą poprzednich wartości elementów macierzy.
Napisać testy jednostkowe dla zaimplementowanych klas i sensownie wydzielonych metod/funkcji realizujących pewną logikę.
Zad. 3.5.
Napisać klasę 'SetOfNumbers' opisującą zbiór liczb.
Klasa powinna umożliwiać stosowne operacje między zbiorami oraz liczbami z użyciem operatorów arytmetycznych - przeciążyć odpowiednie operatory.
Warianty zadania:
1. Zbiór nie może zawierać duplikatów.
2. W zbiorze mogą być maksymalnie 2 duplikaty liczb.
3. Zbiór może zawierać nie więcej niż 3 liczby o takiej samej wartości.
4. Wynik operacji między zbiorami nie powinien zawierać duplikatów.
5. Wynik operacji między zbiorami powinien zawierać tylko liczby nieparzyste.
6. Wynik operacji między zbiorami powinien zawierać tylko liczby podzielne przez 3.
Historię kolejnych operacji w obiektach referencyjnych należy zapamiętywać wraz z sumą poprzednich wartości elementów zbioru.
Napisać testy jednostkowe dla zaimplementowanych klas i sensownie wydzielonych metod/funkcji realizujących pewną logikę.
Zad. 3.6.
Napisać klasy 'Playlist' i 'Player' opisujące listę piosenek oraz odtwarzacz.
Klasa 'Playlist' powinna umożliwiać dodawanie piosenek po tytułach wraz z podanym czasem trwania lub domyślną długością.
Należy umożliwić stosowne operacje między *zbiorami* piosenek z użyciem operatorów arytmetycznych - przeciążyć odpowiednie operatory.
Warianty zadania:
1. Lista piosenek nie powinna posiadać duplikatów piosenek.
2. Na liście piosenek mogą być maksymalnie 2 duplikaty piosenek.
3. Lista piosenek może zawierać nie więcej niż 3 piosenki o tym samym tytule.
4. Lista piosenek może zawierać nie więcej niż 3 piosenki o takim samym czasie trwania.
5. Lista piosenek może zawierać nie więcej niż 3 piosenki o takim samym tytule i czasie trwania.
6. Lista piosenek nie przyjmuje piosenek o długości będącej liczbą nieparzystą.
Klasa 'Player' powinna umożliwiać dodawanie i usuwanie piosenek z list.
"Odsłuchanie" piosenki zrealizować wraz z wypisaniem informacji na strumień wyjściowy i usunąć piosenkę po odsłuchaniu.
Należy umożliwić dodatkowe funkcje odtwarzacza np. odwrócenie kolejności odtwarzania.
Nie należy czekać czasu piosenki przy odtwarzaniu.
Napisać testy jednostkowe dla zaimplementowanych klas i sensownie wydzielonych metod/funkcji realizujących pewną logikę.
Lab 4. (10 pkt), data oddania: do 06.05.2021
Hint do każdego zadania.
Ukrywanie: ograniczenie widoczności/wyjątek/puste ciało - do wyboru.
Zad. 4.1.
Napisać klasę List przechowującą elementy typu T o maksymalnej pojemności N.
T i N są parametrami szablonu z domyślną wartością 10 dla N.
Użyć tablicy - nie korzystać z kontenerów biblioteki standardowej.
Dostępne publiczne metody:
- Dodaj element,
- Usuń element ze wskazanej pozycji,
- Zwróć element ze wskazanej pozycji - użyć operatora [],
- Wyczyść listę,
- Zwróć liczbę przechowywanych elementów,
- Zwróć niemodyfikowalną tablicę elementów.
Stworzyć klasę pochodną UniqueList, która:
- Nie przechowuje duplikatów,
- Ukrywa możliwość usuwania elementu ze wskazanej pozycji,
- Posiada metodę usuwającą z listy element podany jako argument.
Napisać klasę Osoba z polem Imię - wykorzystać w testach.
Napisać testy dla metod stworzonych kontenerów - sprawdzić działanie dla różnych typów (min. 2 - w tym klasa Osoba).
Zad. 4.2.
Napisać klasę List przechowującą elementy typu T o maksymalnej pojemności N.
T i N są parametrami szablonu z domyślną wartością 10 dla N.
Użyć tablicy - nie korzystać z kontenerów biblioteki standardowej.
Dostępne publiczne metody:
- Dodaj element na wskazanej pozycji,
- Usuń element ze wskazanej pozycji,
- Zwróć element ze wskazanej pozycji - użyć operatora [],
- Wyczyść listę,
- Zwróć liczbę przechowywanych elementów,
- Zwróć niemodyfikowalną tablicę elementów.
Stworzyć klasę pochodną SortedList, która:
- Nie przechowuje duplikatów,
- Ukrywa możliwość dodania elementu na wskazanej pozycji,
- Przy dodawaniu elementu zapewnia posortowanie elementów listy ze względu na operator '<'.
Napisać klasę Osoba z polem Imię i przeciążonym operatorem '<' - wykorzystać w testach.
Napisać testy dla metod stworzonych kontenerów - sprawdzić działanie dla różnych typów (min. 2 - w tym klasa Osoba).
Zad. 4.3.
Napisać klasę Queue przechowującą elementy typu T o maksymalnej pojemności N.
T i N są parametrami szablonu z domyślną wartością 10 dla N.
Użyć tablicy - nie korzystać z kontenerów biblioteki standardowej.
Dostępne publiczne metody:
- Dodaj element na początek/koniec,
- Usuń element z początku/końca,
- Zwróć element z początku/końca,
- Wyczyść kolejkę,
- Zwróć liczbę przechowywanych elementów,
- Zwróć niemodyfikowalną tablicę elementów.
Stworzyć klasę pochodną Stack, która:
- Ukrywa możliwość dodawania/usuwania/zwracania elementu z początku,
- Posiada metodę pozwalającą odwrócić stos - w ramach obiektu.
Napisać klasę Osoba z polem Imię - wykorzystać w testach.
Napisać testy dla metod stworzonych kontenerów - sprawdzić działanie dla różnych typów (min. 2 - w tym klasa Osoba).
Zad. 4.4.
Napisać klasę Queue przechowującą elementy typu T o maksymalnej pojemności N.
T i N są parametrami szablonu z domyślną wartością 10 dla N.
Użyć tablicy - nie korzystać z kontenerów biblioteki standardowej.
Dostępne publiczne metody:
- Dodaj element na początek/koniec,
- Usuń element z początku/końca,
- Zwróć element z początku/końca,
- Wyczyść kolejkę,
- Zwróć liczbę przechowywanych elementów,
- Zwróć niemodyfikowalną tablicę elementów.
Stworzyć klasę pochodną FIFO, która:
- Ukrywa możliwość dodawania/usuwania elementu z początku,
- Ukrywa możliwość usuwania elementu z końca,
- Przy zwracaniu elementu z początku jednocześnie usuwa go z kolejki.
Napisać klasę Osoba z polem Imię - wykorzystać w testach.
Napisać testy dla metod stworzonych kontenerów - sprawdzić działanie dla różnych typów (min. 2 - w tym klasa Osoba).
Projekt (25 pkt), data oddania: do 03.06.2021, data prezentacji: do 16.06.2021
Program realizujący założenia zgodnie z przekazanymi mailowo informacjami.
Dokumentacja zgodnie z przekazanymi informacjami oraz tego co niżej - dotyczy
projektu
Format .pdf w repozytorium
Zwięzła - max 3 strony
1. Autor i data
2. Treść zadania
3. Podział odopwiedzialności w zespole
4. Najważniejsze elementy programu
5. Opis sposobu testowania
6. Zwięzła instrukcja dla użytkownika programu
Bez szczegółowego / obszernego opisu struktury klas, funkcji itd.