|
| 1 | +<!-- .slide: data-background="#111111" --> |
| 2 | + |
| 3 | +# Programowanie obiektowe |
| 4 | + |
| 5 | +## Podsumowanie |
| 6 | + |
| 7 | +<a href="https://coders.school"> |
| 8 | + <img width="500" data-src="../coders_school_logo.png" alt="Coders School" class="plain"> |
| 9 | +</a> |
| 10 | + |
| 11 | +___ |
| 12 | + |
| 13 | +## Co pamiętasz z dzisiaj? |
| 14 | + |
| 15 | +### Napisz na czacie jak najwięcej haseł |
| 16 | +<!-- .element: class="fragment fade-in" --> |
| 17 | + |
| 18 | +1. <!-- .element: class="fragment fade-in" --> klasy |
| 19 | +2. <!-- .element: class="fragment fade-in" --> obiekty |
| 20 | +3. <!-- .element: class="fragment fade-in" --> pola, właściwości |
| 21 | +4. <!-- .element: class="fragment fade-in" --> metody, funkcje klasy |
| 22 | +5. <!-- .element: class="fragment fade-in" --> modyfikatory dostepu - `public`, `private` |
| 23 | +6. <!-- .element: class="fragment fade-in" --> konstruktory |
| 24 | +7. <!-- .element: class="fragment fade-in" --> destruktory |
| 25 | +8. <!-- .element: class="fragment fade-in" --> hermetyzacja |
| 26 | +9. <!-- .element: class="fragment fade-in" --> gettery |
| 27 | +10. <!-- .element: class="fragment fade-in" --> settery |
| 28 | + |
| 29 | +___ |
| 30 | + |
| 31 | +### Pre-work |
| 32 | + |
| 33 | +* Poczytaj pooglądaj wideo o dziedziczeniu i polimorfiźmie |
| 34 | + |
| 35 | +___ |
| 36 | + |
| 37 | +## Projekt grupowy |
| 38 | + |
| 39 | +Wykorzystajcie kod napisany podczas zajęć. Możecie też skorzystać z kodu w katalogu [solutions](solutions) |
| 40 | + |
| 41 | +Projekt grupowy. Polecane grupy 5 osobowe (4-6 też są ok). |
| 42 | + |
| 43 | +Zróbcie Fork tego repo, a cały projekt ma się znaleźć w katalogu [shm](../shm) |
| 44 | + |
| 45 | +Współpracujcie na jednym forku za pomocą branchy lub Pull Requestów z waszych własnych forków. |
| 46 | + |
| 47 | +___ |
| 48 | + |
| 49 | +## Organizacja prac |
| 50 | + |
| 51 | +Do podziału zadań i śledzenia statusu możecie wykorzystać zakładkę [Projects na GitHubie](https://github.com/coders-school/object-oriented-programming/projects). Możecie skonfigurować go z szablonu Automated kanban with reviews. |
| 52 | + |
| 53 | +### Planning |
| 54 | + |
| 55 | +Rozpocznijcie planowaniem, na którym utworzycie karteczki na każde zadanie w kolumnie To Do. Najlepiej przekonwertować je na Issues. Dzięki temu można przypisywać się do zadań i pisać w nich komentarze. Napiszcie też przy każdym zadaniu na ile dni pracy je szacujecie. Po zakończonym planningu wyślijcie proszę na kanale `#planning` linka do waszej tablicy projektowej na GitHubie. |
| 56 | + |
| 57 | +### Daily |
| 58 | + |
| 59 | +Podczas prac na bieżąco aktualizujcie zadania. Każdego dnia o stałej porze synchronizujecie się i mówicie jakie są problemy. |
| 60 | + |
| 61 | +___ |
| 62 | + |
| 63 | +### Code Review |
| 64 | + |
| 65 | +Każde dostarczenie zadania musi być poprzedzone Code Review innej osoby z zespołu (lub najlepiej kilku), aby zachować spójność i współdziałanie całości. |
| 66 | + |
| 67 | +### Zakończenie |
| 68 | + |
| 69 | +Ten projekt będzie jeszcze dalej rozwijany. Oczekujemy, że niezależnie od liczby wykonanych zadań zrobicie Pull Request przed 28.06 (w Scrumie to zespół decyduje ile zadań uda mu się zrobić na określony termin). |
| 70 | + |
| 71 | +___ |
| 72 | + |
| 73 | +### Punktacja |
| 74 | + |
| 75 | +* Każde dostarczone zadanie to 5 punktów |
| 76 | +* 20 punktów za dostarczenie wszystkich 8 zadań przed 28.06.2020 (niedziela) do 23:59 |
| 77 | +* brak punktów bonusowych za dostarczenie tylko części zadań przed 28.06. |
| 78 | +* 6 punktów za pracę w grupie dla każdej osoby z grupy. |
| 79 | + |
| 80 | +___ |
| 81 | + |
| 82 | +## Zadanie 1 |
| 83 | + |
| 84 | +W klasie `Cargo` napisz operator porównania (`operator ==`), kóry będzie sprawdzał, czy towary są takie same. |
| 85 | + |
| 86 | +___ |
| 87 | + |
| 88 | +## Zadanie 2 |
| 89 | + |
| 90 | +Do klasy `Cargo` dopisz gettery oraz odpowiedni konstruktor, który wypełni wszystkie pola tej klasy. |
| 91 | + |
| 92 | +___ |
| 93 | + |
| 94 | +## Zadanie 3 |
| 95 | + |
| 96 | +Napisz klasę `Island`, która będzie posiadała zmienną `Coordinates position_` oraz odpowiedni getter. |
| 97 | + |
| 98 | +Klasa `Coordinates` ma określać współrzędne na mapie. Również ją napisz. Powinna przyjmować w konstruktorze 2 parametry `positionX`, `positionY` oraz operator porównania. |
| 99 | +<!-- Klasa `Island` powinna posiadać także sklep. --> |
| 100 | + |
| 101 | +___ |
| 102 | + |
| 103 | +## Zadanie 4 |
| 104 | + |
| 105 | +Napisz klasę `Map`, która będzie posiadała `std::vector<Island&>` przechowujący wszystkie wyspy na mapie, oraz zmienną `Island* currentPosition_` określającą aktualną pozycję gracza na mapie. |
| 106 | + |
| 107 | +___ |
| 108 | + |
| 109 | +## Zadanie 5 |
| 110 | + |
| 111 | +W klasie `Map` utwórz konstruktor bezargumentowy, a w jego ciele utwórz 10 wysp, które przechowasz w `std::vector<Island&>`. |
| 112 | +Do wygenerowania losowych wartości pozycji wysp na mapie skorzystaj z [przykładu na cppreference](https://en.cppreference.com/w/cpp/numeric/random/uniform_int_distribution). |
| 113 | +Wymyśl sposób, aby pozycje wysp się nie powielały. |
| 114 | + |
| 115 | +___ |
| 116 | + |
| 117 | +## Zadanie 6 |
| 118 | + |
| 119 | +W klasie `Map` napisz funkcję |
| 120 | + |
| 121 | +`Island* getIsland(const Island::Coordinates& coordinate)` |
| 122 | + |
| 123 | +Powinna ona przeszukać `std::vector<Island&>` i zwrócić szukaną wyspę. |
| 124 | + |
| 125 | +___ |
| 126 | + |
| 127 | +## Zadanie 7 |
| 128 | + |
| 129 | +Napisz klasę `Player`, która posiadać będzie 3 pola: |
| 130 | + |
| 131 | +* `std::unique_ptr<Ship> ship_` |
| 132 | +* `money_` |
| 133 | +* `availableSpace_` |
| 134 | + |
| 135 | +Dopisz także odpowiednie gettery oraz konstruktor. |
| 136 | + |
| 137 | +Dopisz także 2 funkcje, które powinny zwracać dane ze statku: |
| 138 | + |
| 139 | +* `size_t getSpeed() const` |
| 140 | +* `Cargo* getCargo(size_t index) const` |
| 141 | + |
| 142 | +___ |
| 143 | + |
| 144 | +## Zadanie 8 |
| 145 | + |
| 146 | +W klasie `Player` napisz prywatną funkcję, która obliczać będzie `availableSpace_` na podstawie aktualnej ilości towaru na statku. |
0 commit comments