class Star: # Attribute des Stern 1:1 aus Aufgabe umsetzen def __init__(self, name, id, distance, apparentMagnitude, type): self.name = name self.id = id self.distance = distance self.apparentMagnitude = apparentMagnitude self.type = type # Es muss der Vergleichstern übergeben werden, auf die eigene Distanz hat man Zugriff über self def isCloserThan(self,star_other): if (self.distance < star_other.distance): return True else: return False # Eine einfache Division reicht als Rückgabewert def getDistanceInPC(self): return self.distance/3.26 class StarsDatabase: # Wir brauchen keinen Konstruktor, sondern nur ein Array ("index"), was wir verwalten index = [] # Neue Sterne einfach an unser Array anhängen def add(self,star): self.index.append(star) return # Löschen ist genauso einfach (Achtung: Man müsste vorher prüfen, ob es den Stern überhaupt in der Datenbank gibt! def remove(self,star): self.index.remove(star) print(f'Stern {star.name} gelöscht.') return # Die Funktion greift nicht auf die Datenbank zu, sollte damit besser in der Stars-Klasse realisiert werden def get(self, star): print("Hier die Daten des Sterns:") print(star.name) print(star.id) print(star.distance) print(star.apparentMagnitude) print(star.type) return # Hier einfach die Länge des Index-Arrays zurückgeben def size(self): print(f'Es gibt {len(self.index)} Sterne in der Datenbank.') return # Mainmethode # Vorgegebene Sterne bauen # Dabei beim Anlegen auf die Datentypen achten (z.B. 2000.0 statt 2000) star01 = Star("Sirius","TYC 5949-2777-1", 8.6, -1.46, "Main sequence") star02 = Star("Alpha Centauri","TYC 9007-5849-1", 4.37, -0.27, "Main sequence") star03 = Star("Rigel","TYC 5331-1752-1", 860.0, 0.13, "Blue supergiant") star04 = Star("Almaaz","TYC 2907-1275-1", 2000.0, 2.92, "Yellow supergiant") star05 = Star("Luhmann 16","WISE J1049-5319A", 6.589, 14.94, "Brown dwarf") # Tests # Erzeugen der Datenbank milchstrasse = StarsDatabase() # Sterne hinzufügen milchstrasse.add(star01) milchstrasse.add(star02) milchstrasse.add(star03) milchstrasse.add(star04) milchstrasse.add(star05) # Überprüfen des Hinzufügens milchstrasse.size() # Stern löschen milchstrasse.remove(star01) # Überprüfen des Löschens milchstrasse.size() # Daten eines Sterns ausgeben milchstrasse.get(star04)