TDDC74 FÖRELÄSNING 9 ANDERS MÄRAK LEFFLER IDA/HCS

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

TDDC74 Lab 04 Muterbara strukturer, omgivningar

TDDC74 Programmering: Abstraktion och modellering Datortenta , kl 08-12

TDDC74 Programmering: Abstraktion och modellering Tentamen, lördag 29 augusti 2015, kl 8 12

TDDC74 Programmering: Abstraktion och modellering Datortenta

TDDC74 - Lektionsmaterial C

Övningsuppgift. Bankkonton. Steg 2. Författare: Mats Loock Kurs: Inledande programmering med C# Kurskod:1DV402

TDDC74 Programmering: Abstraktion och modellering Tenta, kl 14 18, 11 juni 2014

TDDC74 Programmering: Abstraktion och modellering Dugga 2, , kl 17-19

Objektorienterad programmering i Racket

Föreläsning 8 - del 2: Objektorienterad programmering - avancerat

TDDC74 Programmering: Abstraktion och modellering Tentamen, onsdag 9 juni 2016, kl 14 18

TDDC74 Programmering: Abstraktion och modellering Dugga 2, , kl 14-16

TDDC74 Programmering: Abstraktion och modellering Datordugga 2 - exempel

Objektorienterad programmering i Racket

TDDC74 Programmering, abstraktion och modellering. Tentamen

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

TDDC74 Programmering: Abstraktion och modellering Datortenta , kl 14-18

TDDC74 Programmering: Abstraktion och modellering Tentamen, onsdag 19 oktober 2016, kl 14 18

TDDC74 Programmering, abstraktion och modellering. Tentamen

TDDC74 Lab 02 Listor, sammansatta strukturer

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

Dagens föreläsning Programmering i Lisp. - Bindning av variabler (avs 14.6) fria variabler statisk/lexikalisk och dynamisk bindning

TDDC74 Programmering: Abstraktion och modellering Dugga 3, kl 8 10, 7 april 2016

Modularitet och tillstånd. Stora system kräver en uppdelning. En lösning: modularitet. Basera programmets struktur på den fysiska systemets struktur:

TDDC74 Programmering: Abstraktion och modellering Tentamen, lördag 27 augusti 2016, kl 8 12

Länkade strukturer. (del 2)

Chapter 4: Writing Classes/ Att skriva egna klasser.

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

TDDC74 Programmering, abstraktion och modellering. Tentamen

Föreläsning 1, vecka 6: Abstraktion genom objektorientering

Objektorienterad Programmering (TDDC77)

Classes och Interfaces, Objects och References, Initialization

Objektorienterad Programkonstruktion. Föreläsning 2 2 nov 2016

Lösningsförslag. TDDC74 Programmering: Abstraktion och modellering. Dugga 3 (provkod TEN1), Tid: kl 14-16, Datum:

n Detta för att kunna koncentrera oss på n Tal: number? n Symboler: symbol? n Strängar: string? n Tecken: char? n Boolskt: boolean?

Design av en klass BankAccount som representerar ett bankkonto

TDDC74 Programmering, abstraktion och modellering. Tentamen

TDDC74 Programmering: Abstraktion och modellering Dugga 2, kl 8 10, 3 mars 2016

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

Ändringsbar (mutable compound) data. TDDC74 Programmering: abstraktion och modellering. Sätta - samman listor kopiering. Hitta sista cons-cellen

Universitetet i Linköping Institutionen för datavetenskap Anders Haraldsson

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

Tentamen i Objektorienterad modellering och diskreta strukturer

Mer OOP. Variation i typ. Medlen repetition. Generiska klasser. Gränssnitt - Interface. Mer om klasser Några exempel UML

TDDC74 Programmering: Abstraktion och modellering. Provkod TEN1, Tid: kl 14-18, , Kåra

Programmering, abstraktion och modellering PROJEKTFÖRELÄSNING ANDERS MÄRAK LEFFLER IDA/HCS

DAT043 - Föreläsning 7

DIAGNOSTISKT PROV. Tid. Hjälpmedel. Antaganden. Rättning. Övrigt. Diagnostiskt Prov. Klockan Inga

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

Obs! Inget ur Javas standardbibliotek får användas i ett svar (om det inte står att man får det).

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

Objektorienterad Programmering (OOP) Murach s: kap 12-16

TDDC74 Programmering: Abstraktion och modellering Dugga 2, kl 8 10, 5 mars 2015

Abstrakt datatyp. -Algoritmer och Datastrukturer- För utveckling av verksamhet, produkter och livskvalitet.

Classes och Interfaces, Objects och References Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016

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

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

729G06 Föreläsning 1 Objektorienterad programmering

Lära dig analysera större och mer komplicerade problem och formulera lösningar innan du implementerar.

TDDC74 Programmering, abstraktion och modellering DUGGA 3

