729G75: Programmering och algoritmiskt tänkande. Tema 3, föreläsning 2

Relevanta dokument
729G75: Programmering och algoritmiskt tänkande. Tema 3, föreläsning 2

729G06 Programmering och logik. OOP: Klassdiagram, arv Allmänt: Undantagshantering

729G06 Programmering och logik. OOP: Arv Allmänt: Undantagshantering

Programmering och algoritmiskt tänkande. Tema 3, föreläsning 1 Jody Foo

Programmering grundkurs

Programmering grundkurs

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 2 Jonas Lindgren, Institutionen för Datavetenskap, LiU

TDDE10 TDDE11, 725G90. Objektorienterad programmering i Java, Föreläsning 3 Erik Nilsson, Institutionen för Datavetenskap, LiU

Programmering grundkurs

Java-syntax (arv) Exempel: public class Crow extends Bird {... } Jämför med Lab 1: public class FirstApp extends Frame {... }

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 2 Erik Nilsson, Institutionen för Datavetenskap, LiU

Föreläsning 16 Arv. Jan Lönnberg T Grundkurs i programmering

Objekt-orienterad utveckling. Objektorienterad analys och design. Objekt-orienterad programutveckling. Objekt-orienterad analys och design: Litteratur

Objektorienterad Programmering (TDDC77)

EnKlass. Instans 3 av EnKlass. Instans 2 av EnKlass

UML. Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016

Outline. Objektorienterad Programmering (TDDC77) Att instansiera en klass. Objekt. Instansiering. Åtkomst. Abstrakt datatyp.

Programmering grundkurs

Objektorienterad analys och design

Abstrakta Klasser 2. Kodning är bara en liten del i programvaruutvecklingen 6% 1% 6% Abstrakta Klasser - deklaration. Programutveckling sker i faser

Objektorienterad Programmering (TDDC77)

Statistik över heltal

Objekt-orienterad utveckling. Objektorienterad analys och design. Objekt-orienterad programutveckling. Objekt-orienterad analys och design: Litteratur

Arv. Fundamental objekt-orienterad teknik. arv i Java modifieraren protected Lägga till och modifiera metoder med hjälp av arv Klass hierarkier

Introduktion. Byggstenar TDBA

Objektorienterad konstruktion

Programmering grundkurs

729G75: Programmering och algoritmiskt tänkande. Tema 1, föreläsning 1 Jody Foo

Outline. Objektorienterad Programmering (TDDC77) Laborationsserie del två. Vad händer under HT2. Introduktion HT2 UML.

Föreläsning 8 Programmeringsteknik och Matlab DD1312. Klassmetod. Egen modul

Objekt-orienterad programmering. Klassbegreppet och C++ UML. UMLs fördelar

Innehåll. dynamisk bindning. och programmering CRC) u Arv, polymorfi och

UML: Exempel. Ett modelleringsspråk. UML: Ansvar. UML: tre huvudanvändningar. Exempel: En klass position storlek. UML Unified Modelling Language

Imperativ programmering. Föreläsning 4

TDP005. Föreläsning 3 - UML. Filip Strömbäck

Objektorienterad Systemutveckling 1 (7,5 hp)

UML. Klassdiagr. Abstraktion. Relationer. Överskugg. Överlagr. Aktivitetsdiagram Typomv. Typomv. Klassdiagr. Abstraktion. Relationer.

Inkapsling (encapsulation)

Föreläsning 15: Repetition DVGA02

729G75: Programmering och algoritmiskt tänkande. Tema 1. Föreläsning 1 Jody Foo

Typhierarkier del 1 Gränssnitt, ärvning mellan gränssnitt, ärvning mellan klasser

729G06 Programmering och logik. Info om pythondelen & introduktion till objektorienterad programmering.

Objektorienterad programmering Föreläsning 4

Analys och design. Objekt. Klass. med hjälp av CRC. Klassdiagram

Konstruktion av klasser med klasser

Klasshierarkier - repetition

UML. Översikt UML. Relationer mellan klasser. A är ett aggregerat av B:n. Kontor aggregat av Enheter. 12 olika diagramtyper, bl.a.

Objektorienterade programmeringsspråk. Objektorienterade språk. Den objekt-orienterade modellen. Jämför med icke-oo

Föreläsning 13 Innehåll

Objektorienterad programmering

Outline. Objektorienterad Programmering (TDDC77) Signatur. Klassen calculator. Överlagring (overloading) Arv (inheritance) Ahmed Rezine

