TDDD78 Viktiga begrepp i programmering / objektorientering
|
|
- Emil Svensson
- för 5 år sedan
- Visningar:
Transkript
1 TDDD78 Viktiga begrepp i programmering / objektorientering
2
3 Repetition 3 En variabel består av: Ett symboliskt namn i programkoden En lagringsplats i minnet, som kan innehålla variabelns värde Python: längd = 10 höjd = 5 hälsning = "hello" färger = [red, green] Programkod längd höjd hälsning färger Minne vid körning 10 5 "Hello" [red, green]
4 Minnesadresser 4 Programkod Minne vid körning Varje värde "startar" på en specifik minnesaddress Minnesadresser hanteras "bakom kulisserna" "int längd = 10;" "lagra 32-bitars heltal 10 på adress " int: längd int: höjd String: hälsning List: färger "Hello" [red, green]
5 Minnesadresser 2 5 Programkod Minne vid körning I vissa språk kan man få veta minnesadresserna C: höjd == 5 &höjd == ("adressen till höjd") int: längd int: höjd
6 Pekare (1) 6 Programkod Minne vid körning En variabel av pekartyp kan innehålla en adress C: "pekare till int" heter "int*" int* höjdpekare = &höjd; Värdet blir adressen int: längd int: höjd int*: höjdpekare Värdet är adressen till ett annat värde i minnet
7 Pekare (2): Tilldelning 7 Programkod Minne vid körning Ändra pekarens värde ändra vart den pekar C: int* höjdpekare = &höjd; höjdpekare = &längd; int: längd int: höjd int*: höjdpekare
8 Pekare (3): Ändra i utpekat värde 8 Programkod Minne vid körning För att ändra i värdet på den utpekade adressen krävs alltså annan syntax C: int* höjdpekare = &höjd; *höjdpekare = 14; int: längd int: höjd int*: höjdpekare "*höjdpekare = 14" definieras som "läs pekarens värde (10004), lagra 14 på den adressen"
9
10 Pekare i Java 10 Namn Värde i minnet I Java är en objektvariabel alltid en pekare! Circle mycircle = new Circle(10, 20, 30); Circle: mycircle Skapa variabeln, låt den peka på obj. Object (data) header: x 10 y 20 r Skapa objektet (minne, konstruktor, ) mycircle är pekaren (4/8 bytes), inte objektet! Java gömmer dess numeriska värde (irrelevant för vår kod): Vi kan inte få fram talet 49152
11 Pekare i Java (2): Exempel 11 Namn Circle: c1 Värde i minnet Två cirklar: Circle c1 = new Circle(1,1,1); Circle c2 = new Circle(2,2,2); 5000 Circle: c2 Object (data) header: x 1 y 1 r Object (data) header: x 2 y 2 r
12 Pekare i Java (3): Tilldelning 12 Namn Circle: c1 Circle: c2 Värde i minnet Object (data) header: x 1 y 1 r c2 = c1; c1, c2 är pekare Tilldela c2 värdet av c1 sätt c2 till ändra vart c2 pekar Kommer inte att kopiera själva cirkeln, fält för fält! Object (data) header: x 2 y 2 r Kvarvarande objekt som ingen pekar på inte ett problem i Java (skräpsamling)
13 Pekare i Java (4): Ändra i utpekat värde 13 Namn Circle: mycircle Värde i minnet Kan ändra i värdet (objektet) som lagras på utpekad adress Ändrar aldrig hela objektet, alltid en medlem i taget Java: objekt punkt medlem mycircle.x = 4711; Object (data) header: x 4711 y 20 r mycircle.x x-värdet i det objekt som pekas ut av mycircle
14 Pekare i Java (5): Tilldelning 14 Namn Circle: c1 Värde i minnet c2.x = 100; Nu är c1.x också 100! Circle: c2 Object (data) header: x 100 y 1 r
15 Exempel: Trädstruktur 15 Trädstruktur: Nod 1 Nod 2 Nod 3 Nod 4 Nod 5 Alla noder ska veta vem föräldern är Kan inte innehålla föräldern men kan ha en pekare till den! class TreeNode { String name; // Pekare till en sträng TreeNode parent; // Pekare till en föräldernod
16 Exempel: Trädstruktur (2) 16 Nod 1 Minne name: Nod Nod 2 Nod 3 name: Nod parent: Med pekare: Många kan peka på samma föräldernod trots att noden bara lagras en gång name: Nod 3 parent:
17 Exempel: Trädstruktur (3) 17 Men nod 1 har ju ingen förälder! Vad ska parent ha för värde? Minne name: Nod 1 parent:??? name: Nod parent: name: Nod parent: 10000
18 Null-pekare 18 Alla objektpekare kan ha specialvärdet null Pekar "ingenstans" "inte applicerbart": Noden har ingen förälder "vi vet inte än" Minne name: Nod 1 parent: null Representeras ofta internt som adressen 0 Spelar ingen roll för oss I Java ser vi bara värdet null name: Nod 2 parent: Med pekare: Kan lätt ange avsaknad av värde name: Nod 3 parent:
19 Null-pekare Vad kan man göra om pekarens värde är null? 19 Använda själva pekarvariabeln if (this.parent == other.parent) // Jämför pekarnas värden (0 == 49152), // tittar inte efter något objekt // (Motsvarar operatorn "is" i Python) painter.draw(circle1) // Om circle1 == null, // får parametern till draw också värdet null Inte använda fälten och metoderna i objektet den pekar på! Den pekar ju inte på något objekt! this.parent = null; this.parent.name = "Hello"; // OK // Fel vid körning: NullPointerException parent:
20
21 Sammansättning 1 Anta att vi har en Point-klass: public class Point { private double x, y; public Point(double x, double y) { this.x = x; this.y = y; public double getx() { return x; public double gety() { return y; public double getdistfromorigin() { return Math.sqrt(x*x + y*y); 21
22 Sammansättning 2 Nu vill vi skapa en cirkelklass två alternativ: public class Circle { // Alla fält är primitiva typer, som tidigare private double x, y, r; public Circle(double x, double y, double r) { this.x = x; this.y = y; this.r = r; Implementera allt från början class Circle { // Fält kan vara objekt private Point center; private double r; public Circle(Point center, double r) { this.center = center; this.r = r; Använd existerande punktklassen! Sammansättning = composition 22
23 Sammansättning 3 Med sammansättning: En cirkel har en punkt, eller består av en punkt (och en radie) Återanvändning av existerande kod (Point kunde vara komplicerad) Mindre upprepning bra! 23 Exempel i labben: Listor finns redan En kö har en lista där den kan lagra sina element Använd existerande punktklassen! class Circle { // Fält kan vara objekt private Point center; private double r; public Circle(Point center, double r) { this.center = center; this.r = r;
24 Sammansättning och delegering 24 Om man vill ge tillgång till "komponentens" funktionalitet: Delegera! Använd existerande punktklassen! class Circle { // Fält kan vara objekt private Point center; private double r; public Circle(Point center, double r) { this.center = center; this.r = r; public double getdistfromorigin() { return center.getdistfromorigin(); Vad är cirkelns avstånd till origo? Samma som punktens!
25 Sammansatt objektstruktur 1 I vissa språk: Sammansatta objekt är sammansatta i minnet class Circle { Point center; double radius; Circle c1 = new Circle(); 25 c1 Object header: x y (data) radius "Point-delen" 0.0 av en cirkel
26 Sammansatt objektstruktur 2 Men javas objektvariabler är alltid pekare! Ett "sammansatt" objekt består alltid av flera fullständiga objekt class Circle { En Circle består av Point center; en Point-pekare (inte en Point) double radius; en double Circle c1 = new Circle(); 26 c1 Object header: center radius (data) 0.0 Object header: x y (data)
27 Sammansatt objektstruktur 3 Detta har alla konsekvenser som vi såg för pekare tidigare Exempel: Två cirklar kan ha samma centrumobjekt Point center = new Point(10, 20); Circle c1 = new Circle(center, 7); Circle c2 = new Circle(center, 12); 27 c1 Object header: center radius (data) 7.0 Object header: x y (data) c2 Object header: center radius (data) 12.0
28 Vad ska {klassen, metoden, fältet uppfylla?
29 Kontrakt Kontrakt: Överenskommelse som anger Vad som ska tillhandahållas Vad som förväntas i utbyte Allmänna regler runt utbytet 29 Inom objektorienterad programmering: Vilka värden kan en metod ta emot? Vad garanterar metoden att den gör, om den får sådana värden? Vad returnerar den? Vad garanterar en klass angående sitt tillstånd och beteende?
30 Kod kan innehålla (vissa) formella kontrakt 30 class Circle { private double x, y, r; public Circle(double x, double y, double r) { this.x = x; this.y = y; this.r = r; public double getarea() { return Math.PI * this.r * this.r ; Krav på input: Parametrarna måste vara av typ double Löfte om resultattyp: Returnerar alltid double Följer direkt från manifest typning Så vanligt att man oftast inte ens ser det som kontrakt
31 Varför räcker inte koden? 31 class Circle { private double x, y, r; public Circle(double x, double y, double r) { this.x = x; this.y = y; this.r = r; public double getarea() { return Math.PI * this.r * this.r ; + Koden definierar exakt vad programmet gör! Varför räcker inte detta?
32 Varför räcker inte koden? (2) 32 class Circle { private double x, y, r; public Circle(double x, double y, double r) { this.x = x; this.y = y; this.r = r; public double getarea() { return Math.PI * this.r * this.r ; Svårt att inse alla konsekvenser av tusentals rader kod + Kontraktet bör sammanfatta vad som garanteras, krävs
33 Varför räcker inte koden? (3) Vi är inte intresserade av vad koden gör! Mycket viktig konceptuell skillnad mellan: 33 Vad vi faktiskt gör (koden) Implementationsdetaljer Implementationsdetaljer Vad vi lovar att göra, och att fortsätta göra i all evighet (kontraktet) Buggar Buggar
34 Exempel 1: Sortering Exempel: Sortera strängar Input: [diverse, test, input, något, sortera] 34 Nu vill vi sortera: Primärt efter längd Sekundärt, om orden är lika långa i bokstavsordning Vi vill alltså få: [test, input, något, diverse, sortera] 5 tecken 7 tecken bokstavsordning inom varje grupp
35 Exempel 1: Metod 35 En metod: Börja med en lista ord [diverse, test, input, något, sortera] Sortera i bokstavsordning utan att tänka på längd [diverse, input, något, sortera, test] Sortera i längdordning utan att tänka på bokstäverna Generellt finns 4 möjliga resultat: [test, input, något, diverse, sortera] [test, något, input, diverse, sortera] [test, input, något, sortera, diverse] [test, något, input, sortera, diverse] Vi tänker bara på längden Ord med samma längd kan kastas om Med stabil sortering: Byt bara ordning på två element om det krävs [test, input, något, diverse, sortera] input fortfarande före något diverse fortfarande före sortera Löser vårt problem!
36 Exempel 1: Vad kan vi se i koden? Anta att en lista kan sortera sig Men det finns inget uttryckligt kontrakt måste läsa koden class List { void sort() { for (int i=0; i < strings.length-1; i++){ for (int j=1; j < strings.length-i; j++){ if (strings[j-1].compareto(strings[j]) > 0) { String temp = strings[j-1]; strings[j-1] = strings[j]; strings[j] = temp; 36 Aha sort() kör bubble sort, som är stabil! Då utnyttjar vi det!
37 Exempel 1: Vad är tillåtet? Senare: Någon vill förbättra listklassen! Bubbelsortering är ineffektivt 37 class List { Om vi har detta Får vi skriva om så här? class List { void sort() { // Utför bubble sort // (råkar vara stabil) void sort() { // Utför heap sort // (snabbare, men inte stabil) // Andra kanske förlitar sig på egenskaper koden "råkade" ha dilemma!
38 Kontrakt 1 Undvik genom kontrakt! Vissa språk har formellt stöd t.ex. Eiffel set_hour (new_hour: INTEGER) -- Set `hour' to `new_hour' require valid_argument: 0 <= new_hour and new_hour <= 23 do hour := new_hour ensure hour_set: hour = new_hour end 38 precondition postcondition Ofta får man istället använda dokumentationen Idealet: Bara det som står i kontraktet gäller titta aldrig på koden! class List { /** Sorterar listan efter ordlängd. */ void sort() { Här står inget om stabilitet. Då kan vi inte förutsätta det!
39 Kontrakt 2 Ju tydligare, desto bättre 39 class List { /** Sorterar listan efter ordlängd. Stabilitet garanteras inte. */ void sort() { Beskriv gärna mer om vad koden lovar och inte lovar
40 Exempel 2: Vad utlovas? Får jag ("Cirkel-användare") skicka in en negativ radie här? Ser inget som skulle orsaka problem Men vem vet hur klassen kan ändras i framtiden? 40 class Circle { double x, y, r; Circle(double x, double y, double r) { this.x = x; this.y = y; this.r = r;
41 Exempel 2: Vad är tillåtet? Får jag ("Cirkel-utvecklare") ändra min kod så här? Verkar rimligt att cirklar ska ha positiv radie Men kod som förut fungerade kommer nu att krascha! 41 class Circle { double x, y, r; class Circle { double x, y, r; Circle(double x, double y, double r) { this.x = x; this.y = y; this.r = r; Circle(double x, double y, double r) { if (r <= 0.0) throw ; this.x = x; this.y = y; this.r = r;
42 Exempel 2: Kontrakt? Med kontrakttänkande: 42 class Circle { double x, y, r; /** Skapar en cirkel med angivna koordinater och radie. */ Circle(double x, double y, double r) { this.x = x; this.y = y; this.r = r; Metoden tar emot double. Det står inget om begränsningar. Alltså lovar den att klara godtycklig double.
43 Exempel 2: Kontrakt? Med kontrakttänkande: 43 class Circle { double x, y, r; /** Skapar en cirkel med angivna koordinater och radie. Radien måste vara strikt positiv. */ Circle(double x, double y, double r) { this.x = x; this.y = y; this.r = r; Lovar att klara strikt positiva radier. Kräver sådan input. Skickar du in annat är beteendet odefinierat (kan krascha, )
44 Grundregel för kontrakt: Dokumentera alltid vad koden kräver och vad den lovar
45 Relaterad grundregel: Dokumentera inte vad koden gör utan vad den ska göra (och gärna varför) Vi återkommer till kontrakt och löften flera gånger!
46
47 API API: Application Programming Interface Specifikation av hur en applikation kan använda / kommunicera med t.ex. operativsystemet, andra program, klassbibliotek, osv. 47
48 Javas klassbibliotek 48 Javas standardiserade klassbibliotek "Java Standard Edition API" 4241 färdiga klasser inom många områden Standardiserade fält, metoder,
49 Dokumentation Dokumentation: Skriven för att kunna implementeras igen av någon annan, bara genom att utgå ifrån beskrivningen! API-beskrivningen ska vara ett fullständigt kontrakt för exakt vad som krävs av varje klass och metod 49
50
51 Annoteringar 1 51 Annotateringar låter oss addera metadata till deklarationer Metadata inte kod, utan information om kod Associeras med klasser, metoder, variabler, parametrar, import javax.annotations.generated; public class MyGUI private JButton private void setup() { Medlemmarna har genererats av ett verktyg (t.ex. en GUI-byggare)
52 Annoteringar 2 Exempel: Kod som är deprecated Gammal, föråldrad, bör inte användas längre Deprecate = uttrycka ogillande void deprecatedmethod() { Används metoden ändå: Kompilatorn kan varna void usemeinstead() {
53 Annoteringar 3 53 Vissa annoteringar kan definiera eller stärka formella kontrakt import org.jetbrains.annotations.notnull; import org.jetbrains.annotations.nullable; public class TimeTools public static String gettimestring() { return ; Metoden kan inte returnera null Används av dataflödesanalys, påverkar varningar public static String gettimestring(@nullable Date date) { return ; Parametern får vara null metodkoden måste ta hand om null-värden
54 (access modifiers)
55 Bakgrund Tänk er en lista som garanterar att elementen är i sorterad ordning! 55 class SortedList { String[] elements; int size; String get(int pos) { return void add(string el) { int pos = findnewpositionfor(el); insertat(pos, el); Lagring för alla element Hämtar element Stoppar in element på rätt plats int findnewpositionfor(string el) { void insertat(int pos, String el) { med dessa hjälpmetoder
56 Att gömma information Ofta vill vi gömma delar av klasser och objekt 56 class SortedList { String[] elements; int size; int findnewpositionfor(string el) { void insertat(int pos, String el) { String get(int pos) { return Syns bara inuti själva klassen void add(string el) { int pos = findnewpositionfor(el); insertat(pos, el); Synligt utåt
57 Gömma: För att inte förvirra användarna Mindre synligt mer överskådligt 57 class SortedList { String[] elements; int size; int findnewpositionfor(string el) { void insertat(int pos, String el) { String get(int pos) { return Användaren behöver aldrig anropa findnewpos eller insertat Att de syns förvirrar, gör klassen oöverskådlig! void add(string el) { int pos = findnewpositionfor(el); insertat(pos, el); Detta måste användarna känna till för att använda klassen
58 Gömma: Minska åtaganden (kontrakt) Det vi har visat upp, måste vi normalt ha kvar 58 class SortedList { String[] elements; int size; int findnewpositionfor(string el) { void insertat(int pos, String el) { String get(int pos) { return Användarna behöver inte komma åt element via list.elements! Göm det enbart get/add används vi kan byta ut resten om vi vill frihet! void add(string el) { int pos = findnewpositionfor(el); insertat(pos, el); Detta ska utnyttjas av användarna, måste visas och finnas kvar
59 Gömma: Minska åtaganden (kontrakt) Det vi har visat upp, måste vi normalt ha kvar 59 class SortedList { String[] elements; int size; int findnewpositionfor(string el) { void insertat(int pos, String el) { Användarna behöver inte komma åt element via list.elements! Göm det enbart get/add används String get(int class SortedList pos) { return { vi kan byta ut resten om vi vill! ListNode first; void add(string ListNode el) findnewpositionfor(string { el) { Detta ska utnyttjas int pos = findnewpositionfor(el); void insertelementat(listnode pos, String el) { av användarna, insertat(pos, String el); get(int pos) { return måste visas void add(string el) { och Den finnas "publika" kvardelen ListNode pos = findnewpositionfor(el); insertelementat(pos, el); har kvar samma signatur
60 Gömma: För att uppfylla vårt kontrakt 60 /** * This class maintains a sorted list of elements. * As long as the contents of an element does not change, * elements will always be in sorted order. */ class SortedList { String[] elements; int size; int findnewpositionfor(string el) { void insertat(int pos, String el) { void add(string el) { int pos = findnewpositionfor(el); insertat(pos, el); Om användare kan anropa insertat med fel position blir listan osorterad Då bryter vi vårt löfte!
61 Hur gömmer vi information?
62 Att gömma data i Java Många OO-språk tillåter oss att gömma data I Java kan klasser, gränssnitt, fält och metoder vara: public alla har tillgång protected [nothing] private tillgång i underklasser + andra i samma paket tillgång i samma paket (används sällan) tillgång inom samma klass 62 public class SortedList { private String[] elements; private int size; private int findnewpositionfor(string el) { private void insertelementat(int pos, String el) { public void add(string el) { int pos = findnewpositionfor(el); insertelementat(pos, el); Vad hade private betytt utan OO? Vi lovar mindre i vårt kontrakt! Skapa ett stabilt gränssnitt för "allmänheten": add() Göm all info om implementationsdetaljer
63 Inkapsling 63 Två betydelser hos Inkapsling (Encapsulation) Koppla ihop data och funktioner Fundamentalt i OO Objekt: en kapsel som innehåller både data och funktioner Begränsa tillgång till medlemmar Genom accessmodifierare Vissa medlemmar är instängda i en ogenomskinlig kapsel, och kan inte ses eller utnytttjas från utsidan
64 Privata fält 64 Vanlig princip: Fält är implementationsdetaljer, ska vara privata Om det verkligen är rimligt att andra klasser ska komma åt fältvärden: Skapa en public accessor-metod (getter) vid behov Skapa en public mutator-metod (setter) vid behov Kan ändra intern representation: Ändra bara getter/setter, som är i samma klass private double diameter; /** Set the radius to r (must not be negative). */ public void setradius(final double radius) { if (r >= 0.0) diameter = 2 * radius; else throw new IllegalArgumentException("Negative radius: " + r); Kan lägga till konsistenskontroll
65 Namngivning: Getter, Setter Namngivning: 65 private double radius; private boolean visible; /** Set the radius to r (must not be negative). */ public void setradius(final double r) { if (radius >= 0.0) radius = r; else throw new ; public double getradius() { return radius; public boolean isvisible() { return visible; Setters: void setproperty( ) Getters: getproperty() Booleska getters: isproperty() Mer info:
66 Tillåtna publika fält Vissa anser att det finns undantag Rena datastrukturer (inte mycket beteende, osannolikt att det skulle ändras i framtiden) 66 public class Dimension { public int width; public int height;
67
68 Tre sorters variabel 68 Lokal variabel: Deklareras i en metod Varje metodanrop har sin egen "kopia" Två anrop till foo() egna värden på x Anropet avslutas variabeln frigörs Fält: Deklareras i en klass Varje instans (objekt) har sin egen "kopia" Två olika objekt egna värden på x Två anrop samma x! Objektet slängs bort variabeln frigörs Statiskt fält: I en klass, static Varje programkörning har sin egen "kopia" Ett enda värde lagras, i klassen istället för i ett objekt public class MyProg { public void foo() { int x = calcx(); public class MyProg { int x; public void foo() { drawat(x); public class MyProg { static int x; public static void foo() { print(x); Inte ett intuitivt nyckelord! Olika lagring, olika livstider!
69 Statiska fält 1: Namngivna konstanter Konstanter bör (nästan) alltid namnges Jämför läsbarhet: for (int i = 1; i <= 52; i++) { Alternativt: for (int i = 1; i <= decksize; i++) { Mycket viktigt för programunderhåll! 69
70 Statiska fält 2: Namngivna konstanter 70 Namngivna konstanter läggs oftast på klassnivå (static) public class Circle { public static final double PI = ; Circle c1 = new Circle(1, 2, 3); Circle c2 = new Circle(10,11,12); Namngivna konstanter: static i klassen final ändras inte namn stora bokstäver (WITH_UNDERSCORE) c1 c2 Header: (data) x 1 y 2 r 3 Header: (data) x 10 y 11 r 12 jonkv.graphics.circle Static field PI getcircum getarea setradius code code code Lagras en gång slösar inte utrymme
71 Statiska fält 3: "Globala" variabler Kan också användas till "globala" variabler, åtkomliga överallt 71 Varning! Globala variabler ger ofta problem! Använd dem bara i undantagsfall!
72 Statiska fält 4: Exempel Exempel: Hålla reda på antal cirklar som skapats c1 c2 public class Circle { public static final double PI = ; // constant pi public static int circlescreated = 0; // how many are created? public double x, y, r; public Circle(double x, double y, double radius) { this.x = x; this.y = y; this.r = radius; circlescreated++; Circle c1 = new Circle(1, 2, 3); Circle c2 = new Circle(10,11,12); Header: (data) x 1 y 2 r 3 Header: x y (data) jonkv.graphics.circle Static field circlescreated Static field PI getcircum getarea setradius code code code 72
73 Statiska fält 5: Att referera till dem För att referera till ett statiskt fält: public class Circle { public static final double PI = ; public static int circlescreated = 0; public double x, y, r; public Circle(double x, double y, double radius) { this.x = x; this.y = y; this.r = radius; circlescreated++; // constant pi // how many are created? Här räcker "circlescreated", eftersom fältet är i samma klass 73 public class CircleTest { public static void main(string[] args) { System.out.println("Circles created: " + Circle.circlesCreated); System.out.println("Pi is: " + Circle.PI); Här använder vi klassnamn.fält
74 Statiska fält 6: Inte så här För att referera till ett statiskt fält: Inte så här: Circle c = new Circle(); System.out.println("Circles created: " + c.circlescreated); 74 Missvisande: Ser ut som att circlescreated är ett "vanligt" instansfält!
Motivation. Programmeringsuppgift: En första ansats: Lagra info om anställda Håll reda på varje anställds närmaste chef. som också är en anställd!
Pekare (till objekt) Objektvariabler är pekare vad är det? (Viktiga begrepp inte bara inom objektorientering!) Hur används pekare för att sätta samman objekt (composition)? TDDD78, TDDE30, 729A85 jonas.kvarnstrom@liu.se
Läs merViktiga programmeringsbegrepp: Kontrakt
jonas.kvarnstrom@liu.se 2017 Viktiga programmeringsbegrepp: Kontrakt Vad lovar {klassen, metoden, fältet}? Kontrakt 2 Kontrakt: Överenskommelse som anger Vad som ska tillhandahållas Vad som förväntas i
Läs merTDDD78 Objektorientering: Lagring och livstid
jonas.kvarnstrom@liu.se 2017 TDDD78 Objektorientering: Lagring och livstid Tre sorters variabel (1): Lokal 3 Deklareras i en metod Lokal variabel Varje anrop får sin egen "kopia": Två anrop till foo()
Läs merTDDD78 Viktiga begrepp, del 2
jonas.kvarnstrom@liu.se 2015 TDDD78 Viktiga begrepp, del 2 Identitet och likhet Är likhet och identitet samma sak? Oj, vi har samma kläder på oss idag! Nej, men likadana! Besserwisser 3 Detta är två rutor
Läs merTDDD78 Objektorientering i Java, del 3
TDDD78 Objektorientering i Java, del 3 Ärvning av implementation, inklusive abstrakta klasser Egenskaper hos Javas arvshierarki Att skriva kontrakt, och dess konsekvenser Att gömma information i ett objekt
Läs merObjektorientering: Lagring och livstid
TDDD78, TDDE30, 729A85 jonas.kvarnstrom@liu.se 2018 Objektorientering: Lagring och livstid Tre sorters variabler Tre sorters variabel (1): Lokal 2 Lokal variabel Deklareras inuti en metod Vid varje anrop
Läs merTDDD78 Objektorientering i Java, del 4. Hur vet man om två objekt är lika? Hur undviker man objekt och när?
TDDD78 Objektorientering i Java, del 4 Hur vet man om två objekt är lika? Hur undviker man objekt och när? jonas.kvarnstrom@liu.se 2016 Identitet och likhet Är identitet och likhet samma sak? Oj, vi har
Läs merObjektorientering: Lagring, räckvidd och livstid
TDDD78, TDDE30, 729A85 jonas.kvarnstrom@liu.se 2019 Objektorientering: Lagring, räckvidd och livstid Tre sorters variabler, två sorters metoder Räckvidd och livstid 2 Variabler (lokala och medlemsvariabler)
Läs merTDDD78 Objektorientering i Java, del 2
TDDD78 Objektorientering i Java, del 2 Objektvariabler är pekare vad är det? Hur används pekare för att sätta samman objekt (composition)? Hur används hierarkier för att modellera nära relaterade typer?
Läs merInkapsling 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 merFö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 merFö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 merpublic 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 merClasses 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 merLite 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 merTDDD78 Objektorientering i Java, del 2
TDDD78 Objektorientering i Java, del 2 Objektvariabler är pekare vad är det? Hur används pekare för att sätta samman objekt (composition)? Hur används hierarkier för att modellera nära relaterade typer?
Läs merTDDD78 Introduktion till OOP i Java
jonas.kvarnstrom@liu.se 2014 TDDD78 Introduktion till OOP i Java Klasser Bilar är komplicerade vi tar cirklar som exempel 3 En klass i Java 4 För att modellera cirklar som objekt i Java: Skapa en cirkelklass
Läs merOmtentamen för TDA540 Objektorienterad Programmering. Institutionen för Datavetenskap CTH HT-17, TDA540. Dag: , Tid:
Omtentamen för TDA540 Objektorienterad Programmering Institutionen för Datavetenskap CTH HT-17, TDA540 Dag: 2018-08-30, Tid: 14.00-18.00 Ansvarig: Examinator: Alex Gerdes Carlo A. Furia Förfrågningar:
Läs merTDDD78 Introduktion till OOP i Java
jonas.kvarnstrom@liu.se 2016 TDDD78 Introduktion till OOP i Java Klasser 3 Bilar är komplicerade vi tar cirklar som exempel (ritprogram?) En klass i Java För att lagra info om cirklar som objekt i Java:
Läs merDAT043 - 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 merIdag. 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 merFö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 merTyphierarkier 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 merClasses 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 merSammansatta datatyper Generics: Parametrisk polymorfism
jonas.kvarnstrom@liu.se 2017 Sammansatta datatyper Generics: Parametrisk polymorfism Listor och arrayer 2 Enligt TDDD73: Många språk har både listor och arrayer även Java och Python! Exakta definitioner
Läs merIdag. 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 merArv: 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 merTommy Färnqvist, IDA, Linköpings universitet
Föreläsning 9 Pekare, länkade noder, länkade listor TDDD86: DALP Utskriftsversion av föreläsning i Datastrukturer, algoritmer och programmeringsparadigm 25 september 2015 Tommy Färnqvist, IDA, Linköpings
Läs merTDA550 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 merFöreläsning REPETITION & EXTENTA
Föreläsning 18 19 REPETITION & EXTENTA Programmeringsteknik på 45 minuter Klasser och objekt Variabler: attribut, lokala variabler, parametrar Datastrukturer Algoritmer Dessa bilder är inte repetitionsbilder
Läs merFöreläsning 2, vecka 8: Repetition
TDA 548: Grundläggande Programvaruutveckling Föreläsning 2, vecka 8: Repetition Magnus Myréen Chalmers, läsperiod 1, 2016-2017 Idag Metoder och terminologi Referensvärden och arrays Interface och ritning
Läs merFöreläsning 2 Objektorienterad programmering DD1332. Typomvandling
metoder Föreläsning 2 Objektorienterad programmering DD1332 Array [modifierare] String metodnamn (String parameter) Returtyp (utdata typ) i detta fall String Indata typ i detta fall String 1 De får man
Läs merTDDD78 Introduktion till OOP i Java
jonas.kvarnstrom@liu.se 2017 TDDD78 Introduktion till OOP i Java Klasser 3 Bilar är komplicerade vi tar cirklar som exempel (ritprogram?) En klass i Java 4 För att lagra info om cirklar som objekt i Java:
Läs merRepetition 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 merFöreläsning 6: Metoder och fält (arrays)
TDA 545: Objektorienterad programmering Föreläsning 6: Metoder och fält (arrays) Magnus Myréen Chalmers, läsperiod 1, 2015-2016 I (föregående och) denna föreläsning Läsanvisning: kap 2 & 13 meddelanden
Läs merParameteröverföring. Exempel. Exempel. Metodkropp
Exempel atriangle.changesize (100, 50); // OK atriangle.changesize (100); // fel antal atriangle.changesize ( 1, 50); // fel datatyp char c = atriangle.getarea (); // fel datatyp Parameteröverföring I
Läs merLÖ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 merFöreläsning 4. Klass. Klassdeklaration. Klasser Och Objekt
Föreläsning 4 Klasser Och Objekt Klass Beskrivning av en objekttyp Beskriver egenskaper och beteende (fält och metoder) Klassen fungerar som en ritning Objekt skapas från klassbeskrivningen - instansieras
Läs merRepetition 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 merFöreläsning 3-4 Innehåll
Föreläsning 3-4 Innehåll Skriva egna metoder Logiska uttryck Algoritm för att beräkna min och max Vektorer Datavetenskap (LTH) Föreläsning 3-4 HT 2017 1 / 36 Diskutera Vad gör programmet programmet? Föreslå
Läs merTypkonvertering. Java versus C
Typer Objektorienterad programmering E Typkonvertering Typkonvertering Satser: while, for, if Objekt Föreläsning 2 Implicit konvertering Antag att vi i ett program deklarerat int n=3; double x = 5.2; Då
Läs merEtt problem. Kontrollstrukturer och arrayer. Arrayer. Lösningen. Arrayer och hakparanteser. Exempel int[] results; results = new int[10]; // 0..
Ett problem Kontrollstrukturer och er Hur sparas data T ex när man vill spara resultaten av en tävling Exempel med 3 deltagare: public class Competition private int result1; private int result2; private
Läs merF8 - 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 merEDAA20 Programmering och databaser. Mål komprimerat se kursplanen för detaljer. Checklista. Föreläsning 1-2 Innehåll. Programmering.
EDAA20 Programmering och databaser Mål komprimerat se kursplanen för detaljer Läsperiod 1 7.5 hp anna.aelsson@cs.lth.se http://cs.lth.se/edaa20 Mer information finns på kursens webbsida samt på det utdelade
Läs merKlasser och objekt. Henrik Johansson. August 20, 2008
Föreläsning 5 Klasser och objekt Henrik Johansson August 20, 2008 Ett objekt är en modell av ett fysisikt eller ett tänkt ting. Objektet och det som vi kan göra med det beskrivs av en mall, en klass. Ett
Läs mer1 Egna klasser. 1.1 En punkt-klass
1 Egna klasser Vi har bekantat oss med klasser genom att se hur vi kan använda olika klasser. I synnerhet klassen Scanner och klassen Math. För scannerklassen skapade vi en instans för att sedan utnyttja
Läs mer2203$( Föreläsning ii - Mer om Java bla this och konstruktorer. Exempel: lampa
2203$( Föreläsning ii - Mer om Java bla this och konstruktorer Av Björn Eiderbäck Email: bjorne@nada.kth.se Adress: Rum 1641, 6tr NADA Osquars Backe 2 Tel: 7906277 previous next Exempel: lampa Light1 #
Läs merObjektorienterad programmering. Fält som funktionsresultat. Mer om fält: att uppdatera ett parameterfält. Kontrast: Parametrar av primitiv typ
orienterad programmering Föreläsning 3 Exempel: Telefonboken Fält som funktionsresultat Exempel Definiera static double[] vectorsum(double[] a, double[] b) Betrakta sedan följande kodavsnitt:... double[]
Läs merTDDE10 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(Man brukar säga att) Java är... Denna föreläsning. Kompilering av Java. Historik: Java. enkelt. baserat på C/C++ Allmänt om Java
(Man brukar säga att) Java är... Denna föreläsning Allmänt om Java Javas datatyper, arrayer, referenssemantik Klasser Strängar enkelt baserat på C/C++ objekt-orienterat från början dynamiskt utbyggbart
Läs merTentamen ID1004 Objektorienterad programmering October 29, 2013
Tentamen för ID1004 Objektorienterad programmering (vilande kurs), 29 oktober 2013, 9-13 Denna tentamen examinerar 3.5 högskolepoäng av kursen. Inga hjälpmedel är tillåtna. Tentamen består av tre sektioner.
Läs merJava, 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 mer2I1049 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 merTentamen OOP 2015-03-14
Tentamen OOP 2015-03-14 Anvisningar Fråga 1 och 2 besvaras på det särskilt utdelade formuläret. Du får gärna skriva på bägge sidorna av svarsbladen, men påbörja varje uppgift på ett nytt blad. Vid inlämning
Läs merFö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 merFö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 merExempel på listor (klassen ArrayList). Ett exempel med fält. Avbildning är en speciell typ av lista HashMap.
Institutionen för Datavetenskap Göteborgs universitet HT2008 DIT011 Objektorienterad programvaruutveckling GU (DIT011) Innehåll Föreläsning 4 Exempel på listor (klassen ArrayList). Ett exempel med fält.
Läs merIntroduktion. 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 merFö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 merLösningsförslag till tentamen
Uppgift 1 Lösningsförslag till tentamen 110317 a) Sant. b) Falskt. I ett RAM-minne är åtkomsttiden densamma för alla minnesadresser. c) Falskt. TCP är ett protokoll på transportlagret. d) Falskt. Binärsökning
Läs merExempel. Arrayer. Lösningen. Ett problem. Arrayer och hakparanteser. Arrayer
Exempel for (int antal=; antal < 75; antal++) System.out.println (antal); Arrayer for (int num=5; num
Läs merDAT043 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 merFö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 merIntroduktion till Datalogi DD1339. Föreläsning 2 22 sept 2014
Introduktion till Datalogi DD1339 Föreläsning 2 22 sept 2014 Namn Fält1 Fält2 Fält3 Metod1 Metod2 Metod3 Metod4 public class { public class { Åtkomst, public betyder fullt tillgänglig utifrån public
Läs merHögskolan Dalarna sid 1 av 7 DI-institutionen Hans-Edy Mårtensson Sten Sundin
Högskolan Dalarna sid 1 av 7 DI-institutionen Hans-Edy Mårtensson Sten Sundin TENTAMEN I IKB007 INTERNETPROGRAMMERING MED JAVA, 5p för SY2 2001-03-16, kl 14.00-18.00 Hjälpmedel: Inga hjälpmedel är tillåtna
Läs merFöreläsning 5&6 LOGISKA VARIABLER; IMPLEMENTERA KLASSER; MER ALGORITMER
Föreläsning 5&6 LOGISKA VARIABLER; IMPLEMENTERA KLASSER; MER ALGORITMER Logiska uttryck datatypen boolean Logiska uttryck kan ha två möjliga värden, true eller false. Variabler av typen boolean kan tilldelas
Läs merIntroduktion till objektorientering. Vad är objektorientering egentligen? Hur relaterar det till datatyper? Hur relaterar det till verkligheten?
Introduktion till objektorientering Vad är objektorientering egentligen? Hur relaterar det till datatyper? Hur relaterar det till verkligheten? jonas.kvarnstrom@liu.se 2015 2014 jonas.kvarnstrom@liu.se
Läs merInterface. Interface. Tobias Wrigstad (baserat på bilder från Tom Smedsaas) 3 december 2010
Tobias Wrigstad (baserat på bilder från Tom Smedsaas) 3 december 2010 interface, motivation och bakgrund Antag att vi gör en generell listklass: public class List { protected static class ListNode { public
Läs merTDDC30. 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 merObjektorienterad 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 merAtt deklarera och att använda variabler. Föreläsning 10. Synlighetsregler (2) Synlighetsregler (1)
Föreläsning 10 STRING OCH STRINGBUILDER; VARIABLERS SYNLIGHET Att deklarera och att använda variabler När vi deklarerar en variabel, t ex int x; inför vi en ny variabel med ett namn och en typ. När namnet
Läs merTDDD78, TDDE30, 729A Typhierarkier del 2 Vad krävs? Hur fungerar det?
TDDD78, TDDE30, 729A85 jonas.kvarnstrom@liu.se 2019 Typhierarkier del 2 Vad krävs? Hur fungerar det? Hur får en subtyp fungera egentligen? Krav på hierarkier 1 3 Får subtypen LinkedList sakna metoder från
Läs merSubklasser 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 merProgramstruktur och terminologi. Programmet producerar följande utskrift i terminalfönstret: Ett Javaprogram består av en eller flera klasser
// En första version av BankKonto-klassen class BankKonto { private String namn; private long nr; private double saldo; private double ränta; // Klassen TestaBankKonto // Klassens uppgift är att skapa
Läs merObjektorienterad Programmering DAT043
Objektorienterad Programmering DAT043 Föreläsning 3 22/1-18 Moa Johansson (delvis baserat på Fredrik Lindblads material) 1 Kom ihåg: Visa Javas API. Nämn att slidesens också har tillhörande text på kurshemsidan.
Läs merProgrammering 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 merVariabler, värden och typer
Variabler, värden och typer Viktigt att förstå på djupet: För programmering i många språk, t.ex. Java För kommande objektorientering! jonas.kvarnstrom@liu.se 2017 Fråga kommentera avbryt! Intro till variabler
Läs merDAT043 - föreläsning 8
DAT043 - föreläsning 8 Paket, generics, Java collections framework 2017-02-07 Paket och tillgänglighet Ovanför klasser finns en hierarkisk namespace med paket. Filer som inte deklareras i något paket finns
Läs merÄrvning av implementation. Ärvning av implementation, inklusive abstrakta klasser Hur ska vi ärva? När ska vi ärva?
Ärvning av implementation Ärvning av implementation, inklusive abstrakta klasser Hur ska vi ärva? När ska vi ärva? TDDD78, TDDE30, 729A85 jonas.kvarnstrom@liu.se 2018 Implementationsarv 1: Klassnivåer
Läs merTeoretisk del. Facit Tentamen TDDC (6)
Facit Tentamen TDDC30 2014-08-29 1 (6) Teoretisk del 1. (6p) "Snabba frågor" Alla svar motiveras väl. a) Vad är skillnaden mellan synligheterna public, private och protected? (1p) Svar:public: Nåbar för
Läs merTDDE10 TDDE11, 725G90/1. Objektorienterad programmering i Java, Föreläsning 2 Erik Nilsson, Institutionen för Datavetenskap, LiU
TDDE10 TDDE11, 725G90/1 Objektorienterad programmering i Java, Föreläsning 2 Erik Nilsson, Institutionen för Datavetenskap, LiU På denna föreläsning: Introduktion OOP Instanser, instansvariabler, instansmetoder
Läs merFöreläsning 5 (6) Metoder. Metoder Deklarera. Metoder. Parametrar Returvärden Överlagring Konstruktorer Statiska metoder tostring() metoden javadoc
Föreläsning 5 (6) Metoder Metoder Parametrar Returvärden Överlagring Konstruktorer Statiska metoder tostring() metoden javadoc Metoder Deklarera public void setnamn(string n) Åtkomstmodifierare Returtyp
Läs merDAT043 Objektorienterad Programmering
DAT043 Objektorienterad Programmering Detta är en exempeltenta som innehåller gamla tentauppgifter av ungefär liknande slag som ni kan förvänta er se på ordinarie tenta i Del 1 respektive Del 2. Dock är
Läs merKlassdeklaration. Metoddeklaration. Parameteröverföring
Syntax: Class Declaration Modifier Class Body Basic Class Member Klassdeklaration class Class Member Field Declaration Constructor Declaration Method Declaration Identifier Class Associations Motsvarar
Läs merKort 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 merArrayer. results
Arrayer 85 Arrayer Deklarerar utrymme för många variabler i en enda deklaration Array (fält) Varje värde har ett numeriskt index i Java indexeras en array med N element med indexen till N-1 Exempel: 1
Läs merKompilering 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 merTDDD78, TDDE30, 729A Typhierarkier del 3 När och hur vill vi använda dem? Några Best Practices
TDDD78, TDDE30, 729A85 jonas.kvarnstrom@liu.se 2019 Typhierarkier del 3 När och hur vill vi använda dem? Några Best Practices Abstrakt klass eller gränssnitt? (1) 3 Gränssnitt Kan implementera flera Ingen
Läs merObjektsamlingar i Java
1 (6) Objektsamlingar i Java Objektorienterad programmering 3 Syfte Att ge träning i att använda objektsamlingar i Java. Mål Efter övningen skall du kunna använda objektsamlingsklasserna ArrayList och
Läs merIntroduktion till objektorientering. Vad är objektorientering egentligen? Hur relaterar det till datatyper? Hur relaterar det till verkligheten?
Introduktion till objektorientering Vad är objektorientering egentligen? Hur relaterar det till datatyper? Hur relaterar det till verkligheten? TDDD78, TDDE30, jonas.kvarnstrom@liu.se 729A85 jonas.kvarnstrom@liu.se
Läs merpublic interface Skrivbar { void skriv(); } public class Punkt implements Skrivbar { public double x; public double y;
public interface Skrivbar { void skriv(); public class Punkt implements Skrivbar { public double x; public double y; public Punkt(double xx, double yy) { x = xx; y = yy; public Punkt() { @Override public
Läs merÖverlagring, static, testning, formella metoder och undantag! Förelasning 13!! TDA540 Objektorienterad Programmering!
Överlagring, static, testning, formella metoder och undantag! Förelasning 13!! TDA540 Objektorienterad Programmering! Gränssnitt igen För att kunna ändra på olika delar av programmet utan att andra delar
Läs merUML. 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 merDagens 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 merTDDE10 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 merGrundläggande programmering, STS 1, VT Sven Sandberg. Föreläsning 12
Grundläggande programmering, STS 1, VT 2007. Sven Sandberg Föreläsning 12 I torsdags: Klassen TelefonKostnad Exemplifierar objektorienterad design, metoder, konstruktorer static Standardklassen Math Matematiska
Läs merTentamen 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 merListor. 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 merExempel på program med objekt Klass med main-metod. Föreläsning 3-4 Innehåll. Övning Viktiga begrepp
Föreläsning 3-4 Innehåll Eempel på program med objekt Klass med main-metod Klasser Implementera (skriva programkod för) egna klasser Datatper Undervisningsmoment: föreläsning 3-4 övning 2 laboration 3-5
Läs merAtt skriva till och läsa från terminalfönstret
Att skriva till och läsa från terminalfönstret Oftast används grafiska komponenter i Java för att kommunicera med användaren (användargränssnitt), men det finns objekt i standardbiblioteken för de tillfällen
Läs mer