Discover techniques used in object-oriented programming (OOP) languages through an architecture-focused approach.