I somehow understand what a library is in computer programming.
Library is a collection of subroutines or classes to provide services on creating an application.
I read these paragraphs and wasn't able to understand
what it means about C language struct and the problem experienced in it.
Many of these libraries manipulated data in the form of open record data-structures,
such as the C-language struct. The main problem with record structures is that the
library designer cannot hide the implementation of the data used in the procedures.
This makes it difficult to modify the implementation of the library without affecting the
client code because that code is often tied to the particular details of the data structures.
By the late 1980s, object-oriented programming (OOP) became popular with C++.
One of the greatest advantages of OOP was the ability to hide certain aspects of
a library's implementation so that updates do not affect client code( assuming the
interfaces do not change). The other important advantage is that procedures were
associated with the data structure. The combination of data attributes and procedures
( called methods ) are known as a class
1st Paragraph question
The implementation of the data used in the procedures cannot be hidden
by the library designers is because C does not use the object-oriented programming
feature if I'm not wrong.
Updating a library is just downloading the library and putting it in your lib folder?
Why is it difficult to modify the implementation of the library without affecting the client code?
What is a client code anyway?-is it the software that was created using the library?
How is it going to affect the client code?
2nd Paragraph question
I understand how the implementation and the interface is separated using C++.
I also understand how the implementation is hidden using C++. So if C++ does
have the capability to hide the implementation of the library does it mean that
modifying or updating the library implementation is not gonna be difficult and it's
not going to affect the client-code ( not unless if the interface is changed )?
How is it not going to affect the client-code?
Sorry for so many questions but if you can give me a good link about what I'm
asking here I would be glad to read it.