https://medium.com/@Anatolii_Zhadan/a-beginners-guide-to-object-oriented-programming-in-c-ac71837df9df