Home Accessibility Courses Twitter The Mouth Facebook Resources Site Map About Us Contact
This is now an archive web site.
Some is still relevant as at August 2026 but some is purely of historic interest.


Lisa and I (Graham) are now fully retired from IT training.We have made many friends over 30 years of teaching about Python, Tcl, Perl, PHP, Lua, Java, C and C++ - and MySQL, Apache, Linux and Solaris/SunOS too. Our training notes are out of date, but with upward compatability some examples remain operational and relevant. You are welcome to make use of them "as seen", at your own risk. We now live in what was our training centre in Melksham - happy to meet with former delegates here - but do check ahead before coming round. We remain active, enjoying the times that we are retired but still healthy enough in mind and body to do things!

I am also active in many other area and still look after a lot of web sites - you can find an index ((here))
Extended and Associated objects - what is the difference - C++ example (written 2013-01-18)

When you use inheritance, you create a tree of object types, where one type is based on another. For example, you define a base class of "transport" and then you extend that to define similar classes with extras called "bus" and "train". That's a very different matter to using a class connected in another way - for example if we wanted to have a class for all the various pieces of transport used on between two towns. For that, we'll use an associated class, which is simply a class that's used in conjunction with (and perhaps depends on) the other classes.

Here's some code where I've set up an object of type "flow" to contain a whole collection of objects of type "train" or "bus". Trains and buses are "transports" - so that's inheritance in use, but flow is just an associated class:
  Flow *chippenham_trowbridge = new Flow(6);
  chippenham_trowbridge->add(new Train(2,73));
  chippenham_trowbridge->add(new Train(1,69));
  chippenham_trowbridge->add(new Bus(2,61));
  chippenham_trowbridge->add(new Bus(1,81));


I've then made use of the flow object:
  int seatsonflow = chippenham_trowbridge->getseats();
  int vehiclesonflow = chippenham_trowbridge->getunits();
  int driversonflow = chippenham_trowbridge->getdrivers();
  
  cout << "Seats on flow: " << seatsonflow << endl;
  cout << "Vehicles on flow: " << vehiclesonflow << endl;
  cout << "Drivers on flow: " << driversonflow << endl;


The code to add a Transport item onto the Flow collection is like this:

  void Flow::add(Transport * item) {
    route[nroutes++] = item;
    }


And here is one of the methods on the Flow object which calls methods on its associative objects:

  int Flow::getunits() {
    int so_far = 0;
    for (int k=0; k<nroutes; k++) {
      so_far += route[k]->getveh();
      }
    return so_far;
    }


Complete example from today's C++ course: [here].
(written 2013-01-18, updated 2013-01-19)

 
Associated topics are indexed as below, or enter http://melksh.am/nnnn for individual articles
Q909 - Object Orientation and General technical topics - Object Orientation: Composite Objects
  [477] Class, static and unbound variables - (2005-10-25)
  [592] NOT Gone phishing - (2006-02-05)
  [1345] Perl and Shell coding standards / costs of an IT project - (2007-09-11)
  [1348] Screw it or Glue it? Access to Object variables - a warning - (2007-09-12)
  [2170] Designing a heirarcy of classes - getting inheritance right - (2009-05-11)
  [2641] Object Oriented Programming in PHP - (2010-02-19)
  [2865] Relationships between Java classes - inheritance, packaging and others - (2010-07-10)
  [2922] Getting the OO design write - with PHP a example - (2010-08-14)
  [3142] Private and Public - and things between - (2011-01-22)
  [3152] Jargon busting - (2011-01-30)
  [3251] C++ - objects that are based on other objects, saving coding and adding robustness - (2011-04-17)
  [3609] How do classes relate to each other? Associated Classes - (2012-02-12)
  [4377] Designing a base class and subclasses, and their extension, in C++ - (2015-01-01)
  [4394] Philosophy behind object design - and how I applied in to a Java example - (2015-01-14)
  [4450] Deciding whether to use parameters, conditional statements or subclasses - (2015-03-05)

C233 - C and C based languages - OO in C++ - beyond the basics
  [798] References and Pointers in C++ - (2006-07-10)
  [801] Simple polymorphism example - C++ - (2006-07-14)
  [831] Comparison of Object Oriented Philosophy - Python, Java, C++, Perl - (2006-08-13)
  [925] C++ - just beyond the basics. More you can do - (2006-11-14)
  [1217] What are factory and singleton classes? - (2007-06-04)
  [1572] C - structs and unions, C++ classes and polymorphism - (2008-03-13)
  [1674] What a lot of files! (C++ / Polymorphism demo) - (2008-06-12)
  [1819] Calling base class constructors - (2008-10-03)
  [2577] Complete teaching example - C++, inheritance, polymorphism - (2010-01-15)
  [2845] Objects and Inheritance in C++ - an easy start - (2010-07-01)
  [3056] C++ - a complete example with polymorphism, and how to split it into project files - (2010-11-16)
  [3123] C++ objects - some short, single file demonstrations - (2011-01-07)
  [3124] C++ - putting the language elements together into a program - (2011-01-08)
  [3244] C and C++ - preprocess, compile, load, run - what each step is for - (2011-04-12)
  [3508] Destructor methods in C++ - a primer - (2011-11-05)
  [3811] Associated Classes - using objects of one class within another - (2012-07-21)
  [4356] Object factories in C++, Python, PHP and Perl - (2014-12-19)
  [4375] Final examples for 2014 - and a look at our 2015 training course options - (2014-12-31)
  [4559] When do I use the this keyword in C++? - (2015-10-29)
  [4560] Variables, Pointers and References - C and C++ - (2015-10-29)


Back to
Teaching OO - how to avoid lots of window switching early on
Previous and next
or
Horse's mouth home
Forward to
Well House Manor in the snow
Some other Articles
Upcoming courses at Well House Manor - Ruby, Python, Perl
Using a vector within an object - C++
Melksham - a town of some remarkable people
Well House Manor in the snow
Extended and Associated objects - what is the difference - C++ example
Teaching OO - how to avoid lots of window switching early on
A variety of continental breakfasts
Easy pricing, quick and easy checkout
Being an amateur hotel inspector helps me run a professional hotel
TV show appearance - how does it effect your web site?
4759 posts, page by page
Link to page ... 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96 at 50 posts per page


This is a page archived from The Horse's Mouth at http://www.wellho.net/horse/ - the diary and writings of Graham Ellis. Every attempt was made to provide current information at the time the page was written, but things do move forward in our business - new software releases, price changes, new techniques. So much so, and it's so long ago that we are retired

Link to Ezine home page (for reading).

You can Add a comment or ranking to this page

© WELL HOUSE CONSULTANTS LTD., 2026: 48 Spa Road • Melksham, Wiltshire • United Kingdom • SN12 7NY
PH: +44 (0)1225 708225 • EMAIL: info@wellho.net • WEB: http://www.wellho.net

PAGE: https://www.wellho.info//mouthwork/3979_Extended-and-Associated-objects-what-is-the-difference-C-example.html • PAGE BUILT: Sun Oct 11 16:07:41 2020 • BUILD SYSTEM: JelliaJamb