Programowanie obiektowe (OOP) to podejście do tworzenia programów, w którym kod jest organizowany w postaci obiektów
Enkapsulacja
Enkapsulacja to łączenie danych i metod, które z nimi pracują, w jednej klasie, a także ograniczanie bezpośredniego dostępu do wewnętrznego stanu obiektu.
Prostymi słowami: obiekt sam zarządza swoimi danymi, a zewnętrzny kod wchodzi z nim w interakcję przez metody.
Abstrakcja
Abstrakcja to wyodrębnianie tylko ważnych cech obiektu i ukrywanie szczegółów jego implementacji.
Prostymi słowami: użytkownik interesuje się tym, co robi obiekt, a nie jak dokładnie to robi.
Polimorfizm
Polimorfizm to możliwość obiektów z różną implementacją korzystania z tego samego interfejsu. W testach pomaga to pisać uniwersalny kod, który działa z różnymi typami danych lub klasami.
Przykład w Python:
class Animal:
def make_sound(self):
pass
class Dog(Animal):
def make_sound(self):
return "Hau!"
class Cat(Animal):
def make_sound(self):
return "Miau!"
def animal_sound(animal: Animal):
print(animal.make_sound())
dog = Dog()
cat = Cat()
animal_sound(dog) # Hau!
animal_sound(cat) # Miau!
W testach automatycznych, polimorfizm jest przydatny do:
- Tworzenia uniwersalnych metod sprawdzania
- Implementacji różnych strategii testowania przez jeden interfejs
- Wsparcia różnych wersji API/UI bez zmiany testów
Dziedziczenie
Dziedziczenie to mechanizm, który pozwala nowej klasie automatycznie korzystać z istniejącej klasy, odziedziczając jej właściwości i metody.
Prostymi słowami: nowa klasa ponownie używa kodu klasy rodzica i w razie potrzeby go rozszerza.
Git
1. Systemy kontroli wersji. Lokalny, scentralizowany, rozproszony.
2. Podstawowe pojęcia. Repozytorium, indeks, commit, wskaźniki, gałąź, kopia robocza.
3. Praca z repozytorium. Polecenia: init, clone, status
4. Tworzenie commitu. Polecenia: add, commit.
5. Tworzenie, wyświetlanie, przełączanie między gałęziami, usuwanie. Polecenia: branch, checkout, log, diff.
6. Cofanie zmian. Polecenia: restore, rm, checkout, revert.
7. Scalanie zmian między gałęziami. Polecenia: merge, cherry-pick, rebase.
8. Praca z repozytorium zdalnym. Polecenia: fetch, pull, push.
9. Praca z GitHub, forki i Pull Requests.