Design patterns, OOPS - concepts and code