Обектно-ориентираното програмиране (ООП) е подход към разработката на софтуер, при който кодът е организиран под формата на обекти
Инкапсулация
Инкапсулацията е обединяване на данни и методи, които работят с тези данни, в рамките на един клас, както и ограничаване на директния достъп до вътрешното състояние на обекта.
Просто казано: обектът управлява собствените си данни, а външният код взаимодейства с него чрез методи.
Абстракция
Абстракцията е изолиране само на важните характеристики на обекта и скриване на детайлите на неговата реализация.
Просто казано: потребителят се интересува от това, което прави обектът, а не как точно го прави.
Полиморфизъм
Полиморфизмът е възможността на обекти с различна реализация да използват един и същи интерфейс. В тестовете това помага да се пише универсален код, който работи с различни типове данни или класове.
Пример в Python:
class Animal:
def make_sound(self):
pass
class Dog(Animal):
def make_sound(self):
return "Га!"
class Cat(Animal):
def make_sound(self):
return "Мяу!"
def animal_sound(animal: Animal):
print(animal.make_sound())
dog = Dog()
cat = Cat()
animal_sound(dog) # Га!
animal_sound(cat) # Мяу!
В автоматизираните тестове полиморфизмът е полезен за:
- Създаване на универсални методи за проверка
- Реализиране на различни стратегии за тестване чрез един интерфейс
- Поддръжка на различни версии на API/UI без промяна на тестовете
Наследство
Наследството е механизъм, който позволява на нов клас автоматично да използва съществуващ клас, наследявайки неговите свойства и методи.
Просто казано: новият клас рециклира кода на родителския клас и го разширява при необходимост.