Föreläsning 8 Programmeringsteknik och Matlab DD1312 er, Self Metoderna:, av metoder, Det är en metod som tillhör klassen och inte objektet. class Skylt(object): antal=0 def init (,r):.reklam=r def antal(): return antal antal=staticmethod(antal) def reklam(): return.reklam 2/16 Egen modul Man kan samla alla funktioner och klasser i en fil och importera filen i huvudprogrammet, precis på samma sätt som man importerar moduler från standard biblioteket. 3/16 1
Self är en referensvariabel som refererar inifrån instansen till själva instansen. 4/16 metoderna str och cmp str () Används om man vill få ut en textrepresentant av ett objekt cmp (,x) Används om man vill jämföra två objekt (oftast av samma typ) med följande jämförelse operatorer: >,<,==,!=,<= och >= 5/16 Publika och privata metoder Om en metod definieras med ett namn som börjar med två understreck då är metoden privat. Alltså metoden kan endast anropas inom klassen och inte från en kod utanför klassen. Om en metodnamn inte definieras med två understreck då är metoden publik. Alltså metoden kan anropas överallt i programmet. 6/16 2
När objekt A anropar en metod hos objekt B då skickar A ett meddelande till B. 7/16 class Student(object): def init (,n):. name=n def getname(): return. name class Teacher(object): def init (,n):.name=n def introduce(,s): thebeststudent=s.getname() print "Mitt namn är,.name,"och är stolt över min elev, thebeststudent s=student("eva Matsson") t=teacher("malin Samuelsson") #I följande kod skickas ett meddelande från teacher objektet, t till student objektet, s. t.introduce(s) 8/16 I objektorienterade språk finns arv möjlighet. Subklass ärver från superklass. En subklass ärver alla metoder och attribut från superklassen. 9/16 3
class Ellips(object): def init (,a,b):.lang = a.kort = b def area(): import math return math.pi*.lang*.kort class Cirkel(Ellips): def init (,r): super(cirkel,). init (r,r) def omkrets(): import math return 2*math.pi*.lang 10/16 av metoder av en metod är då man definierar en metod i en subklass där metoden är redan definierad i superklassen. 11/16 class Parallelogram(object): def init (,a,b,h):.kant1=a.baskant=b.hojd=h def area(): return.hojd*.baskant def omkrets(): return 2*(.kant1+.basKant) 12/16 4
class Rektangel(Parallelogram): def init (,a,b):.kant1=a.baskant=b def area(): return.kant1*.baskant class Kvadrat(Rektangel): def init (,a): super(kvadrat,). init (a,a) 13/16 Man utökar en subklass om man i klassen lägger till metoder eller attribut som inte är deklarerade i superklassen. Detta är användbar när man vill skapa en mer specialiserad version av superklassen. 14/16 är möjligheten att kunna skicka samma meddelande till objekt av olika klasser och få olika resultat. 15/16 5
Dela upp ditt program till olika filer och använd moduler för att införa funktioner och klasser str är en metod som anropas när man använder objektet i samband med print cmp är en metod som anropas när man använder objekt i jämförelseoperatorer, användbar i samband med sort() 16/16 6