P Ozocard
Geometrie:¶
Kreis zeichnen mithilfe von Klassen
# Klassendefinition
class Circle:
x:int #verschiedene Attribute
y:int
radius:int
#methodendekleration
def draw():
drawCircle(x,y,radius)#befehl der das programm ausführt
clear()
c1:Circle(x=120,y=120,radius=30)
c1.draw()
update()
Rechteck zeichnen mithilfe von Klassen
#Klassendefinition
class Rechteck:
#Attribut-Deklaration
x:int
y:int
w:int
h:int
#Methoden-Deklaration
def draw():
drawRectangle(x, y, w, h)
clear()
#Ezeugnung der Objekte (instanzilierung)
r1:Rechteck(x=10,y=120,w=200,h=20)
r1.draw()
update()
Zusammenhänge vom Kreis und Rechteck:¶
Die Klassen sind sehr ähnlich aufgebaut jedoch wird beim Rechteck(4 Werte) mehr benötigt als beim Kreis(3 Werte).
Was bedeutet objektorientierte Programmierung?
Objektorientierung oder objektorientierte Programmierung (OOP) ist ein Programmierparadigma, bei dem die Software in Objekte aufgeteilt wird. Diese Objekte repräsentieren reale oder abstrakte Dinge und besitzen Attribute (Daten) und Methoden (Funktionen).
Wie nennt man nicht objektorientierte Programmierung?
Nicht objektorientierte Programmierung nennt man prozedurale Programmierung. Hier wird der Code hauptsächlich in Prozeduren oder Funktionen strukturiert, die nacheinander ausgeführt werden.
Unterschiede:
- OOP: Fokus auf Objekte und deren Interaktionen; fördert Wiederverwendbarkeit und Struktur.
- Prozedural: Fokus auf Abfolge von Anweisungen; ist oft einfacher und direkter, aber weniger modular.
Begriffserklärungen in der OOP:¶
| Begriff: | Erklärung: |
|---|---|
| Klasse | Vorlage für Objekte, definiert Eigenschaften und Verhalten. |
| Methode | Funktion innerhalb einer Klasse, beschreibt das Verhalten der Objekte. |
| Attribute | Daten oder Eigenschaften, die den Zustand des Objekts beschreiben. |
| Objekt | Konkrete Instanz einer Klasse, enthält die Werte der Attribute und kann Methoden nutzen. |
| Instanz | Einzelnes, konkretes Vorkommen einer Klasse im Speicher (gleichbedeutend mit „Objekt“). |
3 Kreise mithilfe von Klassen gezeichenet:¶
# Klassendefinition
class Circle:
x:int #verschiedene Attribute
y:int
radius:int
#methodendekleration
def draw():
drawCircle(x,y,radius)#befehl der das programm ausführt
clear()
c1:Circle(x=120,y=120,radius=30)
c1.draw()
c3:Circle(x=120,y=120,radius=10)#erzeugund der drei objekten
c3.draw()
c2:Circle(x=120,y=120,radius=20)#die drei verschiedenen Programme die benötigt werden
c2.draw()
update()
Begriffserklärung¶
Klasse: Ein Bauplan für Objekte, der deren Attribute und Methoden definiert.
Beispiel: Car mit Attributen wie color und Methoden wie drive().
Methode: Eine Funktion innerhalb einer Klasse, die das Verhalten eines Objekts beschreibt.
Beispiel: drive() in der Klasse Car.
Attribute: Eigenschaften eines Objekts, die seinen Zustand beschreiben.
Beispiel: color oder model in der Klasse Car.
Objekt: Eine konkrete Instanz einer Klasse mit spezifischen Attributwerten.
Beispiel: Ein rotes Auto vom Typ BMW ist ein Objekt der Klasse Car.
Instanz: Ein konkretes Exemplar einer Klasse, auch Objekt genannt.
Beispiel: myCar ist eine Instanz der Klasse Car.
Klassen referenzieren Klassen:¶
Bälle zeichnen ahnhand des Beispiels:
class Ball:
x:int
y:int
radius:int
col:byte
def zeichne():
push()
translate(x,y)
fillHSV(col,255,150)
noStroke()
drawCircle(0,0,radius)
if (radius>10):
fillHSV(col,255,200)
rotate(PI*3)
for i in 8:
rotate(0.2)
drawCircle(radius/2,0,radius/6)
pop()
#Start Programmcode
clear()
b1:Ball(x=60, y=120, radius=100, col=255)
b2:Ball(x=120, y=150, radius=60, col=50)
b3:Ball(x=180, y=180, radius=40, col=125)
b1.zeichne()
b2.zeichne()
b3.zeichne()
update()
Viele Bälle:
class Ball:
x:int
y:int
radius:int
col:byte
def zeichne():
push()
translate(x,y)
fillHSV(col,255,150)
noStroke()
drawCircle(0,0,radius)
if (radius>10):
fillHSV(col,255,200)
rotate(PI*3)
for i in 8:
rotate(0.2)
drawCircle(radius/2,0,radius/6)
pop()
#Start Programmcode
clear()
b1:Ball(x=60, y=120, radius=100, col=255)
b2:Ball(x=120, y=150, radius=60, col=50)
b3:Ball(x=180, y=180, radius=40, col=125)
b1.zeichne()
b2.zeichne()
b3.zeichne()
update()
Wie können in Klassen andere Klassen referenziert werden?¶
In Klassen können andere Klassen als Attribute oder über Vererbung referenziert werden. Man definiert ein Attribut mit dem Typ der anderen Klasse, z. B.:
class Wheel:
# Attribute und Methoden der Wheel-Klasse
class Car:
wheels: list[Wheel] # Referenz auf andere Klasse als Attribut
def __init__(self):
self.wheels = [Wheel(), Wheel(), Wheel(), Wheel()]
Hier wird Car über das Attribut wheels mit Wheel verbunden. Das ist eine Komposition: Car enthält mehrere Wheel-Objekte.
UML-Klassendiagramm entwerfen:¶
Beispiel mit Auto:
