Objektno-orijentisano programiranje (OOP) je pristup razvoju softvera u kojem je kod organizovan u obliku objekata
Enkapsulacija
Enkapsulacija je spajanje podataka i metoda koji rade s tim podacima unutar jedne klase, kao i ograničavanje direktnog pristupa unutrašnjem stanju objekta.
Jednostavno rečeno: objekat upravlja sopstvenim podacima, a spoljni kod komunicira s njim putem metoda.
Apstrakcija
Apstrakcija je izdvajanje samo važnih karakteristika objekta i skrivanje detalja njegove implementacije.
Jednostavno rečeno: korisnik je zainteresovan za to šta objekat radi, a ne kako tačno to radi.
Polimorfizam
Polimorfizam je mogućnost objekata sa različitom implementacijom da koriste isti interfejs. U testiranju, to pomaže da se piše univerzalni kod koji radi sa različitim tipovima podataka ili klasa.
Primer u Pythonu:
class Animal:
def make_sound(self):
pass
class Dog(Animal):
def make_sound(self):
return "Vau!"
class Cat(Animal):
def make_sound(self):
return "Mijau!"
def animal_sound(animal: Animal):
print(animal.make_sound())
dog = Dog()
cat = Cat()
animal_sound(dog) # Vau!
animal_sound(cat) # Mijau!
U automatizovanim testovima, polimorfizam je koristan za:
- Kreiranje univerzalnih metoda za proveru
- Implementaciju različitih strategija testiranja putem jednog interfejsa
- Podršku različitih verzija API/UI bez menjanja testova
Nasleđivanje
Nasleđivanje je mehanizam koji omogućava novoj klasi da automatski koristi postojeću klasu, nasledjujući njena svojstva i metode.
Jednostavno rečeno: nova klasa ponovo koristi kod roditeljske klase i je proširuje po potrebi.