One of the major benefits of Object Oriented programming is the clear and sharp dividing lines it provides between the different sections of logic - where code dealing with one type of data is specified, written, stored and tested in different files to the code dealing with other types of data (or code that bolts the whole lot together). Such separation allows easy code reuse, easy code update without the risk of side effects leaking right through the application, and easy testing and provision of demonstration pieces to show how elements are used.
Alas - it's not all a bed of roses. When teaching OO styles, the separation of code into different files can give rise to a whole lot of edit windows and a lot of hopping and skipping around to the confusion of delegates learning the principles for the first time ... and over time we've developed techniques to help with that. In C++, which I was teaching yesterday, I'll write the various elements:
• the API (Application / Programmer Interface) / class definitions
• the code of the class
• the code of the initial specification / test program
all into a single file, separated by a ruling off comment:
// ---------------------------------------------------------
This allows the API to be developed and fine tuned without constant frame / window switching, with delegates learning where extra code members are needed as they write. And then the code can be saved in three different directions:
• the header file
• the code definition file (with a #include of the header)
• the sample program / test file (again with a #include of the header).
See that in source:
All together -
[here]
or
Sample and test program -
[here]
Definitions of API -
[here]
Code of object methods -
[here] (written 2013-01-17, updated 2013-01-19)
Associated topics are indexed as below, or enter http://melksh.am/nnnn for individual articles
C232 - C and C based languages - Defining and using classes in C++ [4565] Allocation of memory for objects in C++ - Stack v Heap - (2015-10-31)
[4372] Template / design pattern for C++ constructor and accessors - (2014-12-29)
[4129] Simple OO demonstration in C++, comparison to Python - (2013-07-01)
[3810] Reading files, and using factories to create vectors of objects from the data in C++ - (2012-07-21)
[3721] Naming blocks of code, structures and Object Orientation - efficient coding in manageable chunks - (2012-05-06)
[3716] Learning C++ - a design pattern for your first class - (2012-05-02)
[3250] C++ - how we teach the language and the concepts behind the language - (2011-04-17)
[2579] Creating, setting up and using objects in C++ - (2010-01-16)
[2578] Where are your objects stored in C++? - (2010-01-16)
[2577] Complete teaching example - C++, inheritance, polymorphism - (2010-01-15)
[1925] Introduction to Object Oriented Programming - (2008-12-06)
Q907 - Object Orientation and General technical topics - Object Orientation: Design Techniques [4628] Associative objects - one object within another. - (2016-01-20)
[4449] Spike solution, refactoring into encapsulated object methods - good design practise - (2015-03-05)
[4430] The spirit of Java - delegating to classes - (2015-02-18)
[4374] Test driven development, and class design, from first principles (using C++) - (2014-12-30)
[4098] Using object orientation for non-physical objects - (2013-05-22)
[3928] Storing your intermediate data - what format should you you choose? - (2012-11-20)
[3887] Inheritance, Composition and Associated objects - when to use which - Python example - (2012-10-10)
[3878] From Structured to Object Oriented Programming. - (2012-10-02)
[3844] Rooms ready for guests - each time, every time, thanks to good system design - (2012-08-20)
[3798] When you should use Object Orientation even in a short program - Python example - (2012-07-06)
[3763] Spike solutions and refactoring - a Python example - (2012-06-13)
[3760] Why you should use objects even for short data manipulation programs in Ruby - (2012-06-10)
[3607] Designing your application - using UML techniques - (2012-02-11)
[3454] Your PHP website - how to factor and refactor to reduce growing pains - (2011-09-24)
[3260] Ruby - a training example that puts many language elements together to demonstrate the whole - (2011-04-23)
[3085] Object Oriented Programming for Structured Programmers - conversion training - (2010-12-14)
[3063] Comments in and on Perl - a case for extreme OO programming - (2010-11-21)
[2977] What is a factory method and why use one? - Example in Ruby - (2010-09-30)
[2953] Turning an exercise into the real thing with extreme programming - (2010-09-11)
[2889] Should Python classes each be in their own file? - (2010-07-27)
[2878] Program for reliability and efficiency - do not duplicate, but rather share and re-use - (2010-07-19)
[2865] Relationships between Java classes - inheritance, packaging and others - (2010-07-10)
[2785] The Light bulb moment when people see how Object Orientation works in real use - (2010-05-28)
[2747] Containment, Associative Objects, Inheritance, packages and modules - (2010-04-30)
[2741] What is a factory? - (2010-04-26)
[2717] The Multiple Inheritance Conundrum, interfaces and mixins - (2010-04-11)
[2523] Plan your application before you start - (2009-12-02)
[2501] Simples - (2009-11-12)
[2380] Object Oriented programming - a practical design example - (2009-08-27)
[2327] Planning! - (2009-08-08)
[2170] Designing a heirarcy of classes - getting inheritance right - (2009-05-11)
[2169] When should I use OO techniques? - (2009-05-11)
[1538] Teaching Object Oriented Java with Students and Ice Cream - (2008-02-12)
[1528] Object Oriented Tcl - (2008-02-02)
[1435] Object Oriented Programming in Perl - Course - (2007-11-18)
[1224] Object Relation Mapping (ORM) - (2007-06-09)
[1217] What are factory and singleton classes? - (2007-06-04)
[1047] Maintainable code - some positive advice - (2007-01-21)
[836] Build on what you already have with OO - (2006-08-17)
[831] Comparison of Object Oriented Philosophy - Python, Java, C++, Perl - (2006-08-13)
[747] The Fag Packet Design Methodology - (2006-06-06)
[656] Think about your design even if you don't use full UML - (2006-03-24)
[534] Design - one name, one action - (2005-12-19)
[507] Introduction to Object Oriented Programming - (2005-11-27)
[236] Tapping in on resources - (2005-03-05)
[80] OO - real benefits - (2004-10-09)
Some other Articles
Using a vector within an object - C++ Melksham - a town of some remarkable peopleWell House Manor in the snowExtended and Associated objects - what is the difference - C++ exampleTeaching OO - how to avoid lots of window switching early onA variety of continental breakfastsEasy pricing, quick and easy checkoutBeing an amateur hotel inspector helps me run a professional hotelTV show appearance - how does it effect your web site?Well House Manor on Four in a Bed - the ongoing story