Hey So I need to design a program that Can add Pickups or Delivery’s for a company to a list for my coursework, I have made a list called visits as shown bellow.
I would like to know how to add each pickup or delivery to the list in a way that it can differentiate between what is was originally so that I can show Only pickups or only delivery’s.
class List
{
/*
* This object represents the List. It has a 1:M relationship with the Visit class
*/
private List<Visits> visits = new List<Visits>();
//List object use to implement the relationshio with Visits
public void addVisits(Visits vis)
{
//Add a new Visit to the List
visits.Add(vis);
}
public List<String> listVisits()
{//Generate a list of String objects, each one of which represents a Visit in List.
List<String> listVisits = new List<string>();
//This list object will be populated with Strings representing the Visits in the lists
foreach (Visits vis in visits)
{
String visAsString = vis.ToString();
//Get a string representing the current visit object
listVisits.Add(visAsString);
//Add the visit object to the List
}
return listVisits;
//Return the list of strings
}
public Visits getVisits(int index)
{
//Return the visit object at the <index> place in the list
int count = 0;
foreach (Visits vis in visits)
{
//Go through all the visit objects
if (index == count)
//If we're at the correct point in the list...
return vis;
//exit this method and return the current visit
count++;
//Keep counting
}
return null;
//Return null if an index was entered that could not be found
}
SHOW CODE
/*
* Update the list on this form the reflect the visits in the list
*/
lstVisits.Items.Clear();
//Clear all the existing visits from the list
List<String> listOfVis = theList.listVisits();
//Get a list of strings to display in the list box
lstVisits.Items.AddRange(listOfVis.ToArray());
//Add the strings to the listBox. Note to add a list of strings in one go we have to
//use AddRange and we have to use the ToArray() method of the list that we are adding
It looks like you have both
PickupandDeliveryinheriting a common class calledVisits*.Alter
Visitsto provide a way to differentiate the kinds of visits, for example, like this:Now modify the constructors of
PickupandDeliveryto pass the correct kind to the constructor of their superclass, like this:Now you can examine the
KindOfVisitproperty common toPickupandDeliveryin order to tell the kind of the visit at runtime:This solution is not ideal, because when someone adds a new kind of visit, the code that processes visits would continue compiling as usual. A solution to this problem is a lot harder than adding a property, though: one solution is to employ the Visitor Pattern which is better than a simple
Kindattribute, but it has limitations of its own.* Naming a class with a plural of a noun is unconventional –
Visitwould probably be a better name.