This diagram shows the so called domain model for the Sudoku app. A class is an abstraction of a number of objects with the same characteristics and behaviour. A board for instance has 81 cells, each of them is an object, but all cells have the same characteristics (digit, isGiven) and behaviour (the list of operations AddCandidateCentre(), AddCandidateCorner(), ConvertDigitToBitmask() and so on). The operations of a class indicate the main responsibilty of that class.
In many cases objects of classes collaborate with each other to perform an operation. The lines between the classes indicate the flow of the message traffic. A board delegates CheckIsValid() to 27 houses to do the work. Note that the triangle under House means that a Row, Column and Box are subtypes of a House. A row IS A house, a column IS A house and a box IS A house, they inherit all attributes and operations of the house.
It is important to understand that most messages in UML sequence diagrams become operations in the class diagram. In other words, when you refine requirements using UML sequence diagrams you enrich the class diagram with operations automatically. And when you refine all relevant use cases, you get a complete class diagram.
Also note that in this way the complexity of the app is divided among the classes.