https://emmaeze.medium.com/herodemystifying-object-oriented-programming-oop-a-beginners-guide-fdffb3dc39f4