<html><head></head><body><div style="width: 100%; padding: 24px 0 16px 0; background-color: #f5f5f5; text-align: center;"><div style="display: inline-block; width: 90%; min-width: 280px; text-align: left; font-family: Roboto,Arial,Helvetica,sans-serif;"><div style="height: 0px;" dir="ltr"></div><div style="display: block; padding: 0 2px;"><div style="display: block; background: #fff; height: 2px;"></div></div><div style="border-left: 1px solid #f0f0f0; border-right: 1px solid #f0f0f0;"><div style="padding: 24px 32px 32px 32px; background:#fff; border-right: 1px solid #eaeaea; border-left: 1px solid #eaeaea;" dir="ltr"><div style="font-size: 14px; line-height: 18px; color: #444;"><a href="mailto:mohitkumra95@gmail.com" style="color:inherit;text-decoration:none">Mohit Kumra</a> has invited you to <b>comment on</b> the following document:</div><div style="height: 10px;"></div><div style="font-size: 18px; display: table;"><div style="display: table-row; border-bottom: 4px solid #fff;"><span style="display: table-cell;"><div style="height: 32px;"><img src="https://ssl.gstatic.com/docs/documents/share/images/services/document-4.png" aria-label="Document" style="vertical-align: middle; max-width: 24px;"/></div></span><span style="display: table-cell; padding-left: 12px;"><a href="https://docs.google.com/document/d/1H3BfMBfTh8yHVpaGKfdfXtm_ZD6Mnd7impXOiRfpka4/edit?usp=sharing_eid&invite=CPzb1pEG&ts=56f4f059" style="color: #3367d6; text-decoration: none; vertical-align: middle;">GSOC_2016_proposal_Compilation_Firewall</a><div itemprop="action" itemscope itemtype="http://schema.org/ViewAction"><meta itemprop="url" content="https://docs.google.com/document/d/1H3BfMBfTh8yHVpaGKfdfXtm_ZD6Mnd7impXOiRfpka4/edit?usp=sharing_eid&invite=CPzb1pEG&ts=56f4f059"></div></span></div></div><div style="height: 16px;"></div><div style="height: 1px; background-color: #eee;"></div><div style="height: 24px;"></div><div style="display: table-row;"><img style="display: table-cell;" width="50" src="https://drive.google.com/c/u/0/photos/public/AIbEiAIAAABDCN2ZuOeS0oHLAiILdmNhcmRfcGhvdG8qKGFkZmE5NjM2ZmIxNTk4YjgzYjQ4ODE0ZjVmZjU5MTQ5MmZhOTZiZGYwAYBRF6Ik2ntwOYZ0yz2ldMw4XvEf" alt="Sender's profile photo"><span style="display: table-cell; vertical-align: top; padding-left: 16px; font-size: 13px; line-height: 18px; max-width: 496px; color: #262626;">I am extremely interested in working for the OutputDevice class Compilation Firewall project I have C,C++,Java,scripting,Python,and have working proficiency of STL.<br>It is requested to review the Proposal for Output-Device use a Compilation Firewall for Libreoffice.<br><br>Thank you for the consideration.A quick reply is appreciated!!</span></div><div style="height: 32px;"></div><div><a href="https://docs.google.com/document/d/1H3BfMBfTh8yHVpaGKfdfXtm_ZD6Mnd7impXOiRfpka4/edit?usp=sharing_eid&invite=CPzb1pEG&ts=56f4f059" target="_blank" style="background-color: #4d90fe; border: 1px solid #3079ed; border-radius: 2px; color: white; display: inline-block; font-family: Roboto,Arial,Helvetica,sans-serif; font-size: 11px; font-weight: bold; height: 29px; line-height: 29px; min-width: 54px; outline: 0px; padding: 0 8px; text-align: center; text-decoration: none">Open in Docs</a></div><div style="height: 24px;"></div><div style="background: #fce8b2; font-size: 13px; color: #444; border-radius: 2px; padding: 5px 10px;">This email grants access to this item without logging in. Only forward it to people you trust.</div><div style="height: 16px;"></div><div style="height: 1px; background-color: #eee;"></div><div style="height: 24px;"></div><div style="font-style: italic;">Snapshot of the item below:</div><div style="padding: 10px 0;"><h3 style="padding-top:4pt;margin:0;color:#434343;padding-left:0;font-size:14pt;padding-bottom:0pt;line-height:1.6;font-family:"Arial";text-align:center;padding-right:0"><span style="background-color:#ffffff;font-size:13pt;color:#000000;font-weight:bold">Output-Device use a Compilation Firewall for Libreoffice</span></h3><h3 style="padding-top:4pt;margin:0;color:#434343;padding-left:0;font-size:14pt;padding-bottom:0pt;line-height:1.6;font-family:"Arial";text-align:center;padding-right:0"><span style="background-color:#ffffff;font-size:13pt;color:#000000;font-weight:bold">MOHIT KUMRA</span></h3><h3 style="padding-top:4pt;margin:0;color:#434343;padding-left:0;font-size:14pt;padding-bottom:0pt;line-height:1.6;font-family:"Arial";text-align:center;padding-right:0"><span style="background-color:#ffffff;font-size:13pt;color:#000000;font-weight:bold">MARCH 23rd 2016</span></h3><h3 style="padding-top:4pt;margin:0;color:#434343;padding-left:0;font-size:14pt;padding-bottom:0pt;line-height:1.6;font-family:"Arial";height:14pt;text-align:center;padding-right:0"><span style="background-color:#ffffff;font-size:13pt;color:#000000;font-weight:bold"></span></h3><p style="padding:0;margin:0;color:#000000;font-size:11pt;font-family:"Arial""><span style="font-size:12pt;font-weight:bold">MENTOR: </span><span style="background-color:#ffffff;font-size:12pt;font-style:italic;color:#252525;font-weight:bold">Chris Sherlock</span></p><h3 style="padding-top:4pt;margin:0;color:#434343;padding-left:0;font-size:14pt;padding-bottom:0pt;line-height:1.15;font-family:"Arial";text-align:left;padding-right:0"><span style="background-color:#ffffff;font-size:12pt;color:#000000;font-weight:bold">Student Name: </span><span style="background-color:#ffffff;font-size:12pt;color:#000000">MOHIT KUMRA</span></h3><p style="padding:0;margin:0;color:#000000;font-size:11pt;font-family:"Arial";line-height:1.15"><span style="font-size:12pt;font-weight:bold">DATE: </span><span style="font-size:12pt">MARCH 23rd  2016</span></p><p style="padding:0;margin:0;color:#000000;font-size:11pt;font-family:"Arial";line-height:1.15"><span style="font-size:12pt;font-weight:bold">TITLE: </span><span style="font-size:12pt">Compilation firewall for Libreoffice and Modularizing the Output-Device class.</span></p><p style="padding:0;margin:0;color:#000000;font-size:11pt;font-family:"Arial";line-height:1.15;height:11pt"><span style="font-size:12pt;font-weight:bold"></span></p><h3 style="padding-top:4pt;margin:0;color:#434343;padding-left:0;font-size:14pt;padding-bottom:0pt;line-height:1.6;font-family:"Arial";text-align:left;padding-right:0"><span style="background-color:#ffffff;color:#000000;font-weight:bold;text-decoration:underline">SYNOPSIS:</span></h3><p style="padding-top:4pt;margin:0;color:#000000;padding-left:0;font-size:11pt;padding-bottom:0;font-family:"Arial";line-height:1.1400000000000001;padding-right:0"><span style="font-size:10.5pt">Data abstraction refers to, providing only essential information to the outside world and hiding their background details.With the introduction of this concept programs and developers now could easily write the code and had lesser chances of depiction of all the features to all thus minimizing the threat of code corruption.</span></p><p style="padding:0;margin:0;color:#000000;font-size:11pt;font-family:"Arial";line-height:1.1400000000000001;height:11pt"><span style="font-size:10.5pt"></span></p><p style="padding:0;margin:0;color:#000000;font-size:11pt;font-family:"Arial";line-height:1.1400000000000001"><span style="font-size:10.5pt">I would recommend to make the compilation firewall for the Output-Device class and to split the functionality of the Output-Device class. This would minimize the massive load due to functionality being encapsulated into a dense form in the Output-Device class, thereby enabling programs to run faster with inclusion of the Compilation Firewall.</span></p><p style="padding:0;margin:0;color:#000000;font-size:11pt;font-family:"Arial";line-height:1.15;height:11pt"><span></span></p><p style="padding:0;margin:0;color:#000000;font-size:11pt;font-family:"Arial";line-height:1.15"><span style="font-size:14pt;font-weight:bold;text-decoration:underline">The Project:</span></p><p style="padding:0;margin:0;color:#000000;font-size:11pt;font-family:"Arial";line-height:1.15;height:11pt"><span style="font-size:14pt;font-weight:bold"></span></p><p style="padding-top:0;margin:0;color:#000000;padding-left:0;font-size:11pt;padding-bottom:11pt;font-family:"Arial";line-height:1.1400000000000001;padding-right:0"><span style="background-color:#ffffff;font-size:10.5pt;color:#222426">In any programming language writing code does not imply that it is in alignment with the guidelines but one needs to ensure that the code is protected and secure against corruption/malwares thereby having zero or minimal code smells.</span></p><p style="padding-top:0;margin:0;color:#000000;padding-left:0;font-size:11pt;padding-bottom:11pt;font-family:"Arial";line-height:1.1400000000000001;padding-right:0"><span style="background-color:#ffffff;font-size:10.5pt;color:#222426">The concept of Data abstraction provides us with the feature of hiding the details and depicting only the essential details to the end user. For this we use the PIMPL Idiom (Pointer to IMPLementation) is a technique for implementation hiding in which a public class wraps a structure or class that cannot be seen outside the library the public class is part of. This hides internal implementation details and data from the user of the library</span><span style="background-color:#ffffff;font-size:11.5pt;color:#222426">.</span></p><p style="padding-top:0;margin:0;color:#000000;padding-left:0;font-size:11pt;padding-bottom:11pt;font-family:"Arial";line-height:1.1400000000000001;padding-right:0"><span style="background-color:#ffffff;font-size:11.5pt;color:#222426">These are the Benefits of using PIMPL Idiom:</span></p><p style="padding-top:0;margin:0;color:#000000;padding-left:0;font-size:11pt;padding-bottom:11pt;font-family:"Arial";line-height:1.1400000000000001;padding-right:0"><span style="background-color:#ffffff;font-size:13pt;color:#222426;font-weight:bold">Benefits:</span></p><ol style="padding:0;margin:0"><li style="padding-top:0;color:#000000;padding-left:0pt;font-size:11pt;padding-bottom:11pt;line-height:1.2717391304347827;margin-right:0;margin-left:36pt;font-family:"Arial";margin-top:0;margin-bottom:0;padding-right:0"><span style="background-color:#ffffff;font-size:11.5pt;color:#222426">Changing private member variables of a class does not require recompiling classes that depend on it, thus </span><span style="background-color:#ffffff;font-size:11.5pt;color:#222426;font-weight:bold">make</span><span style="background-color:#ffffff;font-size:11.5pt;color:#222426"> times are faster, and the well known </span><span style="background-color:#ffffff;font-size:11.5pt;color:#222426">Fragile Binary Interface Problem()</span><span style="background-color:#ffffff;font-size:11.5pt;color:#222426"> is reduced.</span></li><li style="padding-top:0;color:#000000;padding-left:0pt;font-size:11pt;padding-bottom:11pt;line-height:1.2717391304347827;margin-right:0;margin-left:36pt;font-family:"Arial";margin-top:0;margin-bottom:0;padding-right:0"><span style="background-color:#ffffff;font-size:11.5pt;color:#222426">The header file does not need to #include classes that are used 'by value' in private member variables, thus </span><span style="background-color:#ffffff;font-size:11.5pt;color:#222426;font-weight:bold">compile</span><span style="background-color:#ffffff;font-size:11.5pt;color:#222426"> times are faster.</span></li><li style="padding-top:0;color:#000000;padding-left:0pt;font-size:11pt;padding-bottom:11pt;line-height:1.2717391304347827;margin-right:0;margin-left:36pt;font-family:"Arial";margin-top:0;margin-bottom:0;padding-right:0"><span style="background-color:#ffffff;font-size:11.5pt;color:#222426">This is sort of like the way </span><span style="background-color:#ffffff;font-size:11.5pt;color:#222426">Small Talk (a well known unusual syntax based language)</span><span style="background-color:#ffffff;font-size:11.5pt;color:#222426"> automatically handles classes... more pure encapsulation.</span></li></ol><p style="padding-top:0;margin:0;color:#000000;padding-left:0;font-size:11pt;padding-bottom:11pt;font-family:"Arial";line-height:1.2717391304347827;padding-right:0"><span style="background-color:#ffffff;font-size:11.5pt;color:#222426">The Implementation of making the Compilation Firewall file with the help of the pmlpl idom format is as follows:</span></p><p style="padding-top:0;margin:0;color:#000000;padding-left:0;font-size:11pt;padding-bottom:11pt;font-family:"Arial";line-height:1.2717391304347827;padding-right:0"><span style="background-color:#ffffff;font-size:13pt;color:#222426;font-weight:bold">How to do it:</span></p><ol style="padding:0;margin:0"><li style="padding-top:0;color:#000000;padding-left:0pt;font-size:11pt;padding-bottom:11pt;line-height:1.2717391304347827;margin-right:0;margin-left:36pt;font-family:"Arial";margin-top:0;margin-bottom:0;padding-right:0"><span style="background-color:#ffffff;font-size:11.5pt;color:#222426">Put all the private member variables into a struct.</span></li><li style="padding-top:0;color:#000000;padding-left:0pt;font-size:11pt;padding-bottom:11pt;line-height:1.2717391304347827;margin-right:0;margin-left:36pt;font-family:"Arial";margin-top:0;margin-bottom:0;padding-right:0"><span style="background-color:#ffffff;font-size:11.5pt;color:#222426">Put the struct definition in the .cpp file.</span></li><li style="padding-top:0;color:#000000;padding-left:0pt;font-size:11pt;padding-bottom:11pt;line-height:1.2717391304347827;margin-right:0;margin-left:36pt;font-family:"Arial";margin-top:0;margin-bottom:0;padding-right:0"><span style="background-color:#ffffff;font-size:11.5pt;color:#222426">In the header file, put only the </span><span style="background-color:#ffffff;font-size:11.5pt;color:#222426">Forward Declaration</span><span style="background-color:#ffffff;font-size:11.5pt;color:#222426"> of the struct.</span></li><li style="padding-top:0;color:#000000;padding-left:0pt;font-size:11pt;padding-bottom:11pt;line-height:1.2717391304347827;margin-right:0;margin-left:36pt;font-family:"Arial";margin-top:0;margin-bottom:0;padding-right:0"><span style="background-color:#ffffff;font-size:11.5pt;color:#222426">In the class definition, declare a (smart) pointer to the struct as the only private member variable.</span></li><li style="padding-top:0;color:#000000;padding-left:0pt;font-size:11pt;padding-bottom:11pt;line-height:1.2717391304347827;margin-right:0;margin-left:36pt;font-family:"Arial";margin-top:0;margin-bottom:0;padding-right:0"><span style="background-color:#ffffff;font-size:11.5pt;color:#222426">The constructors for the class need to create the struct.</span></li><li style="padding-top:0;color:#000000;padding-left:0pt;font-size:11pt;padding-bottom:11pt;line-height:1.2717391304347827;margin-right:0;margin-left:36pt;font-family:"Arial";margin-top:0;margin-bottom:0;padding-right:0"><span style="background-color:#ffffff;font-size:11.5pt;color:#222426">The destructor of the class needs to destroy the struct (possibly implicitly due to use of a smart pointer).</span></li><li style="padding-top:0;color:#000000;padding-left:0pt;font-size:11pt;padding-bottom:11pt;line-height:1.2717391304347827;margin-right:0;margin-left:36pt;font-family:"Arial";margin-top:0;margin-bottom:0;padding-right:0"><span style="background-color:#ffffff;font-size:11.5pt;color:#222426">The assignment operator and </span><span style="background-color:#ffffff;font-size:11.5pt;color:#222426">Copy Constructor</span><span style="background-color:#ffffff;font-size:11.5pt;color:#222426"> need to copy the struct appropriately or else be disabled.</span></li></ol><p style="margin-left:36pt;padding:0;color:#000000;font-size:11pt;font-family:"Arial";margin-top:0;margin-bottom:0;margin-right:0"><span style="font-size:10.5pt">To study for Compilation file links are:</span></p><ol style="padding:0;margin:0"><li style="margin-left:108pt;padding:0;color:#000000;font-size:11pt;font-family:"Arial";margin-top:0;margin-bottom:0;margin-right:0"><span style="font-size:10.5pt;color:#1155cc;text-decoration:underline"><a href="https://www.google.com/url?q=http://c2.com/cgi/wiki?PimplIdiom&sa=D&ust=1458896488814000&usg=AFQjCNF92l549sJWoCrSXIdcjzGOWKYZ9A" style="color:inherit;text-decoration:inherit">http://c2.com/cgi/wiki?PimplIdiom</a></span></li><li style="margin-left:108pt;padding:0;color:#000000;font-size:11pt;font-family:"Arial";margin-top:0;margin-bottom:0;margin-right:0"><span style="font-size:10.5pt;color:#1155cc;text-decoration:underline"><a href="https://www.google.com/url?q=http://stackoverflow.com/questions/60570/why-should-the-pimpl-idiom-be-used&sa=D&ust=1458896488815000&usg=AFQjCNGbw8lwAK_xGSfz8PQkt_iL0k8GOg" style="color:inherit;text-decoration:inherit">http://stackoverflow.com/questions/60570/why-should-the-pimpl-idiom-be-used</a></span></li><li style="margin-left:108pt;padding:0;color:#000000;font-size:11pt;font-family:"Arial";margin-top:0;margin-bottom:0;margin-right:0"><span style="font-size:10.5pt;color:#1155cc;text-decoration:underline"><a href="https://www.google.com/url?q=http://herbsutter.com/gotw/_100/&sa=D&ust=1458896488816000&usg=AFQjCNF8I_uyZuyRssarUN-e7p4gzM98DQ" style="color:inherit;text-decoration:inherit">http://herbsutter.com/gotw/_100/</a></span></li></ol><p style="padding:0;margin:0;color:#000000;font-size:11pt;font-family:"Arial";height:11pt"><span style="font-size:10.5pt"></span></p><p style="padding:0;margin:0;color:#000000;font-size:11pt;font-family:"Arial";line-height:1.15"><span style="font-weight:bold">Example:</span></p><p style="padding:0;margin:0;color:#000000;font-size:11pt;font-family:"Arial";line-height:1.15;height:11pt"><span style="color:#434343"></span></p><p style="padding:0;margin:0;color:#000000;font-size:11pt;font-family:"Arial";line-height:1.15;height:11pt"><span style="font-size:9pt;font-family:"Courier New";color:#434343"></span></p><p style="padding:0;margin:0;color:#000000;font-size:11pt;font-family:"Arial";line-height:1.15"><span style="font-size:9pt;font-family:"Courier New";color:#434343">#include <iostream></span></p><p style="padding:0;margin:0;color:#000000;font-size:11pt;font-family:"Arial";line-height:1.15"><span style="font-size:9pt;font-family:"Courier New";color:#434343">using namespace std;</span></p><p style="padding:0;margin:0;color:#000000;font-size:11pt;font-family:"Arial";line-height:1.15;height:11pt"><span style="font-size:9pt;font-family:"Courier New";color:#434343"></span></p><p style="padding:0;margin:0;color:#000000;font-size:11pt;font-family:"Arial";line-height:1.15"><span style="font-size:9pt;font-family:"Courier New";color:#434343">class Adder1{</span></p><p style="padding:0;margin:0;color:#000000;font-size:11pt;font-family:"Arial";line-height:1.15"><span style="font-size:9pt;font-family:"Courier New";color:#434343">   public:</span></p><p style="padding:0;margin:0;color:#000000;font-size:11pt;font-family:"Arial";line-height:1.15"><span style="font-size:9pt;font-family:"Courier New";color:#434343">      // constructor</span></p><p style="padding:0;margin:0;color:#000000;font-size:11pt;font-family:"Arial";line-height:1.15"><span style="font-size:9pt;font-family:"Courier New";color:#434343">      Adder1(int i = 0)</span></p><p style="padding:0;margin:0;color:#000000;font-size:11pt;font-family:"Arial";line-height:1.15"><span style="font-size:9pt;font-family:"Courier New";color:#434343">      {</span></p><p style="padding:0;margin:0;color:#000000;font-size:11pt;font-family:"Arial";line-height:1.15"><span style="font-size:9pt;font-family:"Courier New";color:#434343">        total1 = i;</span></p><p style="padding:0;margin:0;color:#000000;font-size:11pt;font-family:"Arial";line-height:1.15"><span style="font-size:9pt;font-family:"Courier New";color:#434343">      }</span></p><p style="padding:0;margin:0;color:#000000;font-size:11pt;font-family:"Arial";line-height:1.15"><span style="font-size:9pt;font-family:"Courier New";color:#434343">      // interface to outside world</span></p><p style="padding:0;margin:0;color:#000000;font-size:11pt;font-family:"Arial";line-height:1.15"><span style="font-size:9pt;font-family:"Courier New";color:#434343">      void addNum1(int number)</span></p><p style="padding:0;margin:0;color:#000000;font-size:11pt;font-family:"Arial";line-height:1.15"><span style="font-size:9pt;font-family:"Courier New";color:#434343">      {</span></p><p style="padding:0;margin:0;color:#000000;font-size:11pt;font-family:"Arial";line-height:1.15"><span style="font-size:9pt;font-family:"Courier New";color:#434343">          total1 += number;</span></p><p style="padding:0;margin:0;color:#000000;font-size:11pt;font-family:"Arial";line-height:1.15"><span style="font-size:9pt;font-family:"Courier New";color:#434343">      }</span></p><p style="padding:0;margin:0;color:#000000;font-size:11pt;font-family:"Arial";line-height:1.15"><span style="font-size:9pt;font-family:"Courier New";color:#434343">      // interface to outside world</span></p><p style="padding:0;margin:0;color:#000000;font-size:11pt;font-family:"Arial";line-height:1.15"><span style="font-size:9pt;font-family:"Courier New";color:#434343">      int getTotal1()</span></p><p style="padding:0;margin:0;color:#000000;font-size:11pt;font-family:"Arial";line-height:1.15"><span style="font-size:9pt;font-family:"Courier New";color:#434343">      {</span></p><p style="padding:0;margin:0;color:#000000;font-size:11pt;font-family:"Arial";line-height:1.15"><span style="font-size:9pt;font-family:"Courier New";color:#434343">          return total1;</span></p><p style="padding:0;margin:0;color:#000000;font-size:11pt;font-family:"Arial";line-height:1.15"><span style="font-size:9pt;font-family:"Courier New";color:#434343">      };</span></p><p style="padding:0;margin:0;color:#000000;font-size:11pt;font-family:"Arial";line-height:1.15"><span style="font-size:9pt;font-family:"Courier New";color:#434343">   private:</span></p><p style="padding:0;margin:0;color:#000000;font-size:11pt;font-family:"Arial";line-height:1.15"><span style="font-size:9pt;font-family:"Courier New";color:#434343">      // hidden data from outside world</span></p><p style="padding:0;margin:0;color:#000000;font-size:11pt;font-family:"Arial";line-height:1.15"><span style="font-size:9pt;font-family:"Courier New";color:#434343">      int total1;</span></p><p style="padding:0;margin:0;color:#000000;font-size:11pt;font-family:"Arial";line-height:1.15"><span style="font-size:9pt;font-family:"Courier New";color:#434343">};</span></p><p style="padding:0;margin:0;color:#000000;font-size:11pt;font-family:"Arial";line-height:1.15"><span style="font-size:9pt;font-family:"Courier New";color:#434343">int main( )</span></p><p style="padding:0;margin:0;color:#000000;font-size:11pt;font-family:"Arial";line-height:1.15"><span style="font-size:9pt;font-family:"Courier New";color:#434343">{</span></p><p style="padding:0;margin:0;color:#000000;font-size:11pt;font-family:"Arial";line-height:1.15"><span style="font-size:9pt;font-family:"Courier New";color:#434343">   Adder1 a;</span></p><p style="padding:0;margin:0;color:#000000;font-size:11pt;font-family:"Arial";line-height:1.15"><span style="font-size:9pt;font-family:"Courier New";color:#434343">   </span></p><p style="padding:0;margin:0;color:#000000;font-size:11pt;font-family:"Arial";line-height:1.15"><span style="font-size:9pt;font-family:"Courier New";color:#434343">   a.addNum1(10);</span></p><p style="padding:0;margin:0;color:#000000;font-size:11pt;font-family:"Arial";line-height:1.15"><span style="font-size:9pt;font-family:"Courier New";color:#434343">   a.addNum1(20);</span></p><p style="padding:0;margin:0;color:#000000;font-size:11pt;font-family:"Arial";line-height:1.15"><span style="font-size:9pt;font-family:"Courier New";color:#434343">   a.addNum1(30);</span></p><p style="padding:0;margin:0;color:#000000;font-size:11pt;font-family:"Arial";line-height:1.15;height:11pt"><span style="font-size:9pt;font-family:"Courier New";color:#434343"></span></p><p style="padding:0;margin:0;color:#000000;font-size:11pt;font-family:"Arial";line-height:1.15"><span style="font-size:9pt;font-family:"Courier New";color:#434343">   cout << "Total " << a.getTotal1() <<endl;</span></p><p style="padding:0;margin:0;color:#000000;font-size:11pt;font-family:"Arial";line-height:1.15"><span style="font-size:9pt;font-family:"Courier New";color:#434343"> system("pause");</span></p><p style="padding:0;margin:0;color:#000000;font-size:11pt;font-family:"Arial";line-height:1.15"><span style="font-size:9pt;font-family:"Courier New";color:#434343">   return 0;</span></p><p style="padding:0;margin:0;color:#000000;font-size:11pt;font-family:"Arial";line-height:1.15"><span style="font-size:9pt;font-family:"Courier New";color:#434343">}</span></p><p style="padding:0;margin:0;color:#000000;font-size:11pt;font-family:"Arial";line-height:1.15;height:11pt"><span style="font-size:9pt;font-family:"Courier New";color:#434343"></span></p><p style="padding:0;margin:0;color:#000000;font-size:11pt;font-family:"Arial";line-height:1.15"><span style="color:#434343">The Output is : </span><span style="background-color:#eeeeee;font-family:"Courier New";color:#434343">Total 60</span></p><p style="padding:0;margin:0;color:#000000;font-size:11pt;font-family:"Arial";line-height:1.15;height:11pt"><span></span></p><p style="padding:0;margin:0;color:#000000;font-size:11pt;font-family:"Arial";line-height:1.15"><span style="background-color:#ffffff;font-family:"Verdana"">Above class adds numbers together, and returns the sum. The public members </span><span style="background-color:#ffffff;font-family:"Verdana";font-weight:bold">addNum1</span><span style="background-color:#ffffff;font-family:"Verdana""> and </span><span style="background-color:#ffffff;font-family:"Verdana";font-weight:bold">getTotal1</span><span style="background-color:#ffffff;font-family:"Verdana""> are the interfaces to the outside world and a user needs to know them to use the class. The private member </span><span style="background-color:#ffffff;font-family:"Verdana";font-weight:bold">total1</span><span style="background-color:#ffffff;font-family:"Verdana""> is something that the user doesn't need to know about, but is needed for the class to operate properly.</span></p><p style="padding:0;margin:0;color:#000000;font-size:11pt;font-family:"Arial";height:11pt"><span></span></p><p style="padding:0;margin:0;color:#000000;font-size:11pt;font-family:"Arial";height:11pt"><span></span></p><p style="padding:0;margin:0;color:#000000;font-size:11pt;font-family:"Arial""><span style="font-size:14pt;font-weight:bold;text-decoration:underline">Road-Map:</span><span style="font-weight:bold;text-decoration:underline"> </span></p><p style="padding:0;margin:0;color:#000000;font-size:11pt;font-family:"Arial";height:11pt"><span style="font-size:10.5pt"></span></p><p style="padding:0;margin:0;color:#000000;font-size:11pt;font-family:"Arial""><span style="font-size:10.5pt;font-weight:bold">For</span><span style="font-size:10.5pt"> Project Development, following steps would be followed:</span></p><p style="padding:0;margin:0;color:#000000;font-size:11pt;font-family:"Arial";height:11pt"><span style="font-size:10.5pt"></span></p><p style="margin-left:36pt;padding:0;color:#000000;font-size:11pt;font-family:"Arial";margin-top:0;margin-bottom:0;margin-right:0"><span style="font-size:10.5pt;font-weight:bold">1. Review: </span><span style="font-size:10.5pt">On acceptance of the proposal for the project I would review the code provided by the Mentors and try to analyse and familiarize with the Data members and Data functions being used in the code. </span><span style="font-size:10.5pt;font-weight:bold">(May 23rd - May 30th 2016)</span></p><p style="margin-left:36pt;padding:0;color:#000000;font-size:11pt;font-family:"Arial";margin-top:0;margin-bottom:0;height:11pt;margin-right:0"><span style="font-size:10.5pt;font-weight:bold"></span></p><p style="margin-left:36pt;padding:0;color:#000000;font-size:11pt;font-family:"Arial";margin-top:0;margin-bottom:0;margin-right:0"><span style="font-size:10.5pt;font-weight:bold">2. Refactor: </span><span style="font-size:10.5pt">After reviewing the code, I will use my skillset for refactoring the code. Thus making the code more effective and efficient in terms of complexity( Time + Space ) and would modularize the code as much as possible. This would take less than a week to complete.</span><span style="font-size:10.5pt;font-weight:bold">(June 2016)</span></p><p style="margin-left:36pt;padding:0;color:#000000;font-size:11pt;font-family:"Arial";margin-top:0;margin-bottom:0;height:11pt;margin-right:0"><span style="font-size:10.5pt;font-weight:bold"></span></p><p style="margin-left:36pt;padding:0;color:#000000;font-size:11pt;font-family:"Arial";margin-top:0;margin-bottom:0;margin-right:0"><span style="font-size:10.5pt">3. Step 2 would help in achieving the goal of reducing the massive Output-Device class code into modules and subclasses.</span></p><p style="margin-left:36pt;padding:0;color:#000000;font-size:11pt;font-family:"Arial";margin-top:0;margin-bottom:0;height:11pt;margin-right:0"><span style="font-size:10.5pt"></span></p><p style="margin-left:36pt;padding:0;color:#000000;font-size:11pt;font-family:"Arial";margin-top:0;margin-bottom:0;margin-right:0"><span style="font-size:10.5pt;font-weight:bold">4. Develop: </span><span style="font-size:10.5pt">Parallel to modularizing the Output-Device class code I would deduce and implement a methodology for making the compilation firewall for the Output-Device class of the LibreOffice.</span><span style="font-size:10.5pt;font-weight:bold">(June 20th - July 20th 2016 )</span><span style="font-size:10.5pt"> </span></p><p style="padding:0;margin:0;color:#000000;font-size:11pt;font-family:"Arial";height:11pt"><span style="background-color:#ffffff;font-size:11.5pt;font-weight:bold"></span></p><p style="padding:0;margin:0;color:#000000;font-size:11pt;font-family:"Arial""><span style="background-color:#ffffff;font-size:11.5pt;font-weight:bold">Design Strategy:</span><span style="background-color:#ffffff;font-size:11.5pt"> </span></p><p style="padding:0;margin:0;color:#000000;font-size:11pt;font-family:"Arial""><span style="background-color:#ffffff;font-size:11.5pt">Abstraction separates code into interface and implementation. So while designing the component, I will keep interface independent of the implementation so that if I change underlying implementation the interface would remain intact.</span></p><p style="padding:0;margin:0;color:#000000;font-size:11pt;font-family:"Arial""><span style="font-size:10.5pt">Steps to be followed would include:</span></p><p style="padding-top:0;color:#000000;padding-left:0;font-size:11pt;padding-bottom:11pt;line-height:1.27;margin-right:0;margin-left:72pt;font-family:"Arial";margin-top:0;margin-bottom:0;padding-right:0"><span style="background-color:#ffffff;font-size:10.5pt;color:#222426">a. Put all the private member variables into a struct.</span></p><p style="padding-top:0;color:#000000;padding-left:0;font-size:11pt;padding-bottom:11pt;line-height:1.27;margin-right:0;margin-left:72pt;font-family:"Arial";margin-top:0;margin-bottom:0;padding-right:0"><span style="background-color:#ffffff;font-size:10.5pt;color:#222426">b. Put the struct definition in the .cpp file.</span></p><p style="padding-top:0;color:#000000;padding-left:0;font-size:11pt;padding-bottom:11pt;line-height:1.27;margin-right:0;margin-left:72pt;font-family:"Arial";margin-top:0;margin-bottom:0;padding-right:0"><span style="background-color:#ffffff;font-size:10.5pt;color:#222426">c. In the header file, put only the </span><span style="background-color:#ffffff;font-size:10.5pt;color:#222426;font-weight:bold">Forward Declaration</span><span style="background-color:#ffffff;font-size:10.5pt;color:#222426"> of the struct.</span></p><p style="padding-top:0;color:#000000;padding-left:0;font-size:11pt;padding-bottom:11pt;line-height:1.27;margin-right:0;margin-left:72pt;font-family:"Arial";margin-top:0;margin-bottom:0;padding-right:0"><span style="background-color:#ffffff;font-size:10.5pt;color:#222426">d. In the class definition, declare a pointer to the struct as the only private member variable.</span></p><p style="padding-top:0;color:#000000;padding-left:0;font-size:11pt;padding-bottom:11pt;line-height:1.27;margin-right:0;margin-left:72pt;font-family:"Arial";margin-top:0;margin-bottom:0;padding-right:0"><span style="background-color:#ffffff;font-size:10.5pt;color:#222426">e. The constructors for the class need to create the struct.</span></p><p style="padding-top:0;color:#000000;padding-left:0;font-size:11pt;padding-bottom:11pt;line-height:1.27;margin-right:0;margin-left:72pt;font-family:"Arial";margin-top:0;margin-bottom:0;padding-right:0"><span style="background-color:#ffffff;font-size:10.5pt;color:#222426">f. The destructor of the class needs to destroy the struct (possibly implicitly due to use of a smart pointer).</span></p><p style="padding-top:0;color:#000000;padding-left:0;font-size:11pt;padding-bottom:11pt;line-height:1.27;margin-right:0;margin-left:72pt;font-family:"Arial";margin-top:0;margin-bottom:0;padding-right:0"><span style="background-color:#ffffff;font-size:10.5pt;color:#222426">g. The assignment operator and </span><span style="background-color:#ffffff;font-size:10.5pt;color:#222426;font-weight:bold">Copy Constructor</span><span style="background-color:#ffffff;font-size:10.5pt;color:#222426"> need to copy the struct appropriately or else be disabled.</span></p><p style="padding-top:0;margin:0;color:#000000;padding-left:0;font-size:11pt;padding-bottom:11pt;font-family:"Arial";line-height:1.27;padding-right:0"><span style="background-color:#ffffff;font-size:13pt;color:#222426;font-weight:bold">5. Reconcile:</span><span style="background-color:#ffffff;font-size:11.5pt;color:#222426">On achieving the goal of the project would Reconcile the work and provide the Mentor with all possible updates and features of the development with the help of DFD (Data flow Diagrams) and all the documentation required by the Mentor.</span><span style="font-size:10.5pt;font-weight:bold">(Last week of July- August 2016)</span></p><p style="padding-top:0;margin:0;color:#000000;padding-left:0;font-size:11pt;padding-bottom:11pt;font-family:"Arial";line-height:1.27;height:11pt;padding-right:0"><span style="font-size:10.5pt;font-weight:bold"></span></p><p style="padding-top:0;margin:0;color:#000000;padding-left:0;font-size:11pt;padding-bottom:11pt;font-family:"Arial";line-height:1.27;padding-right:0"><span style="background-color:#ffffff;font-size:14pt;color:#222426;font-weight:bold;text-decoration:underline">Conclusion:</span></p><p style="padding-top:0;margin:0;color:#000000;padding-left:0;font-size:11pt;padding-bottom:11pt;font-family:"Arial";line-height:1.27;padding-right:0"><span style="background-color:#ffffff;font-size:11.5pt;color:#222426">When the Project would achieve the goals it would be suitable for implementation to the system. The Output-Device class would then be modularized and its compilation firewall would also be implemented effectively. </span></p><p style="padding-top:0;margin:0;color:#000000;padding-left:0;font-size:11pt;padding-bottom:11pt;font-family:"Arial";line-height:1.2717391304347827;padding-right:0"><span style="background-color:#ffffff;font-size:12pt;font-weight:bold;text-decoration:underline">Proficiency:</span></p><ul style="padding:0;margin:0"><li style="padding-top:0;color:#000000;padding-left:0pt;font-size:11pt;padding-bottom:11pt;line-height:1.2717391304347827;margin-right:0;margin-left:36pt;font-family:"Arial";margin-top:0;margin-bottom:0;padding-right:0"><span style="background-color:#ffffff;font-size:12pt">I am proficient in C,C++,JAVA and have worked on developmental projects undertaking these languages.</span></li><li style="padding-top:0;color:#000000;padding-left:0pt;font-size:11pt;padding-bottom:11pt;line-height:1.2717391304347827;margin-right:0;margin-left:36pt;font-family:"Arial";margin-top:0;margin-bottom:0;padding-right:0"><span style="background-color:#ffffff;font-size:12pt">Resume link: </span><span style="background-color:#ffffff;font-size:12pt;font-family:"Roboto";color:#1155cc;text-decoration:underline"><a href="https://www.google.com/url?q=https://drive.google.com/file/d/0B7RrMabDB-4FU3VURDBMUlprU3M/view?usp%3Dsharing&sa=D&ust=1458896488834000&usg=AFQjCNGCsIQTt1B3q22MvUy1UsNT4Wuq8g" style="color:inherit;text-decoration:inherit">https://drive.google.com/file/d/0B7RrMabDB-4FU3VURDBMUlprU3M/view?usp=sharing</a></span></li></ul><p style="padding-top:0;margin:0;color:#000000;padding-left:0;font-size:11pt;padding-bottom:11pt;font-family:"Arial";line-height:1.2717391304347827;padding-right:0"><span style="background-color:#ffffff;font-size:12pt;font-weight:bold;text-decoration:underline">University Information:</span></p><ul style="padding:0;margin:0"><li style="padding-top:0;color:#000000;padding-left:0pt;font-size:11pt;padding-bottom:35pt;line-height:1.6000000000000003;margin-right:0;margin-left:72pt;font-family:"Arial";margin-top:0;margin-bottom:0;padding-right:0"><span style="background-color:#ffffff;font-size:12pt;font-family:"Roboto";color:#222426">University Name: JAYPEE INSTITUTE OF INFORMATION TECHNOLOGY</span></li><li style="padding-top:2pt;color:#000000;padding-left:0pt;font-size:11pt;padding-bottom:35pt;line-height:1.6000000000000003;margin-right:0;margin-left:72pt;font-family:"Arial";margin-top:0;margin-bottom:0;padding-right:0"><span style="background-color:#ffffff;font-size:12pt;font-family:"Roboto";color:#222426">Major:COMPUTER SCIENCE ENGINEERING</span></li><li style="padding-top:2pt;color:#000000;padding-left:0pt;font-size:11pt;padding-bottom:35pt;line-height:1.6000000000000003;margin-right:0;margin-left:72pt;font-family:"Arial";margin-top:0;margin-bottom:0;padding-right:0"><span style="background-color:#ffffff;font-size:12pt;font-family:"Roboto";color:#222426">Current Year and Expected Graduation date: 3rd YEAR & 31-06-2017</span></li><li style="padding-top:2pt;color:#000000;padding-left:0pt;font-size:11pt;padding-bottom:35pt;line-height:1.6000000000000003;margin-right:0;margin-left:72pt;font-family:"Arial";margin-top:0;margin-bottom:0;padding-right:0"><span style="background-color:#ffffff;font-size:12pt;font-family:"Roboto";color:#222426">Degree (e.g. BSc, PhD):B.Tech </span></li></ul><p style="padding-top:0;margin:0;color:#000000;padding-left:0;font-size:11pt;padding-bottom:11pt;font-family:"Arial";line-height:1.2717391304347827;height:11pt;padding-right:0"><span style="background-color:#ffffff;font-size:12pt"></span></p></div></div></div><table style="width: 100%; border-collapse: collapse;" role="presentation"><tr><td style="padding: 0px;"><table style="border-collapse: collapse; width: 3px;" role="presentation"><tr height="1"><td width="1" bgcolor="#f0f0f0" style="padding: 0px;"></td><td width="1" bgcolor="#eaeaea" style="padding: 0px;"></td><td width="1" bgcolor="#e5e5e5" style="padding: 0px;"></td></tr><tr height="1"><td width="1" bgcolor="#f0f0f0" style="padding: 0px;"></td><td width="1" bgcolor="#eaeaea" style="padding: 0px;"></td><td width="1" bgcolor="#eaeaea" style="padding: 0px;"></td></tr><tr height="1"><td width="1" bgcolor="#f5f5f5" style="padding: 0px;"></td><td width="1" bgcolor="#f0f0f0" style="padding: 0px;"></td><td width="1" bgcolor="#f0f0f0" style="padding: 0px;"></td></tr></table></td><td style="width: 100%; padding: 0px;"><div style="height: 1px; width: auto; border-top: 1px solid #ddd; background:#eaeaea; border-bottom: 1px solid #f0f0f0;"></div></td><td style="padding: 0px;"><table style="border-collapse: collapse; width: 3px;" role="presentation"><tr height="1"><td width="1" bgcolor="#e5e5e5" style="padding: 0px;"></td><td width="1" bgcolor="#eaeaea" style="padding: 0px;"></td><td width="1" bgcolor="#f0f0f0" style="padding: 0px;"></td></tr><tr height="1"><td width="1" bgcolor="#eaeaea" style="padding: 0px;"></td><td width="1" bgcolor="#eaeaea" style="padding: 0px;"></td><td width="1" bgcolor="#f0f0f0" style="padding: 0px;"></td></tr><tr height="1"><td width="1" bgcolor="#f0f0f0" style="padding: 0px;"></td><td width="1" bgcolor="#f0f0f0" style="padding: 0px;"></td><td width="1" bgcolor="#f5f5f5" style="padding: 0px;"></td></tr></table></td></tr></table><table style="padding: 14px 10px 0 10px;" role="presentation" dir="ltr"><tr><td style="width: 100%; font-size:11px; font-family: Roboto,Arial,Helvetica,sans-serif; color:#646464; line-height: 20px; min-height: 40px; vertical-align: middle;">Google Docs: Create and edit documents online.</td><td style="padding-left: 20px; vertical-align: middle;"><a href="https://drive.google.com" target="_blank"><img src="https://www.gstatic.com/images/branding/googlelogo/1x/googlelogo_tm_black54_color_96x40dp.png" width="96" alt="Logo for Google Docs" border="0"></a></td></tr></table></div></div></body></html>