Skip to content

Commit 2dc5fa0

Browse files
committed
homework added
1 parent fa9fc87 commit 2dc5fa0

File tree

5 files changed

+232
-16
lines changed

5 files changed

+232
-16
lines changed

module1/index.html

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,6 @@
3333

3434
<h1>OOP #1</h1>
3535
<h2>Object-Oriented Programming #1</h2>
36-
<h3>klasy, obiekty, pola, metody, konstruktory, destruktory, hermetyzacja, gettery, settery</h3>
3736
<a href="https://coders.school">
3837
<img width="500" data-src="../coders_school_logo.png" alt="Coders School" class="plain">
3938
</a>
@@ -46,13 +45,16 @@ <h3>Łukasz Ziobroń</h3>
4645

4746
## Agenda
4847

49-
1. <!-- .element: class="fragment fade-in" --> Przypomnienie STLa
50-
1. <!-- .element: class="fragment fade-in" --> Jak czytać dokumentację
51-
1. <!-- .element: class="fragment fade-in" --> <code>std::vector&lt;T&gt;</code>
52-
1. <!-- .element: class="fragment fade-in" --> <code>std::list&lt;T&gt;</code>
53-
1. <!-- .element: class="fragment fade-in" --> <code>std::forward_list&lt;T&gt;</code>
54-
1. <!-- .element: class="fragment fade-in" --> <code>std::array&lt;T, N&gt;</code>
55-
1. <!-- .element: class="fragment fade-in" --> <code>std::deque&lt;T&gt;</code>
48+
1. <!-- .element: class="fragment fade-in" --> klasy
49+
2. <!-- .element: class="fragment fade-in" --> obiekty
50+
3. <!-- .element: class="fragment fade-in" --> pola, właściwości
51+
4. <!-- .element: class="fragment fade-in" --> metody, funkcje klasy
52+
5. <!-- .element: class="fragment fade-in" --> modyfikatory dostepu - <code>public</code>, <code>private</code>
53+
6. <!-- .element: class="fragment fade-in" --> konstruktory
54+
7. <!-- .element: class="fragment fade-in" --> destruktory
55+
8. <!-- .element: class="fragment fade-in" --> hermetyzacja
56+
9. <!-- .element: class="fragment fade-in" --> gettery
57+
10. <!-- .element: class="fragment fade-in" --> settery
5658

5759
</textarea>
5860
</section>
@@ -113,6 +115,10 @@ <h3>Łukasz Ziobroń</h3>
113115
data-separator-vertical="^___"
114116
data-separator-notes="^Note:">
115117
</section>
118+
<section data-markdown="presentation_homework.md"
119+
data-separator-vertical="^___"
120+
data-separator-notes="^Note:">
121+
</section>
116122
<section data-background="#111111">
117123

118124
<h1>Coders School</h1>

module1/presentation_homework.md

Lines changed: 146 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,146 @@
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.

module1/presentation_oop_intro.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ ___
4747
### Czym jest klasa?
4848

4949
Klasa to typ.
50+
<!-- .element: class="fragment fade-in" -->
5051

5152
Klasa w C++ nieco różni się od rzeczywistej klasy :) W C++ (czy też programowaniu obiektowym ogólnie) klasa określa cechy obiektu:
5253
<!-- .element: class="fragment fade-in" -->

module1/solutions/exercise4.cpp

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,6 @@
22

33
class Cargo {
44
public:
5-
Cargo() = default;
6-
Cargo(size_t amount, std::string name, size_t basePrice)
7-
: name_(name), amount_(amount), basePrice_(basePrice)
8-
{}
9-
10-
std::string getName() const { return name_; }
11-
size_t getAmount() const { return amount_; }
12-
size_t getBasePrice() const { return basePrice_; }
135
Cargo& operator+=(size_t amount) {
146
amount_ += amount;
157
return *this;

shm/README.md

Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
# Symulator Handlu Morskiego - SHM
2+
3+
Wykorzystaj kod napisany podczas zajęć. Jeśli go nie masz to skorzystaj z kodu w katalogu [solutions](../module1/solutions)
4+
5+
___
6+
7+
## Zadanie 1
8+
9+
W klasie `Cargo` napisz operator porównania (`operator ==`), kóry będzie sprawdzał, czy towary są takie same.
10+
11+
___
12+
13+
## Zadanie 2
14+
15+
Do klasy `Cargo` dopisz gettery oraz odpowiedni konstruktor, który wypełni wszystkie pola tej klasy.
16+
17+
___
18+
19+
## Zadanie 3
20+
21+
Napisz klasę `Island`, która będzie posiadała zmienną `Coordinates position_` oraz odpowiedni getter.
22+
23+
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.
24+
<!-- Klasa `Island` powinna posiadać także sklep. -->
25+
26+
___
27+
28+
## Zadanie 4
29+
30+
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.
31+
32+
___
33+
34+
## Zadanie 5
35+
36+
W klasie `Map` utwórz konstruktor bezargumentowy, a w jego ciele utwórz 10 wysp, które przechowasz w `std::vector<Island&>`.
37+
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).
38+
Wymyśl sposób, aby pozycje wysp się nie powielały.
39+
40+
___
41+
42+
## Zadanie 6
43+
44+
W klasie `Map` napisz funkcję
45+
46+
`Island* getIsland(const Island::Coordinates& coordinate)`
47+
48+
Powinna ona przeszukać `std::vector<Island&>` i zwrócić szukaną wyspę.
49+
50+
___
51+
52+
## Zadanie 7
53+
54+
Napisz klasę `Player`, która posiadać będzie 3 pola:
55+
56+
* `std::unique_ptr<Ship> ship_`
57+
* `money_`
58+
* `availableSpace_`
59+
60+
Dopisz także odpowiednie gettery oraz konstruktor.
61+
62+
Dopisz także 2 funkcje, które powinny zwracać dane ze statku:
63+
64+
* `size_t getSpeed() const`
65+
* `Cargo* getCargo(size_t index) const`
66+
67+
___
68+
69+
## Zadanie 8
70+
71+
W klasie `Player` napisz prywatną funkcję, która obliczać będzie `availableSpace_` na podstawie aktualnej ilości towaru na statku.

0 commit comments

Comments
 (0)