NBA_02_Grundlagen_Klassen¶
(c) 2024 Technische Hochschule Augsburg - Fakultät für Informatik - Prof.Dr.Nik Klever - Impressum
Grundlagen Klassen¶
In [1]:
class Ort():
""" Klasse Ort"""
sm = 1.852 # Definition Seemeile 1.852 km
print(Ort.sm)
1.852
In [2]:
ort1 = Ort()
print(ort1)
<__main__.Ort object at 0x7f2c50140048>
In [3]:
ort2 = Ort()
print(ort2)
<__main__.Ort object at 0x7f2c5011aeb8>
In [4]:
print(ort1.sm)
print(ort2.sm)
1.852 1.852
In [5]:
Ort.sm = 0
print(ort1.sm)
print(ort2.sm)
0 0
In [6]:
ort1.sm = 0.9
print(ort1.sm)
print(ort2.sm)
0.9 0
Instanziierung¶
In [7]:
class Ort():
"""Klasse Ort mit Eigenschaften
Name des Orts
Lage des Orts über die Koordinaten (Nordkoordinate, Ostkoordinate)
"""
def __init__(self, name, nord, ost):
self.name = name
self.nord = nord
self.ost = ost
In [8]:
ort1 = Ort("TCW",48.86457, 10.51463)
print("{} liegt auf {} Nord und {} Ost".format(ort1.name,ort1.nord,ort1.ost))
TCW liegt auf 48.86457 Nord und 10.51463 Ost
In [9]:
ort2 = Ort("Bahnhof Nördlingen",48.8508, 10.4978)
print("{} liegt auf {} Nord und {} Ost".format(ort2.name,ort2.nord,ort2.ost))
Bahnhof Nördlingen liegt auf 48.8508 Nord und 10.4978 Ost
Instanzvariable ist in Python mit "self" festgelegt¶
Bei der Erstellung einer Instanz (Objekt einer Klasse) wird die Instanzvariable (self) zum Rückgabewert der Instanziierung der Klasse und damit für jede Instanz ein anderer Wert.
Klassenmethoden¶
Satz des Pythagoras¶
a² + b² = c²
1/60 Breitengrad = 1 Seemeile = 1852 m = 1.852 km
60 * 1.852 = 111.12 km
60 * 1.852 * cos((b1+b2)/2)
In [14]:
import math
class Ort():
"""Klasse Ort mit Eigenschaften
Attribute:
Name des Orts
Koordinaten des Orts
Methoden:
entfernung
"""
sm = 1.852 # Definition Seemeile 1.852 km
def __init__(self,name,nord,ost):
self.name = name
self.nord = nord
self.ost = ost
def entfernung(self,zweiterOrt):
längebreitengrads = 60 * self.sm
längelängengrads = 60 * self.sm * math.cos(math.radians((self.nord+zweiterOrt.nord)/2))
a2 = ((zweiterOrt.ost-self.ost)*längelängengrads)**2
b2 = ((zweiterOrt.nord-self.nord)*längebreitengrads)**2
return math.sqrt(a2+b2)
In [15]:
ort1 = Ort("TCW",48.86457, 10.51463)
print("{} liegt auf {} Nord und {} Ost".format(ort1.name,ort1.nord,ort1.ost))
TCW liegt auf 48.86457 Nord und 10.51463 Ost
In [16]:
ort2 = Ort("Bahnhof Nördlingen",48.8508, 10.4978)
print("{} liegt auf {} Nord und {} Ost".format(ort2.name,ort2.nord,ort2.ost))
Bahnhof Nördlingen liegt auf 48.8508 Nord und 10.4978 Ost
In [17]:
ort1.entfernung(ort2)
Out[17]:
1.9634749351569114
In [18]:
ort2.entfernung(ort1)
Out[18]:
1.9634749351569114