I am glad that you have identified a problem that you can work on.
Your son is 3 years old and he will learn things from you. If you lose your "cool" with him and shout, then he is getting mixed messages and will also learn to shout.
It is very hard not to should when children demand our attention or won't do as we say. We just have to be tolerant, but do not give in to him.
There have been Nanny programmes on TV and if you do get an opportunity to watch these when they are televised in your country, they are definitely well worth watching.
Hope things improve and you have a wonderful relationship with your son.
Best wishes.
Thank you so much, that's really helpful advice and I'm am going to work on the way I handle him I catch myself yelling sometimes and feel really bad about it, so that is the main thing I need to work on.
Although you did not have your son for a year, do not many any excuses to allow him to do things to you that are not acceptable behaviour.
You still need to be firm, you do not have to shout, just be assertive in your voice when you tell him that that type of behaviour (grabbing and squeezing your boobs, punching and throwing this things) is unacceptable and will not be tolerated. If he does do something like that, then give him a warning that next time he will have "time out", or will forfeit watching his favourite TV programme or whatever you decide.
Children sometimes do get frustrated or may feel ill, but cannot express into words how they feel and will exhibit "naughty" behaviour. But that does not mean that you should allow him to do this.
You can give him a cuddle and tell him you love him, but that what he is doing is not nice and that mummy does not like it.
Children can also act like this when they are tired, so do make sure that he gets his mid day naps if he is tired and also a good night time routine when he is got ready for bed at 7pm (bathed, teeth brushed and put to bed), give him a warm milky drink and a light healthy snack if he is peckish. I find that children that go to bed feeling thirsty and hungry do not settle down very well for the night.
Tuck him into bed in the evening and read him a bedtime story of his choice. Children love to listen to stories.
You do not say how often you take him to his grandparents. But does he have to go so often? If you do take him every week, perhaps taking him and staying with him for a couple of hours to see them is better than him getting so upset about things. Perhaps you could have a chat with the grandmother to find out what is going on when your son is with them. It may be that he is "naughty" when he is with them and they are either shouting at him or shouting with each other with regard to how to deal with his "naughty tantrums".
I get the opposite, my grandchildren usually throw a tantrum because they do not want to go back home and we have to be firm and tell them that as much as we love them, they have to go (especially if it is a school day the next day) and of course, it is up to the parent to decide when and how often the grandchildren sees and stays with the grandparent (as well as it being agreeable to the grandparent!)
Another tip for you. If you do give your son lots of sugary foods and sweets and chocolates, only give these occasionally as a treat. Some children do get rather hypo after a spike of sugary things.
When your baby is born, do encourage and involve you son with things that you do and also set some of your time just for him (even if it is just reading him a bedtime story).
Hope things work out well for you.
Best wishes.