Programowanie obiektowe (OOP) to model języka programowania, który koncentruje się na wykorzystaniu obiektów zamiast działań w celu realizacji zadań. Wiąże się to z przyjęciem podejścia, które jest bardziej uważne na dane i mniej związane z logiką, co częściej ma miejsce w przypadku innych paradygmatów programowania. Spojrzenie na przedmioty i działania jest odwrotnością tego, co w innych językach, a nacisk kładzie się na same przedmioty, a nie na wykonywanie zadań, które je wykorzystują. W podobny sposób, struktura nie bierze pod uwagę decydowania o tym, jak zastosować logikę, ale nad definicją danych, które będą używane w programowaniu.
Projektowanie oprogramowania komputerowego z programowaniem obiektowym rozpoczyna się od zdefiniowania obiektów, którymi program ma manipulować. Programista zacznie wtedy identyfikować relacje między każdym obiektem, proces ten zwykle nazywa się modelowaniem danych. Zasadniczo programista stara się umieścić obiekty w klasyfikacji, pomagając w ten sposób zdefiniować dane, które są częścią dziedziczenia wnoszonego do zadania przez każdy obiekt. W rzeczywistości proces definiowania tych klas i podklas danych jest zwykle nazywany dziedziczeniem.
OOP pomaga również sortować obiekty w sposób, który pozwala na polimorfizm. Oznacza to, że różne obiekty będą w stanie odpowiedzieć na wspólną wiadomość, ale każdy w inny sposób, który jest unikalny dla tego obiektu. Jednocześnie tego typu programowanie pozwala na hermetyzację obiektu, skutecznie ukrywając lub chroniąc dane związane z obiektem przed łatwym wglądem bez dostępu bezpieczeństwa.
Jedną z zalet programowania obiektowego jest to, że proces dobrze wykorzystuje modułowość, co oznacza, że obiekty i zadania są pogrupowane w taki sposób, że każdy moduł może być rozpatrywany niezależnie. Może to być bardzo pomocne przy wprowadzaniu ulepszeń w programie, ponieważ modułowość umożliwia sprostanie zadaniu dokonywania zmian w konfiguracji jednej części oprogramowania bez wpływu na strukturę i funkcję innych modułów.