<< Chapter < Page Chapter >> Page >


  • bread
  • butter

a list?


  • butter

a list?

Is there a list that follows butter in the above?

A non-empty list is a list that has an element called first and a list called rest.

Note that in the above formulation, the rest of a list is itself a list! The definition of a list is an example of what we call a recursive definition: the list contains a substructure that is isomorphic to itself.

List design and the composite design pattern

The UML diagram below captures the recursive data definition of the list data structure.

Uml diagram of a list

A list can be represented using the composite design pattern

This definition translates into Java code as follows.

/** * Represents the abstract list structure.*/ public interface IList {}
/** * Represents empty lists.*/ public class MTList implements IList {} /** * Represents non-empty lists.*/ public class NEList implements IList {private Object _first; private IList _rest;}

The above is an example of what is called the composite design pattern . The composite pattern is a structural pattern that prescribes how to build a container object that is composed of other objects whose structures are isomorphic to that of the container itself. In this pattern, the container is called a composite. In the above, IList is called the abstract component, MTList is called the basic component and NEList is called the composite. The composite design pattern embodies the concept of recursion , one of the most powerful thinking tool in computing. (There is a subject in theoretical computer science and mathematics called "recursive function theory," which studies the meaning of what computing means and in effect defines in the most abstract form what a computer is and what it can and cannot do.)

List creation

Now that we have defined what a list is, we ask ourselves how we can process it? What can we do with a list? The above code makes it clear that there is not a whole lot we can do with a list besides instantiating a bunch of MTList objects via the call new MTList() (why?). Now that we are using the full Java language, we need to write a constructor for NEList in order to instantiate non-empty list objects with appropriate first and rest. The Java code for NEList now looks as follows (note how the comments are written).

/** * Represents non-empty lists.*/ public class NEList implements IList {private Object _first; private IList _rest;/** * Initializes this NEList to a given first and a given rest.* @param f the first element of this NEList. * @param r the rest of this NEList.*/ public NEList(Object f, IList r) {_first = f; _rest = r;} }

The list structure as coded in the above is completely encapsulated , that is, all internal components (if any) of a list are private and cannot be accessed by any external code. Using the appropriate constructors, we can make a bunch of lists to store data but we cannot retrieve data nor do anything with these lists. In Object-Oriented Programming (OOP) parlance, the list is said to have no behavior at all. As such they are of no use to us.

List processing

In order to perform any meaningful list processing at all, we need to program more "intelligence" into the list structure by adding appropriate methods to the list to provide the desired behaviors. So instead of asking what we can do with a list, the right question to ask in OOP is "what can a list do for us?" Let us start by presenting a few simple tasks that we want a list to perform and try to figure out how an "intelligent" list would carry out such tasks via some role acting.

In class role-acting exercises:

  • Compute the length of a list.
  • Compute the sum of a list that holds integers.

Questions & Answers

what is a gross domestic product
Amogelang Reply
Explain what is a production possibility curve
Sharon Reply
A curve that indicates the various production possibilities of two commodities when resources are fixed...
what is market?
Jasmin Reply
ware the Byers and seller's that please is called market
a place where buyers and sellers meet
I don't like this market definition.
market is any arrangement whereby buyers and sellers are brought together for the purpose of transacting business. It could be a geographical location or any other means such as internet, mobile phone etc. as long as buyers and sellers are brought together for the purpose of exchange.
A market is a place where buyers and sellers buy and sell goods through bargaining.
yes ,you are correct Agusimba sir.
exception of the low of demond
Rohit Reply
short run AC curves?
Jasmin Reply
you mean shirt run cost curves?
A short-run cost curve shows the minimum cost impact of output changes for a specific plant size and in a given operating environment. Such curves reflect the optimal or least-cost input combination for producing output under fixed circumstances.
nooo am not from India why!?
Godwin Reply
Godwin which level of education are you please
millionaires am in SHS 2
who was the father of economic ?why?
Mahesh Reply
Rationing and hoarding
Semiat Reply
how do the size of a country's population affect labour force
Evans Reply
a mixed economic system
Ngong Reply
What are the types of price elasticity of demand
Juliana Reply
what are massures to promote geographical mobility of labor?
Is to make sure that a labourer to know more about his salary to earn before going to the direction
types of Price elasticity of demand are fairly elastic demand, fairly inelastic demand, unity demand, perfectly elastic demand and perfectly inelastic demand.
what is trade
Trade is a basic economic concept involving the buying and selling of goods and services, with compensation paid by a buyer to a seller, or the exchange of goods or services between parties. Trade can take place within an economy between producers and consumers.
what is fisical policy?
ha Reply
fisical policy or fiscal policy?
what are.the characteristics of economic goods
what are the importance of labour market?
how discrib the rural development and their four stages
Sheikh Reply
ye economics se related ha
1..traditional stage..no science and technology is applied hence poor productionuu.2..the take off stage..some development strategies are initiated eg transport system is improved but the traditional cultural belief still remain .3..the prematurely stage..technological methods of production are appl
applied leading to higher GDP..4..stage of mass consumption..
What is Easiest Formula For National Income?
Tenzin Reply
national income/ agrrigate net value
Got questions? Join the online conversation and get instant answers!
Jobilize.com Reply

Get the best Algebra and trigonometry course in your pocket!

Source:  OpenStax, Principles of object-oriented programming. OpenStax CNX. May 10, 2013 Download for free at http://legacy.cnx.org/content/col10213/1.37
Google Play and the Google Play logo are trademarks of Google Inc.

Notification Switch

Would you like to follow the 'Principles of object-oriented programming' conversation and receive update notifications?