If you want your contract to be updateable, you can have the contract store an address of a contract which is the part you might want to change. Then, to update the contract, you upload the new version of the contract ( or contract component) , and make the address that the first contract stores point to the new one.
Uh...
Users interact directly with contract A.
Contract A stores a address which currently points to contract B, and uses whatever contract it currently points to to accomplish whatever it needs to do for users.
To update the part of Contract A, upload an updated contract C, and send A a message to tell it to change the address it stores to point to contract C instead.
Contract A only changes where the address points if whatever conditions it was designed to use for that are met.
And, of course, you don't have to use this "point to another contract" thing.
That's just if you need part of the contract to be updateable under some conditions, which you might not need.