Organizing everything about an object into a class is called encapsulation. Encapsulation is a big fancy word, but all it means is that you can enclose functionality that is logically related into a single place.
“Dependency injection is a way to simulate adding more parameters to a function.” The goal of dependency injection is to make components more reusable and testable.
Soundness is the property of only being able to prove "true" things.
Completeness is the property of being able to prove all true things.
Soundness is an analyzer's ability to prove the absence of errors. If a program is accepted by an analyzer, then the program is guaranteed to be safe.
On the other hand, completeness is an analyzer's ability to prove the presence of errors. If a program is rejected, then that program has errors.