Objekt-orienterad utveckling. Objektorienterad analys och design. Objekt-orienterad programutveckling. Objekt-orienterad analys och design: Litteratur

Objektorienterad analys och design

Objektorienterad Programmering (TDDC77)

TDDI82 - Projekt. Christoffer Holm. Institutionen för datavetenskap (IDA)

Objektorientering. Grunderna i OO

F8 - Arv. ID1004 Objektorienterad programmering Fredrik Kilander

Relationer mellan objekt

Hos vad? och bör därför vara instanseller klassvariabel i vilken klass?

TDDE10 TDDE11, 725G91/2. Objektorienterad programmering i Java, Föreläsning 4 Erik Nilsson, Institutionen för Datavetenskap, LiU

Teoridel (svaren direkt på lydelsen)

Systemvetarutbildningen och dataekonomutbildningen

Tentamen. Datalogi I, grundkurs med Java 10p, 2D4112, Lördagen den 30 november 2002 kl , salar E33, E34

Objektorienterad programutveckling i ett nötskal

DD2385 Programutvecklingsteknik Några bilder till föreläsning 1 24/ Kursöversikt Javarepetition/Javaintroduktion

Programmering i C++ EDA623 Objektorienterad programutveckling. EDA623 (Föreläsning 5) HT / 33

TDDC76 Programmering och datastrukturer

"Är en"-relation. "Har en"-relation. Arv. Seminarium 2 Relevanta uppgifter. I exemplet Boll från förra föreläsningen gällde

Objektorienterad programmering, allmänt

Viktiga egenskaper hos ett program (Meyer): Objektorienterad programmering, allmänt. Vilka egenskaper vill vi att våra program ska ha?

Konceptuell modellering

Lösningar till Fiktiv Tentamen på kursen. 2D4135 Objektorienterad programmering, design och analys med Java vt2004. Teoridel

TDDC74 Programmering: Abstraktion och modellering Dugga 3, kl 14 16, 25 mars 2015

Föreläsningsmaterial (Arv) Skrivet av Andreas Lund

Java, klasser, objekt (Skansholm: Kapitel 2)

Objektorientering. Objekt och metoder. Objektorientering. Viktiga begrepp. Klass. Objekt. Deklarativ programmering

Objektorienterad Programkonstruktion. Föreläsning 3 7 nov 2016

Objektorienterad programmering. Grundläggande begrepp

