Home Accessibility Courses Twitter The Mouth Facebook Resources Site Map About Us Contact
 
Python and Tcl - public course schedule [here]
Private courses on your site - see [here]
Please ask about maintenance training for Perl, PHP, Lua, etc
 
Extended and Associated objects - what is the difference - C++ example

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

Q909 - Object Orientation and General technical topics - Object Orientation: Composite Objects
  [4450] Deciding whether to use parameters, conditional statements or subclasses - (2015-03-05)
  [4394] Philosophy behind object design - and how I applied in to a Java example - (2015-01-14)
  [3609] How do classes relate to each other? Associated Classes - (2012-02-12)
  [3152] Jargon busting - (2011-01-30)
  [2922] Getting the OO design write - with PHP a example - (2010-08-14)
  [2865] Relationships between Java classes - inheritance, packaging and others - (2010-07-10)
  [2641] Object Oriented Programming in PHP - (2010-02-19)
  [2170] Designing a heirarcy of classes - getting inheritance right - (2009-05-11)
  [1348] Screw it or Glue it? Access to Object variables - a warning - (2007-09-12)
  [1345] Perl and Shell coding standards / costs of an IT project - (2007-09-11)
  [592] NOT Gone phishing - (2006-02-05)
  [477] Class, static and unbound variables - (2005-10-25)


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. Please check back via our main site for current courses, prices, versions, etc - any mention of a price in "The Horse's Mouth" cannot be taken as an offer to supply at that price.

Link to Ezine home page (for reading).
Link to Blogging home page (to add comments).

You can Add a comment or ranking to this page

© WELL HOUSE CONSULTANTS LTD., 2019: 404 The Spa • Melksham, Wiltshire • United Kingdom • SN12 6QL
PH: 01225 708225 • EMAIL: info@wellho.net • WEB: http://www.wellho.net • SKYPE: wellho

PAGE: http://www.wellho.net/mouth/3979_Ext ... ample.html • PAGE BUILT: Sat May 27 16:49:10 2017 • BUILD SYSTEM: WomanWithCat