Nasljeđivanje klasa - utrka auta objektno programiranje


26.5.2022.

Ako postojeća klasa nema sve potrebne funkcionalnosti, ne želimo je mijenjati ili je nije je poželjno mijenjati odnosno ako je to gotova Pythonova klasa koju nije ju moguće mijenjati rješenje je kreiranje nove klase koja će naslijediti postojeću.
Klasa koja nasljeđuje postojeću klasu od postojeće klase dobiva sva svojstva i metode
Novoj klasi možemo dodati dodatna svojstva i metode.


Opći oblik definicije klase koja nasljeđuje neku klasu je:

class ImeKlase(ime_klase_koja_se_nasljeduje):
definicija klase

Unutar konstruktora nove klase (unutar metode __init__()) trebamo pozvati metodu __init__() klase koju nasljeđujemo. Ovu ćemo metodu u tom slučaju pozvati na način da ispred imena metode napišemo super() (super().__init__()).

   

06_utrka_kornjaca_nasljedjivanje_klasa_auti.py

from turtle import *
from random import randint

class Korni(Turtle):

    def __init__(self, slika, y=0):
        """ Boja, oblik i pozicija """

        super().__init__() #poziv roditeljske klase
        self.shape(slika) #zadaje oblik iz popisa oblika (crteža)
        self.pu()
        self.goto(-400, y)

    def pomak(self):
        self.fd(randint(1,30))

s = Screen()

def glavni():
    s.title('Utrka automobila')
    s.setup(1200, 650, 0, 0) #postavlja veličinu i poziciju prozora
    s.bgcolor('green') #zadaje boju pozadine
    s.bgpic('06_pozadina_utrka.gif')#zadaje sliku pozadine, gif

    sl1 = '06_crveni_auto.gif'
    s.addshape(sl1)
    sl2 = '06_crni_auto.gif'
    s.addshape(sl2) #dodaje oblik u popis oblika koji (u tom prozoru)
    sl3 = '06_plavi_auto.gif'
    s.addshape(sl3)
    sl4 = '06_zeleni_auto.gif'
    s.addshape(sl4)
    laura = Korni(sl1, 50)
    roko = Korni(sl2, -30)
    viktor = Korni(sl3, -110)
    hrvoje = Korni(sl4, -190)

    for k in range(50):
        laura.pomak()
        roko.pomak()
        viktor.pomak()
         hrvoje.pomak()
glavni()

26.5.2022.

Dnevne obavijesti


Križanićeva 4, 10000 Zagreb, Hrvatska

01/46-11-834