Programmeringsteknik

Slides:



Advertisements
Liknande presentationer
Interface.  Interface är en datatyp och har alltså egen syntax och en hel del egna regler för vad arv från interface innebär.  Interface är renodlad.
Advertisements

Funktioner och programorganisation
2D1311 Programmeringsteknik med PBL
Programmeringsteknik Föreläsning 13 Skolan för Datavetenskap och kommunikation.
Programmeringsteknik Föreläsning 6 Skolan för Datavetenskap och kommunikation.
2D1311 Programmeringsteknik med PBL Föreläsning 7 Skolan för Datavetenskap och kommunikation.
Klassarv och inkapsling
2D1311 Programmeringsteknik med PBL Föreläsning 3 Skolan för Datavetenskap och kommunikation.
OOP Objekt-orienterad programmering
2D1311 Programmeringsteknik med PBL
Föreläsning 6 Länkade lista Komplexitet Linjärsökning & binärsökning
Metoder i java Det finns två typer av metoder i java
Föreläsning 4 Python: mera om funktioner och parametrar
2D1311 Programmeringsteknik med PBL Föreläsning 6 Skolan för Datavetenskap och kommunikation.
2D1311 Programmeringsteknik med PBL Föreläsning 7 Skolan för Datavetenskap och kommunikation.
2D1311 Programmeringsteknik med PBL Föreläsning 4 Skolan för Datavetenskap och kommunikation.
Föreläsning 9 Sökning, sortering, grafikprogrammering.
Inkapsling.
Objektorienterad tänkande
Polymorfism.
Programmeringsteknik för K och Media
Föreläsning 13 Allt om tentan. Sistaminutenhjälp: På fredag 17 december kl 12 sitter Linda i kemi-fiket och svarar på frågor.
Föreläsning 5 Python: argument från kommando-tolken
Föreläsning 10 Länkade lista Stack och Kö Att arbeta med listor
Föreläsning 6 Referenser Objekt som parametrar public/private Klassvariabler och klassmetoder.
1 Föreläsning 6 Klass Object, instans av klass public/private Klassvariabler och klassmetoder.
Alice in Action with Java
Föreläsning 13 Polymorfism, Paket och JAR-filer. Polymorfism Ordet härstammar från grekiskan Poly – många Morf – form Polymorf – många former Någonting.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 7 ( ) INNEHÅLL: -Klasser och instansvariabler -Tabeller av klassobjekt.
Föreläsning 11 Arrayer.
Objektorienterad programmering i Java
OOP F4:1 Marie Olsson OOP Objekt-orienterad programmering Föreläsning 4 Metoder klass-metoder instans-metoder.
Programmering i C# 3. Klasser.
int res2=Math.max(tal1,tal2);
Programmeringsteknik
Föreläsning 2 Kort Översikt Över Javaspråket. Källkodsformat Unicode används åäöμψζ tillåtna Inte alla miljöer klarar av det Källkod Bytekod Java VM för.
Mer om arv - Polymorfism Kursbok: “Objects First with Java - A Practical Introduction using BlueJ”, David J. Barnes & Michael Kölling Fredric Ragnar
1 Föreläsning 7 Repetition Instansvariabler och klassvariabler Klassmetoder och Instansmetoder.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 7 ( ) INNEHÅLL: -Klasser -Att definiera egna klasser -Klassvariabler -Klassmetoder.
DD1311 P ROGRAMMERINGSTEKNIK MED PBL Föreläsning 9 Skolan för Datavetenskap och kommunikation.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 8 ( ) INNEHÅLL:Klasser: -Konstruktorer -Klassvariabler -Instansmetoder -Privata.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 7 ( ) INNEHÅLL: -Metoder -Lokala variabler -Mera om klasser: -Nyckelorden.
1 Föreläsning 6 Programmeringsteknik och Matlab 2D1312/2D1305 Metoder & parametrar Array API och klassen ArrayList.
DD1310/DD1314/DA3009 Programmeringsteknik Föreläsning 2 Skolan för Datavetenskap och kommunikation.
Föreläsning 6. Klassmallar Templates kan givetvis även användas för klasser –Standardutseende template // Klassdefinition (*.h) class C { returtyp metod(parametrar…);...
Föreläsning 1 Reserverade ord Javas API Identifierare Litteraler Variabler Kompilering och interpretering.
Föreläsning 5 Arrayer & ArrayList Hur man använder API:n
Föreläsning 8 Programmeringsteknik och Matlab DD1312 Klassmetoder Egen modul, Self Metoderna: __str__, __lt__,… Meddelande Arv, Överlagring av metoder,
Introduktion till klasser, objekt och BlueJ Kursbok: “Objects First with Java - A Practical Introduction using BlueJ”, David J. Barnes & Michael Kölling.
Föreläsning 12 Om slutprovet. Repetition –deklaration av variabler –skapande av objekt (instansiering) –Vektorer och Vector-klassen –Klasser –Instans-/klassvariabler.
Föreläsning 4 Klasser Och Objekt.
Programmeringsteknik Föreläsning 8 Skolan för Datavetenskap och kommunikation.
Föreläsning 7 Programmeringsteknik och Matlab DD1315 Kommandotolk parametrar Klass Instans Metod konstruktor.
Programmeringsteknik Föreläsning 17 Skolan för Datavetenskap och kommunikation.
2D1311 Programmeringsteknik med PBL Föreläsning 4 Skolan för Datavetenskap och kommunikation.
1 Föreläsning 8 Mer om klasser och objektorientering.
OOP F5:1 Stefan Möller OOP Objekt-orienterad programmering Föreläsning 5 Klasser och objekt Skapa objekt - new Referenser Konstruktorer Inkapsling.
Programmeringsteknik
Föreläsning 5 Objekt Klasser Konstruktorer Metoder Minnesbilder av objekt.
Programmeringsteknik för K och Media
Föreläsning 5 Klasser och instanser
Föreläsning 7 programmeringsteknik och Matlab 2D1312/2D1305 Metoddeklaration och parametrar Arrayer och ArrayList.
Föreläsning 7 Repetition Sammansatta datatyper –vektor (hakvektor, array) –matris.
Föreläsning4 Repetition slingor Metoder. while-sats består av följande delar: 1. while 2. Villkor-sats (condition) 3. uttryck (statement) while-sats int.
1 Föreläsning 6 Repetition på metoder Referenser Objekt som parametrar public/private Klassvariabler och klassmetoder.
1 Föreläsning 4 Metoder & parametrar Array API och klassen ArrayList.
Föreläsning 9 Sökning, sortering, grafiska gränssnitt (GUI)
Malmö högskola Rolf Axelsson 2003/2004 DA7231, 4 poäng Referensvariabel Klass och konstruktorer Klass med set- och get-metoder Klass och fält Fler metoder.
Föreläsning 3 Programmeringsteknik
Föreläsning 8: Exempel och problemlösning
Presentationens avskrift:

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

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 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 __init__ __str__ __lt__ 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 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!

"""Version 1: bara husdjurets namn""" def __str__(self): """Version 1: bara husdjurets namn""" beskrivning = "Jag heter " + self.namn return beskrivning

"""Version 2: alla attribut""" beskrivning = self.namn + "," def __str__(self): """Version 2: alla attribut""" beskrivning = self.namn + "," beskrivning += self.glad + "," beskrivning += self.hunger return beskrivning

"""Version 3: begripligare utskrift""" 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!" beskrivning += " och mätt." return beskrivning

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 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.

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 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!

def namn(self): """Åtkomstmetod för namnet""" return self.__namn def bytNamn(self, nyttNamn): """Ändringsmetod för namnet""" self.__namn = nyttNamn

Rita upp ett objekt Husdjur-objekt: __namn "Fussa" __glad 4 __hunger 5 __kön "hona" "samma" __preferens

Lista av objekt Flera objekt i samma program? djur1 = Husdjur() … Enklare att lägga husdjuren i en lista! [0] [1] [2] [3]

Skapa listan lista = [] for i in range(n): nytt = Husdjur() lista.append(nytt)

Anropa metod för varje djur for djur in lista: djur.banna()

Var finns programexemplen? Se "Programexempel" på kurswebsidan