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 grundkurs

Programmering grundkurs

Programmering grundkurs

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

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

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

EnKlass. Instans 3 av EnKlass. Instans 2 av EnKlass

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

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

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

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

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

Objektorienterad Programmering (TDDC77)

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

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

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

729G06 Föreläsning 1 Objektorienterad programmering

Inkapsling (encapsulation)

Introduktion. Byggstenar TDBA

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

Objektorienterad konstruktion

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

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

Föreläsning 13 Innehåll

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

Objektorienterad programmering

Föreläsning 15: Repetition DVGA02

Objektorienterad Programmering (TDDC77)

F8 - Arv. ID1004 Objektorienterad programmering Fredrik Kilander

Imperativ programmering. Föreläsning 4

Objektorienterad Systemutveckling 1 (7,5 hp)

Objektorienterad analys och design

Programmering grundkurs

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

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

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

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

Objektorienterad programmering. Grundläggande begrepp

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

Objektorienterad programmering Föreläsning 4

Introduktion till objektorientering. Vad är objektorientering egentligen? Hur relaterar det till datatyper? Hur relaterar det till verkligheten?

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

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

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

Statistik över heltal

Objektorientering. Grunderna i OO

Introduktion till objektorientering. Vad är objektorientering egentligen? Hur relaterar det till datatyper? Hur relaterar det till verkligheten?

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

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

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

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

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

Teoridel (svaren direkt på lydelsen)

Objektorienterad Programmering (TDDC77)

Systemvetarutbildningen och dataekonomutbildningen

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

Objektorienterad programmering

Programmering grundkurs

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

Laboration 1 - Grunderna för OOP i Java

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

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

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

HT1 2013, FÖRELÄSNING 14 (INFÖR TENTAN)

TDDC76 Programmering och datastrukturer

Klasshierarkier - repetition

Introduktion till objektorientering. Vad är objektorientering egentligen? Hur relaterar det till datatyper? Hur relaterar det till verkligheten?

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

Objektorienterad Programkonstruktion. Föreläsning 3 9 nov 2015

Föreläsning 13 Datalogi 1 DA2001

Översikt. Programmering tillämpningar och datastrukturer. Vad kursen täcker. Lärare. Rekommenderad litteratur. Kursmål 729G58 (HKGBB7)

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

Konstruktion av klasser med klasser

Föreläsning 2. Objektorienterad analys och design. Analys: att modellera världen. Design: att strukturera program.

Grundläggande programmering, STS 1, VT Sven Sandberg. Föreläsning 14

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

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

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

Objektorienterad Programmering DAT043. Föreläsning 10 13/2-18 Moa Johansson (delvis baserat på Fredrik Lindblads material)

Objektorienterad programmering Föreläsning 6. Mer om klasser och typer Namnrymder Inkapsling Synlighet Statiska variabler Statiska metoder

TENTAMEN PROGRAMMERING I JAVA, 5P SOMMARUNIVERSITETET

Objektorienterad analys och design

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

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

Arv: Fordonsexempel. Arv. Arv: fordonsexempel (forts) Arv: Ett exempel. En klassdefinition class A extends B {... }

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

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

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

Objektorienterad analys och design

Föreläsning 5-6 Innehåll. Exempel på program med objekt. Exempel: kvadratobjekt. Objekt. Skapa och använda objekt Skriva egna klasser

Static vs Dynamic binding Override vs Overload. Objekt-orienterad programmering och design Alex Gerdes och Sólrún Halla Einarsdóttir, 2018

(Man brukar säga att) Java är... Denna föreläsning. Kompilering av Java. Historik: Java. enkelt. baserat på C/C++ Allmänt om Java

Föreläsning 9: Arv och UML

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

Föreläsning 5-6 Innehåll

1 Klasser och objektorientering Vad är objektorientering?

Transkript:

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

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

Egna klasser använd som egna datatyper, men även för att strukturera program

Egna klasser som datatyper Alla värden i Python är objekt, dvs instanser av någon klass. Klass == datatyp

Egna klasser för att bygga upp ett program Hur ser ett objektorienterat program ut? Vi tar skissar på ett exempel: program som laddar in en csv-fil visar data (t.ex. i terminalen eller i ett GUI-fönster) För att lättare kunna visualisera objektorienterad struktur använder vi klassdiagram

En klass klassens namn egenskaper beteenden

Klassdiagram ett slags pseudokod för OOP

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

Exempel DataRow trial : str image_file : str time : int correct_answer : str subjects_answer : str degrees_rotated : int get_error_type() : int

UML, klassdiagram: relationer mellan objekt Objekt kan ha någon form av relation till andra objekt association: allmän relation. kardinalitet (antal) och roll (i praktiken variabelnamn) "lästa_böcker 0..*"

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

Exempel LayoutTester layout_func : callable squares_frame_height : int squares_frame_width : int size_options : list ui_xpadding : int ui_ypadding : int squares 0..* tkinter.tklabel winfo_width() : float place(x : float, y : float) init_ui() init_control_panel() create_size_panel() create_num_squares_panel() create_start_pos_panel() create_run_quit_panel() create_squares() clear_squares() run_layout()

UML, klassdiagram: relationer mellan objekt Många olika typer finns, men i denna kurs behöver vi bara använda association. 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.

Egna klasser använd som egna datatyper, men även för att strukturera program

Egna klasser för att bygga upp ett program Hur ser ett objektorienterat program ut? Vi tar skissar på ett exempel: program som laddar in en csv-fil visar data (t.ex. i terminalen eller i ett GUI-fönster) För att lättare kunna visualisera objektorienterad struktur använder vi klassdiagram

Objekt som behållare (tänk matrosjkadockor)

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