Innehåll. 1 Kort om dynamisk polymorfism. 2 Arv i C++ 3 Multipelt arv. 4 Något om statisk polymorfism. class Container {

2I1049 Föreläsning 5. Objektorientering. Objektorientering. Klasserna ordnas i en hierarki som motsvarar deras inbördes ordning

Objektorienterad programmering Föreläsning 12. Copyright Mahmud Al Hakim

Objektorienterad analys och design

Laboration 1 - Grunderna för OOP i Java

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

729G06 Föreläsning 1 Objektorienterad programmering

Arv. Objektorienterad och komponentbaserad programmering

TDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 6 Erik Nilsson, Institutionen för Datavetenskap, LiU

Historik: OOP. Objektorientering. Historik: OOP (forts) En Dum Fråga

Objektorientering Klasser

Föreläsning 13 Datalogi 1 DA2001

Abstrakt klass. DD2385 Programutvecklingsteknik Några bilder till föreläsning 4 7/ Exempel: Implementation av Schackpjäser.

Programmering för språkteknologer II, HT2014. Rum

Arv Murach s: kap 14

Idag. statiska metoder och variabler. private/public/protected. final, abstrakta klasser, gränssnitt, delegering. wrapper classes

Artificiell Intelligens Lektion 4

TENTAMEN PROGRAMMERING I JAVA, 5P SOMMARUNIVERSITETET

Objektorienterad programmering

Idag. Javas datatyper, arrayer, referenssemantik. Arv, polymorfi, typregler, typkonvertering. Tänker inte säga nåt om det som är likadant som i C.

Föreläsning 9: Arv och UML

Outline. Objektorienterad Programmering (TDDC77) Abstrakta klasser. Abstrakta metoder. Abstrakta klasser. Gränssnitt. Uppräkningar (enum) Ahmed Rezine

Transkript:

729G75: Programmering och algoritmiskt tänkande Tema 3, föreläsning 2

Översikt Vanliga mönster när man designar en klass Arv i Python UML-diagram Exempel

Vanliga mönster när man designar en klass Namngivning av klasser: substantiv i singular Namngivning av metoder: verb Namngivning av instansvariabler: substantiv i singular OBS! Om klassen representerar en samling objekt, dvs fungerar som en behållare, använd inte beskrivning av innehållet. Ett vanligt mönster är att använda ett suffix, t.ex. Collection, Set eller List

Exempel på klassnamn DataPoint DataPointCollection Word Sentence Paragraph Document Person ContactList Book Library BookCollection

Vanliga prefix till metodnamn get_: hämta ett värde från ett objekt (antingen beräknat eller direkt från ett attribut) set_: sätt att värde add_ remove_ load_ save_

Arv i Python

Hierarkiska relationer http://www.biologycorner.com/worksheets/taxonomy_interpret.html

Arv / härleda klasser När en klass ärver från en annan, följer alla attribut, dvs instansvariabler och metoder med. Syfte: Abstraktion och kodåtervinning

Exempel object class DataFile(object): str () : str def init (self, filepath=none): self.filepath = filepath data = DataFile("data.txt") print(data) DataFile filepath : str

Arv i Python Alla klasser i Python har en basklass - en klass som de bygger vidare på. Klassen object är den mest grundläggande klassen i Python. Klassen object har metoder som alla andra klasser ärver som t.ex. str () Om klassen DataFile bygger vidare på object, kallar man object för basklassen för klassen DataFile(eng. base class). DataFile är en klass, härledd (eng. derived) från klassen object.

Syntax klass med arv class Base(object): pass class Derived(Base): pass

Arv i Python forts En härledd klass har alla attribut (instansvariabler och metoder) som dess basklass har. En härledd klass kan ges ytterligare attribut. En härledd klass kan överrida attribut från dess basklass.

Basklass - härledd klass: med init class Base(object): def init (self, arg1): self.arg1 = arg1 class DerivedA(Base): def init (self, arg1, arg2): # Explicit anrop av basklassens init ()-metod Base. init (self, arg1) self.arg2 = arg2 class DerivedB(Base): def init (self, arg1, arg2): # Användning av super för att referera till basklassen # syntax: super(härledd_klass, instans_av_härledd_klass) super(derivedb, self). init (arg1) self.arg2 = arg2

Arv, exempel

Klassdiagram ett slags pseudokod för OOP

UML: Unified Modelling Language Klassnamn namn : attributtyp namn : attributtyp = defaultvärde operation() operation() : returdatatyp operation(parameterlista) operation(parameterlista) : returdatatyp

UML, klassdiagram: relationer mellan objekt Objekt kan ha någon form av relation till andra objekt association: allmän relation. kardinalitet (antal) och roll kan anges. "Student har läst 0..* böcker" aggregering: typ av association. "har en", "del av". "Student äger 0..* böcker" komposition: typ av association. "består av". "Student har 1 hjärta" (starkare beroende mellan objekten, tänk "kan inte finnas utan") arv (basklass/härledd klass): ärver attribut/operation från (kommer mer om detta strax) beroende: svag relation. t.ex. någon metod får in en instans som argument. implementation: man kan använda klassdefinitioner som mallar för andra klasser. Denna association kan användas för att visa när en klass implementerar en sådan klassmall (abstrakta klasser)

UML: Relationer Yanpas. Wikimedia Commons En dubbelriktad association kan ritas utan pilar.

NinjaZombieSimulation NinjaZombieSimulation screen : turtle.screen zombie_color : str ninja_color : str ninjas : Swarm zombies : Swarm add_zombie( turtle : turtle.turtle ) add_ninja( turtle : turtle.turtle ) move_zombies_towards_ninjas() move_ninjas_away_from_zombies() scatter_all() run_timestep()

turtle.turtle, Swarm & NinjaZombieSimulation NinjaZombieSimulation Swarm screen : turtle.screen turtle.turtle 0 * 1 friction : float away_towards_multiplier : float bounds : tuple move_speed : float 2 1 zombie_color : str ninja_color : str ninjas : Swarm zombies : Swarm pref_swarm_spacing : float turtle_swarm : list turtle_velocities : list add_zombie( turtle : turtle.turtle ) add_ninja( turtle : turtle.turtle ) move_zombies_towards_ninjas() run_swarm_behaviours() move_ninjas_away_from_zombies() scatter_all() run_timestep()