dunno about the first part but i can try with your oop question
i also found objects very tricky to understand, you're not alone
you create objects via CLASSES, which you can think of the blueprint for objects - when you create an object from this class, it will have all the traits you defined in the initial class
within this class you define METHODS, which are basically functions but they will be enclosed within your objects - this sounds complicated, but it is easier when shown in practice
ill use some pseudocode to make all clear
lets make a class for a bicycle
within this class, we'll define things like speed, gear, etc, and give methods to change these
this means any objects we create from the BICYCLE class will have a "speed" variable which is set to 0 and a "gear" variable which is set to "1"
next we can define some methods - this is where things get interesting
what these two methods do is give us the ability to change the SPEED and GEAR of our bike object via calling the objects method with the new value in place of newGear/newSpeed - again, when you see this in practice it seems simpler
so now that we've got this class we can create an object from it as such (this is pseudocode, not c++!!!!)
now we have a bicycle called "bike1"
"bike1" has a speed of 0, a gear of 1, and two methods to change it as such
to speed "bike1" up to say 5, we would use:
to change "bike1" to gear 3, we would use:
this object only changes things within itself...BUT objects can be used to change any part of your program as well as other objects, assuming you do it correctly
this is a very basic overview and there is much more to it, and this is NOT c++ code
ask questions if necessary