{gliffy:name=OS Modularization Transition|space=VCL|page=Operating System Module Inheritance|align=center|size=L} {gliffy:name=OS Module Inheritance|space=VCL|page=Operating System Module Inheritance|align=center|size=L}
Each row in the image table is configured with an OSid (image.OSid), this points to the id column in the OS table (OS.id)
Each row in the OS table is configured with a moduleid (OS.moduleid), this points to the id column in the module table (module.id)
The module table contains a column named perlpackage (module.perlpackage), this tells the backend VCL code which Perl module to load and use
The module.perlpackage value, the package statement in the Perl module file, and the directory structure of the Perl modules must all align ** module.perlpackage = VCL::Module::OS::Windows_mod::Version_5::XP_mod ** lib/VCL/Module/OS/Windows_mod/Version_5/XP_mod.pm:
package VCL::Module::OS::Windows_mod::Version_5::XP_mod;
Inheritance reduces redundant code
Subroutines should reside as high up in the hierarchy as possible ** This allows all objects which are instantiated as a child class to use the subroutine
Child classes can implement subroutines with the same name as one implemented by a parent class ** The child subroutine in the child class overrides the subroutine in the parent class {gliffy:name=Inheritance Example|space=VCL|page=Operating System Module Inheritance|align=center|size=L}