ang halaga nyan sa programming is pwede mo ma combine ang code at data mo sa isang container at isolated lang sya dun, so effect nun less ung dependency nya sa ibang part ng code mo kaya madali sya i combine sa next program na gagawin mo, o madaling gamitin ng iba, importante kasi yan sa programming, i minimize mo ung effect nya sa ibang part ng code, for maintainability purposes or easy testability of code.
cguro analogy nyan para madaling maintindihan(at least for me) is imagine mo real world object (tangible object) yung ginagawa mong software, halimbawa sa enrollment system, ano ba ung mga object na maisip mong part ng real world na enrolment system, dba mga students, mga staff, teacher, database, subjects, grades etc. bale gagawan mo yan sila ng isang container(bawat object) na andun ang kanilang characteristics tsaka actions, i coconvert mo yan sa software equivalent nila, then igagaya mo ung behavior nila like in the real world sa software version, then you define their relationship and apply mo ung mga steps na ginagawa nila, just like how they behave sa real world system.
di mo maiiintindihan agad yan unless gamitin mo lagi and actually pwede ka naman makagawa ng program kahit di gagamit nyan pero okay sya aralin/beneficial sya sa ating mga programmers kasi mga most used programming language ngayon eh ni design having that architecture (java, c++, c#, etc). So pag di mo ginamitan ng style na yan ung program mo, maaring di mo ma maximize ung paggamit ng programming language.
i say don't use it unless you need to, try mo muna magcode ng walang halong OOP, then pag master mo na, try mo apply si OOP makikita mo sa sarili mo baket sya need.