Q6 : Discuss the advantages of C# properties, relative to writing accessor methods in C++ or Java.
A : One of the advantage of C# properties relative writing accessor methods in C++ or Java is it can control access to the fields.
Q7 : Explain the dangers of C’s approach to encapsulation.
A : The main problem is that the biggest part of encapsulation is done via hidding, rather than protection. This hidding is achieved through definition hidding: a header file is preprocessed (which is a synonym for copy-pasted) into the implementation file. Anyone with this header file will be able to access any method or public variable of a the client related to the header, left appart any "static" method / variable. Static is actually the only rue level of protection here, as it's the only one that another unit (file) would not be able to access even if it's aware of it's existence. This whole "protection-is-name-hiding" approach leads to a load of problems: you can access a symbol using the wrong datatype and your compiler will happily do so. To protect critical parts, you should rely on text being hidden from the compiler while it's processing certain units (via #ifdef / #define).
Q8 : Why didn’t C++ eliminate the problems discussed in Problem 7?
A : It didn't eliminate the problem because it evolved from C. Hence, it kept a lot of backward compatibility, and the same way of doing basic things. While some problems where solved (like the protected access, which is in-between normal and static in C), some stay, as the symbol access using wrong datatype (inherent to the linker, which doesn't do type-checking).
Q9 : What are the advantages and disadvantages of the Objective-C approach to syntactically distinguishing class methods from instance methods?
A : Instance methods use an instance of a class, whereas a class method can be used with just the class name. A class is like the blueprint of a house: You only have one blueprint and (usually) you can't do that much with the blueprint alone. An instance (or an object) is the actual house that you build based on the blueprint: You can build lots of houses from the same blueprint. You can then paint the walls a different color in each of the houses, just as you can independently change the properties of each instance of a class without affecting the other instances.
Q10 : In what ways are the method calls in C++ more or less readable than those of Objective-C?
A : In Objective C, all method calls are essentially virtual. This makes it a bit easier on the programmer, but it comes at a possible performance decrease. So sometimes methods call in C++ can be more or less readable than those of Objective-C.
No comments:
Post a Comment