Hello forum members!
I program in Java for about six months (and in general, I’m probably programming the same amount), before that I’ve touched on C # a little bit.
I started the study with: "Learning Java" from O REILLY, then read Bruce Ekkel's "Java Philosophy" (which was hard for me). Then I tried myself in mobile development, studying the book from O`REILLY "Programming for Android". But the problem is that literature gives a technical understanding of the language, meaning what is a class, what is a variable, a collection. This literature does not give a clear understanding of how I should design my classes, which class contains such fields, such as how to make the structure of classes beautiful, so that the whole program does not consist of one class of 3000 flows.
For example, take the decomposition of the game of checkers. How to design this program properly? In my understanding, there should be a class Deck, a class of checkers with an arbitrary name, a class Player. But how to make these classes a whole? How to improve the relationship between objects, how to encapsulate logic to get rid of duplicate code.
Now you should not mention design patterns. Because if there is a pattern, it doesn’t mean that we have to poke it everywhere, anywhere. I would like to create the proper program architecture myself.
So I would like to know, and how did you learn to design your program architecture?