programmeringsteknik
Download
Skip this Video
Download Presentation
Programmeringsteknik

Loading in 2 Seconds...

play fullscreen
1 / 18

Programmeringsteknik - PowerPoint PPT Presentation


  • 110 Views
  • Uploaded on

Skolan för Datavetenskap och kommunikation. Programmeringsteknik. Mer om klasser och objekt: Klass, instans och self Speciella metoder Polymorfism Publikt och privat Lista av objekt. Föreläsning 7. self. self ska stå överallt i klassdefinitionen:

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about ' Programmeringsteknik' - tamira


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
programmeringsteknik

Skolan för Datavetenskap och kommunikation

Programmeringsteknik

  • Mer om klasser och objekt:
    • Klass, instans och self
    • Speciella metoder
    • Polymorfism
    • Publikt och privat
    • Lista av objekt

Föreläsning 7

slide2
self
  • self ska stå överallt i klassdefinitionen:
    • först bland parametrarna: def metod(self,…)
    • framför varje användning av ett attribut: self.a
  • …men aldrig i huvudprogrammet
klass instanser
Klass, instanser
  • Om du definierar en klass i början av programmet…
  • …så kan du skapa så många objekt (instanser av klassen) du vill i huvudprogrammet.
speciella metoder
Speciella metoder
  • __init__

Anropas automatiskt när nya objekt skapas.

Använd den för initiering av instansvariabler!

  • __str__

Låt den returnera en strängrepresentation av objektet, så vet print hur det ska skrivas ut.

  • __lt__

Skriv en sån metod om du vill kunna jämföra två objekt (lt står för "less than", operatorn < )

str i klassen husdjur
__str__ i klassen Husdjur
  • Ska returnera en sträng som representerar objektet
  • Anropas automatiskt om man skriver ut objektet med print:

h = Husdjur("Rufus")

print(h)

  • Bra att ha när man testar programmet!
slide6

def__str__(self):

"""Version 1: bara husdjurets namn"""

beskrivning = "Jag heter " + self.namn

return beskrivning

slide7

def__str__(self):

"""Version 2: alla attribut"""

beskrivning = self.namn + ","

beskrivning += self.glad + ","

beskrivning += self.hunger

return beskrivning

slide8

def__str__(self):

"""Version 3: begripligare utskrift"""

beskrivning = self.namn + " är "

if self.glad > 5:

beskrivning += "glad: (^_^)"

else:

beskrivning += "ledsen: (T_T)"

if self.hunger > 3:

beskrivning += " och hungrig!"

else:

beskrivning += " och mätt."

return beskrivning

polymorfism
Polymorfism
  • Kommer av grekiskans polloi(många) och morjh(form)
  • Med polymorfism menas här möjligheten att ha en metod med samma namn i olika klasser och få olika resultat.
  • Metoden __str__ som automatiskt anropas av print är ett exempel.
publikt och privat
Publikt och privat
  • Om ett attribut eller en metod definieras med ett namn som börjar med två understreck (t ex __preferens) så är den privat.
  • Det innebär att den endast kan användas inom klassen (man kommer inte åt den från main).
  • Annars är den publik, och kan användas i vilken del av programmet som helst.
slide11

def__init__(self):

""" Ger attributen slumpade värden"""

self.__namn = \

choice("BCFKR")+choice("iouy")+\

2*choice("nst")+choice("aey")

self.__glad = randrange(10)

self.__hunger = randrange(3)

self.__kon = choice(("hona","hane"))

self.__preferens = choice(("samma","annat"))

inkapsling
Inkapsling
  • En väluppfostrad programmerare använder bara attributen inuti klassdefinitionen.
  • I huvudprogrammet anropar man en åtkomstmetod eller ändringsmetod istället!
  • Mer att skriva i början men enklare när man vill ändra i klassen senare.
  • Knepigt? Använd då privata attribut!
slide13

defnamn(self):

"""Åtkomstmetod för namnet"""

return self.__namn

defbytNamn(self, nyttNamn):

"""Ändringsmetod för namnet"""

self.__namn = nyttNamn

rita upp ett objekt
Rita upp ett objekt

Husdjur-objekt:

"Fussa"

__namn

__glad

4

__hunger

5

__kön

"hona"

"samma"

__preferens

lista av objekt
Lista av objekt
  • Flera objekt i samma program?

djur1 = Husdjur()

djur2 = Husdjur()

  • Enklare att lägga husdjuren i en lista!

[0][1][2][3]

skapa listan
Skapa listan

lista = []

for i inrange(n):

nytt = Husdjur()

lista.append(nytt)

anropa metod f r varje djur
Anropa metod för varje djur

for djur in lista:

djur.banna()

var finns programexemplen
Var finns programexemplen?
  • Se "Programexempel" på kurswebsidan