Csharp oop principles (using abstract methods and interfaces)