Skip to content

Commit d3ca5df

Browse files
committed
module2 further work
1 parent 2f41754 commit d3ca5df

File tree

11 files changed

+91
-366
lines changed

11 files changed

+91
-366
lines changed

module2/03-virtual.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,9 @@ ___
1616
```cpp
1717
class Bird {
1818
public:
19-
size_t getWeight() { return weight_; }
20-
size_t getHeight() { return height_; }
21-
std::string getName() { return name_; }
19+
size_t getWeight() const { return weight_; }
20+
size_t getHeight() const { return height_; }
21+
std::string getName() const { return name_; }
2222

2323
// Pure virtual function without implementation
2424
virtual void eat() = 0;
@@ -165,5 +165,5 @@ ___
165165
166166
## Słowo `virtual` i `override`
167167
168-
Co to za słowa? Co one robią? O tym za chwilę ;)
168+
Co to za słowa? Co one robią? O tym w jednym z następnych wideo ;)
169169
<!-- .element: class="fragment fade-in" -->

module2/07-static.md

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ Nawet jeżeli obiekt zajmowałby dużo miejsca w pamięci, a my chcielibyśmy ty
4444
<!-- .element: class="fragment fade-in" -->
4545

4646
___
47-
<!-- .slide: style="font-size: 0.9em" -->
47+
<!-- .slide: style="font-size: 0.8em" -->
4848

4949
## `static`
5050

@@ -66,10 +66,11 @@ std::string ClassB::name_{"ClassB"};
6666
int main() {
6767
std::cout << ClassA::getName() << '\n';
6868
std::cout << ClassB::name_ << '\n';
69-
ClassA obj;
70-
std::cout << obj.getName() << '\n';
71-
ClassB obj;
72-
std::cout << obj.name_ << '\n';
69+
70+
ClassA objA;
71+
std::cout << objA.getName() << '\n';
72+
ClassB objB;
73+
std::cout << objB.name_ << '\n';
7374

7475
return 0;
7576
}

module2/08-tasks.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,9 @@ ___
1212

1313
## Zadanie 8
1414

15-
Przekształć klasę bazową `Coordinates`, tak aby miała funkcję statyczną
15+
Napisz/przekształć klasę `Coordinates`, która ma określać współrzędne na mapie. Powinna ona przyjmować w konstruktorze 2 parametry `positionX`, `positionY` oraz operator porównania.
16+
17+
Ma ona posiadać funkcję statyczną `distance`:
1618

1719
```cpp
1820
static size_t distance(const Coordinates& lhs, const Coordinates& rhs)

module2/09-recap.md

Lines changed: 4 additions & 127 deletions
Original file line numberDiff line numberDiff line change
@@ -17,132 +17,9 @@ ___
1717

