{"id":694,"date":"2021-06-24T15:23:17","date_gmt":"2021-06-24T14:23:17","guid":{"rendered":"https:\/\/blogs.glowscotland.org.uk\/sh\/ahscomputingpython\/?page_id=694"},"modified":"2021-06-25T14:08:12","modified_gmt":"2021-06-25T13:08:12","slug":"classes","status":"publish","type":"page","link":"https:\/\/blogs.glowscotland.org.uk\/sh\/ahscomputingpython\/adv-higher\/classes\/","title":{"rendered":"Classes"},"content":{"rendered":"<p>Records contain a number of attributes.<\/p>\n<p>An <strong>object<\/strong> contains <strong>attributes<\/strong>, and functions (called <strong>methods<\/strong>) to get or set these attributes.<\/p>\n<h1>UML Diagram for Example<\/h1>\n<p>Computer has a fixed ID and type. It has an operating system that can be updated.<br \/>\nPhone is a subclass type of computer, with an additional attribute and methods.<\/p>\n<pre>Computer        &lt;-----   Phone\n----------               ----------\n- id : string;           - operator : string;\n- type : string;         ----------\n- os: string;            + getOperator()\n----------               + changeOperator()\n+ getID()\n+ getType()\n+ getOS()\n+ updateOS()<\/pre>\n<pre class=\"brush: python; title: Python Classes; notranslate\" title=\"Python Classes\">\r\n#define a new class\r\nclass Computer():\r\n    # constructor method with parameters\r\n    def __init__(self, id, type, os):\r\n        #assign parameter values to object attributes\r\n        self.id = id\r\n        self.type = type\r\n        self.os = os\r\n        \r\n        #initial attributes can be manipulated\r\n        self.id = self.id.upper()\r\n\r\n        # some attributes have default values\r\n        self.previousOS = &#x5B;]\r\n        \r\n    #str method provides formatted output for print commands\r\n    def __str__(self):\r\n        str  = f&quot;ID: {self.id:15} &quot;\r\n        str += f&quot;Type: {self.type:10} &quot;\r\n        str += f&quot;OS: {self.os}&quot;\r\n        str += f&quot;\\nPrevious OS: {self.previousOS}&quot;\r\n        return str\r\n    \r\n    # methods to get values of attributes (getters)\r\n    def getID(self):\r\n        return self.id\r\n    \r\n    def getType(self):\r\n        return self.type\r\n    \r\n    def getOS(self):\r\n        return self.os\r\n    \r\n    def getPreviousOS(self):\r\n        return self.previousOS\r\n    \r\n    # methods to update attributes (setters)\r\n    def updateOS(self, newOS):\r\n        self.previousOS.append(self.os)\r\n        self.os = newOS\r\n        \r\n# MAIN PROGRAM   \r\n# instantiation of an object of the class \r\ncomputer1 = Computer(&quot;AHS1913013&quot;,&quot;Desktop&quot;,&quot;Windows Vista&quot;)\r\nprint(computer1)\r\n\r\n#use a setter method\r\ncomputer1.updateOS(&quot;Windows 10 Professional&quot;)\r\nprint(computer1)\r\n\r\n#use getter methods\r\nid = computer1.getID()\r\ntype = computer1.getType()\r\nprint(f&quot;Computer {id} is {type}&quot;)\r\n<\/pre>\n<pre>ID: AHS1913013      Type: Desktop    OS: Windows Vista\nPrevious OS: []\n \nID: AHS1913013      Type: Desktop    OS: Windows 10 Professional\nPrevious OS: ['Windows Vista']\n  \nComputer AHS1913013 is Desktop\n<\/pre>\n<pre class=\"brush: python; title: Python Subclasses; notranslate\" title=\"Python Subclasses\">\r\n# new class Phone is a subclass of Computer\r\nclass Phone(Computer):\r\n    # polymorphism 1\r\n    def __init__(self, id, os, operator):\r\n        # call superclass contructor\r\n        super().__init__(id, &quot;Phone&quot;, os)\r\n        # add subclass specific attributes\r\n        self.operator = operator\r\n    \r\n    # polymorphism 2\r\n    # used instead of superclass' method\r\n    def __str__(self):\r\n        str  = f&quot;ID: {self.id:15} &quot;\r\n        str += f&quot;Type: {self.type:10} &quot;\r\n        str += f&quot;OS: {self.os:10} &quot;\r\n        str += f&quot;Operator: {self.operator}&quot;\r\n        str += f&quot;\\nPrevious OS: {self.previousOS}&quot;\r\n        return str\r\n    \r\n    def getOperator(self):\r\n        return self.operator\r\n    \r\n    def changeOperator(self, newOperator):\r\n        self.operator = newOperator\r\n\r\n# MAIN PROGRAM\r\ncomputer1 = Computer(&quot;AHS1913013&quot;,&quot;Desktop&quot;,&quot;Windows Vista&quot;)\r\nprint(computer1)\r\n \r\nphone1 = Phone(&quot;XYZ1234567&quot;,&quot;Android 8&quot;,&quot;EE&quot;)\r\nprint(phone1)\r\n<\/pre>\n<pre>ID: AHS1913013      Type: Desktop    OS: Windows Vista\nPrevious OS: []\n \nID: XYZ1234567      Type: Phone      OS: Android 8  Operator: EE\nPrevious OS: []\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Records contain a number of attributes. An object contains attributes, and functions (called methods) to get or set these attributes. UML Diagram for Example Computer has a fixed ID and type. It has an operating system that can be updated. Phone is a subclass type of computer, with an additional attribute and methods. Computer &lt;&#8212;&#8211; Phone &#8212;&#8212;&#8212;- &#8212;&#8212;&#8212;- &#8211; id : string; &#8211; operator : string; &#8211; type : string;<\/p>\n<p><a class=\"more-link\" href=\"https:\/\/blogs.glowscotland.org.uk\/sh\/ahscomputingpython\/adv-higher\/classes\/\">Read More<\/a><\/p>\n","protected":false},"author":7,"featured_media":0,"parent":291,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-694","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/blogs.glowscotland.org.uk\/sh\/ahscomputingpython\/wp-json\/wp\/v2\/pages\/694","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blogs.glowscotland.org.uk\/sh\/ahscomputingpython\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/blogs.glowscotland.org.uk\/sh\/ahscomputingpython\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/blogs.glowscotland.org.uk\/sh\/ahscomputingpython\/wp-json\/wp\/v2\/users\/7"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.glowscotland.org.uk\/sh\/ahscomputingpython\/wp-json\/wp\/v2\/comments?post=694"}],"version-history":[{"count":16,"href":"https:\/\/blogs.glowscotland.org.uk\/sh\/ahscomputingpython\/wp-json\/wp\/v2\/pages\/694\/revisions"}],"predecessor-version":[{"id":727,"href":"https:\/\/blogs.glowscotland.org.uk\/sh\/ahscomputingpython\/wp-json\/wp\/v2\/pages\/694\/revisions\/727"}],"up":[{"embeddable":true,"href":"https:\/\/blogs.glowscotland.org.uk\/sh\/ahscomputingpython\/wp-json\/wp\/v2\/pages\/291"}],"wp:attachment":[{"href":"https:\/\/blogs.glowscotland.org.uk\/sh\/ahscomputingpython\/wp-json\/wp\/v2\/media?parent=694"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}