OPP (Objektinio orientuoto programavimo) — tai požiūris į programų kūrimą, kai kodas organizuojamas kaip objektai
Inkapusuliacija
Inkapusuliacija — tai duomenų ir su jais dirbančių metodų sujungimas viename klasėje, taip pat tiesioginės prieigos prie objekto vidinės būsenos ribojimas.
Paprastais žodžiais: objektas pats valdo savo duomenis, o išorinis kodas su juo sąveikauja per metodus.
Abstrakcija
Abstrakcija — tai svarbiausių objekto savybių išskyrimas ir jo įgyvendinimo detalių slėpimas.
Paprastais žodžiais: naudotojui svarbu, ką daro objektas, o ne kaip jis tai daro.
Polimorfizmas
Polimorfizmas — tai galimybė objektų su skirtinga įgyvendinimu naudoti tą patį sąsają. Tai padeda rašyti universalią kodą, dirbant su skirtingų tipų duomenimis ar klasėmis.
Pavyzdys Python:
class Animal:
def make_sound(self):
pass
class Dog(Animal):
def make_sound(self):
return "Woof!"
class Cat(Animal):
def make_sound(self):
return "Meow!"
def animal_sound(animal: Animal):
print(animal.make_sound())
dog = Dog()
cat = Cat()
animal_sound(dog) # Woof!
animal_sound(cat) # Meow!
Automatiniuose testuose polimorfizmas naudingas:
- Kurti universalias patikros metodus
- Įgyvendinti skirtingas testavimo strategijas per vieną sąsają
- Palaikyti skirtingas API/UI versijas be testų keitimo
Paveldėjimas
Paveldėjimas — tai mechanizmas, leidžiantis naujai klasei naudoti esamą, automatiškai įgyjant jos savybes ir metodus.
Paprastais žodžiais: nauja klasė pakartoja tėvų klasės kodą ir, jei reikia, jį išplečia.
Git
1. Versijų kontrolės sistemos. Vietinės, centralizuotos, paskirstytos.
2. Pagrindinės sąvokos. Saugykla, indeksas, įsipareigojimas, nuorodos, šaka, darbo kopija.
3. Darbas su saugykla. Komandos: init, clone, status
4. Sukurti įsipareigojimą. Komandos: add, commit.
5. Kurti, peržiūrėti, keisti, ištrinti šakas. Komandos: branch, checkout, log, diff.
6. Pakeitimų atšaukimas. Komandos: restore, rm, checkout, revert.
7. Pakeitimų sujungimas. Komandos: merge, cherry-pick, rebase.
8. Darbas su nuotoliniu saugykla. Komandos: fetch, pull, push.
9. Darbas su GitHub, kopijos ir Pull Requests.