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
 
How do classes relate to each other? Associated Classes

How do classes relate to each other? Associated Classes ... or ... define: Associated classes, parent classes, superclasses, subclasses, base classes, abstract classes, interfaces and mixins.

Associated classes are the odd ones out here. They're classes that are used within other classes.

Let me give you an example, from the Object Oriented PHP course I gave on Friday. We defined a class called visit, in which each instance contained an array of access objects (as well as some other data). One or more accesses make up a visit, and so every visit object must contain access objects, but that's not in the same way that properties and methods are inherited - a term which applies to all the other terms that I used above.




Let's look at all the other terms, and let's do so by example.

I define a class called pubtrans which contains information about a public transport offering. However, whilst public transport by one more or another is more or less the same, there are differences in the code logic needed. So I call my pubtrans class a parent class and I then provide extra (extended) logic to define a subclass for a train, and I also provide extra logic to define another subclass for a bus.

The parent class is sometimes referred to as the superclass, and you'll also find the term base class used to refer to the class on which another is based.

A class is referred to as an abstract class if you won't be creating (constructing) members directly. Taking our pubtrans as an example, that's likely to be an abstract class - every piece of public transport is some subtype of public transport be it a train, a bus, a ferry or a pogo stick. In an abstart class definition, you can usually include a requirement that each subclass must implement a particular method, thus ensuring that all the objects in this object tree are polymorphic.

An interface is a definition of a number of methods that must be defined in a class which implements it. It's rather like an abstract class which is so abstract that it contains no code at all. The advantage of an interface is that classes can implement multiple interfaces, then giving you something which approaches multiple inheritance in a language which only supports single inheritance such as Java.

Finally, a mixin is code / methods which are shared between a number of classes by being "mixed in" or added to them. They're currently used in Ruby and Python (of the languages that we train on) and will be present in PHP 5.4 onwards where they will be part of traits and offer a wider selection of operations such as aliasing and exclusion and will as mixingin.
(written 2012-02-12, updated 2012-02-18)

 
Associated topics are indexed as below, or enter http://melksh.am/nnnn for individual articles
H108 - Objects in PHP
  [4628] Associative objects - one object within another. - (2016-01-20)
  [4627] Caching results in an object for efficiency - avoiding re-calculation - (2016-01-20)
  [4626] Singleton design pattern - examples and uses - (2016-01-20)
  [4366] Changing what operators do on objects - a comparison across different programming languages - (2014-12-26)
  [4356] Object factories in C++, Python, PHP and Perl - (2014-12-19)
  [4073] Learning about Object Orientation in PHP - a new set of examples - (2013-04-28)
  [4057] stdClass in PHP - using an object rather than an associative array - (2013-04-02)
  [3953] Objects in PHP - Revision - (2012-12-16)
  [3843] Caching Design Patterns - (2012-08-20)
  [3841] Copying, duplicating, cloning an object in PHP - (2012-08-18)
  [3840] Autoload in PHP - (2012-08-17)
  [3608] Design Patterns - what are they? Why use them? - (2012-02-12)
  [3607] Designing your application - using UML techniques - (2012-02-11)
  [3211] Computer Graphics in PHP - World (incoming data) to Pixel (screen) conversion - (2011-03-24)
  [3210] Catchable fatal error in PHP ... How to catch, and alternative solutions such as JSON - (2011-03-22)
  [3142] Private and Public - and things between - (2011-01-22)
  [2922] Getting the OO design write - with PHP a example - (2010-08-14)
  [2921] Does copying a variable duplicate the contents? - (2010-08-14)
  [2774] PHP - Object Oriented Design in use - (2010-05-21)
  [2741] What is a factory? - (2010-04-26)
  [2717] The Multiple Inheritance Conundrum, interfaces and mixins - (2010-04-11)
  [2680] Static class members in PHP - a documented example - (2010-03-16)
  [2641] Object Oriented Programming in PHP - (2010-02-19)
  [2632] Shipping a test harness with your class in PHP - (2010-02-12)
  [2435] Serialization - storing and reloading objects - (2009-10-04)
  [2434] Abstract classes, Interfaces, PHP and Java - (2009-10-03)
  [2380] Object Oriented programming - a practical design example - (2009-08-27)
  [2172] PHP4 v PHP5 - Object Model Difference - (2009-05-11)
  [2171] Cleaning up redundant objects - (2009-05-11)
  [2169] When should I use OO techniques? - (2009-05-11)
  [2160] PHP - getclass v instanceof - (2009-05-07)
  [1925] Introduction to Object Oriented Programming - (2008-12-06)
  [1820] Sorting objects in PHP - (2008-10-04)
  [1819] Calling base class constructors - (2008-10-03)
  [1682] Accounts in PHP - an OO demo - (2008-06-19)
  [1535] OO PHP demonstration - comparing objects and more - (2008-02-08)
  [1217] What are factory and singleton classes? - (2007-06-04)
  [1153] Object Oriented Model - a summary of changes from PHP4 to PHP5 - (2007-04-18)
  [1027] Cue the music, I'm happy. - (2007-01-09)
  [836] Build on what you already have with OO - (2006-08-17)
  [720] Planning a hotel refurb - an example of a Gant chart in PHP - (2006-05-14)
  [656] Think about your design even if you don't use full UML - (2006-03-24)
  [485] North, Norther and Northest - PHP 5 Objects - (2005-11-04)
  [421] Don't repeat code - use loops or functions - (2005-08-21)
  [343] Should I use structured or object oriented? - (2005-06-10)
  [205] PHP5 lets you say no - (2005-02-07)
  [124] PHP v Java - (2004-11-20)
  [67] Object Oriented Programming in PHP - (2004-09-29)

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)
  [4377] Designing a base class and subclasses, and their extension, in C++ - (2015-01-01)
  [3979] Extended and Associated objects - what is the difference - C++ example - (2013-01-18)
  [3251] C++ - objects that are based on other objects, saving coding and adding robustness - (2011-04-17)
  [3152] Jargon busting - (2011-01-30)
  [2865] Relationships between Java classes - inheritance, packaging and others - (2010-07-10)
  [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
Design Patterns - what are they? Why use them?
Previous and next
or
Horse's mouth home
Forward to
Training to do a job, or training to pass an exam?
Some other Articles
Keeping Business Local. But is that realistic?
Help to get online in Melksham
A customer thanks Well House Manor
Training to do a job, or training to pass an exam?
How do classes relate to each other? Associated Classes
Gypsy and Billy enjoy the snow
Snow comes to Melksham, Wiltshire - pictures
Melksham Campus - a blog you can read, and a place you can comment
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/3609_How ... asses.html • PAGE BUILT: Sat May 27 16:49:10 2017 • BUILD SYSTEM: WomanWithCat