Maybe you can tell by the varied replies you have to this thread, but we are all pretty much talking about applying principles.
The principles of OOP as we have individually learned them, are likely to be different to each of us. They are personal. How we describe them toe each other, and to you in this particular medium - and you ask a particularly pertinent question, what book should I buy?
To be glib, I suppose the answer is, it depends on how you learn.
But, if you are like me, to really use OOP properly you have to invest an awful lot of time and effort - we are talking years - and I am really just a novice at this point.
you ask me to criticize your class, I mean I read it twice and I still cannot understand what it is supposed to do. Anthony implies it does too much.
Now both of use can start reeling off principles that your class has broken in each of our expericences - and I guarantee that neither of us will agree (I know I have drunk beer with him) - except for one thing, it could be done better.
But that is us applying imaginary solutions to your imaginary or implied problems.
It is your journey to make, certainly we can show you signposts only.
My best advice consists of two things:
Take a day off, go the biggest city nearest to you. Find the biggest bookstore, in that city and spend the entire day browsing OOP books 'till you find the one that you feel you understand - be prepared to buy a book whose sample code is not PHP ( the best ones seem to be Java ).
Search this forum for “OOP books”.