Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Nächste Überarbeitung
Vorhergehende Überarbeitung
modul:m320_2024:learningunits:lu03:aufgaben:gleichheit [2024/08/13 07:34] – angelegt msutermodul:m320_2024:learningunits:lu03:aufgaben:gleichheit [2025/08/26 13:57] (aktuell) – [Wichtig zu Wissen] kmaurizi
Zeile 1: Zeile 1:
-====== LU03.A03 - Identität und Gleichheit ====== +====== LU03.A02 - Identität und Gleichheit ====== 
-=== Ziel ===+ 
 +<WRAP center round todo 60%> 
 +Sie können zwei Objekte vergleichen: 
 +  - die Gleichheit der bzw. Zugehörigkeit zur Klasse 
 +  - die Gleichheit der Objekt-Referenzen (eben die Identität) 
 +  - die Gleicheit der Inhalte von Objekten 
 +</WRAP> 
 + 
 + 
 +===== Ziel =====
 Sie kennen den Unterschied zwischen Gleichheit (gleiche Klasse) und Identität (gleiche Referenz).\\ Sie kennen den Unterschied zwischen Gleichheit (gleiche Klasse) und Identität (gleiche Referenz).\\
 Zudem können Sie den Inhalt zweier Objekte vergleichen. Zudem können Sie den Inhalt zweier Objekte vergleichen.
  
-=== Auftrag === +===== Auftrag =====
- +
-  - Akzeptieren Sie das Assignment im GitHub Classroom. +
-  - Klonen Sie ihr Repository in die Entwicklungsumgebung.+
   - Ergänzen Sie den Code der Klasse ''ObjectIdentity'' gemäss der Erklärung im Quellcode der Methode ''%%__eq__%%''.   - Ergänzen Sie den Code der Klasse ''ObjectIdentity'' gemäss der Erklärung im Quellcode der Methode ''%%__eq__%%''.
   - Führen Sie den Unit-Test aus. Er muss fehlerfrei ablaufen. Sollten Fehler auftreten, begrenzen sich diese auf die von Ihnen implementierte Methode ''%%__eq__%%''.   - Führen Sie den Unit-Test aus. Er muss fehlerfrei ablaufen. Sollten Fehler auftreten, begrenzen sich diese auf die von Ihnen implementierte Methode ''%%__eq__%%''.
   - Ergänzen Sie den Code in ''main''. Beachten Sie insbesondere den letzten Teilauftrag, bei dem es um die Frage des "Inhalts" der Objekte geht. Instanzieren Sie daher hier die beiden Objekte mit den gleichen Zeichenketten.   - Ergänzen Sie den Code in ''main''. Beachten Sie insbesondere den letzten Teilauftrag, bei dem es um die Frage des "Inhalts" der Objekte geht. Instanzieren Sie daher hier die beiden Objekte mit den gleichen Zeichenketten.
-  - Führen Sie einen Commit und einen Push durch. 
  
-=== Dauer === 
-30 Minuten + Hausaufgabenzeit 
  
-=== Abgabe === +===== Vorgehen ===== 
-Die Abgabe erfolgt auf github.+  - Akzeptieren Sie das Assignment im GitHub Classroom. 
 +  - Klonen Sie ihr Repository in die Entwicklungsumgebung. 
 +  - Führen Sie einen Commit und einen Push durch.  
 + 
 +==== Dauer ==== 
 +30 Minuten + Hausaufgabenzeit
  
---- 
  
-=== Wichtig zu Wissen ===+===== Wichtig zu Wissen =====
 In dieser Aufgabe werden 3 verschiedene Arten von "Gleichheit" angewendet. In dieser Aufgabe werden 3 verschiedene Arten von "Gleichheit" angewendet.
    - die Gleichheit der bzw. Zugehörigkeit zur Klasse    - die Gleichheit der bzw. Zugehörigkeit zur Klasse
    - die Gleichheit der Objekt-Referenzen (eben die Identität)    - die Gleichheit der Objekt-Referenzen (eben die Identität)
    - die Gleicheit der Inhalte von Objekten    - die Gleicheit der Inhalte von Objekten
-Die ersten beiden Fälle sind durch Keywords eindeutig erkennbar und in allen Fällen durch den Interpreter zu verstehen. Die Klassenzugehörigkeit wird durch ''isinstance'' geregelt, während die Identität durch ''is'' überprüft wird.\\ + 
-Bei der inhaltlichen Gleichheit wird das ganze etwas komplexer. Bei einfachen Datentypen (int, float, char, boolean) kann der Interpreter die Anweisung\\+Die ersten beiden Fälle sind durch Keywords eindeutig erkennbar und in allen Fällen durch den Interpreter zu verstehen.  
 +Die Klassenzugehörigkeit wird durch ''isinstance'' geregelt, während die Identität durch ''is'' überprüft wird. 
 + 
 +Bei der inhaltlichen Gleichheit wird das ganze etwas komplexer.  
 +Bei einfachen Datentypen (int, float, char, boolean) kann der Interpreter die Anweisung 
 <code Python> <code Python>
 value = 7 value = 7
Zeile 34: Zeile 46:
  ...  ...
 </code> </code>
-umsetzen, da klar ist, um welchen Datentyp es sich handelt. Das gilt auch für einzelne Zeichen...+umsetzen, da klar ist, um welchen Datentyp es sich handelt.  
 + 
 +Das gilt auch für einzelne Zeichen...
 <code Python> <code Python>
 if sign == 'a': if sign == 'a':
Zeile 68: Zeile 82:
         # zuerst prüfen, ob das Objekt überhaupt "passt"         # zuerst prüfen, ob das Objekt überhaupt "passt"
         if isinstance(other_object, Person):         if isinstance(other_object, Person):
-            return self.first_name == other_object.first_name and self.last_name == other_object.first_name+            return self.first_name == other_object.first_name and self.last_name == other_object.last_name
         # danach prüfen, ob das evtl. ein konstanter Wert vorliegt, der zu prüfen ist.          # danach prüfen, ob das evtl. ein konstanter Wert vorliegt, der zu prüfen ist. 
         elif isinstance(other_object, str):         elif isinstance(other_object, str):
Zeile 92: Zeile 106:
 <details> <details>
 <summary>//=> GitHub Repo für externe Besucher//</summary> <summary>//=> GitHub Repo für externe Besucher//</summary>
-GitHub Repository https://github.com/templates-python/m319-lu10-a02-reader-module+GitHub Repository https://github.com/templates-python/m320-lu03-a02-identity
  
 //Lernende am BZZ müssen den Link zum GitHub Classroom Assignment verwenden// //Lernende am BZZ müssen den Link zum GitHub Classroom Assignment verwenden//
  • modul/m320_2024/learningunits/lu03/aufgaben/gleichheit.1723527258.txt.gz
  • Zuletzt geändert: 2024/08/13 07:34
  • von msuter