One thing i had taught to me when i was learning the principles of OOP was that classes (Objects) are designed to be like real world object (as Weed describes above by using a book)
My tutor used the analogy of being a restaurant, and the following scenario.
You enter the door and wait, the waiter approaches you and shows you to your table, and then presents you with a menu.
You choose your food from the menu.
The waiter returns, takes your order, takes the menus then leaves.
The waiter takes your order to the chef.
The chef prepares your meal as per your request.
The chef passes the complete meal to the waiter, who then brings the meal to your table.
If you look at the above sequence, you (The customer object) has a wait method, a menu_read method a sit_down method and an order_storage variable.
The waiter (Waiter object) has an order_storage variable, an accept_order method, a deliver_order method, a carry_meal method and a take_menu method.
The Chef (Chef object) has an accept_order method, a cook_meal method and a give_meal method.
Of course this is deliberately very simplified, and in reality i'm sure you could probably add half a dozen more methods/variables and such like if you analysied the sequence further.
The point is however, anything that constitutes some kind of action to take is a method, any data that that action operates on is a variable.
If an action is only performed by that object (Such as the chef cooking the meal) then it's a private method, if it's a method that interfaces to another class (Such as passing the meal to the waiter) then it's a public method.
Most data will by it's nature be private to a class, but there are times when it may need to be public.
In the restaurant example, the order_storage could be public and shared between all objects, or you could make it private and insist that a method be used to manipulate it.
Classes/Objects used in this fashion are used to provide a blackbox programming model. Above... the Customer object does not need to know how the chef object prepares his meal, he just needs to know that it will arrive at his table when it's ready, how it gets there is of no concern. You could replace the chef object with a "french chef" object, and as long as it had the same "public interface" as the original chef then everything would work just the same.
That's the essence of Object orientated programming in a nutshell, and something which has come of age in PHP5.
Cheers
Shawty