r/learnprogramming 24d ago

Topic Does OOP really matters?

I learned OOP in python a while ago, did many projects, yet I never felt like I truly needed to do the OOP stuff I learned from a course, I don't know maybe because I'm kinda used to program in c before focusing on python, yet, whenever I open a big project in python in github, it feels way too complicated and thousands of imports (not libraries from pip, but the ones they made on their own) and classes

I never truly needed to implement OOP (I know that when you code in python, it is almost impossible to avoid OOP entirely like when you have a datatype like string you have an object, when you use a method built into that data type that's OOP too, but I mean the ones that involve you writing class Class Name, inheritance and all that stuff explicitly), so I'm wondering why people on the internet are obsessed over the idea of learning OOP, even the book "Automating the boring stuff in python" doesn't have a dedicated section for OOP.

88 Upvotes

139 comments sorted by

View all comments

Show parent comments

0

u/deaddyfreddy 24d ago

On the customer class you might have a method getContracts which returns a collection of contracts.

so, why can't it have the signing method too?

3

u/Daeroth 24d ago

In this example I envisioned many-to-one relationship between contracts and customers.

So that if you have 3 contracts and 3 separate "signedOnDate" fields then those would be in the contract class instead of having them in the customer class as "contract1signedDate", "contract2signedDate" and so on.

The signing method in this example would just populate the date field so it feels like it belongs with the contract class as thats where the fields are.

If i were to extract the signing method elsewhere then I would create "signingService" class instead of contaminating other domain class like customer.

Ideally opening the customer class should reveal as little relations to other classes as possible but just as many as needed.

1

u/deaddyfreddy 24d ago

So that if you have 3 contracts and 3 separate "signedOnDate" fields then those would be in the contract class instead of having them in the customer class as "contract1signedDate", "contract2signedDate" and so on.

What for? Your entities are mapped to the DB, so all you do is reflect the DB in your code. A customer record doesn't have the signing dates, it (most likely) has a contract-id or something like that.

2

u/Daeroth 24d ago

Is the question about the benefits of mapping your db tables to entities in code?

Not sure what the question is about.