Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.

Link zu der Vergleichsansicht

Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung
Nächste Überarbeitung
Vorherige Überarbeitung
talit:oop_einfuehrung [2022-06-06 00:25] – [Auftrag 1: Klasse Person] scatalit:oop_einfuehrung [2023-05-03 08:33] (aktuell) – [Auftrag 2: OOP im Game] sca
Zeile 3: Zeile 3:
 ===== - Klassen und Objekte ===== ===== - Klassen und Objekte =====
  
-Studiere die Slides für eine detaillierte Einführung in die **objektorientierte Programmierung (OOP)**. Hier im Wiki sind einfach die allerwichtigsten Grundlagen angegeben.+Studiere die {{ :talit:2022_talit_oop_python_i.pdf|Slides}} für eine detaillierte Einführung in die **objektorientierte Programmierung (OOP)**. Hier im Wiki sind einfach die allerwichtigsten Grundlagen angegeben.
  
 In der objektorientierten Programmierung schreibt man **Klassen**, von welcher man dann **Objekte** instanziiert.  In der objektorientierten Programmierung schreibt man **Klassen**, von welcher man dann **Objekte** instanziiert. 
Zeile 77: Zeile 77:
    1. Implementiere Klassenmethode `increase_klasse()`. Gebe Fehlermeldung aus, falls für Lehrperson aufgerufen wird.    1. Implementiere Klassenmethode `increase_klasse()`. Gebe Fehlermeldung aus, falls für Lehrperson aufgerufen wird.
    1. Implementiere Klassenmethode `get_age()`. Tipp: Verwende datetime- und dateutil-Module    1. Implementiere Klassenmethode `get_age()`. Tipp: Verwende datetime- und dateutil-Module
 +
 +<nodisp 2>
 +++++Lösung|
 +<code python>
 +from datetime import datetime
 +from dateutil import relativedelta
 +
 +class Person:
 +    def __init__(self,_name,_address,_birthday,_phone,_mail,_type,_position,_klasse):
 +        self.name = _name
 +        self.address = _address
 +        self.birthday = _birthday
 +        self.phone = _phone
 +        self.mail = _mail
 +        self.type = _type
 +        self.position = _position
 +        self.klasse = _klasse # can't use 'class' bc is keyword
 +
 +    def get_info(self):
 +        str_all = f"Name: {self.name}, Adresse: {self.address}, Geburtstag: {self.birthday}, Phone: {self.phone}, Mail: {self.mail}, Typ: {self.type} "
 +        if self.type == "LP":
 +            return  str_all + f"Position: {self.position}"
 +        else:
 +            return str_all + f"Klasse: {self.klasse}"
 +
 +    def get_age(self):
 +        birthdate = datetime.strptime(self.birthday,"%d.%m.%Y")
 +        now = datetime.now()
 +        diff = relativedelta.relativedelta(now,birthdate)
 +        return diff.years
 +
 +    def change_klasse(self,x=1):
 +        yr = int(self.klasse[0]) + x
 +        self.klasse = str(yr) + self.klasse[1::]
 +
 +# instantiate objects, store in list
 +persons = [
 +    Person("Bert Schreiner", "Hoehenweg 8, 8590 Romanshorn TG", "07.12.1969","071 847 41 23","scb@ksr.ch","LP","HL",None),
 +    Person("Monika Hohler", "Seeblickstrasse 17, 9306 Freidorf", "24.05.1990","071 369 54 11", "hom@ksr.ch", "LP","LB1",None),
 +    Person("Verena Keller", "Saentisstrasse 22, 8580 Amriswil", "03.02.2007","071 345 67 78", "verkelle@ksr.ch", "STU",None,"1Fd"),
 +    Person("Heiri Meier", "Kreisstrasse 3, 9322 Egnach", "11.09.2005", "071 499 85 31","heiri@rasenmeier.ch", "STU",None,"3Mfz")
 +]
 +
 +sca = Person("Andreas Schärer","Weinfelden","03.09.1987","123","sca@ksr.ch","LP","HL",None)
 +print(sca.get_age())
 +
 +verkelle = Person("Verena Keller", "Saentisstrasse 22, 8580 Amriswil", "03.02.2007","071 345 67 78", "verkelle@ksr.ch", "STU",None,"1Fd")
 +heimeier = Person("Heiri Meier", "Kreisstrasse 3, 9322 Egnach", "11.09.2005", "071 499 85 31","heiri@rasenmeier.ch", "STU",None,"3Mfz")
 +verkelle.change_klasse() # Verena
 +heimeier.change_klasse(-1) # Heiri has to repeat a year
 +print(verkelle.klasse)
 +print(heimeier.klasse)
 +</code>
 +++++
 +</nodisp>
  
 ==== Auftrag 2: OOP im Game ==== ==== Auftrag 2: OOP im Game ====
  
-   1. Überlege dir mit einer Kolleg:in:+   1. Überlege dir mit einer Kolleg:in und mache Notizen:
      1. Wie könnte man OOP im Game von früher sinnvoll einsetzen?      1. Wie könnte man OOP im Game von früher sinnvoll einsetzen?
      1. Welche Klasse(n) & Objekte braucht es?      1. Welche Klasse(n) & Objekte braucht es?
      1. Welche Attribute und Methoden haben diese?      1. Welche Attribute und Methoden haben diese?
    1. Bespreche mit der Lehrperson    1. Bespreche mit der Lehrperson
-   1. Programmiere!+   1. Setze dies dann in der nächsten Aufgabe um.
  
  
  • talit/oop_einfuehrung.1654475147.txt.gz
  • Zuletzt geändert: 2022-06-06 00:25
  • von sca