Bankkonto - övning. Övning 2 Skriv en metod, geträntan, som returnerar räntan.

I STONE. I Variabler, datatyper, typkonvertering. I Logiska och matematiska uttryck. I Metoder-returvärde och parametrar. I Villkorssatser if/else

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

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

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

TDDC74 Programmering, abstraktion och modellering DUGGA 2

TDDC74 Programmering: Abstraktion och modellering Datortenta , kl 14-18

HI1024 Programmering, grundkurs TEN

F8 - Arv. ID1004 Objektorienterad programmering Fredrik Kilander

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

TUTORIAL: KLASSER & OBJEKT

Statistik över heltal

Tentamen i. TDDC67 Funktionell programmering och Lisp

Institutionen för datavetenskap, DAT060, Laboration 2 2 För denna enkla simulerings skull kommer handen att representeras som ett par tal μ värdet på

Två fall: q Tom sekvens: () q Sekvens av element: (a b c) ; (sum-rec '(2 4 6)) = 12. q Första elementet uppfyller vissa villkor: (2 a b c)

Objektorienterad Programmering (TDDC77)

TDDC77 Objektorienterad Programmering

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 2. Länkade listor Stackar Köer MyList Iteratorer Lab 2 Exceptions Paket

Tentamen i. TDDA 69 Data och programstrukturer

Diagnostiskt Prov. Antaganden Om förutsättningar saknas I en uppgift skall rimliga antaganden göras och nedtecknas.

Samlingar, Gränssitt och Programkonstruktion! Förelasning 11!! TDA540 Objektorienterad Programmering!

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

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 2. Laboration 2 Datastrukturer En liten uppgift Frågor

Instuderingsuppgifter läsvecka 2

Outline. Objektorienterad Programmering (TDDC77) Åsidosättning. Signatur. Åsidosättning. Abstrakta klasser. Ahmed Rezine.

Idag: Dataabstraktion

Tentamen. DD2385 Programutvecklingsteknik vt 2013 Onsdagen den 22 maj 2013 kl Hjälpmedel: penna, suddgummi, linjal

Testautomatisering. BDD, RSpec

725G61 - Laboration 7 Implementation av ett API. Johan Falkenjack

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

Static vs Dynamic binding Polymorfism. Objekt-orienterad programmering och design (DIT953) Niklas Broberg, 2018

TDDC30/725G63. Objektorienterad programmering i Java, datastrukturer och algoritmer

PROGRAMMERINGSTEKNIK TIN212

Facit Tentamen TDDC (7)

Lösningsförslag. Programmeringsmetodik, KV: Java och OOP. 17 januari 2004

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

Objektorientering: Lagring, räckvidd och livstid

Vad handlar kursen om? Algoritmer och datastrukturer. Vad handlar kursen om? Vad handlar kursen om?

Introduktion. Klasser. TDP004 Objektorienterad Programmering Fö 2 Objektorientering grunder

Transkript:

TDDC74 FÖRELÄSNING 9 ANDERS MÄRAK LEFFLER IDA/HCS 180226

Idag (ADT), OOP i Racket, labb 5 2

Allmän info Duggan. Laboration 4 deadline. Planering framöver Muddy cards (nästa timme) 3

Lite repetition ADT OCH OOP 4

our programs should use data in such a way as to make no assumptions about the data that are not strictly necessary for performing the task at hand. At the same time, a concrete data representation is defined independent of the programs that use the data. The interface between these two parts of our system will be a set of procedures, called selectors and constructors, that implement the abstract data in terms of the concrete representation. ((SICP kap 2.1) 5

Immuterbart data (labb 3) (define (empty-name-db) '()) (define (add-to-db name db) (cons name db)) (define first-movie car) (define rest-movies cdr) > (define my-db (empty-movie-db)) > (add-to-db 'Fiyero my-db) Ny databas skapas. '(Fiyero) > my-db '() Inget ändras. > (set! my-db (add-to-db 'Fiyero my-db)) > my-db '(Fiyero) 6

Muterbar data (queue) (define (make-queue) (mcons 'queue '())) (define (queue-set-content! q content) (set-mcdr! q content)) (define (queue-add q new) [--- kod som ändrar i q --- ]) > (define q (make-queue)) > q {queue} > (queue-add q 'jalal) {queue jalal} > q {queue jalal} Innehållet i q har ändrats! 7

Likheter - skillnader Döljer den konkreta representationen. Inga car/cdr/... At the same time, a concrete data representation is defined independent of the programs that use the data. Olika, specifika objekt (inte en enda global variabel). Kapslar in informationen. Den första mer funktionell. Den andra ändrar faktiskt inuti strukturen. Skillnad mot (set! my-db (add-to-db 'Godfather my-db))? 8

Gemensamt Samma externa uppsättning procedurer för förändring, selektion... 9

(define (present-data structure) (printf "Size: ~a~n" (get-size structure)) (printf "First element: ~a~n" (get-first structure))) > (present-data my-queue-structure) Size: 3 First element: Elphaba 10

(define (present-data structure) (printf "Size: ~a~n" (get-size structure)) (printf "First element: ~a~n" (get-first structure))) > (present-data my-queue-structure) > (present-data my-stack-structure) Size: 5 First element: Galinda En get-size passar alla...? 11

Objekt, gränssnitt Låt beteendet följa med objektet 12

Objekt får meddelanden, agerar 13

Vad get-size betyder definieras hos objektet, inte i någon funktion utanför (som add-to-db, queue-add,...) (define (present-data structure) (printf "Size: ~a~n" (structure 'get-size)) (printf "First element: ~a~n" (structure 'get-first))) > (present-data my-queue-structure) Size: 3 First element: Elphaba OBS! get-size kan se helt olika ut. 14

Exempel (closures) 15

Bankkontot (lätt utökat) (med Rackets objektsystem) 16

Meddelanden, och vad de väntas göra: withdraw <amount> ta ut pengar, returnera nytt saldo deposit <amount> - sätt in pengar, returnera nytt saldo get-balance returnera saldot Getter. Används för att få ut värden. 17

Vad get-size betyder definieras hos objektet, inte i någon funktion utanför (som add-to-db, queue-add,...) (define (present-data structure) (printf "Size: ~a~n" (send structure get-size)) (printf "First element: ~a~n" (send structure get-first))) > (present-data my-queue-structure) Size: 3 First element: Elphaba OBS! get-size kan se helt olika ut. 18

Bankkontots gränssnitt Meddelanden, och vad de väntas göra: withdraw <amount> ta ut pengar, returnera nytt saldo deposit <amount> - sätt in pengar, returnera nytt saldo get-balance returnera saldot Getter. Används för att få ut värden. 19

Utökat bankkonto Arv 20

safe-account%-gränssnitt Som account%, men vi har även withdraw <amount> <pin-attempt> ta ut pengar, om pin-attempt är rätt set-pin! <old-pin> <new-pin> - ändrar PIN-kod Setter (och skapar det med korrekt PIN) 21

Ytterligare funderingar Vi vill kunna göra något i stil med > (send acc1 register-with bank-object1) ;; bank-object1 känner till kontot > (send acc2 register-with bank-object2) ;; bank-object2 - - Krav? Nyckelordet this. 22

Introduktion OBJEKTORIENTERING 23

Kapsla data och beteende Hos bankkonton, spelfigurer, grafikfönster, databehållare som köer... 24

Modellera världen som objekt som talar med varandra. Objektorienterad programmering 25

Vem har ansvar för vad? Ex: en karaktär håller reda på var i världen den är (inte en stor global tabell) osv. 26

Klass En klass beskriver alla objekt av ett visst slag. Ex: gemensamt för alla konton är (define account% (class...)) 27

Instans/objekt En instans av en klass är ett specifikt sådant objekt. Ex: en viss spelfigur, ett visst konto (define acc1 (new account% [balance 15)) 28

är ett exempel på Ex: account1 är ett exempel på ett konto (account%). 29

Objekten...har tillstånd (som kanske kan uppdateras)....är isolerade. Bankkontona känner inte till varandras saldon exv....kommunicerar på bestämt vis. Gränsnitt. Konton förstår meddelandet withdraw, agerar på känt vis....kan bete sig på egna vis. Varje objekt har sin hantering. 30

Några tumregler En klass beskriver gemensamma egenskaper. Alla konton kan... (new class%...) En instans av en klass. är ett exempel på my-account är ett exempel på ett konto. Bonus: säger något om vad som bör/inte bör ligga i account% 31

En klass per fil Mycket grov tumregel. require-härvor antyder dålig isolering. 32

Kort utblick/omnämnande LABORATION 5 33

Objektorienterat textspel ( Objektorienterat ) 34

Fokus: spelmotor Kul historia, men framförallt motor! 35

Uppdelning presentation - logik Nytt litet textfönster att leka med 36

Givna gränssnitt att utöka Följ det som står! Generaliserbart! 37

SISTA NOTERINGAR 38

Mer för den intresserade (ej i labben!) Interfaces (utan implementationer), mixins, UML-diagram, compositionmönster, init-användning... 39

Troligen användbart i projekt! Typer av figurer i spel, grafikobjekt... 40

Ord att understryka Gränssnitt (interface). Metoder. getters, setters Fält. Public/private. Arv. Overriding, inherit, inherit-field, super this 41

Mer läsning Kursen: OOP-guide (föreläsningssidan) Racket Guide (länkat) Senare: Kursen TDDC76. 42

Nästa föreläsning Projektintroduktion (VT2) 43

www.liu.se