Page Object Model is a design pattern where every web page is represented as a Class. The class contains: 1. Locators (private static final By variables), 2. Web Elements (WebElement instances), 3. Methods (actions and validations specific to that page). This separates page representation from test logic, making tests more maintainable and readable. When UI changes, you only update the Page Object, not all the tests.
If your app is a house, POM is a map where 'LoginPageObject' contains the username/password fields and login() method. If the button ID changes, you only look in the LoginPageObject to update it. All tests using LoginPageObject automatically get the fix.
Why does POM make automation more maintainable?