 

 

         General Steps in Converting C application to C++ 

 

                   John Tal - Feb 12, 1992 

 

 

 

        1.  Create Class Defintion 

 

        1.1  Identify Private And Protected Members 

 

        Identify all variables which are passed through functions 

        but are really private to the class.  These include: 

 

                o  Work Areas 

                o  Head Pointers 

                o  Counters 

 

        Place these in the private or protected class sections. 

 

         

        1.2  Install Public Access To Private Members 

 

        Identify all private or protected class member variables 

        which interact with the application.  All reading or writing 

        of non-public members should be accomplished by a public 

        class member function.  There should be NO access to non-public 

        members by the application. 

 

        1.3  Identify Non-Public Functions 

 

        All functions which are not directly called by the application 

        should be private or protected. 

 

        1.4  Modify Class Function Prototypes 

 

        Remove from all functions parameters which are now embodied 

        by class member data.  This includes the same items as 

        in 1.1. 

 

        1.5  Create Class Constructor And Descructor 

 

        These can be VOID and NULL functions are whatever is required 

        by the class.  All allocated memory should be freed in the 

        destructor. 

 

        1.6  Determine Class Access Within Heirachies 

 

        There will be elementary classes which you will use to build 

        more sophisticated classes through different methods.  Each 

        method will influence the security and general object access 

        to be defined.  It can also be helpful to distinguish between 

        what a class contains and what it does in refining class 

        interfaces. 

 

        1.6.1  Simple Inclusion 

 

        In this case a class is constructed with other classes as 

        members. 

 

        1.6.2  Derived Classes 

 

        This includes the areas of multiple-inheritance and polymorphism. 

        The derived class will inherit the class attributes of its 

        parent class(es). 

 

        1.6.3  Deferentiated Access 

 

        You may discover a situation where you want the application to 

        be unable to access certain class areas but you want another 

        class to be able to access all class areas.  One solution is 

        to use a friend modifier (NOT RECOMMENDED, the friend modifier 

        breaks many object-oriented rules).  The best solution may be 

        to create a server class which will then access others classes 

        for the application. 

 

 

        2   Modify C Source Code 

 

        2.1  Rename Or Copy Code 

 

        Rename or copy the c source files from *.c to whichever 

        extension is used by your C++ compiler (usually *.cpp). 

 

        2.2  Modify Code Comments 

 

        Comments in the source code can be left in the /* style, 

        but for those who work in both C and C++, having native 

        C++ comments in // style makes it easier to switch  

        between languages. 

 

        2.3  Modify Functions 

 

        2.3.1  Modify Function Interface  

 

        Modify function interfaces to no longer pass items such as 

        in 1.1.   

 

        2.3.2  Modify Function Comment Header Block 

 

        Modify comment header block to include security of class 

        member (private, protected, public).  Carefully examine 

        any function who's description includes the words 'and' 

        or 'or'.  These are signs of cohesion problems. 

        (If a function calculates data AND writes it to disk, 

        the function should be broken up into two functions, 

        one to calculate and one to write.) 

 

        2.3.3  Break Up Functions 

 

        Create new functions from those displaying cohesion or 

        coupling problems which can be corrected. 

 

        2.3.4  Create Interface Functions For Class Private Data 

 

        Create functions necessary for an application to read or  

        write (get/set) data which is in private or public  

        class security segments. 

         

 

 

