Zum Inhalt

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.

Circleint xint yint radiusdraw()Kreis112012030Kreis212012020Kreis312012010ObjektObjektObjekt
Circleint xint yint radiusdraw()Kreis112012030Kreis212012020Kreis312012010ObjektObjektObjekt

Image.jpg

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:

Automarke: Stringmodell: Stringbaujahr: intfarbe: Stringbeschleunigen()bremsen()hupen()auto1marke = "Toyota"modell = "Corolla"baujahr = 2020farbe = "Blau"auto2marke = "Ford"modell = "Mustang"baujahr = 2019farbe = "Rot"auto3marke = "VW"modell = "TW5"baujahr = 2012farbe = "Weiß"ObjektObjektObjekt
Automarke: Stringmodell: Stringbaujahr: intfarbe: Stringbeschleunigen()bremsen()hupen()auto1marke = "Toyota"modell = "Corolla"baujahr = 2020farbe = "Blau"auto2marke = "Ford"modell = "Mustang"baujahr = 2019farbe = "Rot"auto3marke = "VW"modell = "TW5"baujahr = 2012farbe = "Weiß"ObjektObjektObjekt