Here's my 2 cents...
1. Never ever hit a cat or any other animal. It's too close to animal abuse to feel comfortable to me (I don't advocate hitting kids also).
2. You should never punish a cat at all.
This takes some explaining, as I don't meant you shouldn't train your cat to avoid certain behaviors. What I mean it that you don't want your cat to feel that you are punishing her for anything. Cats are not group animals and they don't see us as a leader, so it's not "legitimate" for us to punish them and will usually lead to resentfulness and bitterness.
When you encouner a behavior problem, first of all remember that in 90% of all cases it's a natural feline behavior that is deemed as a problem by us humans. For example, cats love to jump onto high places and they need to scratch surfaces. That is simply because they are cats. So, the first thing you should have in mind is providing them with an alterntive to this behavior, one that would go along with your home
. Make sure they have a scratching post that they
like and that they have other places they're allowed to jump onto. Next, try to make the carpet and kitchen counters undesireable. Use any of the great methods suggested in this thread.
Water squirts and noise can be effective with some cats, but the right way to use them is not to draw attention to the face that you
are the one making the cat uncomfortable. Your ideal situation would be a kitchen counter that rattles or a carpet that squirts water when scratched. The point is that this is not punishment, but trying to create an unpleasant connection with the action.
I hope I'm making sense here
Long posts always make me feel like I'm babbling...