Concept of Programming Language Chapter 11

Assignment from Mr.Tri Djoko Wahjono


Review Questions

1. What are the two kinds of abstractions in programming languages ?

– Process Abstraction and Data Abstraction


2. Define abstract data type .

– A data structure in the form of a record, but which includes subprograms that manipulate its data.


3. What are the advantages of the two parts of the definition of abstract data type ?

– Increased reliability, Reduces range of code and number of variables which a programmer must be aware when writing / reading part of program. Make name conflict less likely to happen


5. What are the language design issues for abstract data types ?

– ADTs must have a function that allows a user to modify a value inside that data type. Although the method is public, the value itself must be private.


10. What is the use of the Ada with clause ?

– To make the names defined in external packages visible


11. What is the use of the Ada use clause ?

– To eliminate the need for explicit qualification of the references to entities from the named package.


12. What is the fundamental difference between a C++ class and an Ada package ?

– Class must be accessed from an instance of itself while package can be accessed directly.


13. From where are C++ objects allocated ?

– From heap


15. What is the purpose of a C++ destructor ?

– To deallocate heap space the object used.


16. What are the legal return types of a destructor ?

– destructor has no return type


21. What are initializers in Objective-C?

– Constructors that must be explicitly called.


26. Why does Java not have destructors ?

– Because Java has its own implicit garbage collection.


Problem Set


2. Suppose someone designed a stack abstract data type in which the function top returned an access path (or pointer ) rather than returning a copy of the top element. This is not a true data abstraction. Why ? Give an example that illustrates the problem.

– The problem with this is that the user is given access to the stack through the returned value of the “top” function. For example, if p is a pointer to objects of the type stored in the stack, we could have:

p = top(stack1);

*p = 42;

These statements access the stack directly, which violates the principle of a data abstraction.

4. What are the advantages of the nonpointer concept in Java ?

– Variable Access are absolutely defined by the programmer

– No memory leak (i.e. dangling pointers, nameless variables etc)

9. What happens if the constructor is absent in Java and C++ ?
– The compiler will automatically make a default one

11. Why is the destructor of C# rarely used ?
– Because C# has its own garbage collection method , just like Java


Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s