The material I've been using to learn Java teaches OOP concepts, of which I barely grasp thinking in terms of objects and classes.
Is this still the preferred way of thinking or in 2021 there is a better model to follow?
Thanks
The key features of OOP are encapsulation of data (properties and the actions to perform on those are hidden from the implementing code) and polymorphism (different interchangeable implementations of the same interface, which in turn enables patterns such as dependency injection).
With OOP data typically is mutable whereas with paradigms such as Functional Programming (FP) data usually is immutable.
These features might or might not lend themselves to what you're trying to achieve. It's not so much a question of the data you're going to store but what your application is supposed to do with that data (other than storing it, that is).
You might want to look into data structures that are particularly conducive to storing DNA data. DNA sequences in some ways are similar to natural language, which is why data structures that are commonly used for storing natural language (such as tries, for example) are useful for storing DNA data, too.
Now, this type of realisation comes only after you have done enough programming in one of the programming paradigm(OO or FP), and have at least some understanding of the other.
If you are using Java for career progression, then stick with it. But if you want to be able to decide on whether OO or FP is useful for a project, then that comes from practice. So practice on paradigm and have some understanding of the other. That makes it easy for decision making.
It does a great job of starting you from first principles and showing you not just the how, but the why of applying OOP to solve problems.
FP (Functional Programming) has it's place. Sometimes a pure function is a beautiful thing to have.
It's also ok to mix OOP and FP.
If you're not simulating anything, then perhaps a functional approach is easier and less confusing for the reader.
As most of current programming languages and production systems.