1818
1. <!-- .element: class="fragment fade-in" --> dziedziczenie
1919
2. <!-- .element: class="fragment fade-in" --> wielodziedziczenie
20-
3. <!-- .element: class="fragment fade-in" --> funkcje wirtualne
21-
4. <!-- .element: class="fragment fade-in" --> funkcje czysto wirtualne
22-
5. <!-- .element: class="fragment fade-in" --> klasy abstrakcyjne
23-
6. <!-- .element: class="fragment fade-in" --> interfejsy
20+
3. <!-- .element: class="fragment fade-in" --> funkcje czysto wirtualne
21+
4. <!-- .element: class="fragment fade-in" --> klasy abstrakcyjne
22+
5. <!-- .element: class="fragment fade-in" --> interfejsy
23+
6. <!-- .element: class="fragment fade-in" --> funkcje wirtualne
2424
7. <!-- .element: class="fragment fade-in" --> polimorfizm
2525
8. <!-- .element: class="fragment fade-in" --> pola i metody statyczne
26-
27-
___
28-
29-
### Pre-work
30-
31-
* Dowiedzcie się czym jest problem diamentowy
32-
* Poczytajcie o zasadach SOLID, dotyczących pisania dobrego kodu obiektowego
33-
* Lektura o wzorcach projektowych z przykładami w C++ - [refactoring.guru](https://refactoring.guru/design-patterns)
34-
* Spróbujcie w grupie metodą Copy & Paste dorzucić system budowania cmake do projektu. W tym celu popatrzcie na dotychczasowe zadania domowe i plik CMakeLists.txt.
35-
36-
___
37-
38-
## Projekt grupowy
39-
40-
Wykorzystajcie kod napisany podczas zajęć. Możecie też skorzystać z kodu w katalogu [solutions](solutions)
41-
42-
Projekt grupowy - kontynuacja. Możecie zmienić grupę jeśli chcecie ;)
43-
44-
___
45-
46-
## Organizacja prac
47-
48-
* Jak wyglądało wasze daily?
49-
* Czy Code Review nie jest zaniedbane?
50-
* Czy współpraca idzie gładko?
51-
* Zróbcie sobie retrospektywę :)
52-
53-
___
54-
55-
### Punktacja
56-
57-
* 3 pierwsze zadania - 5 punktów
58-
* zadania 4, 5, 6 - 8 punktów
59-
* 20 punktów za dostarczenie wszystkich 6 zadań przed 05.07.2020 (niedziela) do 23:59
60-
* brak punktów bonusowych za dostarczenie tylko części zadań przed 05.07
61-
* 6 punktów za pracę w grupie dla każdej osoby z grupy.
62-
63-
___
64-
65-
## Zadanie 1
66-
67-
Napisz klasę `Store`, która będzie umożliwiała dokonywanie zakupów. Wykorzystaj poniższy enum i funkcje.
68-
69-
```cpp
70-
enum class Response {done, lack_of_money, lack_of_cargo, lack_of_space};
71-
72-
Response buy(Cargo* cargo, size_t amount, Player* player);
73-
Response sell(Cargo* cargo, size_t amount, Player* player);
74-
```
75-
76-
___
77-
78-
## Zadanie 2
79-
80-
W klasach `Alcohol`, `Fruit`, `Item` dopisz brakujące metody oraz ich implementacje.
81-
82-
```cpp
83-
// override from Cargo
84-
size_t getPrice() const override;
85-
std::string getName() const override { return name_; }
86-
size_t getAmount() const override { return amount_; }
87-
size_t getBasePrice() const override { return base_price_; }
88-
Cargo& operator+=(size_t amount) override;
89-
Cargo& operator-=(size_t amount) override;
90-
bool operator==(Cargo& cargo) const override;
91-
```
92-
93-
___
94-
95-
## Zadanie 3
96-
97-
Dopisz do klasy `Ship`, `Cargo` oraz `Store` metodę `nextDay()`
98-
99-
* Klasa `Ship`: Metoda powinna odejmować po 1 sztuce monety za każdego członka załogi.
100-
* Klasa `Cargo`: Metoda powinna powodować psucie się towarów.
101-
* Klasa `Store`: Metoda powinna zmieniać ilość towaru w sklepach.
102-
103-
___
104-
105-
## Zadanie 4 (dla ambitnych)
106-
107-
Spróbuj napisać klasę `Time`, która będzie odpowiadać za zarządzanie czasem w grze.
108-
109-
Klasa ta powinna informować inne klasy, takie jak `Cargo`, `Ship`, `Store` o upłynięciu każdego dnia.
110-
111-
Poczytaj czym jest wzorzec projektowy [`Observer`](https://refactoring.guru/design-patterns/observer).
112-
113-
___
114-
115-
## Zadanie 5 (dla ambitnych)
116-
117-
Napisz zaprzyjaźniony operator wypisywania do strumienia
118-
119-
```cpp
120-
friend std::ostream& operator<<(std::ostream& out, const Store& store);
121-
```
122-
123-
Ma on w przystępny sposób wypisywać towar, jaki znajduje się w danym sklepie.
124-
125-
___
126-
127-
## Zadanie 6 (dla ambitnych)
128-
129-
Napisz klasę `Game`, która zarządzać będzie całą rozgrywką.
130-
131-
Dodaj jej jedną metodę publiczną `startGame()`.
132-
133-
Finalnie plik main powinien wyglądać tak:
134-
135-
```cpp
136-
#include "Game.hpp"
137-
138-
constexpr size_t start_money = 1'000;
139-
constexpr size_t game_days = 100;
140-
constexpr size_t final_goal = 2'000;
141-
142-
int main() {
143-
Game game(start_money, game_days, final_goal);
144-
game.startGame();
145-
146-
return 0;
147-
}
148-
```

module2/10-homework.md

Lines changed: 3 additions & 133 deletions
Original file line numberDiff line numberDiff line change
@@ -2,147 +2,17 @@
22

33
# Programowanie obiektowe
44

5-
## Podsumowanie
5+
## Praca domowa
66

77
<a href="https://coders.school">
88
<img width="500" data-src="../coders_school_logo.png" alt="Coders School" class="plain">
99
</a>
1010

1111
___
1212

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" --> dziedziczenie
19-
2. <!-- .element: class="fragment fade-in" --> wielodziedziczenie
20-
3. <!-- .element: class="fragment fade-in" --> funkcje wirtualne
21-
4. <!-- .element: class="fragment fade-in" --> funkcje czysto wirtualne
22-
5. <!-- .element: class="fragment fade-in" --> klasy abstrakcyjne
23-
6. <!-- .element: class="fragment fade-in" --> interfejsy
24-
7. <!-- .element: class="fragment fade-in" --> polimorfizm
25-
8. <!-- .element: class="fragment fade-in" --> pola i metody statyczne
26-
27-
___
28-
2913
### Pre-work
3014

31-
* Dowiedzcie się czym jest problem diamentowy
32-
* Poczytajcie o zasadach SOLID, dotyczących pisania dobrego kodu obiektowego
15+
* Dowiedz się czym jest problem diamentowy
16+
* Poczytaj o zasadach SOLID, dotyczących pisania dobrego kodu obiektowego
3317
* Lektura o wzorcach projektowych z przykładami w C++ - [refactoring.guru](https://refactoring.guru/design-patterns)
3418
* Spróbujcie w grupie metodą Copy & Paste dorzucić system budowania cmake do projektu. W tym celu popatrzcie na dotychczasowe zadania domowe i plik CMakeLists.txt.
35-
36-
___
37-
38-
## Projekt grupowy
39-
40-
Wykorzystajcie kod napisany podczas zajęć. Możecie też skorzystać z kodu w katalogu [solutions](solutions)
41-
42-
Projekt grupowy - kontynuacja. Możecie zmienić grupę jeśli chcecie ;)
43-
44-
___
45-
46-
## Organizacja prac
47-
48-
* Jak wyglądało wasze daily?
49-
* Czy Code Review nie jest zaniedbane?
50-
* Czy współpraca idzie gładko?
51-
* Zróbcie sobie retrospektywę :)
52-
53-
___
54-
55-
### Punktacja
56-
57-
* 3 pierwsze zadania - 5 punktów
58-
* zadania 4, 5, 6 - 8 punktów
59-
* 20 punktów za dostarczenie wszystkich 6 zadań przed 05.07.2020 (niedziela) do 23:59
60-
* brak punktów bonusowych za dostarczenie tylko części zadań przed 05.07
61-
* 6 punktów za pracę w grupie dla każdej osoby z grupy.
62-
63-
___
64-
65-
## Zadanie 1
66-
67-
Napisz klasę `Store`, która będzie umożliwiała dokonywanie zakupów. Wykorzystaj poniższy enum i funkcje.
68-
69-
```cpp
70-
enum class Response {done, lack_of_money, lack_of_cargo, lack_of_space};
71-
72-
Response buy(Cargo* cargo, size_t amount, Player* player);
73-
Response sell(Cargo* cargo, size_t amount, Player* player);
74-
```
75-
76-
___
77-
78-
## Zadanie 2
79-
80-
W klasach `Alcohol`, `Fruit`, `Item` dopisz brakujące metody oraz ich implementacje.
81-
82-
```cpp
83-
// override from Cargo
84-
size_t getPrice() const override;
85-
std::string getName() const override { return name_; }
86-
size_t getAmount() const override { return amount_; }
87-
size_t getBasePrice() const override { return base_price_; }
88-
Cargo& operator+=(size_t amount) override;
89-
Cargo& operator-=(size_t amount) override;
90-
bool operator==(Cargo& cargo) const override;
91-
```
92-
93-
___
94-
95-
## Zadanie 3
96-
97-
Dopisz do klasy `Ship`, `Cargo` oraz `Store` metodę `nextDay()`
98-
99-
* Klasa `Ship`: Metoda powinna odejmować po 1 sztuce monety za każdego członka załogi.
100-
* Klasa `Cargo`: Metoda powinna powodować psucie się towarów.
101-
* Klasa `Store`: Metoda powinna zmieniać ilość towaru w sklepach.
102-
103-
___
104-
105-
## Zadanie 4 (dla ambitnych)
106-
107-
Spróbuj napisać klasę `Time`, która będzie odpowiadać za zarządzanie czasem w grze.
108-
109-
Klasa ta powinna informować inne klasy, takie jak `Cargo`, `Ship`, `Store` o upłynięciu każdego dnia.
110-
111-
Poczytaj czym jest wzorzec projektowy [`Observer`](https://refactoring.guru/design-patterns/observer).
112-
113-
___
114-
115-
## Zadanie 5 (dla ambitnych)
116-
117-
Napisz zaprzyjaźniony operator wypisywania do strumienia
118-
119-
```cpp
120-
friend std::ostream& operator<<(std::ostream& out, const Store& store);
121-
```
122-
123-
Ma on w przystępny sposób wypisywać towar, jaki znajduje się w danym sklepie.
124-
125-
___
126-
127-
## Zadanie 6 (dla ambitnych)
128-
129-
Napisz klasę `Game`, która zarządzać będzie całą rozgrywką.
130-
131-
Dodaj jej jedną metodę publiczną `startGame()`.
132-
133-
Finalnie plik main powinien wyglądać tak:
134-
135-
```cpp
136-
#include "Game.hpp"
137-
138-
constexpr size_t start_money = 1'000;
139-
constexpr size_t game_days = 100;
140-
constexpr size_t final_goal = 2'000;
141-
142-
int main() {
143-
Game game(start_money, game_days, final_goal);
144-
game.startGame();
145-
146-
return 0;
147-
}
148-
```

module2/11-project.md

Lines changed: 1 addition & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -2,39 +2,14 @@
22

33
# Programowanie obiektowe
44

5-
## Podsumowanie
5+
## Projekt SHM
66

77
<a href="https://coders.school">
88
<img width="500" data-src="../coders_school_logo.png" alt="Coders School" class="plain">
99
</a>
1010

1111
___
1212

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" --> dziedziczenie
19-
2. <!-- .element: class="fragment fade-in" --> wielodziedziczenie
20-
3. <!-- .element: class="fragment fade-in" --> funkcje wirtualne
21-
4. <!-- .element: class="fragment fade-in" --> funkcje czysto wirtualne
22-
5. <!-- .element: class="fragment fade-in" --> klasy abstrakcyjne
23-
6. <!-- .element: class="fragment fade-in" --> interfejsy
24-
7. <!-- .element: class="fragment fade-in" --> polimorfizm
25-
8. <!-- .element: class="fragment fade-in" --> pola i metody statyczne
26-
27-
___
28-
29-
### Pre-work
30-
31-
* Dowiedzcie się czym jest problem diamentowy
32-
* Poczytajcie o zasadach SOLID, dotyczących pisania dobrego kodu obiektowego
33-
* Lektura o wzorcach projektowych z przykładami w C++ - [refactoring.guru](https://refactoring.guru/design-patterns)
34-
* Spróbujcie w grupie metodą Copy & Paste dorzucić system budowania cmake do projektu. W tym celu popatrzcie na dotychczasowe zadania domowe i plik CMakeLists.txt.
35-
36-
___
37-
3813
## Projekt grupowy
3914

4015
Wykorzystajcie kod napisany podczas zajęć. Możecie też skorzystać z kodu w katalogu [solutions](solutions)

0 commit comments

Comments
 (0)