{"id":388,"date":"2018-12-11T05:05:35","date_gmt":"2018-12-11T05:05:35","guid":{"rendered":"http:\/\/iludis.de\/?p=388"},"modified":"2019-01-03T11:03:14","modified_gmt":"2019-01-03T11:03:14","slug":"pythonskripte-inf4st-teil-ii","status":"publish","type":"page","link":"https:\/\/iludis.de\/?page_id=388","title":{"rendered":"Pythonskripte Inf4St. Teil II"},"content":{"rendered":"<h4><strong>UML-Entwurf<\/strong> der Klasse &#8220;Stack&#8221; in Modelio:<\/h4>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-389\" src=\"https:\/\/iludis.de\/wp-content\/uploads\/2018\/12\/stack.png\" alt=\"\" width=\"242\" height=\"208\" \/><\/p>\n<h5><strong>\u00dcbertragen der UML-Datei in Pycharm:<\/strong><\/h5>\n<p>Methodensignaturen ohne R\u00fcckgabewerte<\/p>\n<pre class=\"brush: python; gutter: true\">class Stack:\r\n    def __init__(self):\r\n        pass\r\n\r\n    def pop(self):\r\n        pass\r\n\r\n    def peek(self):\r\n        pass\r\n\r\n    def push(self, inhalt):\r\n        pass\r\n\r\n    def getStacklistenlaenge(self):\r\n        pass\r\n\r\n    def istLeer(self):\r\n        pass<\/pre>\n<h5><strong>Vollst\u00e4ndige Implementierung<\/strong> des Stacks:<\/h5>\n<pre class=\"brush: python; gutter: true\">class Stack:\r\n    def __init__(self):\r\n        self.stackliste = []\r\n        self.stacklistenlaenge = 0\r\n\r\n    def pop(self):\r\n        if self.istLeer() == False:\r\n            self.stacklistenlaenge = self.stacklistenlaenge -1\r\n            return self.stackliste.pop()\r\n\r\n    def peek(self):\r\n        if self.istLeer() == False:\r\n            return self.stackliste[self.stacklistenlaenge-1]\r\n\r\n    def push(self, inhalt):\r\n        self.stackliste.append(inhalt)\r\n        self.stacklistenlaenge = self.stacklistenlaenge + 1\r\n\r\n    def getStacklistenlaenge(self):\r\n        return self.stacklistenlaenge\r\n\r\n    def istLeer(self):\r\n        if self.stacklistenlaenge &lt;= 0:\r\n            return True\r\n        else:\r\n            return False<\/pre>\n<hr\/>\n<h4><strong>UML-Entwurf<\/strong>\u00a0Browser-Funktionalit\u00e4t &#8220;Vorw\u00e4rts \/ R\u00fcckw\u00e4rts&#8221;<\/h4>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-392 size-full\" src=\"https:\/\/iludis.de\/wp-content\/uploads\/2018\/12\/stackII.png\" alt=\"\" width=\"643\" height=\"219\" srcset=\"https:\/\/iludis.de\/wp-content\/uploads\/2018\/12\/stackII.png 643w, https:\/\/iludis.de\/wp-content\/uploads\/2018\/12\/stackII-300x102.png 300w\" sizes=\"auto, (max-width: 643px) 100vw, 643px\" \/><\/p>\n<h5><strong>Vollst\u00e4ndige Implementierung<\/strong> der Funktionalit\u00e4t:<\/h5>\n<pre class=\"brush: python; gutter: true\">class Stack:\r\n    def __init__(self):\r\n        self.stackliste = []\r\n        self.stacklistenlaenge = 0\r\n\r\n    def pop(self):\r\n        if self.istLeer() == False:\r\n            self.stacklistenlaenge = self.stacklistenlaenge -1\r\n            return self.stackliste.pop()\r\n\r\n    def peek(self):\r\n        if self.istLeer() == False:\r\n            return self.stackliste[self.stacklistenlaenge-1]\r\n\r\n    def push(self, inhalt):\r\n        self.stackliste.append(inhalt)\r\n        self.stacklistenlaenge = self.stacklistenlaenge + 1\r\n\r\n    def getStacklistenlaenge(self):\r\n        return self.stacklistenlaenge\r\n\r\n    def istLeer(self):\r\n        if self.stacklistenlaenge &lt;= 0:\r\n            return True\r\n        else:\r\n            return False\r\n\r\nclass Browsersimulation:\r\n    def __init__(self):\r\n        self.vorwaertsStack = Stack()\r\n        self.rueckwaertsStack = Stack()\r\n\r\n    def vorwaertsKnopf(self):\r\n        self.temp = self.vorwaertsStack.peek()\r\n        self.rueckwaertsStack.push(self.temp)\r\n        self.vorwaertsStack.pop()\r\n\r\n    def rueckwaertsKnopf(self):\r\n        self.temp = self.rueckwaertsStack.peek()\r\n        self.vorwaertsStack.push(self.temp)\r\n        self.rueckwaertsStack.pop()\r\n        # self.vorwaertsStack.push(self.rueckwaertsStack.pop())\r\n\r\n    def nutzereingabe(self, userinput):\r\n        self.rueckwaertsStack.push(userinput)\r\n        # nach jeder Nutzereingabe muss der Vorwaertsstack gel\u00f6scht werden\r\n        self.vorwaertsStack.stackliste = [] # Verletzung der OOP-Regeln!!\r\n\r\n    def ausgabe(self):\r\n        print(&quot;------------------&quot;)\r\n        print(&quot;vorwaertsStack:&quot;, self.vorwaertsStack.stackliste)\r\n        print(&quot;r\u00fcckw\u00e4rtsStack:&quot;, self.rueckwaertsStack.stackliste)\r\n\r\ntest = Browsersimulation()\r\ntest.nutzereingabe(&quot;http:\/\/www.spiegel.de\/&quot;)\r\ntest.nutzereingabe(&quot;http:\/\/www.zeit.de\/&quot;)\r\ntest.nutzereingabe(&quot;http:\/\/www.n-tv.de\/&quot;)\r\ntest.ausgabe()\r\ntest.rueckwaertsKnopf()\r\ntest.ausgabe()\r\ntest.vorwaertsKnopf()\r\ntest.ausgabe()<\/pre>\n<p>Die Instanz &#8220;test&#8221; ist hier ein Testobjekt, um die Funktionalit\u00e4t zu \u00fcberpr\u00fcfen<\/p>\n<hr\/>\n<h4><strong>UML-Entwurf<\/strong> der Klasse &#8220;Queue&#8221; in Modelio:<\/h4>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-395\" src=\"https:\/\/iludis.de\/wp-content\/uploads\/2018\/12\/queue_Grundkonf-300x202.png\" alt=\"\" width=\"300\" height=\"202\" srcset=\"https:\/\/iludis.de\/wp-content\/uploads\/2018\/12\/queue_Grundkonf-300x202.png 300w, https:\/\/iludis.de\/wp-content\/uploads\/2018\/12\/queue_Grundkonf.png 336w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/p>\n<h5><strong>Vollst\u00e4ndige Implementierung<\/strong> der Queue:<\/h5>\n<pre class=\"brush: python; gutter: true\">class Queue:\r\n    def __init__(self):\r\n        self.queueListe = []\r\n        self.queueListeLaenge = 0\r\n\r\n    def enqueue(self, wert):\r\n        self.queueListe.append(wert)\r\n        self.queueListeLaenge+=1\r\n\r\n    def dequeue(self):\r\n        if not self.istLeer():\r\n            self.queueListeLaenge-= 1\r\n            return self.queueListe.pop(0)\r\n        else:\r\n            print(&quot;Queue leer!&quot;)\r\n            return None\r\n\r\n    def peek(self):\r\n        if not self.istLeer():\r\n            return self.queueListe[0]\r\n        else:\r\n            print(&quot;Queue leer!&quot;)\r\n            return None\r\n\r\n    def getQueueListenLaenge(self):\r\n        return self.queueListeLaenge\r\n\r\n    def istLeer(self):\r\n        return self.queueListeLaenge == 0<\/pre>\n<hr\/>\n<h4><strong>Erweiterung der Queue<\/strong> auf eine Queue mit maximaler L\u00e4nge:<\/h4>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-396\" src=\"https:\/\/iludis.de\/wp-content\/uploads\/2018\/12\/queue-300x288.png\" alt=\"\" width=\"300\" height=\"288\" srcset=\"https:\/\/iludis.de\/wp-content\/uploads\/2018\/12\/queue-300x288.png 300w, https:\/\/iludis.de\/wp-content\/uploads\/2018\/12\/queue.png 336w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/p>\n<h5><strong>Python-Code<\/strong> mit Vererbung:<\/h5>\n<pre class=\"brush: python; gutter: true\">class LaengeQueue(Queue):\r\n    def __init__(self):\r\n        super().__init__()\r\n        self.maxQueueListenLaenge = 5\r\n\r\n    def enqueue(self, wert):\r\n        if self.queueListeLaenge &lt; self.maxQueueListenLaenge:\r\n            self.queueListe.append(wert)\r\n            self.queueListeLaenge+=1\r\n        else:\r\n            print(&quot;maximale Laenge erreicht:&quot;, self.queueListe)<\/pre>\n<hr\/>\n<h4><strong>\u00dcbung zur Vererbung:<\/strong> UML von Minecraft-Charakteren<\/h4>\n<p><em>(beispielhafter Entwurf einiger Klassen; nach einer Einzelstunde noch unvollst\u00e4ndig)<\/em><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-397 size-full\" src=\"https:\/\/iludis.de\/wp-content\/uploads\/2018\/12\/minecraft.png\" alt=\"\" width=\"929\" height=\"640\" srcset=\"https:\/\/iludis.de\/wp-content\/uploads\/2018\/12\/minecraft.png 929w, https:\/\/iludis.de\/wp-content\/uploads\/2018\/12\/minecraft-300x207.png 300w, https:\/\/iludis.de\/wp-content\/uploads\/2018\/12\/minecraft-768x529.png 768w\" sizes=\"auto, (max-width: 929px) 100vw, 929px\" \/><\/p>\n<hr\/>\n<h4>Binary-Tree Datentyp als Klasse<\/h4>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-521\" src=\"https:\/\/iludis.de\/wp-content\/uploads\/2019\/01\/binaryTreeUML-300x209.jpg\" alt=\"\" width=\"300\" height=\"209\" srcset=\"https:\/\/iludis.de\/wp-content\/uploads\/2019\/01\/binaryTreeUML-300x209.jpg 300w, https:\/\/iludis.de\/wp-content\/uploads\/2019\/01\/binaryTreeUML.jpg 431w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/p>\n<pre class=\"brush: python; gutter: true\">class BTNode:\r\n    def __init__(self, wert):\r\n        self.wert = wert\r\n        self.Zeigerlinks = None\r\n        self.Zeigerrechts = None\r\n\r\n    def insert(self, wert):\r\n        if wert&lt;self.wert:\r\n            if self.Zeigerlinks is None:\r\n                self.Zeigerlinks = BTNode(wert)\r\n            else:\r\n                self.Zeigerlinks.insert(wert)\r\n        if wert&gt;self.wert:\r\n            if self.Zeigerrechts is None:\r\n                self.Zeigerrechts = BTNode(wert)\r\n            else:\r\n                self.Zeigerrechts.insert(wert)\r\n\r\n    def delete(self, wert):\r\n        pass\r\n\r\n    def findeWert(self, wert):\r\n        pass\r\n\r\n    def printTree(self):\r\n        print(self.wert)\r\n        if self.Zeigerrechts != None:\r\n            print(&quot;nach rechts:&quot; )\r\n            self.Zeigerrechts.printTree()\r\n        if self.Zeigerlinks != None:\r\n            print(&quot;nach links:&quot; )\r\n            self.Zeigerlinks.printTree()\r\n\r\ntest = BTNode(13)\r\ntest.printTree()\r\ntest.insert(5)\r\ntest.insert(20)\r\ntest.insert(4)\r\ntest.insert(7)\r\ntest.insert(15)\r\ntest.insert(24)\r\nprint(&quot;-------------------------&quot;)\r\ntest.printTree()<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>UML-Entwurf der Klasse &#8220;Stack&#8221; in Modelio: \u00dcbertragen der UML-Datei in Pycharm: Methodensignaturen ohne R\u00fcckgabewerte class Stack: def __init__(self): pass def pop(self): pass def peek(self): pass def push(self, inhalt): pass def getStacklistenlaenge(self): pass def istLeer(self): pass Vollst\u00e4ndige Implementierung des Stacks: class Stack: def __init__(self): self.stackliste = [] self.stacklistenlaenge = 0 def pop(self): if self.istLeer() == False:&hellip; <\/p>\n<p class=\"toivo-read-more\"><a href=\"https:\/\/iludis.de\/?page_id=388\" class=\"more-link\">Read more <span class=\"screen-reader-text\">Pythonskripte Inf4St. Teil II<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":{"0":"post-388","1":"page","2":"type-page","3":"status-publish","5":"entry"},"_links":{"self":[{"href":"https:\/\/iludis.de\/index.php?rest_route=\/wp\/v2\/pages\/388","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/iludis.de\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/iludis.de\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/iludis.de\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/iludis.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=388"}],"version-history":[{"count":0,"href":"https:\/\/iludis.de\/index.php?rest_route=\/wp\/v2\/pages\/388\/revisions"}],"wp:attachment":[{"href":"https:\/\/iludis.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=388"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}