Objektorienterad modellering och diskreta strukturer (EDAF10/EDA061)

Storlek: px
Starta visningen från sidan:

Download "Objektorienterad modellering och diskreta strukturer (EDAF10/EDA061)"

Transkript

1 Objektorienterad modellering och diskreta strukturer (EDAF10/EDA061) HT1 2014, FÖRELÄSNING 4 Datavetenskap/LTH EDAF10/EDA061 HT2014 Ulf Asklund

2 Förra föreläsningen Designmönster: Command Composite Template Method Strategy UML: Objekt- och Sekvensdiagram Projektet Computer I pausen: Kursombud MEN ännu ingen som visat intresse L Projektgrupper

3 Dagens agenda Hur går övningarna? Projektgrupper klara?! Redovisningstid inbokad? Designmönster Strategy (exempel) Singleton Null object Facade Decorator ISP Interface Segregation Principle Muterbar vs. Ej muterbar Intro till Payroll

4 Jojo-kort med två strategier public class TravelCard { private Tariff tariff; public double price(int zones, Rebate rebate) { double amount = tariff.price(zones); return rebate.price(amount); public void settariff(tariff tariff) { this.tariff = tariff;

5 Två strategi-interface public interface Tariff { public double price(int zones); public interface Rebate { public double price(double price);

6 Två strategier public class Skane implements Tariff { public double price(int zones) { switch (zones) { case 1: return 17.0; default: return 7.0 * zones + 7.0; public class Family implements Rebate { public double price(double price) { return 1.5 *price;

7 Strategierna har inget tillstånd public final static Tariff SKANE = new Skane(); public final static Rebate DUO = new Family();... TravelCard jojo = new TravelCard(); jojo.settariff(skane); double price = jojo.price(3, DUO);

8 Template method eller Strategy? Båda mönstren kan användas för att eliminera duplicerad kod. Använd Template method när funktionaliteten skall vara den samma under objektets hela livstid. Använd Strategy när funktionaliteten skall kunna förändras under livstiden eller när det finns mer än en funktionalitet som kan variera.

9 Singleton Syfte: att det bara skall kunna skapas en instans av klass Hackerns favoritmönster

10 Konventionell Singleton public class Singleton { private static Singleton instance; // attributes omitted private Singleton() { // omissions public static Singleton instance() { if (instance == null) { instance = new Singleton(); return instance; // other methods omitted

11 Singleton Bieffekt av den konventionella implementeringen: instansen blir ett globalt åtkomligt objekt. Globala objekt är bekväma att använda men innebär i regel dålig design. På nästa övning skall vi implementera Singleton-mönstret utan att skapa globalt tillgängliga objekt.

12 Konventionell länkad lista public class Node { private Object object; private Node next; public class List { private Node first; public int length() { int length = 0; Node node = first; while (node!= null) { length++; node = node.next(); return length; NULL Detta är en maskerad form av instanceof. next()är en getter. Node saknar intelligens.

13

14 Den skyldige: Tony Hoare

15 Null Object Introduktionen av null i objektorienterade språk var ett fundamentalt misstag. null modellerar något som inte finns. Länkade listor och träd avslutas ofta med null. Null är inget objekt; att använda null för att representera ingenting är ett exempel på icke-objektorienterad programmering.

16 Null object Programkoden blir enklare om man istället använder ett riktigt objekt. Detta är ett exempel på mönstret Null Object. Objektorienterad beskrivning: En lista är antingen tom eller består av en nod med ett element som är ett Object och en svans som är en lista.

17 Objektorienterad representation public interface List { public int length(); public class Empty implements List { public int length() { return 0; public class Node implements List{ private Object object; private List tail; public int length() { return 1 + tail.length();

18 Objektorienterad listimplementering Man ersätter iteration med rekursion; det gör programmet logiskt enklare; testet av det logiska villkoret i while-satsen försvinner. I nästan alla sammanhang är det bra design att representera något som är tomt med ett riktigt objekt.

19 ISP - Segregation Interface Segregation Principle Classes should not be forced to depend on methods that they do not use.

20 Java.util.Collection public interface Collection<E> extends Iterable<E> { int size(); boolean isempty(); boolean contains(object o); Iterator<E> iterator(); Object[ ] toarray(); <T> T[ ] toarray(t[ ] a); boolean add(e e); boolean remove(object o); boolean containsall(collection<?> c); boolean addall(collection<? extends E> c); boolean removeall(collection<?> c); void clear(); boolean equals(object o); int hashcode();

21 Collection javadoc The destructive methods contained in this interface, that is, the methods that modify the collection on which they operate, are specified to throw UnsupportedOperationException if this collection does not support the operation. If this is the case, these methods may, but are not required to, throw an UnsupportedOperationException if the invocation would have no effect on the collection. For example, invoking the addall(collection) method on an unmodifiable collection may, but is not required to, throw the exception if the collection to be added is empty. [Josh Bloch, Neal Gafter]

22 Collection bryter mot ISP Alla som implementerar gränssnittet måste ha metoder som inte behöver fungera. Hur borde det se ut?

23 Hur borde det se ut? public interface Collection<E> extends Iterable<E> { int size(); boolean isempty(); boolean contains(object o); Iterator<E> iterator(); Object[ ] toarray(); <T> T[ ] toarray(t[ ] a); boolean containsall(collection<?> c); boolean equals(object o); int hashcode();

24 Hur borde det se ut? public interface ImmutableCollection<E> extends Collection<E> { public interface MutableCollection<E> extends Collection<E> { boolean add(e e); boolean remove(object o); boolean addall(collection<? extends E> c); boolean removeall(collection<?> c); void clear();

25 Vad tycker Josh och Neal? Jag tror att de håller med. De har skrivit en bok som visar att Java har många brister och konstigheter. Joshua Bloch, Neal Gafter: Java Puzzlers Traps, pitfalls, and corner cases. Addison-Wesley, 2005, ISBN X. Länk:

26 Kort repetition

27 Integritetsprincipen Gör attribut, metoder och klasser så hemliga de går. Lämna inte ut representationen i onödan. En klass skall inte tillgång till klasser som den inte behöver. Begränsa synligheten genom att använda : private bara klassen kan se paketsynlighet, klasser i paketet kan se protected subklasser och klasser i paketet kan se. public hela världen kan se.

28 Exponera inte representationen Exponerad: public class Figure extends ArrayList<Shape> { public void paint(graphics graphics) { for (Shape shape : this) { shape.paint(graphics); Ej exponerad: public class Figure { private List<Shape> list = new ArrayList<Shape>(); public void paint(graphics graphics) { for (Shape shape : list) { shape.paint(graphics);

29 Exponera inte representationen, forts. Utlämnad representation: public class Figure { private List<Shape> list; public void paint(graphics graphics) { for (Shape shape : list) { shape.paint(graphics); public List<Shape> list() { return list;

30 (nästan) Förbud instanceof static getters Men det finns tillfällen när instanceof, static och getters är nödvändiga och det enda rätta:...

31 instanceof public final class Integer extends Number implements Comparable<Integer> { private final int value; public boolean equals(object object) { if(object instanceof Integer) { Integer other = (Integer) object; return value == other.value; return false; // omissions Här finns inget bättre sätt.

32 static public static main(string arg[]) public final static double PI public static double sin(double a) public class Outer { private static class Inner { Språkets design kräver static main. Ibland finns det inget tillhörande objekt. Inre klasser bör helst vara static.

33 getters Det finns ett exempel i Computer-projektet där en getter ger en bättre helhetsdesign. Observer-mönstret behöver i regel getters. Ibland måste man kompromissa när principerna drar åt olika håll.

34 Spekulativ design Fool me once shame on you Fool me twice shame on me. Skriv program som om förutsättningarna inte kommer att förändras. Om detta ändå sker så implementera abstraktioner som skyddar mot framtida förändringar av samma slag. Take the first bullet and protect yourself from the second bullet from the same gun.

35 Exempel Uppdragsgivaren vill ha en lista av Item-objekt:

36 Exempel, forts. Uppdragsgivaren vill senare ha en lista som innehåller Item1- objekt och Item2-objekt. Detta är första skottet; nu garderar vi oss mot ett liknande skott:

37 TANSTAAFL TANSTAAFL There ain t no such thing as a free lunch. (Martin, sidan 319) Att införa ett designmönster är inte gratis. Det måste finnas ett bra skäl att använda det. T ex så använder man inte strategimönstret om det inte finns minst två strategier.

38 Muterbart vs. Ej muterbart

39 Muterbara vs. Ej muterbara objekt Ett objekt vars tillstånd kan förändras kallas muterbart (mutable). När objektet modellerar någonting i verkligheten som har ett tillstånd som kan förändras så är det rimligt att modellen har samma egenskap.

40 Muterbara vs. Ej muterbara objekt, forts Ett objekt vars tillstånd inte kan förändras kallas omuterbart (immutable). När ett objektet modellerar någonting i verkligheten vars tillstånd inte kan förändras så är det rimligt att modellen har samma egenskap. Integer-objekt och String-objekt är omuterbara.

41 Exempel En omuterbar klass: public final class Num implements Expr { private int value; public value() { return value; En muterbar klass: public class Counter { private int counter; public increment() { counter++;

42 Recept för omutbarhet Klassen måste vara final. Attributen måste vara privata. Attributen får ej vara muterbara. Inga metoder får förända attribut. Fördelar: Säkrare Behöver ej kopieras, kan delas Enklare att resonera om

43 Aktivitet public final class SafeContainer { private final Object object; public SafeContainer(Object object) { this.object = object; public String tostring() { return object.tostring(); Är klassen muterbar?

44 Payroll - fallstudie

45 Systembeskrivning Vissa anställda arbetar på timbasis. Deras timlön finns i anställningsposten. De lämnar in tidkort med datum och antal timmar. Lönen utbetalas fredagar. Vissa anställda har fast lön som utbetalas sista vardagen varje månad. Vissa anställda med fast lön får också provision baserad på kvitton med datum och belopp med löneutbetalning varannan fredag. Lön utbetalas antingen via postanvisning till angiven adress, direkt till konto på bank, eller avhämtas på lönekontoret.

46 Systembeskrivning Vissa anställda tillhör fackföreningen. Deras anställningskort innehåller veckoavgift. Föreningen kan debitera serviceavgifter för enskilda medlemmar. Avgifter dras från nästa lön. Transaktioner till systemet behandlas en gång om dagen och uppdaterar en databas. Löneutbetalningar genereras varje avlöningsdag.

47 Användningsfall 1 Lägg till en ny anställd. 2 Ta bort en anställd 3 Registrera ett tidkort 4 Registrera ett försäljningskvitto 5 Registrera en föreningsavgift 6 Ändra anställningsinformation 7 Generera löneutbetalningar

48 Use case diagram

49 Use case diagram med arv

50 Martins bok övergripande design kapitel 18 i Martin Implementering kapitel 19 i Martin med C++. Implementering med Java i Payroll.zip via föreläsningssidan.

51 Databasen enligt Martin Databasen är en implementeringsdetalj. Moduler skall bero på abstraktioner (DIP). Definiera ett gränssnitt (API)!

52 Facade-mönstret Employee DB + get(int): Employee + put(int, Employee): Employee + remove(int): Employee Application Generic DB + <many generic methods> +

53 Designmönster - Facade

54 Databas implementering för testning public interface Database { public Employee put(int key, Employee employee); public Employee get(int key); public Employee remove(int key); public class TestDatabase implements Database { private Map<Integer, Employee> employees = new HashMap<Integer, Employee>(); public Employee get(int empid) { return employees.get(empid); public Employee remove(int empid) { return employees.remove(empid); public Employee put(int empid, Employee employee) { return employees.put(empid, employee);

55 Employee - Det finns tre sorters anställda Design utan eftertanke Vad är problemet?

56 Strategy Anställningsformen är en strategi

57 Employee

58 Decorator-mönstret Skånetrafiken vill få en lista på alla köp av biljetter under oktober. Standardautomaten: public interface PaySation { public double pay(travelcard travelcard, int zones); public StandardPayStation implements PayStation { private double sum; public double pay(travelcard travelcard, int zones) { double price = travelcard.price(zones); sum += price; return price;

59 Decorator-mönstret Den nya funktionaliteten: public LoggingPayStation implements PayStation { private PayStation paystation; private List<String> log; public LoggingPayStation(PayStation paystation, List<String> log) { this.paystation = paystation; this.log = log; public double pay(travelcard travelcard, int zones) { log.add(travelcard.tostring() + zones); return paystation.pay(travelcard, zones);

60 Loggningen kan göras dynamiskt PayStation standardpaystation = new StandardPayStation(); PayStation paystation = standardpaystation; I början av oktober lägger vi till loggningen: paystation = new LoggingPayStation(standardPayStation); I slutet av oktober tar vi bort den: paystation = standardpaystation; Tillståndet i standardpaystation bevaras.

61 Decorator-mönstret i Reader-klasserna reader = new BufferedReader(new FileReader(fileName)); public class BufferedReader extends Reader { private Reader in; // omissions

62 Decorator

63 Datavetenskap/LTH EDAF10/EDA061 HT2014 Ulf Asklund

Förra föreläsningen. Dagens agenda. Jojo-kort med två strategier Objektorienterad modellering och diskreta strukturer (EDAF10/EDA061)

Förra föreläsningen. Dagens agenda. Jojo-kort med två strategier Objektorienterad modellering och diskreta strukturer (EDAF10/EDA061) Förra föreläsningen Objektorienterad modellering och diskreta strukturer (EDAF10/EDA061) HT1 2014, FÖRELÄSNING 4 Designmönster: Command Composite Template Method Strategy UML: Objekt- och Sekvensdiagram

Läs mer

Förra föreläsningen. Dagens agenda. Jojo-kort med två strategier Objektorienterad modellering och diskreta strukturer (EDAF10/EDA061)

Förra föreläsningen. Dagens agenda. Jojo-kort med två strategier Objektorienterad modellering och diskreta strukturer (EDAF10/EDA061) Förra föreläsningen Objektorienterad modellering och diskreta strukturer (EDAF10/EDA061) HT1 2013, FÖRELÄSNING 4 Designmönster: Command Composite Template Method Strategy UML: Objekt- och Sekvensdiagram

Läs mer

HT1 2013, FÖRELÄSNING

HT1 2013, FÖRELÄSNING Objektorienterad modellering och diskreta strukturer (EDAF10/EDA061) HT1 2013, FÖRELÄSNING 4 Förra föreläsningen Designmönster: Command Composite Template Method Strategy UML: Objekt- och Sekvensdiagram

Läs mer

HT1 2015, FÖRELÄSNING

HT1 2015, FÖRELÄSNING Objektorienterad modellering och diskreta strukturer (EDAF10/EDA061) HT1 2015, FÖRELÄSNING 4 Förra föreläsningen Designmönster: Command Composite Template Method Strategy UML: Objekt- och Sekvensdiagram

Läs mer

Integritetsprincipen. Objektorienterad modellering och diskreta strukturer / design

Integritetsprincipen. Objektorienterad modellering och diskreta strukturer / design Integritetsprincipen Objektorienterad modellering och diskreta strukturer / design Designmönster och fallstudier Integritetsprincipen Gör attribut, metoder och klasser så hemliga de går. Lämna inte ut

Läs mer

Objektorienterad modellering och design (EDAF25) Föreläsning 5. Repetition Grafer Traversering bredden först med kö

Objektorienterad modellering och design (EDAF25) Föreläsning 5. Repetition Grafer Traversering bredden först med kö Objektorienterad modellering och design (EDAF25) Föreläsning 5 Repetition Grafer Traversering bredden först med kö Agenda Repetition (Grafer, Designmönster, Designprinciper) Designmönster (Null Object,

Läs mer

The billion dollar mistake

The billion dollar mistake Misstaget som kostat 1 000 000 000 $ Objektorienterad modellering och diskreta strukturer / design Designmönster och fallstudier Lennart Andersson The billion dollar mistake Reviderad 2011 09 08 2011 OMD

Läs mer

The billion dollar mistake

The billion dollar mistake Misstaget som kostat 000 000 000 $ Objektorienterad modellering och diskreta strukturer / design Designmönster och fallstudier Lennart Andersson The billion dollar mistake Reviderad 200 09 08 200 OMD 200

Läs mer

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

HT1 2013, FÖRELÄSNING 14 (INFÖR TENTAN) Objektorienterad modellering och diskreta strukturer (EDAF10/EDA061) HT1 2013, FÖRELÄSNING 14 (INFÖR TENTAN) Dagens agenda Admin Tentatid och plats Tillåtet på tentan EDAF10 Föreläsning inför XL-projektet

Läs mer

Förra föreläsningen. Dagens agenda. Command Objektorienterad modellering och diskreta strukturer (EDAF10/EDA061)

Förra föreläsningen. Dagens agenda. Command Objektorienterad modellering och diskreta strukturer (EDAF10/EDA061) Förra föreläsningen Objektorienterad modellering och diskreta strukturer (EDAF10/EDA061) HT1 2013, FÖRELÄSNING 3 UML: klassdiagram God praxis (metodik), t ex Refaktorisera Design smells, t ex Bräcklighet

Läs mer

Föreläsningsbilder EDAF10/EDA061 Ht 2015 HT1 2015, FÖRELÄSNING 3

Föreläsningsbilder EDAF10/EDA061 Ht 2015 HT1 2015, FÖRELÄSNING 3 Objektorienterad modellering och diskreta strukturer (EDAF10/EDA061) HT1 2015, FÖRELÄSNING 3 Förra föreläsningen UML: klassdiagram God praxis (metodik), t ex Refaktorisera Design smells, t ex Bräcklighet

Läs mer

Förra föreläsningen. Dagens agenda. Dagens agenda. Föreläsningsbilder EDAF10/EDA Ulf Asklund, Datavetenskap/LTH 1

Förra föreläsningen. Dagens agenda. Dagens agenda. Föreläsningsbilder EDAF10/EDA Ulf Asklund, Datavetenskap/LTH 1 Förra föreläsningen Objektorienterad modellering och diskreta strukturer (EDAF10/EDA061) HT1 2014, FÖRELÄSNING 3 UML: klassdiagram God praxis (metodik), t ex Refaktorisera Design smells, t ex Bräcklighet

Läs mer

F12 - Collections. ID1004 Objektorienterad programmering Fredrik Kilander

F12 - Collections. ID1004 Objektorienterad programmering Fredrik Kilander F12 - Collections ID1004 Objektorienterad programmering Fredrik Kilander fki@kth.se Collections (samlingar) En collection är ett objekt som fungerar som en samling av andra objekt En collection erbjuder

Läs mer

HT1 2013, FÖRELÄSNING 5

HT1 2013, FÖRELÄSNING 5 Objektorienterad modellering och diskreta strukturer (EDAF10/EDA061) HT1 2013, FÖRELÄSNING 5 Förra föreläsningen Projektgrupper klara?! Redovisningstid inbokad? Designmönster Strategy (exempel) Singleton

Läs mer

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

Föreläsning 8 - del 2: Objektorienterad programmering - avancerat Föreläsning 8 - del 2: Objektorienterad programmering - avancerat Johan Falkenjack johan.falkenjack@liu.se Linköpings universitet Sweden December 4, 2013 1 Innehåll Arv och andra viktiga begrepp Abstrakta

Läs mer

UML Objektdiagram. Objektorienterad modellering och design (EDAF25) Föreläsning 3. UML Sekvensdiagram. UML Objektdiagram. Agenda

UML Objektdiagram. Objektorienterad modellering och design (EDAF25) Föreläsning 3. UML Sekvensdiagram. UML Objektdiagram. Agenda Objektorienterad modellering och design (EDAF25) Föreläsning 3 UML Objektdiagram Agenda UML objekt och sekvensdiagram Design smells Designprinciper (ALP, SRP, OCP, DIP) (, Composite) Att göra denna och

Läs mer

Objektorienterad modellering och diskreta strukturer (EDAF10/EDA061)

Objektorienterad modellering och diskreta strukturer (EDAF10/EDA061) Objektorienterad modellering och diskreta strukturer (EDAF10/EDA061) HT1 2014, FÖRELÄSNING 14 (INFÖR TENTAN) Dagens agenda Admin Tentatid och plats Tillåtet på tentan EDAF10 Föreläsning inför XL-projektet

Läs mer

Objektorienterad modellering och diskreta strukturer (EDAF10/EDA061)

Objektorienterad modellering och diskreta strukturer (EDAF10/EDA061) Objektorienterad modellering och diskreta strukturer (EDAF10/EDA061) HT1 2014, FÖRELÄSNING 5 Datavetenskap/LTH EDAF10/EDA061 HT2014 Ulf Asklund Förra föreläsningen Designmönster Strategy Singleton Null

Läs mer

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

Abstrakt datatyp. -Algoritmer och Datastrukturer- För utveckling av verksamhet, produkter och livskvalitet. -Algoritmer och Datastrukturer- Abstrakt datatyp Datatyp för en variabel Betecknar i ett programmeringsspråk den mängd värden variabeln får anta. T ex kan en variabel av typ boolean anta värdena true och

Läs mer

Föreläsning 2. Länkad lista och iterator

Föreläsning 2. Länkad lista och iterator Föreläsning 2 Länkad lista och iterator Föreläsning 2 Länkad-lista Lista implementerad med en enkellänkad lista Iterator Implementering av en Iterator Dubbellänkad lista och cirkulär lista LinkedList JCF

Läs mer

Mutability och State. Objekt-orienterad programmering och design (DIT953) Niklas Broberg / Johannes Åman Pohjola, 2018

Mutability och State. Objekt-orienterad programmering och design (DIT953) Niklas Broberg / Johannes Åman Pohjola, 2018 Mutability och State Objekt-orienterad programmering och design (DIT953) Niklas Broberg / Johannes Åman Pohjola, 2018 Immutability Ett icke muterbart (immutable) objekt är ett objekt vars tillstånd inte

Läs mer

Föreläsning 2. Länkad lista och iterator

Föreläsning 2. Länkad lista och iterator Föreläsning 2 Länkad lista och iterator Föreläsning 2 Länkad-lista Lista implementerad med en enkellänkad lista Iterator Implementering av en Iterator Dubbellänkad lista och cirkulär lista LinkedList JCF

Läs mer

Föreläsning 4. ADT Kö Kö JCF Kö implementerad med en cirkulär array Kö implementerad med en länkad lista

Föreläsning 4. ADT Kö Kö JCF Kö implementerad med en cirkulär array Kö implementerad med en länkad lista Föreläsning 4 Kö Föreläsning 4 ADT Kö Kö JCF Kö implementerad med en cirkulär array Kö implementerad med en länkad lista ADT Kö Grundprinciper: En kö fungerar som en kö. Man fyller på den längst bak och

Läs mer

Programmering med Java. Grunderna. Programspråket Java. Programmering med Java. Källkodsexempel. Java API-exempel In- och utmatning.

Programmering med Java. Grunderna. Programspråket Java. Programmering med Java. Källkodsexempel. Java API-exempel In- och utmatning. Programmering med Java Programmering med Java Programspråket Java Källkodsexempel Källkod Java API-exempel In- och utmatning Grunderna Ann Pan panda@nada.kth.se Rum 1445, plan 4 på Nada 08-7909690 Game.java

Läs mer

Föreläsning 4 Innehåll. Abstrakta datatypen lista. Implementering av listor. Abstrakt datatypen lista. Abstrakt datatyp

Föreläsning 4 Innehåll. Abstrakta datatypen lista. Implementering av listor. Abstrakt datatypen lista. Abstrakt datatyp Föreläsning 4 Innehåll Abstrakta datatypen lista Definition Abstrakta datatypen lista egen implementering Datastrukturen enkellänkad lista Nästlade klasser statiska nästlade klasser inre klasser Listklasser

Läs mer

JUnit. Ska kompletteras med kodexempel på JUnit. DD2385 Programutvecklingsteknik Några bilder till föreläsning 12 21/5 2012

JUnit. Ska kompletteras med kodexempel på JUnit. DD2385 Programutvecklingsteknik Några bilder till föreläsning 12 21/5 2012 DD2385 Programutvecklingsteknik Några bilder till föreläsning 12 21/5 2012 Innehåll Testning med JUnit Refactoring Några designprinciper JUnit Ramverk i Java för testning av Java-klasser Utvecklat av Gamma

Läs mer

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

TDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 6 Erik Nilsson, Institutionen för Datavetenskap, LiU TDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 6 Erik Nilsson, Institutionen för Datavetenskap, LiU På denna föreläsning: Mer om Interface Generiska klasser Undantag Nästlade klasser 1

Läs mer

Tentamen i Objektorienterad modellering och diskreta strukturer

Tentamen i Objektorienterad modellering och diskreta strukturer Lunds Tekniska Högskola Datavetenskap Ulf Asklund, Sven Gestegård obertz Tentamen EDAF10 2013 10 24, 8.00 13.00 Tentamen i Objektorienterad modellering och diskreta strukturer Vid bedömningen kommer hänsyn

Läs mer

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

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 4 Erik Nilsson, Institutionen för Datavetenskap, LiU TDDC30 Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 4 Erik Nilsson, Institutionen för Datavetenskap, LiU På denna föreläsning: Interface Generiska klasser Undantag

Läs mer

Outline. Objektorienterad Programmering (TDDC77) En frukt har ett namn. Man kan lägga en frukt i en korg... Hashing. Undantag. Ahmed Rezine.

Outline. Objektorienterad Programmering (TDDC77) En frukt har ett namn. Man kan lägga en frukt i en korg... Hashing. Undantag. Ahmed Rezine. Outline Objektorienterad Programmering (TDDC77) Föreläsning XIV: Undantag, Design Ahmed Rezine IDA, Linköpings Universitet Undantag Design Hösttermin 2017 En frukt har ett namn Man kan lägga en frukt i

Läs mer

Lösningsförslag till omtentamen för TDA540 Objektorienterad Programmering

Lösningsförslag till omtentamen för TDA540 Objektorienterad Programmering Lösningsförslag till omtentamen för TDA540 Objektorienterad Programmering Institutionen för Datavetenskap CTH HT-6, TDA540 Dag: 207-0-24, Tid: 4.00-.00 Uppgift a) En abstrakt klass kan inte instansieras,

Läs mer

LÖSNINGSFÖRSLAG

LÖSNINGSFÖRSLAG LÖSNINGSFÖRSLAG - 100406 Uppgift 1. a) Objekten som tillhör en icke-muterbar klass är oförändliga, dvs de behåller under hela sin livstid det tillstånd som de fick när de skapades. Icke-muterbara objekt

Läs mer

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

HT1 2015, FÖRELÄSNING 14 (INFÖR TENTAN) Objektorienterad modellering och diskreta strukturer (EDAF10/EDA061) HT1 2015, FÖRELÄSNING 14 (INFÖR TENTAN) Dagens agenda Admin DS-föreläsning nästa torsdag 22/10 kl 13-15 Tentatid och plats Tillåtet

Läs mer

HT1 2015, FÖRELÄSNING

HT1 2015, FÖRELÄSNING Objektorienterad modellering och diskreta strukturer (EDAF10/EDA061) HT1 2015, FÖRELÄSNING 5 Förra föreläsningen Designmönster Strategy Singleton Null object Facade Decorator ISP Interface Segregation

Läs mer

Objektorienterad Programmering (TDDC77)

Objektorienterad Programmering (TDDC77) Objektorienterad Programmering (TDDC77) Föreläsning XIV: Undantag, Design Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2017 Outline Hashing Undantag Design Outline Hashing Undantag Design En frukt

Läs mer

Tentamen i Objektorienterad modellering och design Helsingborg

Tentamen i Objektorienterad modellering och design Helsingborg Lunds Tekniska Högskola Datavetenskap Roger Henriksson, Mathias Haage, Emelie Engström Tentamen EDAF25 2015-10-28 Tentamen i Objektorienterad modellering och design Helsingborg 1. a. Klassdiagram Lösningar

Läs mer

Listor. Koffman & Wolfgang kapitel 2, avsnitt , och 2.9

Listor. Koffman & Wolfgang kapitel 2, avsnitt , och 2.9 Listor Koffman & Wolfgang kapitel 2, avsnitt 2.1 2.3, 2.5 2.6 och 2.9 Figur 2.1, sid 63 java.util.list, med dess implementeringar 2 List och primitiva typer En array kan innehålla primitiva typer: int[],

Läs mer

TDA550 Objektorienterad programvaruutveckling IT, forts. kurs Övning vecka 2

TDA550 Objektorienterad programvaruutveckling IT, forts. kurs Övning vecka 2 TDA550 Objektorienterad programvaruutveckling IT, forts. kurs Övning vecka 2 Pelle Evensen, Daniel Wetterbro 5 november 2009 Sammanfattning Denna vecka ska vi titta på abstrakta klasser kontra interface,

Läs mer

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

Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 4 Jonas Lindgren, Institutionen för Datavetenskap, LiU TDDC30 Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 4 Jonas Lindgren, Institutionen för Datavetenskap, LiU På denna föreläsning: Interface Generiska klasser Undantag

Läs mer

Seminarium 3 Introduktion till Java Collections Framework Innehåll. Generik Bakgrund. Exempel på en generisk klass java.util.arraylist.

Seminarium 3 Introduktion till Java Collections Framework Innehåll. Generik Bakgrund. Exempel på en generisk klass java.util.arraylist. Seminarium 3 Introduktion till Java Collections Framework Innehåll Generik Bakgrund Java Collections Framework interface och klasser för samlingar av element interfacen Iterator och Iterable och foreach-sats

Läs mer

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

2I1049 Föreläsning 5. Objektorientering. Objektorientering. Klasserna ordnas i en hierarki som motsvarar deras inbördes ordning 2I1049 Föreläsning 5 Objektorienterad programmering i Java KTH-MI Peter Mozelius Objektorientering Världar uppbyggda av objekt Inte helt olikt vår egen värld Ett sätt att modularisera våra system Objekten

Läs mer

LULEÅ TEKNISKA UNIVERSITET

LULEÅ TEKNISKA UNIVERSITET LULEÅ TEKNISKA UNIVERSITET Tentamen i Objektorienterad programmering och design Totala antalet uppgifter: 5 Lärare: Håkan Jonsson, Andrey Kruglyak, 491000 Resultatet offentliggörs senast: 2010-04-09. Tillåtna

Läs mer

Länkade strukturer. (del 2)

Länkade strukturer. (del 2) Länkade strukturer (del 2) Översikt Abstraktion Dataabstraktion Inkapsling Gränssnitt (Interface) Abstrakta datatyper (ADT) Programmering tillämpningar och datastrukturer 2 Abstraktion Procedurell abstraktion

Läs mer

EDAF10: Objektorienterad modellering och diskreta strukturer EDA061: Objektorienterad modellering och design. Vad är Objektorienterad modellering?

EDAF10: Objektorienterad modellering och diskreta strukturer EDA061: Objektorienterad modellering och design. Vad är Objektorienterad modellering? Objektorienterad modellering och diskreta strukturer (EDAF10/EDA061) HT1 2013, FÖRELÄSNING 1 EDAF10: Objektorienterad modellering och diskreta strukturer EDA061: Objektorienterad modellering och design

Läs mer

OOP Objekt-orienterad programmering

OOP Objekt-orienterad programmering OOP F6:1 OOP Objekt-orienterad programmering Föreläsning 6 Mer om klasser och objekt Hantera många objekt ArrayList tostring() metoden this Vi vill ofta hantera många objekt i ett program: OOP F6:2 public

Läs mer

Tentamen. 2D4135 vt 2005 Objektorienterad programmering, design och analys med Java Lördagen den 28 maj 2005 kl 9.00 14.

Tentamen. 2D4135 vt 2005 Objektorienterad programmering, design och analys med Java Lördagen den 28 maj 2005 kl 9.00 14. Tentamen 2D4135 vt 2005 Objektorienterad programmering, design och analys med Java Lördagen den 28 maj 2005 kl 9.00 14.00, sal E33 Tentan har en teoridel och en problemdel. På teoridelen är inga hjälpmedel

Läs mer

Tentamen Programmering fortsättningskurs DIT950

Tentamen Programmering fortsättningskurs DIT950 Tentamen Programmering fortsättningskurs Datum: 2015-03-17 Tid: 08.30-12.30 Hjälpmedel: Engelskt-Valfritt språk lexikon Betygsgränser: U: -23 G: 24-43 VG: 44-60 (max 60) Lärare:. Någon besöker ca 10.00

Läs mer

Kursstruktur. Objektorienterad modellering och diskreta strukturer / design. Programmering utan OMD. Vad är Objektorienterad modellering?

Kursstruktur. Objektorienterad modellering och diskreta strukturer / design. Programmering utan OMD. Vad är Objektorienterad modellering? Kursstruktur Objektorienterad modellering och diskreta strukturer / design Mål och innehåll Lennart Andersson kurs HT1 v1-4 HT1 v4-7 TP 1 HT2 v1-3 EDAF10 Principer och mönster, Diskreta Tentamen Projekt

Läs mer

Tentamen i Objektorienterad modellering och design

Tentamen i Objektorienterad modellering och design Lunds Tekniska Högskola Datavetenskap Tentamen EDA061 2016 10-26, 08:00 13:00 Tentamen i Objektorienterad modellering och design Vid bedömningen kommer hänsyn att tas till lösningens kvalitet. UML-diagram

Läs mer

TDA550 Objektorienterad programvaruutveckling IT, forts. kurs Övning vecka 5

TDA550 Objektorienterad programvaruutveckling IT, forts. kurs Övning vecka 5 TDA550 Objektorienterad programvaruutveckling IT, forts. kurs Övning vecka 5 Daniel Wetterbro 23 november 2009 Sammanfattning Denna vecka ska vi titta på I/O, samlingar och generics. Övningarna är graderade

Läs mer

Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering

Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering Föreläsning 1 Objektorienterad programmering DD1332 Introduktion till Java Kompilering, exekvering, variabler, styrstrukturer Kompilering och exekvering Ett program måste översättas till datorns språk

Läs mer

Kursombud. Objektorienterad modellering och diskreta strukturer / design. Agile? Designprinciper EDAF10 EDA061. Lennart Andersson. Grupper för projekt

Kursombud. Objektorienterad modellering och diskreta strukturer / design. Agile? Designprinciper EDAF10 EDA061. Lennart Andersson. Grupper för projekt Kursombud Objektorienterad modellering och diskreta strukturer / design Designprinciper Lennart Andersson EDAF10 EDA061 Reviderad 2010 09 02 2010 OMD 2010 F2-1 Att göra Agile? OMD 2010 F2-2 Grupper för

Läs mer

EDAF10: Objektorienterad modellering och diskreta strukturer EDA061: Objektorienterad modellering och design

EDAF10: Objektorienterad modellering och diskreta strukturer EDA061: Objektorienterad modellering och design Objektorienterad modellering och diskreta strukturer (EDAF10/EDA061) HT1 2013, FÖRELÄSNING 1 EDAF10: Objektorienterad modellering och diskreta strukturer EDA061: Objektorienterad modellering och design

Läs mer

Tentamen i Objektorienterad modellering och design Helsingborg

Tentamen i Objektorienterad modellering och design Helsingborg Lunds Tekniska Högskola Datavetenskap Emelie Engström Tentamen EDAF25 2016 10-26, 08:00 13:00 Tentamen i Objektorienterad modellering och design Helsingborg Tentamen består av en teoridel om totalt 5 poäng

Läs mer

Tentamen i EDAF25. 1 juni Skrivtid: Skriv inte med färgpenna enda tillåtna färg är svart/blyerts.

Tentamen i EDAF25. 1 juni Skrivtid: Skriv inte med färgpenna enda tillåtna färg är svart/blyerts. Tentamen i EDAF5 juni 07 Skrivtid: 4-9 Skriv bara på ena sidan av pappret tentorna kommer att scannas in, och endast framsidorna rättas. Skriv inte med färgpenna enda tillåtna färg är svart/blyerts. Skriv

Läs mer

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

Tentamen. DD2385 Programutvecklingsteknik vt 2013 Onsdagen den 22 maj 2013 kl Hjälpmedel: penna, suddgummi, linjal Tentamen DD2385 Programutvecklingsteknik vt 2013 Onsdagen den 22 maj 2013 kl 14.00 17.00 Hjälpmedel: penna, suddgummi, linjal Tentan har två delar om vardera 30 poäng Maximala betygsgränser (gränserna

Läs mer

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

Objektorienterad Programmering DAT043. Föreläsning 9 12/2-18 Moa Johansson (delvis baserat på Fredrik Lindblads material) Objektorienterad Programmering DAT043 Föreläsning 9 12/2-18 Moa Johansson (delvis baserat på Fredrik Lindblads material) 1 Metoden clone() Skapa kopior av existerande objekt. Interface Cloneable Deep vs.

Läs mer

TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P

TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P UME UNIVERSITET Datavetenskap 981212 TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P Datum : 981212 Tid : 9-15 HjŠlpmedel : Inga Antal uppgifter : 9 TotalpoŠng : 60 (halva pošngtalet kršvs normalt fšr

Läs mer

Repetition av OOP- och Javabegrepp

Repetition av OOP- och Javabegrepp ArrayList Repetition av OOP- och Javabegrepp En lista i vilken man kan lagra objekt Implementerar List-interfacet Skiljer sig från ett vanligt endimensionellt fält: Dynamisk expanderar när den blir

Läs mer

Föreläsning 4 Innehåll

Föreläsning 4 Innehåll Föreläsning 4 Innehåll Abstrakta datatypen lista Datastrukturen enkellänkad lista Nästlade klasser statiskt nästlade klasser inre klasser Listklasser i Java Implementera abstrakta datatyperna stack och

Läs mer

Information. Computer

Information. Computer Information Objektorienterad modellering och diskreta strukturer Lennart Andersson Reviderad 2009-10-14 2009 Tentamen torsdag 22 oktober 8-12/13. Hjälpmedel på tentamen. Martin: PPP Andersson: UML Holm:

Läs mer

Seminarium 2 Introduktion till Java Collections Framework Innehåll. Generik Bakgrund. Exempel på en generisk klass java.util.arraylist.

Seminarium 2 Introduktion till Java Collections Framework Innehåll. Generik Bakgrund. Exempel på en generisk klass java.util.arraylist. Seminarium 2 Introduktion till Java Collections Framework Innehåll Generik Bakgrund Generik används för att få typsäkra datastrukturer Java Collections Framework Standardbibliotek med datastrukturer i

Läs mer

Övning vecka 6. public void method2() { //code block C method3(); //code block D }//method2

Övning vecka 6. public void method2() { //code block C method3(); //code block D }//method2 Övning vecka 6. TDA550 - Objektorienterad programvaruutveckling IT, fk Denna vecka ska vi titta på undantag, testning, generiska enheter, samlingar och designmönstret Iterator. Uppgift 1 Exceptions a)

Läs mer

Samlingar Collection classes

Samlingar Collection classes Samlingar Collection classes Sven-Olof Nyström Uppsala Universitet 17 mars 2005 Skansholm: Kapitel 9, 19 Se även Suns tutorial om Collections Olika slag av samlingar i Java Arrayer (Till exempel: int[])

Läs mer

Repetition av OOP- och Javabegrepp

Repetition av OOP- och Javabegrepp ArrayList Repetition av OOP- och Javabegrepp En lista i vilken man kan lagra objekt Implementerar List-interfacet Skiljer sig från ett vanligt endimensionellt fält: Dynamisk expanderar när den blir

Läs mer

UML Objektdiagram. Objektorienterad modellering och design (EDAF25) Föreläsning 3. UML Sekvensdiagram. UML Objektdiagram. Agenda

UML Objektdiagram. Objektorienterad modellering och design (EDAF25) Föreläsning 3. UML Sekvensdiagram. UML Objektdiagram. Agenda Objektorienterad modellering och design (EDAF25) Föreläsning 3 UML Objektdiagram Agenda UML objekt och sekvensdiagram Design smells Designprinciper (DRY, SRP, OCP, DIP) (, ) Att göra denna och nästa vecka:

Läs mer

HT1 2015, FÖRELÄSNING

HT1 2015, FÖRELÄSNING Objektorienterad modellering och diskreta strukturer (EDAF10/EDA061) HT1 2015, FÖRELÄSNING 2 Förra föreläsningen Kursens upplägg och tidsbudget Mål & Syfte med kursen Substantivmetoden Designprinciper

Läs mer

Computer projekttid. Objektorienterad modellering och diskreta strukturer / design. Rapporter från verkligheten. EDAF10 i HT2

Computer projekttid. Objektorienterad modellering och diskreta strukturer / design. Rapporter från verkligheten. EDAF10 i HT2 Computer projekttid Objektorienterad modellering och diskreta strukturer / design Inför tentamen Lennart Andersson Reviderad 2012 10 18 2012 2011 2012 timmar antal timmar 2 1 4 4 6 8 8 4 10 10 12 6 14

Läs mer

Övning vecka 5. Denna vecka ska vi titta pa samlingar, generics och designmönstren Decorator, Singleton och Iterator.

Övning vecka 5. Denna vecka ska vi titta pa samlingar, generics och designmönstren Decorator, Singleton och Iterator. Övning vecka 5. TDA550 - Objektorienterad programvaruutveckling IT, fk Denna vecka ska vi titta pa samlingar, generics och designmönstren Decorator, Singleton och Iterator. Uppgift 1 Kom ihåg att samlingar

Läs mer

Föreläsning 8: Exempel och problemlösning

Föreläsning 8: Exempel och problemlösning TDA 545: Objektorienterad programmering Föreläsning 8: Exempel och problemlösning Magnus Myréen Chalmers, läsperiod 1, 2015-2016 De tre senaste föreläsningarna Läsanvisning: kap 2 & 13 meddelanden och

Läs mer

Föreläsning 4. ADT Kö Kö JCF Kö implementerad med en cirkulär array Kö implementerad med en länkad lista Läsanvisningar och uppgifter

Föreläsning 4. ADT Kö Kö JCF Kö implementerad med en cirkulär array Kö implementerad med en länkad lista Läsanvisningar och uppgifter Föreläsning 4 Kö Föreläsning 4 ADT Kö Kö JCF Kö implementerad med en cirkulär array Kö implementerad med en länkad lista Läsanvisningar och uppgifter ADT Kö Grundprinciper: En kö fungerar som en kö. Man

Läs mer

TDA550 Objektorienterad programvaruutveckling IT, forts. kurs Övning vecka 5

TDA550 Objektorienterad programvaruutveckling IT, forts. kurs Övning vecka 5 TDA550 Objektorienterad programvaruutveckling IT, forts. kurs Övning vecka 5 Pelle Evensen & Daniel Wetterbro 20 oktober 2011 Sammanfattning Denna vecka ska vi titta på samlingar, generics och designmönstren

Läs mer

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

TDDC74 FÖRELÄSNING 9 ANDERS MÄRAK LEFFLER IDA/HCS 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

Läs mer

EDAA20 Föreläsning Klassen ArrayList. Viktiga operationer på ArrayList. Generisk klass

EDAA20 Föreläsning Klassen ArrayList. Viktiga operationer på ArrayList. Generisk klass EDAA20 Föreläsning 11-12 Klassen ArrayList Klassen ArrayList Skriva program som läser data från en textfil och skriver data till en textfil Repetition inför delmålskontroll 2 är en standardklass (i paketet

Läs mer

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

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 2 Jonas Lindgren, Institutionen för Datavetenskap, LiU TDDC30 Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 2 Jonas Lindgren, Institutionen för Datavetenskap, LiU På denna föreläsning: Konstruktorer Statiska metoder & attribut

Läs mer

Generisk klass med typparameter Inre klass - ListIterator

Generisk klass med typparameter Inre klass - ListIterator Objektorienterad programmeringsmetodik Generics, clone Generics Återanvändning Ännu ett sätt att lösa ett gammalt problem: skriva så lite kod som möjligt Vi vill ha metoder som fungerar på olika klasser

Läs mer

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

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 2. Länkade listor Stackar Köer MyList Iteratorer Lab 2 Exceptions Paket TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 2 Länkade listor Stackar Köer MyList Iteratorer Lab 2 Exceptions Paket 1 Länkade listor Likadant som i Ada-kursen. 2 Stack MyStack MyStack

Läs mer

Övning 5. TDA550 - Objektorienterad programvaruutveckling, fk

Övning 5. TDA550 - Objektorienterad programvaruutveckling, fk TDA550 - Objektorienterad programvaruutveckling, fk Övning 5. Denna vecka ska vi titta på designmönstren Singleton, State, Observer, Composite och Decorator, samt gränssnittet Comparator. Uppgift 1 Syftet

Läs mer

Lösningsförslag till tentamen i EDAF25 Objektorienterad modellering och design Helsingborg

Lösningsförslag till tentamen i EDAF25 Objektorienterad modellering och design Helsingborg LUNDS TEKNISKA HÖGSKOLA 1(7) Institutionen för datavetenskap Lösningsförslag till tentamen i EDAF25 Objektorienterad modellering och design Helsingborg 1. a) Figure 1 2015 06 04 GeometryApp GraphicalApp

Läs mer

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

TDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 6 Erik Nilsson, Institutionen för Datavetenskap, LiU TDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 6 Erik Nilsson, Institutionen för Datavetenskap, LiU På denna föreläsning Generiska klasser Undantag Interface Nästlade klasser 1 Problem:

Läs mer

SI-pass 4. Johan Brook och Jesper Persson. 25 september 2012. Diskutera och svara på om påståendena nedan är äkta sanningar eller listiga lögner.

SI-pass 4. Johan Brook och Jesper Persson. 25 september 2012. Diskutera och svara på om påståendena nedan är äkta sanningar eller listiga lögner. SI-pass 4 Johan Brook och Jesper Persson 25 september 2012 1. Sant eller falskt? Diskutera och svara på om påståendena nedan är äkta sanningar eller listiga lögner. Interfaces i Java kan innehålla privata

Läs mer

Vad kännetecknar en god klass. Vad kännetecknar en god klass. F12 Nested & Inner Classes

Vad kännetecknar en god klass. Vad kännetecknar en god klass. F12 Nested & Inner Classes Vad kännetecknar en god klass F12 Nested & En odelad, väldefinierad abstraktion Uppgiften kan beskrivas kort och tydlig Namnet är en substantiv eller adjektiv som beskriver abstraktionen på ett adekvat

Läs mer

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

Outline. Objektorienterad Programmering (TDDC77) Signatur. Klassen calculator. Överlagring (overloading) Arv (inheritance) Ahmed Rezine Objektorienterad Programmering (TDDC77) Föreläsning XI: åsidosättning, gränssnitt, uppräkning, hierarkier Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2017 Klassen calculator Signatur Calculator

Läs mer

Föreläsning 3: Abstrakta datastrukturer, kö, stack, lista

Föreläsning 3: Abstrakta datastrukturer, kö, stack, lista Föreläsning 3: Abstrakta datastrukturer, kö, stack, lista Abstrakt stack Abstrakt kö Länkade listor Abstrakta datatyper Det är ofta praktiskt att beskriva vilka operationer man vill kunna göra på sina

Läs mer

Kursstruktur. Objektorienterad modellering och diskreta strukturer / design. Vad är Objektorienterad modellering? Programmering utan OMD

Kursstruktur. Objektorienterad modellering och diskreta strukturer / design. Vad är Objektorienterad modellering? Programmering utan OMD Kursstruktur Objektorienterad modellering och diskreta strukturer / design Mål och innehåll Lennart Andersson kurs HT1 v1-4 HT1 v4-7 TP 1 HT2 v1-3 EDAF10 Principer och mönster, Diskreta Tentamen Projekt

Läs mer

2. Palindrom. Exempel: 1,2,3,2,1 är ett palindrom, och även 0, men inte 1,2,3,1,2,3.

2. Palindrom. Exempel: 1,2,3,2,1 är ett palindrom, och även 0, men inte 1,2,3,1,2,3. LULEÅ TEKNISKA UNIVERSITET Tentamen i Objektorienterad programmering och design Totala antalet uppgifter: 5 Lärare: Håkan Jonsson, 491000, 073-820 1700 Resultatet offentliggörs senast: 2011-04-02. Tillåtna

Läs mer

DAT043 Objektorienterad programmering för D, DIT011 Objektorienterad programvaruutveckling för GU

DAT043 Objektorienterad programmering för D, DIT011 Objektorienterad programvaruutveckling för GU DAT043 Objektorienterad programmering för D, DIT011 Objektorienterad programvaruutveckling för GU lösningsförslag till tentamen 2017-06-09 Tid: 8:30-12:30. Plats: SB. Ansvarig lärare: Fredrik Lindblad,

Läs mer

DAT043 - Föreläsning 7

DAT043 - Föreläsning 7 DAT043 - Föreläsning 7 Model-View-Controller, mer om klasser och interface (arv, ) 2017-02-06 Designmönstret Observer avläser Observer Observable meddelar Observer avläser En eller flera objekt registrerar

Läs mer

Tentamen i Objektorienterad modellering och diskreta strukturer

Tentamen i Objektorienterad modellering och diskreta strukturer Lunds Tekniska Högskola Datavetenskap Ulf Asklund, Sven Gestegård obertz Tentamen EDAF10 2014 10 31, 14.00 19.00 Tentamen i Objektorienterad modellering och diskreta strukturer Vid bedömningen kommer hänsyn

Läs mer

Collection Classes. bjectorienterad programmering Sida 1

Collection Classes. bjectorienterad programmering Sida 1 Collection Classes Koppling mellan abstraktioner på hög nivå och praktiska och effektiva implementationer av datastrukturer abstraktionerna: naturliga matematiska begrepp mängder, sekvenser avbildningar

Läs mer

Objektorienterad Programmering (TDDC77)

Objektorienterad Programmering (TDDC77) Objektorienterad Programmering (TDDC77) Föreläsning XI: åsidosättning, gränssnitt, uppräkning, hierarkier Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2017 Outline Överlagring (overloading) Arv

Läs mer

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

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 2. Laboration 2 Datastrukturer En liten uppgift Frågor TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 2 Laboration 2 Datastrukturer En liten uppgift Frågor 1 Laboration 2 - Datastrukturer Länkade datastrukturer Stack Kö (En. Queue) Lista

Läs mer

Övning 4. I denna övning ska vi titta på icke-muterbarhet kontra muterbarhet, samt metoderna equals, hashcode och clone.

Övning 4. I denna övning ska vi titta på icke-muterbarhet kontra muterbarhet, samt metoderna equals, hashcode och clone. TDA550 - Objektorienterad programvaruutveckling, fk Övning 4. I denna övning ska vi titta på icke-muterbarhet kontra muterbarhet, samt metoderna equals, hashcode och clone. Uppgift 1 Icke-muterbarhet kontra

Läs mer

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

Objektorienterad Programkonstruktion. Föreläsning 2 2 nov 2016 Objektorienterad Programkonstruktion Föreläsning 2 2 nov 2016 Objekt - klass Namn Fält1 Fält2 Fält3 Metod1 Metod2 Metod3 Metod4 Objekt - klass Objekt - klass Objekt - klass + Objekt - klass public class

Läs mer

Föreläsning 12. Länkade listor

Föreläsning 12. Länkade listor Föreläsning 12 Länkade listor Jämför en array med en länkad lista m in n e t Array (med 5 element): + effektiv vid hämtning - ineffektiv vid insättning och borttagning Länkad lista (med 5 element): + effektiv

Läs mer

/* * * Lösningsförslag tentamen DIT950 * Datum * */ /* * -1 - */ För samtliga gäller,se föreläsningsanteckningar.

/* * * Lösningsförslag tentamen DIT950 * Datum * */ /* * -1 - */ För samtliga gäller,se föreläsningsanteckningar. * * Lösningsförslag tentamen DIT950 * Datum 150317 * * -1 - För samtliga gäller,se föreläsningsanteckningar. * - 2 - (Diagram visas inte, kontakta mig för ev frågor) // a C c = new A(); // Compile! Sub

Läs mer

Collection classes. Interface, första exempel. Interface (forts) Men först

Collection classes. Interface, första exempel. Interface (forts) Men först Collection Classes Koppling mellan abstraktioner på hög nivå och praktiska och effektiva implementationer av datastrukturer abstraktionerna: naturliga matematiska begrepp mängder, sekvenser avbildningar

Läs mer

Konstruktion av klasser med klasser

Konstruktion av klasser med klasser Konstruktion av klasser med klasser Klasser kan byggas på redan denierade klasser genom att klassobjekt används som dataattribut när en ny klass beskrivs. Exempel: Klassen PairOfDice har två attribut attribut

Läs mer

Föreläsning 3. Stack

Föreläsning 3. Stack Föreläsning 3 Stack Föreläsning 3 ADT Stack Stack JCF Tillämpning Utvärdera ett postfix uttryck Stack implementerad med en array Stack implementerad med en länkad lista ADT Stack Grundprinciper: En stack

Läs mer

Lösningar till tentamen i EDAF25

Lösningar till tentamen i EDAF25 Lösningar till tentamen i EDAF25 1 juni 2017 Lösning 1 Se figur 1. Figure 1: Tillståndsdiagram espressomaskin Lösning 2 (a) Kompositmönstret (b) Se figur 2 (c) Se figur 3 : Square : Drawing : Group : Circle

Läs mer