Exempel på spelprogrammering i java.

Storlek: px
Starta visningen från sidan:

Download "Exempel på spelprogrammering i java."

Transkript

1 Exempel på spelprogrammering i java

2 Chatten?

3 Overloading Vi kan ha flera olika metoder med samma namn Dessa måste i så fall skiljas genom olika signaturer: parametrarnas typ och antal int sum (int n1, int n2) { Exempel return n1+n2; int sum(int n1, int n2, int n3) { return n1+n2+n3;

4 int sum (int n1, int n2) { return n1+n2; int sum(int n1, int n2, int n3) { return n1+n2+n3; sum(2,7); sum(3,5,9);

5 int sum (int n1, int n2) { return n1+n2; int sum(int n1, int n2, int n3) { return n1+n2+n3; sum(2,7); Anropar denna sum(3,5,9);

6 int sum (int n1, int n2) { return n1+n2; int sum(int n1, int n2, int n3) { return n1+n2+n3; sum(2,7); sum(3,5,9); Anropar denna

7 int sum (int n1, int n2) { return n1+n2; int sum(int n1, int n2, int n3) { return n1+n2+n3; Rätt overloadvariant bestäms av signaturen: sum(2,7); parametrarnas antal och typ sum(3,5,9); Anropar denna

8 Overloading exempel Likartade uppgifter på olika parametertyper (tex println())

9 Overloading exempel Defaultvärden för parametrar (tex JFrame())

10 Tumregler Se upp när du använder en metod i något bibliotek att du verkligen använder rätt overloadvariant. Undvik att skriva egna overloaded metoder. Det förvirrar mest.

11 Klasshierarkier Sanningen bakom extends Ett ovärdeligt sätt att strukturera stora program

12 Klasshierarkier Sanningen bakom extends Ett ovärdeligt sätt att strukturera stora program Ganska ovärt för små program

13 Biblioteksanvändning: Subklassning Ex: gör en egen variant av JFrame, med extra metoder class Biljard extends JFrame {... Biljard () { setlayout(...);... Vi kan använda och definiera om alla metoder i JFrame

14 Arv (inheritance) Givet en klass A kan vi definiera en underklass B med ordet extends i klasshuvudet. Underklassens objekt ärver då allt från överklassen: class A { int x; void f(int z) {... class B extends A { int y;... b = new B(); if (b.x == b.y)... c = b.f(0);

15 Arv (inheritance) Givet en klass A kan vi definiera en underklass B med ordet extends i klasshuvudet. Underklassens objekt ärver då allt från överklassen: class A { int x; void f(int z) {... class B extends A { int y;... b = new B(); if (b.x == b.y)... c = b.f(0);

16 class A class B extends A p y g f z h p g f new B() h y z

17 extends = specialisering Exempel class Ball {... metoder för att rita, flytta, krocka etc class QueueBall extends Ball {... metoder för att skjuta iväg bollen

18 Klasshierarkier En underklass kan i sig användas som överklass till en ännu mer specialiserad klass: class Business {... class RetailBusiness extends Business {... class KMart extends RetailBusiness {... Här ärver KMart både från RetailBusiness och Business

19 class A class B extends A class C extends B p y q g z v f h p g f new C() h y z q v

20 !"#$%&##' 3&,*$4!"#$%&##' /&+0$-&!"#$%&##' ()*+,' )*-.#' ($%12#' Single inheritance: Varje klass har bara en omedelbar överklass som den ärver från. (Java har single inheritance. Tex Python och C++ har multiple inheritance). Arv går i flera led. Om inget sägs är den speciella klassen Object överklass.

21

22 Overriding Om en metod som finns i överklassen definieras om i underklassen gäller definitionen i underklassen. Detta kallas overriding. class A { int x; void f(int z) {... class B extends A { int y; void f(int z) {... c = b.f(0);

23 Overriding Om en metod som finns i överklassen definieras om i underklassen gäller definitionen i underklassen. Detta kallas overriding. class A { int x; void f(int z) {... class B extends A { int y; void f(int z) {... c = b.f(0);

24 class A class B extends A p h g f z h p g f new B() h z

25 Exempel JPanel definierar en metod paintcomponent(). Alla underklasser till JPanel ärver denna. Skriver vi ingen ny sådan metod i underklassen så finns den ursprungliga (som ritar en tom yta). Vi kan göra en override och definiera en egen paintcomponent() som innehåller önskad grafik

26 final Om överklassen deklarerat en metod final så får man inte göra override på den i en underklass. class A { int x; final void f(int z) {... class B extends A { int y; void f(int z) {... Detta används för att hindra omdefinitioner av kritiska metoder i stora system

27 super Om man definierat om en metod i underklassen men ändå vill använda överklassens metod, använd super. class A { int x; void f(int z) {... class B extends A { int y; void f(int z) {... void g() { y = f(0); y = super.f(0);

28 super Om man definierat om en metod i underklassen men ändå vill använda överklassens metod, använd super. class A { int x; void f(int z) {... class B extends A { int y; void f(int z) {... void g() { y = f(0); y = super.f(0);

29 super Om man definierat om en metod i underklassen men ändå vill använda överklassens metod, använd super. class A { int x; void f(int z) {... class B extends A { int y; void f(int z) {... void g() { y = f(0); y = super.f(0);

30 Exempel class A extends JPanel { override void paintcomponent(graphics g) { super.paintcomponent(g)...

31 Konstruktorer I underklassens konstruktor lägger Java alltid automatiskt in ett anrop till överklassens konstruktor först. class A { int z; A() { z = 0; class B extends A { int y; B() { y = 1; b = new B(); Här har b.z värdet 0 och b.y värdet 1 eftersom både As och Bs konstruktorer har använts

32 Om man vill får man i underklassens konstruktor göra ett anrop till överklassens konstruktor med notationen super(). Detta måste då ligga först i konstruktorn. Vanlig användning: för att använda rätt overloadvariant av överklassens konstruktor

33 Utan super class A extends JFrame { A() {... Inget anrop till JFrames konstruktor. Då sker automatiskt ett anrop till JFrame(), dvs det skapas ett fönster utan titel

34 Utan super Med super class A extends JFrame { A() {... class A extends JFrame { A() { super( Titel );... Inget anrop till JFrames konstruktor. Då sker automatiskt ett anrop till JFrame(), dvs det skapas ett fönster utan titel Ett anrop till JFrames konstruktor med parametern Titel. Detta innebär ett anrop till JFrame( Titel ), dvs det skapas ett fönster med rubriken Titel.

35 Abstrakta metoder En abstrakt metod deklareras med ordet abstract och innehåller enbart metodhuvud. Ingen metodkropp! abstract void moveto(position pos); Detta definierar metodens signatur (dvs resultattyp och typ av parametrar). Det definierar inte metodens beteende. En abstrakt metod kan inte exekveras.

36 Varför abstrakta metoder? Du gör en klass (tex Piece) där du tänker dig underklasser (tex King, Queen, Rook,...) Där finns en metod canmoveto() som avgör om pjäsen kan gå till en viss ruta. Varje underklass måste ha en canmoveto(), men det finns inget meningsfullt default!

37 Lösning 1 (inte bra): definiera canmoveto() i Piece med ett meningslöst default. Alla underklasser måste göra en override. class Piece { boolean canmoveto(position pos) { return false;

38 Lösning 1 (inte bra): definiera canmoveto() i Piece med ett meningslöst default. Alla underklasser måste göra en override. class Piece { boolean canmoveto(position pos) { return false; Nackdel: i en underklass kan vi glömma att göra override på canmoveto(), och då oavsiktligt utnyttja det meningslösa defaultet

39 Lösning 2 (inte heller bra): definiera inte canmoveto() i Piece alls - den definieras bara i underklasserna

40 Lösning 2 (inte heller bra): definiera inte canmoveto() i Piece alls - den definieras bara i underklasserna Nackdel: Det betyder att canmoveto() inte kan användas i Piece class Piece {... boolean canmoveatall() { for (pos:allpositions) { if (canmoveto(pos)) return true; return false; kräver att canmoveto() definierats i Piece

41 Vi vill kunna använda canmoveto() i Piece utan att definiera den, och lita på att alla underklasser definierar den

42 Lösning 3 (mycket bättre): definiera canmoveto() i Piece som abstrakt

43 Lösning 3 (mycket bättre): definiera canmoveto() i Piece som abstrakt abstract class Piece { abstract boolean canmoveto(position pos); boolean canmoveatall() { for (pos:allpositions) { if (canmoveto(pos)) return true; return false; OK! Fördel: En underklass måste göra en egen canmoveto(). I Piece får vi använda canmoveto()

44 Skilj mellan abstrakta och tomma metoder! abstract void moveto(position pos); Metoden moveto finns med denna signatur void moveto(position pos) { ; Metoden moveto gör ingenting

45 Abstrakta klasser En klass som har abstrakta metoder måste deklareras abstract: abstract class Piece { abstract boolean canmoveto(position pos);...

46 En abstrakt klass får inte instansieras! mypiece = new Piece() Den enda användningen är som överklass till mer specialiserade klasser class King extends Piece {... Underklassen kan ge definitioner av alla överklassens abstrakta metoder class King extends Piece { boolean canmoveto(position pos) {...

47 abstract class A class B extends A p g g f z h p g f new B() h z

48 En abstrakt klass får innehålla både vanliga och abstrakta metoder. Om någon metod är abstrakt är klassen abstrakt. Om en underklass inte implementerar alla abstrakta metoder blir underklassen också abstrakt.

49 abstract class A abstract class B extends A p g z f h new B()

50 Sammanfattning: Abstrakta klasser är ett sätt att låta java hålla reda på vilka metoder man måste implementera i en underklass

51 Övning I ett schackspel finns den (abstrakta) klassen Piece med sex underklasser som svarar mot de sex typerna av spelpjäser (kung, dam, torn, löpare, springare, bonde). Ge exempel på: Metoder som finns i Piece och som ärvs av alla underklasser Abstrakta metoder i Piece som definieras i underklasserna Metoder som bara finns i någon underklass

52 Abstrakta klasser vs interface

53 Abstrakta klasser vs interface I en abstrakt klass får alla metoderna vara abstrakta.

54 Abstrakta klasser vs interface I en abstrakt klass får alla metoderna vara abstrakta. Klassen säger då ingenting om något beteende alls, utan bara om en signatur: vilka metoder som ska finnas och vilka typer de och deras parametrar har.

55 Abstrakta klasser vs interface I en abstrakt klass får alla metoderna vara abstrakta. Klassen säger då ingenting om något beteende alls, utan bara om en signatur: vilka metoder som ska finnas och vilka typer de och deras parametrar har. En signatur är precis det som man behöver veta om en klass för att kunna anropa metoderna.

56 Abstrakta klasser vs interface I en abstrakt klass får alla metoderna vara abstrakta. Klassen säger då ingenting om något beteende alls, utan bara om en signatur: vilka metoder som ska finnas och vilka typer de och deras parametrar har. En signatur är precis det som man behöver veta om en klass för att kunna anropa metoderna. För att definiera signaturer är det bättre att använda interface än abstrakta klasser

57 interface Interface används för att definiera signaturer. Ett interface ser ut som en klassdeklaration men med ordet interface istället för class. Den innehåller bara abstrakta metoder. Metoderna blir automatiskt abstrakta - man behöver inte skriva abstract

58 interface A f g interface A { void f (int i); boolean g(); String h(int i, int j); h new A() Liksom en abstrakt klass får ett interface inte instansieras.

59 implements

60 implements För ett interface används ordet implements (och inte extends): om A är ett interface kan man skriva

61 implements För ett interface används ordet implements (och inte extends): om A är ett interface kan man skriva class B implements A

62 implements För ett interface används ordet implements (och inte extends): om A är ett interface kan man skriva class B implements A Eftersom A är ett interface och inte en klass finns inget att ärva. Allt i A är abstrakt.

63 implements För ett interface används ordet implements (och inte extends): om A är ett interface kan man skriva class B implements A Eftersom A är ett interface och inte en klass finns inget att ärva. Allt i A är abstrakt. Istället gör ordet implements ett åtagande: alla abstrakta metoder i A måste implementeras i B. Det får dessutom finnas ytterligare saker i B, men åtminstone metoderna i A måste finnas.

64 implements För ett interface används ordet implements (och inte extends): om A är ett interface kan man skriva class B implements A Eftersom A är ett interface och inte en klass finns inget att ärva. Allt i A är abstrakt. Istället gör ordet implements ett åtagande: alla abstrakta metoder i A måste implementeras i B. Det får dessutom finnas ytterligare saker i B, men åtminstone metoderna i A måste finnas. implements är alltså ett sätt att i klasshuvudet ange en del av klassens signatur

65 class B interface A implements A f g h p f g h

66 class B interface A implements A f g h p f g

67 En klass kan implementera flera interface och måste då implementera alla abstrakta metoder i interfacen interface A interface B interface C f g h p class D implements A, B, C f g h p

68 Exempel interface MouseListener { void mouseclicked(mouseevent event); void mousepressed(mouseevent event); void mousereleased(mouseevent event); void mouseentered(mouseevent event); void mouseexited(mouseevent event);

69 Exempel I klassen JPanel finns en metod addmouselistener() Den tar som enda parameter ett objekt som ska vara en muslyssnare För att det objektet verkligen säkert ska fungera måste det ha metoderna mouseclicked() etc. Alltså, när man skriver addmouselistener(m) måste man vara säker på att m har sådana metoder. Det är man om m är från en klass som implementerar interfacet MouseListener

70 implements vs extends Använd implements om interface och extends om (abstrakta) klasser En (abstrakt) klass får innehålla också riktiga metoder. Ett interface får bara ha abstrakta metoder. Java har single inheritance: En klass får vara underklass till bara en annan klass En klass får implementera flera interface

71 interface A interface B abstract class C f g h p h q class D extends C implements A, B f g p Korrekt?

72 Exempel class MyPanel extends JPanel implements MouseListener, KeyListener { Vi definierar en klass som ärver JPanel. Det ger oss massor av metoder åt grafikhållet Vi måste definiera metodeterna mouseclicked(), keypressed () etc för att uppfylla interfacen. Vi får använda objekt instansierade av MyPanel som parametrar vid anrop till addmouselistener() och addkeylistener()

73 Encapsulation Namn: identifierar sådant som variabler, metoder, klasser,... Namn skapas vid motsvarande deklaration

74 Encapsulation Namn: identifierar sådant som variabler, metoder, klasser,... Namn skapas vid motsvarande deklaration Scope ( räckvidd ) för ett namn: den del av koden där namnet kan användas.

75 Encapsulation Namn: identifierar sådant som variabler, metoder, klasser,... Namn skapas vid motsvarande deklaration Scope ( räckvidd ) för ett namn: den del av koden där namnet kan användas. Encapsulation: Ett sätt att begränsa namnscope till att bara omfatta de ställen där namnen behöver användas

76 Encapsulation Namn: identifierar sådant som variabler, metoder, klasser,... Namn skapas vid motsvarande deklaration Scope ( räckvidd ) för ett namn: den del av koden där namnet kan användas. Encapsulation: Ett sätt att begränsa namnscope till att bara omfatta de ställen där namnen behöver användas Fördel: Förhindrar felaktig användning Need to know - där namnen inte behövs är de heller inte tillgängliga

77 Lokala variabler och parametrar Scope = den metod eller kodblock där de deklareras Men vilket scope har klassernas instansvariabler och metoder?

78 Scope av metoder och instansvariabler Det finns några (4 st) olika möjligheter Programmeraren bestämmer själv när metoden/variabeln deklareras!

79 1. Public Deklarera public access genom ordet public Innebär att scope = hela universum Användningfall: 1. Där du måste, tex main(), eller i metoder som implementerar interface public static void main ( När du gjort ett programpaket och vill göra delar av det tillgängligt för andra program

80 2. Protected Deklarera protected access genom ordet protected Innebär att scope = denna package (dvs denna fil, och andra med samma package deklaration) samt alla underklasser till klassen den förekommer Användningfall: Inga (undvik den)

81 3. Package Deklarera package access genom att inte skriva något särskilt i deklarationen Innebär att scope = denna package (dvs denna fil, och andra med samma package deklaration) Användningfall: För variabler och metoder som måste kunna nås av det egna programmet utanför den egna klassen final static int SIZE = 500;

82 4. Private Deklarera private access genom ordet private Innebär att scope = denna klass Användningfall: För variabler och metoder som inte behöver nås utanför den egna klassen private Position pos;

83 Sammanfattning För varje metod/variabel, ta en stund och fundera över: Om den inte ska användas utanför klassen, skriv private I några specialfall, skriv public Om den aldrig får ändras eller overridas, skriv final Om den är gemensam för alla klassens instanser eller saknar vettigt objekt, skriv static

84 Nästlade klasser En klass kan ligga inuti en annan klass. class Table {... class Position {... Innebär: Position blir en del av Table - har ingen mening utan Table. Är ett sätt att gruppera klasser. En nästlad klass kan ges scope på samma sätt som instansvariabler (private/public etc)

85 Static nested classes class Table {... static class Position {... För att skapa en ny Position utanför Table skriv Klassen Position hör till hela klassen Table. Alla objekt i Table har samma klass Position, dvs i Position får man inte använda instansvariabler i Table. new Table.Position() yttre klass nästlad klass

86 Inner classes Nästlad klass som inte är static kallas inner class class Table {... class Position {... Klassen Position hör till objekt av typ Table. Olika objekt i Table har olika klasser Position, dvs i Position får man använda instansvariabler i Table. För att skapa en ny Position utanför Table skriv new thetable.position() objekt som instansierar yttre klass nästlad klass

87 Lokala klasser Finns också: Klass deklarerad inuti en metod Scope = den metoden Anonyma klasser Klassen ges inget namn. Typen är ett interface. Har inget scope, kan inte refereras

88 Anonym klass exempel Hittills: En ActionListener behöver en ny klass: button.addactionlistener(new mylistener()); class mylistener implements ActionListener { public void actionperfored(actionevent e) { // do something Interface Metod som uppfyller interfacet

89 Alternativ med anonym klass: Interface button.addactionlistener(new ActionListener() { public void actionperfored(actionevent e) { // do something. ); Metod som uppfyller interfacet Slipper hitta på klassnamn Metoden actionperformed() definieras precis där lyssnaren registreras

90 Sista projektet Liten ändring i stort program Jämfört med tidigare: ganska lite kod att skriva Svårigheten är att lista ut vad och var! Arbeta systematiskt. Testkör efter varje liten ändring. Lycka Till!!

91 Reflektion

92 Programmering 10 hp Välkomna! Vi kommer att lära oss Skriva enkla men nyttiga program Läsa, begripa och ändra i större program Använda moderna utvecklingsmedel Språken Python och Java Hur datorn fungerar Första föreläsningens första bild

93 Programmering STS studenter (inget avhopp!!) Kursansvarig, 2 doktorander, 6 äldre studenter Nästa höst kan 15 föreläsningar (2h) det vara du! 30 handledda labpass (4h, 2st 2h) varav 15 med examination Individuellt prov (2h)

94 Viktiga erfarenheter bryta ner ett större problem i mindre delar och lösa systematiskt Google är din vän RTFM Studenternas egna ord! Förstå först, gör sen!! större förståekse över hur saker och ting fungerar Behåll lugnet. (Det löser sig) Ta hjälp av dina kompisar Dissa Stocken! Fördela tiden bra Var inte rädd för att be om hjälp!! Tänka metodiskt och strukturerat System.out.println ( = sout + tab)

95 Programmering är inte att knappa in kod

96 Programmering är inte att knappa in kod Ex: Ett projekt tar 16 timmar

97 Programmering är inte att knappa in kod Ex: Ett projekt tar 16 timmar Resulterar i 500 rader kod

98 Programmering är inte att knappa in kod Ex: Ett projekt tar 16 timmar Resulterar i 500 rader kod 16*60/500 = 2, dvs en rad varannan minut

99 Programmering är inte att knappa in kod Ex: Ett projekt tar 16 timmar Resulterar i 500 rader kod 16*60/500 = 2, dvs en rad varannan minut Att skriva en rad tar max 10 sekunder

100 Programmering är inte att knappa in kod Ex: Ett projekt tar 16 timmar Resulterar i 500 rader kod 16*60/500 = 2, dvs en rad varannan minut Att skriva en rad tar max 10 sekunder Dvs 10/120 = 8% av tiden är att skriva kod

101 Programmering är inte att knappa in kod Ex: Ett projekt tar 16 timmar Resulterar i 500 rader kod 16*60/500 = 2, dvs en rad varannan minut Att skriva en rad tar max 10 sekunder Dvs 10/120 = 8% av tiden är att skriva kod Alltså: Det är ineffektivt att optimera koden så att den är lätt att skriva

102 Planering - kodning - testning Arbeta i små steg

103 Kodhygien Uppdelning i små metoder / funktioner Vettig användning av whitespace (radbyte och indentering) Bra namnval

104 Modern programmering är att använda stora plattformar Exempelvis Swing, netbeans Även gigantiska sådana är överkomliga Försök aldrig lära allt utantill Lär dig ett hörn där du vet hur det fungerar Acceptera att det finns sådant du inte vet hur det fungerar Vet hur man ska slå upp och prova

105 Kursmål Efter godkänd kurs ska den studerande kunna:

106 Kursmål Efter godkänd kurs ska den studerande kunna: analysera enklare problem och designa lösningar, formulera en strategi för att hantera större problem, arbeta med grundläggande datastrukturer såsom listor av olika slag, systematiskt söka efter, tolka och förstå fel som uppstår, behärska de vanligaste primitiverna i imperativa programspråk, bl.a. Java, behärska grunderna i god programkonstruktion i bl.a. en objektorienterad programmeringsstil, överföra tidigare kunskaper till ett nytt programmeringsspråk, läsa, förstå och göra smärre ändringar i stora förelagda program, återanvända kod som konstruerats av andra, förstå olika roller i en programmeringsprocess, övergripande kunna förklara principerna för hur en dator är uppbyggd och arbetar.

107 Kursmål Efter godkänd kurs ska den studerande kunna: analysera enklare problem och designa lösningar, formulera en strategi för att hantera större problem, arbeta med grundläggande datastrukturer såsom listor av olika slag, systematiskt söka efter, tolka och förstå fel som uppstår, behärska de vanligaste primitiverna i imperativa programspråk, bl.a. Java, behärska grunderna i god programkonstruktion i bl.a. en objektorienterad programmeringsstil, överföra tidigare kunskaper till ett nytt programmeringsspråk, läsa, förstå och göra smärre ändringar i stora förelagda program, återanvända kod som konstruerats av andra, förstå olika roller i en programmeringsprocess, övergripande kunna förklara principerna för hur en dator är uppbyggd och arbetar.

108 Kursmål Efter godkänd kurs ska den studerande kunna: analysera enklare problem och designa lösningar, formulera en strategi för att hantera större problem, arbeta med grundläggande datastrukturer såsom listor av olika slag, systematiskt söka efter, tolka och förstå fel som uppstår, behärska de vanligaste primitiverna i imperativa programspråk, bl.a. Java, behärska grunderna i god programkonstruktion i bl.a. en objektorienterad programmeringsstil, överföra tidigare kunskaper till ett nytt programmeringsspråk, läsa, förstå och göra smärre ändringar i stora förelagda program, återanvända kod som konstruerats av andra, förstå olika roller i en programmeringsprocess, övergripande kunna förklara principerna för hur en dator är uppbyggd och arbetar.

109 Kursmål Efter godkänd kurs ska den studerande kunna: analysera enklare problem och designa lösningar, formulera en strategi för att hantera större problem, arbeta med grundläggande datastrukturer såsom listor av olika slag, systematiskt söka efter, tolka och förstå fel som uppstår, behärska de vanligaste primitiverna i imperativa programspråk, bl.a. Java, behärska grunderna i god programkonstruktion i bl.a. en objektorienterad programmeringsstil, överföra tidigare kunskaper till ett nytt programmeringsspråk, läsa, förstå och göra smärre ändringar i stora förelagda program, återanvända kod som konstruerats av andra, förstå olika roller i en programmeringsprocess, övergripande kunna förklara principerna för hur en dator är uppbyggd och arbetar.

110 Kursmål Efter godkänd kurs ska den studerande kunna: analysera enklare problem och designa lösningar, formulera en strategi för att hantera större problem, arbeta med grundläggande datastrukturer såsom listor av olika slag, systematiskt söka efter, tolka och förstå fel som uppstår, behärska de vanligaste primitiverna i imperativa programspråk, bl.a. Java, behärska grunderna i god programkonstruktion i bl.a. en objektorienterad programmeringsstil, överföra tidigare kunskaper till ett nytt programmeringsspråk, läsa, förstå och göra smärre ändringar i stora förelagda program, återanvända kod som konstruerats av andra, förstå olika roller i en programmeringsprocess, övergripande kunna förklara principerna för hur en dator är uppbyggd och arbetar.

111 Kursmål Efter godkänd kurs ska den studerande kunna: analysera enklare problem och designa lösningar, formulera en strategi för att hantera större problem, arbeta med grundläggande datastrukturer såsom listor av olika slag, systematiskt söka efter, tolka och förstå fel som uppstår, behärska de vanligaste primitiverna i imperativa programspråk, bl.a. Java, behärska grunderna i god programkonstruktion i bl.a. en objektorienterad programmeringsstil, överföra tidigare kunskaper till ett nytt programmeringsspråk, läsa, förstå och göra smärre ändringar i stora förelagda program, återanvända kod som konstruerats av andra, förstå olika roller i en programmeringsprocess, övergripande kunna förklara principerna för hur en dator är uppbyggd och arbetar.

112 Kursmål Efter godkänd kurs ska den studerande kunna: analysera enklare problem och designa lösningar, formulera en strategi för att hantera större problem, arbeta med grundläggande datastrukturer såsom listor av olika slag, systematiskt söka efter, tolka och förstå fel som uppstår, behärska de vanligaste primitiverna i imperativa programspråk, bl.a. Java, behärska grunderna i god programkonstruktion i bl.a. en objektorienterad programmeringsstil, överföra tidigare kunskaper till ett nytt programmeringsspråk, läsa, förstå och göra smärre ändringar i stora förelagda program, återanvända kod som konstruerats av andra, förstå olika roller i en programmeringsprocess, övergripande kunna förklara principerna för hur en dator är uppbyggd och arbetar.

113 Kursmål Efter godkänd kurs ska den studerande kunna: analysera enklare problem och designa lösningar, formulera en strategi för att hantera större problem, arbeta med grundläggande datastrukturer såsom listor av olika slag, systematiskt söka efter, tolka och förstå fel som uppstår, behärska de vanligaste primitiverna i imperativa programspråk, bl.a. Java, behärska grunderna i god programkonstruktion i bl.a. en objektorienterad programmeringsstil, överföra tidigare kunskaper till ett nytt programmeringsspråk, läsa, förstå och göra smärre ändringar i stora förelagda program, återanvända kod som konstruerats av andra, förstå olika roller i en programmeringsprocess, övergripande kunna förklara principerna för hur en dator är uppbyggd och arbetar.

114 Kursmål Efter godkänd kurs ska den studerande kunna: analysera enklare problem och designa lösningar, formulera en strategi för att hantera större problem, arbeta med grundläggande datastrukturer såsom listor av olika slag, systematiskt söka efter, tolka och förstå fel som uppstår, behärska de vanligaste primitiverna i imperativa programspråk, bl.a. Java, behärska grunderna i god programkonstruktion i bl.a. en objektorienterad programmeringsstil, överföra tidigare kunskaper till ett nytt programmeringsspråk, läsa, förstå och göra smärre ändringar i stora förelagda program, återanvända kod som konstruerats av andra, förstå olika roller i en programmeringsprocess, övergripande kunna förklara principerna för hur en dator är uppbyggd och arbetar.

115 Kursmål Efter godkänd kurs ska den studerande kunna: analysera enklare problem och designa lösningar, formulera en strategi för att hantera större problem, arbeta med grundläggande datastrukturer såsom listor av olika slag, systematiskt söka efter, tolka och förstå fel som uppstår, behärska de vanligaste primitiverna i imperativa programspråk, bl.a. Java, behärska grunderna i god programkonstruktion i bl.a. en objektorienterad programmeringsstil, överföra tidigare kunskaper till ett nytt programmeringsspråk, läsa, förstå och göra smärre ändringar i stora förelagda program, återanvända kod som konstruerats av andra, förstå olika roller i en programmeringsprocess, övergripande kunna förklara principerna för hur en dator är uppbyggd och arbetar.

116 Kursmål Efter godkänd kurs ska den studerande kunna: analysera enklare problem och designa lösningar, formulera en strategi för att hantera större problem, arbeta med grundläggande datastrukturer såsom listor av olika slag, systematiskt söka efter, tolka och förstå fel som uppstår, behärska de vanligaste primitiverna i imperativa programspråk, bl.a. Java, behärska grunderna i god programkonstruktion i bl.a. en objektorienterad programmeringsstil, överföra tidigare kunskaper till ett nytt programmeringsspråk, läsa, förstå och göra smärre ändringar i stora förelagda program, återanvända kod som konstruerats av andra, förstå olika roller i en programmeringsprocess, övergripande kunna förklara principerna för hur en dator är uppbyggd och arbetar.

117 Resultat Moment Innehåll % klara Pythonkramning Python vs Matlab 97 % Bubblesort Enkla datastrukturer 100 % Vanligaste ordet Algoritmer och strukturer 100 % Epostadresser Algoritmer och strukturer 98 % Assembler Datorns uppbyggnad 100 % Individuellt Python Enklare problem. Arbete under tidpress 95 % Javakramning Python vs Java 95 % Duellen Klassbegreppet 95 % Klockan Swing. Bibliotek. 98 % Biljard Realtidssimulering. 98 % Chat Design av större program 81% hittills Control Penetrera stora program

118 Nu är det snart slut! En föreläsning kvar: gästföreläsning om den mänskliga faktorn i programutveckling Tre labtillfällen Ett reservtillfälle 21/12 (boka tid med mig) Omprov i januari

119 Tack för mig! Vi ses i labbet!

Monday, November 16, Senaste Labben

Monday, November 16, Senaste Labben Senaste Labben Senaste Labben Strålande resultat (mv 4.6)! Senaste Labben Strålande resultat (mv 4.6)! God objektorientering? Senaste Labben Strålande resultat (mv 4.6)! God objektorientering? God kodhygien?

Läs mer

Klasser som datastrukturer

Klasser som datastrukturer Klasser som datastrukturer Ex: du vill skicka ett meddelande som består av text (String), avsändarnamn (String), klockslag (två int). Du kan förstås skicka alla dessa efter varandra. Bättre är att bygga

Läs mer

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

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

Läs mer

Programmeringsteknik II - HT18. Föreläsning 6: Grafik och händelsestyrda program med användargränssnitt (och Java-interface) Johan Öfverstedt

Programmeringsteknik II - HT18. Föreläsning 6: Grafik och händelsestyrda program med användargränssnitt (och Java-interface) Johan Öfverstedt Programmeringsteknik II - HT18 Föreläsning 6: Grafik och händelsestyrda program med användargränssnitt (och Java-interface) Johan Öfverstedt 18-09-28 1 Förra gången: Arv och klasshierarkier Vi såg hur

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

Subklasser och arv Inledning till grafik (JFrame och JPanel). Något om interface. Objektorienterad programvaruutveckling GU (DIT011) Subklasser

Subklasser och arv Inledning till grafik (JFrame och JPanel). Något om interface. Objektorienterad programvaruutveckling GU (DIT011) Subklasser Institutionen för Datavetenskap Göteborgs universitet HT2009 DIT011 Objektorienterad programvaruutveckling GU (DIT011) Föreläsning 5 Innehåll Subklasser och arv Inledning till grafik (JFrame och JPanel).

Läs mer

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

Tentamen. Datalogi I, grundkurs med Java 10p, 2D4112, Lördagen den 30 november 2002 kl , salar E33, E34 Tentamen Datalogi I, grundkurs med Java 10p, 2D4112, 2002-2003 Lördagen den 30 november 2002 kl 9.00 14.00, salar E33, E34 Inga hjälpmedel 30 poäng ger säkert godkänt, 40 poäng ger betyg 4 50 poäng ger

Läs mer

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

Objektorientering. Objekt och metoder. Objektorientering. Viktiga begrepp. Klass. Objekt. Deklarativ programmering och metoder Introduktion till objektorienterad programmering Markus Saers markus.saers@lingfil.uu.se orientering Deklarativ programmering Beskriver förutsättningarna för något Prolog Imperativ programmering

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

F8 - Arv. ID1004 Objektorienterad programmering Fredrik Kilander

F8 - Arv. ID1004 Objektorienterad programmering Fredrik Kilander F8 - Arv ID1004 Objektorienterad programmering Fredrik Kilander fki@kth.se Arv och subklasser Klasser innehåller attribut och beteenden En subklass ärver dessa från föräldern Detta ger: Återanvänd kod

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

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

Grundläggande programmering, STS 1, VT Sven Sandberg. Föreläsning 14 Grundläggande programmering, STS 1, VT 2007. Sven Sandberg Föreläsning 14 I torsdags & fredags: arrayer Deklaration, initiering, åtkomst Arrayer är referenser Arrayer som parametrar och returvärden Exempel

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

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

Lösningar till Fiktiv Tentamen på kursen. 2D4135 Objektorienterad programmering, design och analys med Java vt2004. Teoridel Lösningar till Fiktiv Tentamen på kursen 2D4135 Objektorienterad programmering, design och analys med Java vt2004 Teoridel T1) (4p) Förklara kort följande grundläggande begrepp inom objektorienterad programmering:

Läs mer

Föreläsning 8. Arv. Arv (forts) Arv och abstrakta klasser

Föreläsning 8. Arv. Arv (forts) Arv och abstrakta klasser Föreläsning 8 Arv och abstrakta klasser Arv Definierar en klass utifrån en redan existerande klass Den nya klassen utökar den ärvda klassen (extends) Den nya klassen behåller alla egenskaper som den gamla

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

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

UML. Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016 UML Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016 UML Unified Modelling Language Grafiskt modelleringsspråk för att beskriva olika aspekter av objektorienterade system. Vi kommer

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

Föreläsnings 11 - GUI, Händelsestyrda program, MVC

Föreläsnings 11 - GUI, Händelsestyrda program, MVC Föreläsnings 11 - GUI, Händelsestyrda program, MVC Josef Svenningsson Tisdag 20/11 Boken Denna föreläsning går igenom följande sektioner i boken: 10.1 och 10.2 11.1 Notera att kapitel 11 inte finns i boken

Läs mer

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

Abstrakt klass. DD2385 Programutvecklingsteknik Några bilder till föreläsning 4 31/ Exempel: Implementation av Schackpjäser. DD2385 Programutvecklingsteknik Några bilder till föreläsning 4 31/3 2017 Innehåll Abstrakta klasser Klasshierarki och typhierarki Polymorfism och dynamisk bindning Polymorfi-exempel: Schack Klassen Object

Läs mer

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

UML. Klassdiagr. Abstraktion. Relationer. Överskugg. Överlagr. Aktivitetsdiagram Typomv. Typomv. Klassdiagr. Abstraktion. Relationer. Översikt Klasshierarkier UML klassdiagram Relation mellan klasser mellan klasser och objekt Association ning ing andling Programmering tillämpningar och datastrukturer 2 UML UML Unified Modeling Language

Läs mer

Objektorienterad Programmering (TDDC77)

Objektorienterad Programmering (TDDC77) Objektorienterad Programmering (TDDC77) Föreläsning X: Klass diagram, inkapsling, arv Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2017 Outline Instansiering Åtkomst Abstrakt datatyp UML Överlagring

Läs mer

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

I STONE. I Variabler, datatyper, typkonvertering. I Logiska och matematiska uttryck. I Metoder-returvärde och parametrar. I Villkorssatser if/else Förkunskaper från tidigare föreläsningar: Objektorienterad Programmering (TDDC77) Föreläsning IX: Klasser och Objekt, Instantiering Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2015 I STONE I Variabler,

Läs mer

Tentamen i Objektorienterad programmering

Tentamen i Objektorienterad programmering CHALMERS TEKNISKA HÖGSKOLA Datavetenskap TDA547 Tentamen i Objektorienterad programmering Lördagen 12 mars 2011, 8.30 12.30. Jourhavande lärare: Björn von Sydow, tel 0762/981014. Inga hjälpmedel. Lösningar

Läs mer

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

Abstrakt klass. DD2385 Programutvecklingsteknik Några bilder till föreläsning 4 7/ Exempel: Implementation av Schackpjäser. DD2385 Programutvecklingsteknik Några bilder till föreläsning 4 7/4 2014 Innehåll Abstrakta klasser Klasshierarki och typhierarki Polymorfism och dynamisk bindning Polymorfi-exempel: Schack UML-översikt

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

Lektion Händelsehanterare

Lektion Händelsehanterare Lektion Händelsehanterare Händelsehanterare kallas även lyssnare. En lyssnare har som uppgift att ta hand om olika händelser som kan inträffa. För att lyssnaren skall reagera på händelser måste den registreras

Läs mer

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

UML. Översikt UML. Relationer mellan klasser. A är ett aggregerat av B:n. Kontor aggregat av Enheter. 12 olika diagramtyper, bl.a. Översikt UML Sekvensdiagram (dynamic structure) Informationsflöde genom programmet Användningsfall (use cases) Aktörers interaktion med systemet Paketdiagram Beroenden mellan paket abstrakta klasser Multipel

Läs mer

Klasshierarkier - repetition

Klasshierarkier - repetition Klasshierarkier - repetition Klasser kan byggas på redan denierade klasser, egna och/eller färdigskrivna, genom: I att klassobjekt används som attribut (instansvariabler): har-relation. Exempel: traksystemet

Läs mer

Classes och Interfaces, Objects och References, Initialization

Classes och Interfaces, Objects och References, Initialization Classes och Interfaces, Objects och References, Initialization Objekt-orienterad programmering och design (DIT953) Niklas Broberg/Johannes Åman Pohjola, 2018 Abstract class En abstract class är en class

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

Dagens program. Programmeringsteknik och Matlab. Objektorienterad programmering. Vad är vitsen med att ha både metoder och data i objekten?

Dagens program. Programmeringsteknik och Matlab. Objektorienterad programmering. Vad är vitsen med att ha både metoder och data i objekten? Programmeringsteknik och Matlab Övning 4 Dagens program Övningsgrupp 2 (Sal Q22/E32) Johannes Hjorth hjorth@nada.kth.se Rum 4538 på plan 5 i D-huset 08-790 69 02 Kurshemsida: http://www.nada.kth.se/kurser/kth/2d1312

Läs mer

TENTAMEN OOP

TENTAMEN OOP TENTAMEN OOP 2013-08-08 ANVISNINGAR Påbörja varje ny uppgift på nytt blad. Skriv endast på ena sidan av bladen. Skriv tydligt - oläsbara svar beaktas ej. BETYGSÄTTNING Max antal poäng är 30. För att bli

Läs mer

Föreläsning 2, vecka 6: Tillstånd i objektorienterade program (och mera interface)

Föreläsning 2, vecka 6: Tillstånd i objektorienterade program (och mera interface) TDA 548: Grundläggande Programvaruutveckling Föreläsning 2, vecka 6: Tillstånd i objektorienterade program (och mera interface) Magnus Myréen Chalmers, läsperiod 1, 2016-2017 Terminologi Vad är en klass?

Läs mer

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

Är en-relation. Har en-relation. Arv. Seminarium 2 Relevanta uppgifter. I exemplet Boll från förra föreläsningen gällde Föreläsning 7 "Har en"-relation Arv "Har en" "Är en" Superklassen Object Överskuggning Fordonsexempel Seminarium 2 Relevanta uppgifter Uppgift 31 I exemplet Boll från förra föreläsningen gällde följande

Läs mer

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

TDDE10 TDDE11, 725G90. Objektorienterad programmering i Java, Föreläsning 3 Erik Nilsson, Institutionen för Datavetenskap, LiU TDDE10 TDDE11, 725G90 Objektorienterad programmering i Java, Föreläsning 3 Erik Nilsson, Institutionen för Datavetenskap, LiU På denna föreläsning: Arv Polymorf UML (klassdiagram) 1 Arv Möt tre studenter

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) Att instansiera en klass. Objekt. Instansiering. Åtkomst. Abstrakt datatyp.

Outline. Objektorienterad Programmering (TDDC77) Att instansiera en klass. Objekt. Instansiering. Åtkomst. Abstrakt datatyp. Objektorienterad Programmering (TDDC77) Föreläsning X: Klass diagram, inkapsling, arv Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2017 Att instansiera en klass Objekt I Man instansierar (skapar

Läs mer

Två designmönster, MVC och Observer/Observable. Objektorienterad programvaruutveckling GU (DIT011)

Två designmönster, MVC och Observer/Observable. Objektorienterad programvaruutveckling GU (DIT011) Institutionen för Datavetenskap Göteborgs universitet HT2009 DIT011 Objektorienterad programvaruutveckling GU (DIT011) Innehåll Föreläsning 8 Två designmönster, MVC och Observer/Observable. Designrekommendation

Läs mer

Malmö högskola 2008/2009 CTS

Malmö högskola 2008/2009 CTS Laboration 8 Avsikten med laborationen är att du lära dig skapa objekt med hjälp av klasser. Detta är en introduktion till ett objektorienterat tankesätt. Med hjälp av detta tankesätt kan du så småningom

Läs mer

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

Java-syntax (arv) Exempel: public class Crow extends Bird {... } Jämför med Lab 1: public class FirstApp extends Frame {... } Föreläsning 3 Arv Kategorisering Stora program leder till många klasser (tänk liknelsen med en affär med många varor). Att dela in saker i kategorier är en vanlig strategi för att hantera stora komplexa

Läs mer

Objektorienterad Programkonstruktion. Föreläsning 4 8 nov 2016

Objektorienterad Programkonstruktion. Föreläsning 4 8 nov 2016 Objektorienterad Programkonstruktion Föreläsning 4 8 nov 2016 Nästade klasser I Java går det att deklarera en klass inuti en annan klass. Vi kallar detta för att en yttre klass innehåller en inre klass.

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

För att hitta filen gå till mappen NetBeansProjects. Välj undermappen med rätt projekt, och sedan undermapp dist. Där ligger.jar-filen.

För att hitta filen gå till mappen NetBeansProjects. Välj undermappen med rätt projekt, och sedan undermapp dist. Där ligger.jar-filen. Java utan netbeans Du har gjort ett program i netbeans Hur exportera det så att andra kan köra det utan att använda netbeans? Välj projektet som main project Högerklicka på det och välj Clean and Build

Läs mer

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

Classes och Interfaces, Objects och References Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016 Classes och Interfaces, Objects och References Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016 Abstract class En abstract class är en class som inte kan skapa några objekt. Syfte:

Läs mer

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

Innehåll. dynamisk bindning. och programmering CRC) u Arv, polymorfi och Innehåll u OOP snabbintroduktion u Datatyper u Uttryck u Satser u Arv (intro) u Programvaruutveckling och programmering u Klassdesign och metodik (UML, CRC) u Arv, polymorfi och dynamisk bindning u Fält

Läs mer

Tentamen för kursen Objektorienterad programvaruutveckling GU (DIT010)

Tentamen för kursen Objektorienterad programvaruutveckling GU (DIT010) Tentamen för kursen Objektorienterad programvaruutveckling GU (DIT010) Tid: 2:a september 200, klockan 8:30-12:30. Plats: V Ansvarig lärare: Katarina Blom, tel 772 10 0. Läraren besöker tentamen kl 9:30

Läs mer

Objektorienterad Programkonstruktion. Föreläsning 6 23 nov 2015

Objektorienterad Programkonstruktion. Föreläsning 6 23 nov 2015 Objektorienterad Programkonstruktion Föreläsning 6 23 nov 2015 Designmönster Färdiga "recept" för att lösa (del-)problem i struktureringen av ens program Mönster kan beskriva små komponenter eller stora

Läs mer

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

Föreläsningsmaterial (Arv) Skrivet av Andreas Lund Föreläsningsmaterial (Arv) Skrivet av Andreas Lund Inledning Arv är ett begrepp som är tätt förknippat med objektorientering. Principerna bakom arv är grundade i högst vardagliga relationer mellan olika

Läs mer

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

Idag. Javas datatyper, arrayer, referenssemantik. Arv, polymorfi, typregler, typkonvertering. Tänker inte säga nåt om det som är likadant som i C. Idag Javas datatyper, arrayer, referenssemantik Klasser Arv, polymorfi, typregler, typkonvertering Strängar Tänker inte säga nåt om det som är likadant som i C. Objectorienterad programmering Sida 1 Ett

Läs mer

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

Idag. statiska metoder och variabler. private/public/protected. final, abstrakta klasser, gränssnitt, delegering. wrapper classes Idag statiska metoder och variabler private/public/protected final, abstrakta klasser, gränssnitt, delegering wrapper classes ett lite större exempel Objectorienterad programmering Sida 1 Vad vi vet om

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

Tentamen ID1004 Objektorienterad programmering May 29, 2012

Tentamen ID1004 Objektorienterad programmering May 29, 2012 Omtentamen för ID1004 Objektorienterad programmering HT11, 29 maj 2012, 09-13 Denna tentamen examinerar 3 högskolepoäng av kursen. Inga hjälpmedel är tillåtna. Tentamen består av 12 frågor. Varje fråga

Läs mer

Imperativ programmering. Föreläsning 4

Imperativ programmering. Föreläsning 4 Imperativ programmering 1DL126 3p Föreläsning 4 Imperativa paradigmer Ostrukturerad programmering Strukturerad programmering Procedurell programmering Objektorienterad programmering Klassbaserad programmering

Läs mer

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

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

Läs mer

Laboration 1 - Grunderna för OOP i Java

Laboration 1 - Grunderna för OOP i Java Uppdaterad: 2006-08-31 Laboration 1 - Grunderna för OOP i Java Inledning Laborationen går ut på att lära sig grunderna för objektorienterad programmering, samt motsvarande språkkonstruktioner i Java. Labben

Läs mer

Kort om klasser och objekt En introduktion till GUI-programmering i Java

Kort om klasser och objekt En introduktion till GUI-programmering i Java Kort om klasser och objekt En introduktion till GUI-programmering i Java Klasser En klass är en mall för hur man ska beskriva på något. Antag att vi har en klass, Bil. Den klassen innehåller en lista på

Läs mer

Föreläsning 13 Innehåll

Föreläsning 13 Innehåll Föreläsning 13 Innehåll Arv Repetition Om tentamen Datavetenskap (LTH) Föreläsning 13 HT 2017 1 / 32 Diskutera Här är början på klassen MemoryWindow som använts på en lab. Vad kan menas med extends SimpleWindow?

Läs mer

Objektorienterad Programmering (TDDC77)

Objektorienterad Programmering (TDDC77) Objektorienterad Programmering (TDDC77) Föreläsning X: Klass diagram, inkapsling, arv Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2016 Outline Introduktion HT2 Åtkomst Abstrakt datatyp UML Överlagring

Läs mer

LÖSNINGSFÖRSLAG Programmeringsteknik För Ing. - Java, 5p

LÖSNINGSFÖRSLAG Programmeringsteknik För Ing. - Java, 5p UMEÅ UNIVERSITET Datavetenskap 010530 LÖSNINGSFÖRSLAG Programmeringsteknik För Ing. - Java, 5p Betygsgränser 3 21,5-27 4 27,5-33,5 5 34-43 Uppgift 1. (4p) Hitta de fel som finns i nedanstående klass (det

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

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

DD2385 Programutvecklingsteknik Några bilder till föreläsning 1 24/ Kursöversikt Javarepetition/Javaintroduktion DD2385 Programutvecklingsteknik Några bilder till föreläsning 1 24/3 2014 Innehåll Kursöversikt Javarepetition/Javaintroduktion UML - klassdiagram-introduktion i anslutning till Java-exemplen Kursmål,

Läs mer

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

Föreläsning 5-6 Innehåll. Exempel på program med objekt. Exempel: kvadratobjekt. Objekt. Skapa och använda objekt Skriva egna klasser Föreläsning 5-6 Innehåll Exempel på program med objekt Skapa och använda objekt Skriva egna klasser public class DrawSquare { public static void main(string[] args) { SimpleWindow w = new SimpleWindow(600,

Läs mer

Föreläsning 14: Grafik & mera händelsehantering

Föreläsning 14: Grafik & mera händelsehantering TDA 545: Objektorienterad programmering Föreläsning 14: Grafik & mera händelsehantering Magnus Myréen Chalmers, läsperiod 1, 2015-2016 Idag Idag: grafik läs kap 17 Viktigt i denna föreläsning: att rita

Läs mer

TENTAMEN OOP

TENTAMEN OOP TENTAMEN OOP 2014-01-19 ANVISNINGAR Påbörja varje ny uppgift på nytt blad. Skriv endast på ena sidan av bladen. Skriv tydligt - oläsbara svar beaktas ej. BETYGSÄTTNING Max antal poäng är 30. För att bli

Läs mer

Java, klasser, objekt (Skansholm: Kapitel 2)

Java, klasser, objekt (Skansholm: Kapitel 2) Java, klasser, objekt (Skansholm: Kapitel 2) Uppsala Universitet 11 mars 2005 Objectorienterad programmering Sida 1 Vad är en klass? En klass är ett sätt att beskriva en mängd objekt och deras gemensamma

Läs mer

Föreläsning 5-6 Innehåll

Föreläsning 5-6 Innehåll Föreläsning 5-6 Innehåll Skapa och använda objekt Skriva egna klasser Datavetenskap (LTH) Föreläsning 5-6 HT 2017 1 / 32 Exempel på program med objekt public class DrawSquare { public static void main(string[]

Läs mer

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

Arv: Fordonsexempel. Arv. Arv: fordonsexempel (forts) Arv: Ett exempel. En klassdefinition class A extends B {... } En klassdefinition class A extends B {... Arv definierar en klass A som ärver av B. Klassen A ärver alla fält och metoder som är definierade för B. A är en subklass till B. B är en superklass till A. class

Läs mer

Det finns en referensbok (Java) hos vakten som du får gå fram och läsa men inte ta tillbaka till bänken.

Det finns en referensbok (Java) hos vakten som du får gå fram och läsa men inte ta tillbaka till bänken. Tentamen Programmeringsteknik I 2015-03-19 Skrivtid: 14:00 19:00 Hjälpmedel: Java-bok Tänk på följande Det finns en referensbok (Java) hos vakten som du får gå fram och läsa men inte ta tillbaka till bänken.

Läs mer

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

Outline. Objektorienterad Programmering (TDDC77) Laborationsserie del två. Vad händer under HT2. Introduktion HT2 UML. Outline Objektorienterad Programmering (TDDC77) Föreläsning X: Klass diagram, inkapsling, arv Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2016 Vad händer under HT2 Laborationsserie del två I Klasser

Läs mer

DD1342 Programkonstruktion för F1,

DD1342 Programkonstruktion för F1, DD1342 Programkonstruktion för F1, 2007-2008 Lappskrivning 2 Tisdag 5/2 2008 kl 14.15 15.00 Endast ett svar är rätt på varje fråga! Om mer än ett svar givits blir det noll poäng på frågan. Alla skriftliga

Läs mer

Inkapsling tumregler. Åtkomstmodifikatorer, instantiering, referenser, identitet och ekvivalens, samt klassvariabler. public och private

Inkapsling tumregler. Åtkomstmodifikatorer, instantiering, referenser, identitet och ekvivalens, samt klassvariabler. public och private Inkapsling tumregler Åtkomstmodifikatorer, instantiering, referenser, identitet och ekvivalens, samt klassvariabler Tobias Wrigstad (baserat på material från Tom Smedsaas) 5 november 2010 1. Man skall

Läs mer

PROGRAMMERINGSTEKNIK TIN212

PROGRAMMERINGSTEKNIK TIN212 Data och Informationsteknik / Computer Science and Engineering Chalmers University of Technology and University of Gothenburg Robin Adams Göteborg 8 June 2018 PROGRAMMERINGSTEKNIK TIN212 Dag: Fredag Datum:

Läs mer

public och private Obs: private inte skyddar mot access från andra objekt i samma klass.

public och private Obs: private inte skyddar mot access från andra objekt i samma klass. public och private En metod som är public får anropas från alla metoder i alla klasser. Ett attribut som är public får avläsas och ändras från alla metoder i alla andra klasser. En metod som är private

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

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

Tentamen. Lösningsförslag

Tentamen. Lösningsförslag Sida 1/8 Tentamen Grundläggande programmering i Java A 5p, DTAA32 2002-03-22 Lösningsförslag Uppgift 1 ( 3p ) Utskriften blir: Skriv in ett tal 24 47 48 intal=471 Uppgift 2 ( 6p ) a.) b.) c.) d.) e.) falskt

Läs mer

F4. programmeringsteknik och Matlab

F4. programmeringsteknik och Matlab Programmeringsspråk Föreläsning 4 programmeringsteknik och Matlab 2D1312/ 2D1305 Introduktion till Java Kompilering, exekvering, variabler, styrstrukturer 1 Ett program är en eller flera instruktioner

Läs mer

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

Typhierarkier del 1 Gränssnitt, ärvning mellan gränssnitt, ärvning mellan klasser TDDD78, TDDE30, 729A85 jonas.kvarnstrom@liu.se 2019 Typhierarkier del 1 Gränssnitt, ärvning mellan gränssnitt, ärvning mellan klasser Hur används hierarkier för att modellera nära relaterade typer? Nu:

Läs mer

Föreläsning 15: Repetition DVGA02

Föreläsning 15: Repetition DVGA02 Föreläsning 15: Repetition DVGA02 Vad handlar kursen om? Kursen kan i grova drag delas upp i tre delar: 1. Objekt-orienterad programmering 2. Grafiska användargränssnitt 3. Datastrukturer Dessutom genomsyras

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

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

Outline. Objektorienterad Programmering (TDDC77) Åsidosättning. Signatur. Åsidosättning. Abstrakta klasser. Ahmed Rezine. Objektorienterad Programmering (TDDC77) Föreläsning XI: åsidosättning, gränssnitt, uppräkning, hierarkier Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2016 Signatur public static int parseint (

Läs mer

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

Introduktion. Klasser. TDP004 Objektorienterad Programmering Fö 2 Objektorientering grunder Introduktion TDP004 Objektorienterad Programmering Fö 2 Objektorientering grunder OO är den mest använda programmeringsparadigmen idag, viktigt steg att lära sig och använda OO. Klasser är byggstenen i

Läs mer

Lite om felhantering och Exceptions Mer om variabler och parametrar Fält (eng array) och klassen ArrayList.

Lite om felhantering och Exceptions Mer om variabler och parametrar Fält (eng array) och klassen ArrayList. Institutionen för Datavetenskap Göteborgs universitet HT2009 DIT011 Objektorienterad programvaruutveckling GU (DIT011) Föreläsning 3 Innehåll Lite om felhantering och Exceptions Mer om variabler och parametrar

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

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

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

Vad är ett objekt? Tillstånd och beteende. Vad är ett objekt? Exempel

Vad är ett objekt? Tillstånd och beteende. Vad är ett objekt? Exempel Objekt Instansvariabler Instansmetoder Klassvariabler Klassmetoder Inkapsling Föreläsning 6 Vad är ett objekt? Ett objekt har egenskaper, som kallas för objektets attribut Egenskaperna beskriver tillsammans

Läs mer

OOP Objekt-orienterad programmering

OOP Objekt-orienterad programmering OOP F10:1 OOP Objekt-orienterad programmering Föreläsning 10 Mer om arv och klasshierarkier Interface Hierarkier - många nivåer OOP F10:2 Djur Rovdjur Hovdjur Fåglar Fiskar Björn Kattdjur Ko Lamm Hjort

Läs mer

ITK:P1 Föreläsning 1. Programmering. Programmeringsspråket Java. Stark typning Explicit typning Strukturerat Hög säkerhet

ITK:P1 Föreläsning 1. Programmering. Programmeringsspråket Java. Stark typning Explicit typning Strukturerat Hög säkerhet ITK:P1 Föreläsning 1 Att programmera i språket Java DSV Peter Mozelius Programmering Olika typer av programmering som t ex: o Imperativ programmering (C, Pascal m fl) o Funktionell programmering (Lisp,

Läs mer

Tentamen för TDA540 Objektorienterad Programmering. Institutionen för Datavetenskap CTH HT-17, TDA540. Dag: , Tid:

Tentamen för TDA540 Objektorienterad Programmering. Institutionen för Datavetenskap CTH HT-17, TDA540. Dag: , Tid: Tentamen för TDA540 Objektorienterad Programmering Institutionen för Datavetenskap CTH HT-17, TDA540 Dag: 2018-01-13, Tid: 14.00-18.00 Ansvarig: Examinator: Alex Gerdes Carlo A. Furia Förfrågningar: Alex

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

DI-institutionen Sid 1 av 6 Hans-Edy Mårtensson Sten Sundin

DI-institutionen Sid 1 av 6 Hans-Edy Mårtensson Sten Sundin DI-institutionen Sid 1 av 6 Hans-Edy Mårtensson Sten Sundin TENTAMEN I IKB007 INTERNETPROGRAMMERING MED JAVA för SY2 1999-03-17, kl 14.00-18.00 Hjälpmedel: En lärobok i Java programmering Återlämningstillfälle:

Läs mer

Administrativt. Programmeringsteknik för I1. Dagens program. Objektorienterad programmering

Administrativt. Programmeringsteknik för I1. Dagens program. Objektorienterad programmering Programmeringsteknik för I1 Övning 2 Administrativt Övningsgrupp 2 (Sal E32/D32) Johannes Hjorth hjorth@nada.kth.se Rum 4538 på plan 5 i D-huset 08-790 69 02 Kontrollera att ni har fått Lab2 inrapporterad

Läs mer

Arv och polymorfi. Lite terminologi; Basklass eller superklass: En klass som fungerar som bas för vårt arv. Vi skapar nya klasser utifrån den.

Arv och polymorfi. Lite terminologi; Basklass eller superklass: En klass som fungerar som bas för vårt arv. Vi skapar nya klasser utifrån den. Arv och polymorfi Arv och polymorfi är två centrala begrepp i objektorientering. Arvsmekanismen innebär att vi kan skapa nya klasser utifrån redan existerande klasser. Man gör detta med hjälp av nyckelordet

Läs mer

Tentamen. DD2385 Programutvecklingsteknik vt Fredagen den 5 juni 2009 kl Inga hjälpmedel utom penna, sudd och linjal

Tentamen. DD2385 Programutvecklingsteknik vt Fredagen den 5 juni 2009 kl Inga hjälpmedel utom penna, sudd och linjal Tentamen DD2385 Programutvecklingsteknik vt 2009 Fredagen den 5 juni 2009 kl 10.00 13.00 Inga hjälpmedel utom penna, sudd och linjal Tentans del I omfattar 22 poäng. Del II har också 22 poäng Preliminära

Läs mer

Föreläsning 8 Programmeringsteknik och Matlab 2D1312/2D1305. Klass Object, instans av klass public/private Klassvariabler och klassmetoder

Föreläsning 8 Programmeringsteknik och Matlab 2D1312/2D1305. Klass Object, instans av klass public/private Klassvariabler och klassmetoder Föreläsning 8 Programmeringsteknik och Matlab 2D1312/2D1305 Klass Object, instans av klass public/private Klassvariabler och klassmetoder 1 Array och ArrayList Arrayer och ArrayList är till för att innehålla

Läs mer

Exempel på användning av arv: Geometriska figurer

Exempel på användning av arv: Geometriska figurer (9 maj 2014 Klasshierarkier 1 ) Exempel på användning av arv: Geometriska figurer Uppgift: Skriv ett program som kan hantera några olika geometrisk figurer: linjer, cirklar och rektanglar. (9 maj 2014

Läs mer

Föreläsning 3-4 Innehåll. Diskutera. Metod. Programexempel med metod

Föreläsning 3-4 Innehåll. Diskutera. Metod. Programexempel med metod Föreläsning 3-4 Innehåll Diskutera Vad gör programmet programmet? Föreslå vilka satser vi kan bryta ut till en egen metod. Skriva egna metoder Logiska uttryck Algoritm för att beräkna min och max Vektorer

Läs mer