Föreläsning 9. Generiska enheter Inre klasser Anonyma klasser Kloning
|
|
- Sten Forsberg
- för 6 år sedan
- Visningar:
Transkript
1 TDA550 Objektorienterad programmering, fortsättningskurs Föreläsning 9 Generiska enheter Inre klasser Anonyma klasser Kloning Objektorienterad programmering fk 1 Föreläsning 9
2 Generiska programenheter Från och med version 5.0 är det möjligt att skriva generiska programenheter i Java. generiska klasser generiska interface generiska metoder Generiska programenheter innebär återanvändning av kod. Generiska programenheter parametriseras med en eller flera typer, så kallade typparametrar. Man kan se den generiska programenheten som en mall från vilken kompilatorn kan generera programenheter för specifika typer. Objektorienterad programmering fk 2 Föreläsning 9
3 Generiska klasser Nedan visas hur en klass Pair, som används för att lagra ett namn och ett konto, har skrivits om till en generisk klass. Den generiska klassen kan användas för att lagra godtyckliga par av objekt. public class Pair { private String name; private BankAccount account; public Pair(String name, BankAccount account) { this.name = name; this.account = account; public String getfirst() { return name; public BankAccount getsecond() { return account; public class Pair <T, S>{ private T first; private S second; public Pair(T first, S second) { this.first = first; this.second = second; public T getfirst() { return first; public S getsecond() { return second; Pair <String, Integer> p = new Pair<String, Integer>("Hello", 12); Pair <Integer, Integer> p = new Pair<Integer, Integer>(34, 56); Objektorienterad programmering fk 3 Föreläsning 9
4 Generiska klasser Typerna som handhas i en generisk klass måste namnges och anges i klassens parameterlista. public class pair<s, T> Det är praxis att ge korta namn enligt: E K V T elementtyp i en samling nyckel i en map värde i en map generell typinformationen S, U fler generella typer Typparametrar i klassdeklaration är endast information till kompilatorn. typparametrarna används när kompilatorn kontrollerar programmet och sätter in vissa konverteringar (autobox/unboxing) när kompilatorn översätter klassdeklarationen till bytekod tas denna information bort. Inuti den generiska klassdefinitionen kan de formella typparametrar användas som vanliga referenstyper utom att: de får inte användas i klassens statiska metoder man får inte skapa arrayer av dem (men man kan deklarera arrayreferenser). Objektorienterad programmering fk 4 Föreläsning 9
5 Generiska metoder I en generisk klass får en statisk metod inte använda klassens typparametrar. Men det går dock att deklarera generiska metoder, genom att parametrisera metoden med en eller flera typparametrar. public class ArrayUtil { public static void print(string[] a) { for (String e : a) System.out.print(e + " "); System.out.println(); public class ArrayUtil { public static <E> void print(e[] a) { for (E e : a) System.out.print(e + " "); System.out.println(); Retangle[] retangles = ; String[] strings = ; ArrayUtils.print(retangles); ArrayUtils.print(strings); Objektorienterad programmering fk 5 Föreläsning 9
6 Begränsade typparametrar Det är ibland nödvändigt att definiera vilka typer som man kan använda i en generisk klass eller i en generisk metod. Betrakta en metod min som bestämmer det minsta värdet i ett generiskt fält. Hur kan man finna det minsta värdet när man inte vet vilken typ elementen i fältet har? Ett sätt är att kräva att elementen tillhör en typ som implementerar interfacet Comparable (som är generiskt). I detta fall behöver vi således specificera typparametern ytterligare eftersom inte alla typer kan accepteras. public static <E extends Comparable<E>> E min(e[] a) { E smallest = a[0]; for (int i = 1; i < a.length; i++) { if (a[i].compareto(smallest) < 0) smallest = a[i]; return smallest; Metoden min ovan kan anropas med fält vars element är av en typ som implementerar Comparable<E>. Ibland behövs det sätta flera begränsningar på en typparameter: <E extends Comparable<E> & Cloneable> Observera att här betyder det reserverade ordet extends både extends eller implements. Objektorienterad programmering fk 6 Föreläsning 9
7 Wildcards Konceptet wildcards har införts för att beteckna vilken typ som helst. Det finns tre olika slag av wildcards: wildcard med undre gräns? extends B godtycklig subtyp till B wildcard med övre gräns? super B godtycklig supertyp till B wildcard utan gräns? godtycklig typ Objektorienterad programmering fk 7 Föreläsning 9
8 Wildcards godtycklig subtyp Antag vi har följande klasshierarki: public abstract class Shape { public abstract void draw(); public class Circle extends Shape { public void draw() {... public class Rectangle extends Shape { public void draw() {... Metoden public static void drawall(linkedlist<shape> shapes) { for (Shape s: shapes) s.draw(); kan dock inte anropas med en parameter av typ LinkedList<Circle> mylist = new LinkedList<Circle>(); ty LinkedList<Circle> är inte subklass till LinkedList<Shape>. Däremot fungerar följande metod: public static void drawall(linkedlist<? extends Shape> shapes) { for (Shape s: shapes) s.draw(); Objektorienterad programmering fk 8 Föreläsning 9
9 Wildcards godtycklig supertyp Antag vi har följande klasshierarki: public class BankAccount implements Comparable<BankAccount> { public class SavingAccount extends BankAccount { Eftersom SavingAccount ärver från BankAccount så implementerar SavingAccount gränssnittet Comparable<BankingAccount> och inte Comparable<SavingAccount>. Om vi återvänder till metoden public static <E extends Comparable<E>> E min(e[] a) { Kan denna metod anropas med ett fält av typen SavingAccount enligt: Nej! SavingAccount[] sa = ; min(sa); SavingAccount implementerar inte Comparable<SavingAccount> utan Comparable<BankingAccount>! Metodhuvudet måste ha följande utseende: public static <E extends Comparable<? super E>> E min(e[] a) Objektorienterad programmering fk 9 Föreläsning 9
10 Länkade listor En länkad lista består av ett antal noder. Varje nod innehåller dels en referens till nästa nod och en referens till ett element i listan. first Vi skall göra en implementation av en enkel generisk länkad lista. Specifikationen är enligt följande: /*skapar en tom lista public SimpleList() //returnerar första elementet i listan //kastar NoSuchElementException om inget sådant element finns public E getfirst() //tar bort första elementet i listan //kastar NoSuchElementException om inget sådant element finns E removefirst() //lägger in ett element först i listan public void addfirst(e element) //returnerar en iterator för listan public Iterator<E> Iterator() Objektorienterad programmering fk 10 Föreläsning 9
11 Länkad lista implementation Vi använder en privat inre klass för att handha noderna, och en inre klass för att implementera iteratorn för vår lista. public class SimpleList<E> implements Iterable<E> { private Node first; private class Node { public E data; private Node next; private class OurIterator implements Iterator <E>{ public OurIterator() { public boolean hasnext() { public E next() { public void remove () { En inre klass är en klass som deklareras inuti en annan klass. En inre klass kan ses som en hjälpklass som endast är av intresse för den yttre klassen. En inre klass kan komma åt den ytter klassens instansvariabler även om dessa är deklarerad private. Objektorienterad programmering fk 11 Föreläsning 9
12 Implementation klassen SimpleList import java.util.*; public class SimpleList<E> implements Iterable<E> { private Node first; public SimpleList() { first = null; //konstruktor public E getfirst() { if (first == null) throw new NoSuchElementException(); return first.data; //getfirst public E removefirst() { if (first == null) throw new NoSuchElementException(); E element = first.data; first = first.next; return element; //removefirst public void addfirst(e element) { Node newnode = new Node(); newnode.data = element; newnode.next = first; first = newnode; //addfirst public Iterator<E> iterator() { return new OurIterator(); //iterator private class Node { public E data; public Node next; //Node Objektorienterad programmering fk 12 Föreläsning 9
13 Implementation OurIterator private class OurIterator implements Iterator <E>{ private Node position; private Node previous; public OurIterator() { position = null; previous = null; //konstruktor public boolean hasnext() { if (position == null) return first!= null; else return position.next!= null; //hasnext public E next() { if (!hasnext()) throw new NoSuchElementException(); previous = position; if (position == null) position = first; else position = position.next; return position.data; //next public void remove () { throw new UnsupportedOperationException(); //remove //OurIterator //SimpleList Objektorienterad programmering fk 13 Föreläsning 9
14 Anonyma klasser En entitet är anonym om den inte har något namn. Anonyma entiteter används ofta i ett program add.data(new Integer(123)); anonymt objekt I Java är det är möjligt att definiera anonyma klasser, vilket kan vara användbart när man bara behöver ett objekt av en klass. Comparator<Country> comp = new Comparator<Country>() { //annonym klass public int compare(country1 c1, Country c2) { return c1.getname().compareto(c2.getname()); ; Ovanstående är likvärdigt med att skriva: public class MyComparator implements Comparator<Country> { public int compare(country1 c1, Country c2) { return c1.getname().compareto(c2.getname()); Comparator<Country> comp = new MyComparator(); Objektorienterad programmering fk 14 Föreläsning 9
15 Mer om anonyma klasser Anonyma klasser används ofta som throw away -klasser när man endast behöver ett objekt av en klass. Men genom att lägga den anonyma klassen i en metod kan man enkelt skapa multipla objekt av en anonym klass. Antag att vi i klassen Country vill ha en klassmetod som returnerar ett Comparator-objekt för att jämföra namnen på länder. Detta kan åstadkommas enligt följande: public class Country { public static Comparator<Country> comparatorbyname() { return new Comparator<Country>() { public int compare(country1 c1, Country c2) { return c1.getname().compareto(c2.getname()); ; Objektorienterad programmering fk 15 Föreläsning 9
16 Metoden Clone Metoden clone() används för att skapa en kopia av ett existerande objekt. Klassen Object definierar en default implementering av clone(): protected Object clone() throws CloneNotSupportedException { if (this instanceof Cloneable) { //Copy the instance fields else throw new CloneNotSupportedException(); Vi ser, i implementationen av clone() ovan, att en exception av typen CloneNotSupportedException kastas om metoden anropas för ett objekt av en klass som inte implementerar gränsnittet Cloneable. Detta betyder att en klass vars objekt skall gå att klona måste implementera gränssnittet Cloneable och överskygga metoden clone(). Det rekommenderas att överskuggade metoder av clone skall uppfylla följande villkor: x.clone()!= x (x.clone()).equals(x) (x.clone()).getclass() = x.getclass() Objektorienterad programmering fk 16 Föreläsning 9
17 Grund kopiering (shallow copy) Metoden clone i klassen Object, skapar och returnerar en kopia av det aktuella objektet. Varje instansvariabel i kopian har exakt samma värde som motsvarande instansvariabeln i originalet. Antag att vi vill kunna skapa kopior av objekt av klassen SomeClass nedan: public class SomeClass { private int value; private boolean status; private String str; public SomeClass(int value, boolean str, String str) { this.value = value; this.status = status; this.str = str; Vi måste således låta klassen implementera interfacet Cloneable och överskugga metoden clone(). Vill man att clone() skall vara tillgänglig utanför paketet som klassen SomeClass tillhör, skall clone() göras public. Objektorienterad programmering fk 17 Föreläsning 9
18 Grund kopiering (shallow copy) I klassen SomeClass är instansvariablerna value och status primitiva variabler, och instansvariabeln str är ett icke-muterbart objekt. Därför gör clone() i klassen Object allt som är nödvändigt för att skapa en kopia. public class SomeClass implements Cloneable { private int value; private boolean status; private String str; public SomeClass(int value, boolean str, String str) { this.value = value; this.status = status; this.str = str; public SomeClass clone() { try { return (SomeClass) super.clone(); catch (CloneNotSupportedException e) { return null; //never invoked SomeClass org = new SomeClass(5, true, "Hello "); SomeClass copy = org.clone(); Eftersom clone() i klassen Object kastar ett undantag av typen CloneNotSupportedException måste detta hanteras. Objektorienterad programmering fk 18 Föreläsning 9
19 Grund kopiering (shallow copy) Vad händer som vi glömmer att implementera Cloneable? public class SomeClass { private int value; private boolean status; private String str; public SomeClass(int value, boolean str, String str) { this.value = value; this.status = status; this.str = str; public SomeClass clone() { try { return (SomeClass) super.clone(); catch (CloneNotSupportedException) { return null; //never invoked SomeClass org = new SomeClass(5, true, "Hello "); SomeClass copy = org.clone(); Object.clone() kastar CloneNotSupportedException! Objektorienterad programmering fk 19 Föreläsning 9
20 Djup kopiering (deep copy) Grund kopiering är trivial, eftersom det bara är att nyttja metoden clone() i klassen Object. Grund kopiering fungerar då attributen för objektet som klonas utgörs av primitiva typer och icke-muterbara typer. För primitiva typer skapas kopior och för icke-muterbara typer spelar det ingen roll att de delas, eftersom de inte kan förändras. Om ett objekt har muterbara referenser måste man använda djup kopiering (deep copy) för att klona objektet. Djup kopiering innebär att man skapar kopior av de refererade objekten. Vilket kan vara mycket komplicerat. Principiellt gör man enligt följande: public class SomeClass implements Cloneable { public SomeClass clone() { try { //Fix all primitive and immutables SomeClass result = (SomeClass) super.clone(); //Handle mutables // code here (deep copy) return result; catch (CloneNotSupportedException) { return null; //never invoked Objektorienterad programmering fk 20 Föreläsning 9
21 Djup kopiering enkelt exempel Klassen Person har en muterbar referensvariabel birthday, av typen java.util.date. Person -name: String -birthday: Date import java.util.date; public class Person implements Cloneable { private String name; private Date birthday; public SomeClass clone() { try { Person result = (Person) super.clone(); result.birthday = birthday.clone(); return result; catch (CloneNotSupportedException) { return null; //never invoked Objektorienterad programmering fk 21 Föreläsning 9
22 Kloning och arv Vid arv anropas clone() metoden i superklassen, varefter de muterbara referensvariablerna som deklareras i subklassen måste djup kopieras. public class Member extends Person { private Date dayofmembership; public Member clone() { try { Member result = (Member) super.clone(); //add copies of sub class specified fields to result result.dayofmembership = dayofmembership.clone(); return result; catch (CloneNotSupportedException) { return null; //never invoked Varför behöver inte Member implementera Cloneable? Objektorienterad programmering fk 22 Föreläsning 9
23 Djup kopiering krångligare exempel I nedanstående scenario gör metoden clone() i klassen C1 ett anrop till super.clone(), d.v.s vi har endast en grund kopiering. v2 = v1.clone(); :C1 v1 :C1 :C2 :C2 :C2 v2 :C3 :C3 :C3 Objektorienterad programmering fk 23 Föreläsning 9
24 Djup kopiering krångligare exempel I nedanstående scenario skapar metoden clone() i klassen C1 en kopia av sin instansvariabel, vilken är en lista. Men clone() skapar inte kopior av elementen i listan. v2 = v1.clone(); :C1 v1 :C1 v2 :C2 :C2 :C2 :C3 :C3 :C3 Objektorienterad programmering fk 24 Föreläsning 9
25 Djup kopiering krångligare exempel I nedanstående scenario skapar metoden clone() i klassen C1 en djup kopia av sin instansvariabel (listan och elementen i listan) på ett korrekt sätt men clone() i klassen C2 gör en grund kopia. v2 = v1.clone(); v1 :C1 :C2 :C2 :C2 :C1 :C3 :C3 :C3 v2 :C2 :C2 :C2 Objektorienterad programmering fk 25 Föreläsning 9
26 Djup kopiering krångligare exempel I nedanstående scenario har vi en korrekt djup kopiering. Metoden clone() i klassen C1 skapar en kopia av listan och elementen i listan och clone() i klassen C2 gör en djup kopiering. v2 = v1.clone(); v1 :C1 :C2 :C2 :C2 :C3 :C3 :C3 :C1 :C3 :C3 :C3 v2 :C2 :C2 :C2 Objektorienterad programmering fk 26 Föreläsning 9
27 Djup kopiering samlingar Metoden clone() i samlingar och arrayer använder grund kloning. Detta betyder att alla instansvariabler som är samlingar eller arrayer måste klonas element för element om elementen är muterbara. public class SomeClass implements Cloneable { private List<Dog> list = new ArrayList<Dog>(); public SomeClass clone() { try { SomeClass result = (SomeClass) super.clone(); List<Dog> copy = new ArrayList<Dog>(list.size()); for(dog item: list) copy.add(item.clone()); result.list = copy; return result; catch (CloneNotSupportedException e) { return null; //never invoked Objektorienterad programmering fk 27 Föreläsning 9
28 Kopieringskonstruktor och kloning En kopieringskonstruktor tar som parameter ett objekt av samma klass och gör en djupkopiering av parameterobjektet. public class Leg { private GeoPosition startpos; private int course; private float length; public Leg(Leg other) { this.startpos = other.startpos.clone(); this.course = other.course; this.length = public Leg clone() { return new Leg(this); Objektorienterad programmering fk 28 Föreläsning 9
29 Kopieringskonstruktor och arv Om en basklass har en kopieringskonstruktor kan denna anropas av en kopieringskonstruktor i en subklass: public class Sub extends Base { public Sub(Sub other) { // the copy constructor in Base copies // the base class field from other super(other); // then copy sub class specific public Sub clone() { return new Sub(this); Objektorienterad programmering fk 29 Föreläsning 9
30 Förhindra kloning Det finns situationer då man, av olika andledningar, vill förhindra kloning. Nedanstående scheman är då användbara: public class NoCopy { private int value; private boolean status; private String str; public NoCopy clone() throw new CloneNotSupportedException(); public class NoCopy extends SomeCopyClass { private int value; private boolean status; private String str; public NoCopy clone() throw new CloneNotSupportedException(); Objektorienterad programmering fk 30 Föreläsning 9
31 Problem vid kloning Det finns många problem med att implementera clone(): superklassen måste implementerar clone(). superklassens implementation måste vara korrekt. många klasser saknar implementation av clone() många klasser har felaktig implementation av clone() alla instansvariabler som är samlingar eller arrayer måste klonas element för element i cykliska strukturer och strukturer där objekt är delade, måste också motsvarande objekt vara delade i kopian Copy Original Wrong Objektorienterad programmering fk 31 Föreläsning 9
Begreppet subtyp/supertyp i Java. Mera om generik. Generik och arv. Generik och arv. Innehåll
Mera om generik Begreppet subtyp/supertyp i Java Innehåll Wildcards Vektorer och generik Supertyper för en viss klass C är alla klasser från vilka C ärver och alla interface som klassen implementerar.
Objektorienterad Programmering DAT043. Föreläsning 9 12/2-18 Moa Johansson (delvis baserat på Fredrik Lindblads material)
Objektorienterad Programmering DAT043 Föreläsning 9 12/2-18 Moa Johansson (delvis baserat på Fredrik Lindblads material) 1 Metoden clone() Skapa kopior av existerande objekt. Interface Cloneable Deep vs.
Kopiering av objekt i Java
1 (6) Kopiering av objekt i Java Först När du läser detta papper bör du samtidigt studera dokumentationen för klasserna Object, Cloneable (java.lang) och ArrayList (java.util). Mycket blir klarare genom
Föreläsning 12. Inre klasser Anonyma klasser Kloning I/O-ramverket
Föreläsning 12 Inre klasser Anonyma klasser Kloning I/O-ramverket Nästlade klasser En nästlad klass är en klass som är definierad i en annan klass. Det finns fyra olika slag av nästlade klasser: statiska
Generisk klass med typparameter Inre klass - ListIterator
Objektorienterad programmeringsmetodik Generics, clone Generics Återanvändning Ännu ett sätt att lösa ett gammalt problem: skriva så lite kod som möjligt Vi vill ha metoder som fungerar på olika klasser
Seminarium 3 Introduktion till Java Collections Framework Innehåll. Generik Bakgrund. Exempel på en generisk klass java.util.arraylist.
Seminarium 3 Introduktion till Java Collections Framework Innehåll Generik Bakgrund Java Collections Framework interface och klasser för samlingar av element interfacen Iterator och Iterable och foreach-sats
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
Föreläsning 12. Inre klasser Anonyma klasser Kloning I/O-ramverket
Föreläsning 12 Inre klasser Anonyma klasser Kloning I/O-ramverket Nästlade klasser En nästlad klass är en klass som är definierad i en annan klass. Det finns fyra olika slag av nästlade klasser: statiska
Seminarium 2 Introduktion till Java Collections Framework Innehåll. Generik Bakgrund. Exempel på en generisk klass java.util.arraylist.
Seminarium 2 Introduktion till Java Collections Framework Innehåll Generik Bakgrund Generik används för att få typsäkra datastrukturer Java Collections Framework Standardbibliotek med datastrukturer i
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:
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
Föreläsning 12. Inre klasser Anonyma klasser Kloning I/O-ramverket
Föreläsning 12 Inre klasser Anonyma klasser Kloning I/O-ramverket Nästlade klasser En nästlad klass är en klass som är definierad i en annan klass. Det finns fyra olika slag av nästlade klasser: statiska
Föreläsning 2. Länkad lista och iterator
Föreläsning 2 Länkad lista och iterator Föreläsning 2 Länkad-lista Lista implementerad med en enkellänkad lista Iterator Implementering av en Iterator Dubbellänkad lista och cirkulär lista LinkedList JCF
DAT043 - 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
Abstrakt datatyp. -Algoritmer och Datastrukturer- För utveckling av verksamhet, produkter och livskvalitet.
-Algoritmer och Datastrukturer- Abstrakt datatyp Datatyp för en variabel Betecknar i ett programmeringsspråk den mängd värden variabeln får anta. T ex kan en variabel av typ boolean anta värdena true och
1 Comparator & Comparable
1 Comparator & Comparable 1.1 Implementation av Comparable Att implementera Comparable innebär att man gör objekt av sin klass jämförbara med andra och att det därmed antas existera en naturlig ordning
Föreläsning 12. Inre klasser Anonyma klasser Kloning I/O-ramverket
Föreläsning 12 Inre klasser Anonyma klasser Kloning I/O-ramverket Nästlade klasser En nästlad klass är en klass som är definierad i en annan klass. Det finns fyra olika slag av nästlade klasser: statiska
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
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
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
Föreläsning 4 Innehåll
Föreläsning 4 Innehåll Abstrakta datatypen lista Datastrukturen enkellänkad lista Nästlade klasser statiskt nästlade klasser inre klasser Listklasser i Java Implementera abstrakta datatyperna stack och
Fö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
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
Föreläsning 8: Exempel och problemlösning
TDA 545: Objektorienterad programmering Föreläsning 8: Exempel och problemlösning Magnus Myréen Chalmers, läsperiod 1, 2015-2016 De tre senaste föreläsningarna Läsanvisning: kap 2 & 13 meddelanden och
Föreläsning 2. Länkad lista och iterator
Föreläsning 2 Länkad lista och iterator Föreläsning 2 Länkad-lista Lista implementerad med en enkellänkad lista Iterator Implementering av en Iterator Dubbellänkad lista och cirkulär lista LinkedList JCF
Idag. Exempel, version 2. Exempel, version 3. Ett lite större exempel
Idag Ett exempel Undantag Substitutierbarhet, subtyper, subklasser När val av metod beror av typerna hos två objekt Lite om överlagring Exempel, version 2 Notera: för samtliga figurer gäller: arean av
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
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
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
DAT043 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
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
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
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
Föreläsning 9 Innehåll
Föreläsning 9 Innehåll Binära sökträd algoritmer för sökning, insättning och borttagning, implementering effektivitet balanserade binära sökträd, AVL-träd Abstrakta datatyperna mängd (eng. Set) och lexikon
Interface. 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
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
Ett 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ösningsförslag tentamen DIT950 * Datum * */ /* * -1 - */ För samtliga gäller,se föreläsningsanteckningar.
* * Lösningsförslag tentamen DIT950 * Datum 150317 * * -1 - För samtliga gäller,se föreläsningsanteckningar. * - 2 - (Diagram visas inte, kontakta mig för ev frågor) // a C c = new A(); // Compile! Sub
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:
Exempel. 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
TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 2. Länkade listor Stackar Köer MyList Iteratorer Lab 2 Exceptions Paket
TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 2 Länkade listor Stackar Köer MyList Iteratorer Lab 2 Exceptions Paket 1 Länkade listor Likadant som i Ada-kursen. 2 Stack MyStack MyStack
Övning 4. I denna övning ska vi titta på icke-muterbarhet kontra muterbarhet, samt metoderna equals, hashcode och clone.
TDA550 - Objektorienterad programvaruutveckling, fk Övning 4. I denna övning ska vi titta på icke-muterbarhet kontra muterbarhet, samt metoderna equals, hashcode och clone. Uppgift 1 Icke-muterbarhet kontra
TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 2. Laboration 2 Datastrukturer En liten uppgift Frågor
TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 2 Laboration 2 Datastrukturer En liten uppgift Frågor 1 Laboration 2 - Datastrukturer Länkade datastrukturer Stack Kö (En. Queue) Lista
Tentamen Programmering fortsättningskurs DIT950
Tentamen Programmering fortsättningskurs Datum: 2015-03-17 Tid: 08.30-12.30 Hjälpmedel: Engelskt-Valfritt språk lexikon Betygsgränser: U: -23 G: 24-43 VG: 44-60 (max 60) Lärare:. Någon besöker ca 10.00
Mera om generik. Innehåll. Generik och arv Wildcards Vektorer och generik Generiska metoder. EDA690 (Mera om generik) HT 2013 1 / 24
Mera om generik Innehåll Generik och arv Wildcards Vektorer och generik Generiska metoder EDA690 (Mera om generik) HT 2013 1 / 24 Begreppet subtyp/supertyp i Java Supertyper för en viss klass C är alla
Lösningsförslag till tentamen i OOP, HI1027 Fredag 21 oktober 2011
Lösningsförslag till tentamen i OOP, HI1027 Fredag 21 oktober 2011 Text inom [] avser kommentarer till rättningen, ofta sådant som många missuppfattat eller gjort fel på. Del A. Teoriuppgifter 1. Återanvändning:
Lösningsförslag till omtentamen för TDA540 Objektorienterad Programmering
Lösningsförslag till omtentamen för TDA540 Objektorienterad Programmering Institutionen för Datavetenskap CTH HT-6, TDA540 Dag: 207-0-24, Tid: 4.00-.00 Uppgift a) En abstrakt klass kan inte instansieras,
Listor. Koffman & Wolfgang kapitel 2, avsnitt , och 2.9
Listor Koffman & Wolfgang kapitel 2, avsnitt 2.1 2.3, 2.5 2.6 och 2.9 Figur 2.1, sid 63 java.util.list, med dess implementeringar 2 List och primitiva typer En array kan innehålla primitiva typer: int[],
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
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
Objektorienterad programmering med Java, Generics
Generics i Java Generic: allmän, genersisk. På menyn på en asiatisk restaurang: Denna rätt serveras med valfritt kött, fisk eller skalddjur Bakgrund Generics i Java ger oss att skriva kod, klasser och
Arrayer. 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
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
Övning vecka 6. public void method2() { //code block C method3(); //code block D }//method2
Övning vecka 6. TDA550 - Objektorienterad programvaruutveckling IT, fk Denna vecka ska vi titta på undantag, testning, generiska enheter, samlingar och designmönstret Iterator. Uppgift 1 Exceptions a)
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
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
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.
TDDD78 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
Föreläsning 4. ADT Kö Kö JCF Kö implementerad med en cirkulär array Kö implementerad med en länkad lista
Föreläsning 4 Kö Föreläsning 4 ADT Kö Kö JCF Kö implementerad med en cirkulär array Kö implementerad med en länkad lista ADT Kö Grundprinciper: En kö fungerar som en kö. Man fyller på den längst bak och
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
Objektorienterad Programkonstruktion. Föreläsning jan 2016
Objektorienterad Programkonstruktion Föreläsning 13 19 jan 2016 Tentamen Del I, E del Flervalsfrågor 20/25 krävs för godkänt, ger betyg E Upp till 7 möjliga bonuspoäng Del II, Högrebetygsdel Problemfrågor
Lösningsförslag till tentamen
till tentamen 1 (6) Kurs Objektorienterad programmering Program D2 Läsår 2010/2011, lp 1 Examinator Uno Holmer Uppgift 1 (10 p) Ingen lösning ges. Se kurslitteraturen. Uppgift 2 (11 p) public class CounterButton
Grundläggande termer. Några olika system. F11 Grunderna i Versionshantering. Git basic. Origin. Git basic. Git basic. Local #1. Local #3.
Grundläggande termer F11 Grunderna i Versionshantering Hålla koll på olika version, kunna gå tillbaka, etc. Repo/Repository - förvaring/administrering av förändringar Centraliserad/Decentraliserad Lokal
Grundkurs i programmering, 6 hp (725G61) Dugga 2 tillfälle 2
AID-nummer: Datum: 2014-12-18 Kurskod: 725G61 Provkod: LAB1 Grundkurs i programmering, 6 hp (725G61) Dugga 2 tillfälle 2 Skrivningstid: 2014-12-18 klockan 8.00-10.00. Hjälpmedel: Inga. För varje fråga
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
TDA550 Objektorienterad programmering, fortsättningskurs. Föreläsning 1. Introduktion Variabler och typer
TDA550 Objektorienterad programmering, fortsättningskurs Föreläsning 1 Introduktion Variabler och typer Objektorienterad programmering fk 1 Föreläsning 1 Olika nivåer av programdesign Det är användbart
Static vs Dynamic binding Polymorfism. Objekt-orienterad programmering och design (DIT953) Niklas Broberg, 2018
Static vs Dynamic binding Polymorfism Objekt-orienterad programmering och design (DIT95) Niklas Broberg, 2018 Diagnostiskt prov Shape + overlaps(shape): int return 1; Shape shape = new Shape(); Polygon
Klassen BST som definierar binära sökträd med tal som nycklar och enda data. Varje nyckel är unik dvs förekommer endast en
Tentamen Programmeringsteknik II 2017-10-23 Skrivtid: 14:00 19:00 Inledning Skrivningen innehåller ett antal bilagor: Bilagan listsandtrees innehåller fyra klasser: Klassen List med några grundläggande
Agenda. Objektorienterad programmering Föreläsning 13
Objektorienterad programmering Föreläsning 13 Copyright Mahmud Al Hakim mahmud@dynamicos.se www.webacademy.se Agenda Ett objektorienterat exempel Repetition Mer om arv Abstrakta klasser Abstrakta metoder
Tentamen Programmeringsteknik II och NV2 (alla varianter) 2008-12-10. Skriv bara på framsidan av varje papper.
Tentamen Programmeringsteknik II och NV2 (alla varianter) 2008-12-10 Skrivtid: 0800-1300 Inga hjälpmedel. Tänk på följande Maximal poäng är 40. För betygen 3 krävs 18 poäng. För betygen 4, 5 kommer något
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
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 (
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
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ägg uppgifterna i ordning. Skriv uppgiftsnummer och din kod överst i högra hörnet på alla papper.
Tentamen Programmeringsteknik II 2017-10-23 Skrivtid: 14:00 19:00 Tänk på följande Lägg uppgifterna i ordning. Skriv uppgiftsnummer och din kod överst i högra hörnet på alla papper. Fyll i försättssidan
TENTAMEN: Objektorienterad programmering. Läs detta! Skriv din tentamenskod på varje blad (så att vi inte slarvar bort dem).
1 (7) TENTAMEN: Objektorienterad programmering Läs detta! Uppgifterna är inte ordnade efter svårighetsgrad. Börja varje hel uppgift på ett nytt blad. Skriv inte i tesen. Ordna bladen i uppgiftsordning.
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
Föreläsning 7 Innehåll. Rekursion. Rekursiv problemlösning. Rekursiv problemlösning Mönster för rekursiv algoritm. Rekursion. Rekursivt tänkande:
Föreläsning 7 Innehåll Rekursion Rekursivt tänkande: Hur många år fyller du? Ett år mer än förra året! Rekursion Rekursiv problemlösning Binärsökning Generiska metoder Rekursiv problemlösning: Dela upp
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
"Ä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
Enkla variabler kontra referensvariabel
Enkla variabler kontra referensvariabel En variabel är ett namngivet minnesutrymme i datorns primärminne. En variabel som används för att representera en primitiv datatyp kallas för enkel variabel. Deklarationssatsen
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
Omtentamen för TDA540 Objektorienterad Programmering. Institutionen för Datavetenskap CTH HT-16, TDA540. Dag: , Tid:
Omtentamen för TDA540 Objektorienterad Programmering Institutionen för Datavetenskap CTH HT-16, TDA540 Dag: 2017-04-12, Tid: 14.00-18.00 Ansvarig: Examinator: Alex Gerdes Carlo A. Furia Förfrågningar:
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
DAT043 Objektorienterad programmering för D, DIT011 Objektorienterad programvaruutveckling för GU
DAT043 Objektorienterad programmering för D, DIT011 Objektorienterad programvaruutveckling för GU lösningsförslag till tentamen 2017-06-09 Tid: 8:30-12:30. Plats: SB. Ansvarig lärare: Fredrik Lindblad,
Länkade strukturer. (del 2)
Länkade strukturer (del 2) Översikt Abstraktion Dataabstraktion Inkapsling Gränssnitt (Interface) Abstrakta datatyper (ADT) Programmering tillämpningar och datastrukturer 2 Abstraktion Procedurell abstraktion
Subtyping, co- och contra-variance. Objekt-orienterad programmering och design Alex Gerdes, 2016
Subtyping, co- och contra-variance Objekt-orienterad programmering och design Alex Gerdes, 2016 Typer Java har två sorters typer primitiva typer och referens-typer. Primitiva typer är typer för värden:
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,
2. Palindrom. Exempel: 1,2,3,2,1 är ett palindrom, och även 0, men inte 1,2,3,1,2,3.
LULEÅ TEKNISKA UNIVERSITET Tentamen i Objektorienterad programmering och design Totala antalet uppgifter: 5 Lärare: Håkan Jonsson, 491000, 073-820 1700 Resultatet offentliggörs senast: 2011-04-02. Tillåtna
Objektorienterad programmering i Java
Objektorienterad programmering i Java Föreläsning 4 Täcker i stort sett kapitel 6 i kursboken Java Software Solutions 1 Läsanvisningar Den här föreläsningen är uppbyggd som en fortsättning av exemplet
OOP Objekt-orienterad programmering
OOP F9:1 OOP Objekt-orienterad programmering Föreläsning 9 Arv och klasshierarkier Polymorfism OOP F9:2 Djur - String namn - int vikt + String getnamn() + int getvikt() + void ökavikt(int x) Ko - int mjölkvolym
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ösningsförslag till exempeltenta 2
Lösningsförslag till exempeltenta 2 1 1. Beskriv hur man kan söka igenom en tvådimensionell array. Beskriv pseudokoden och förklara så klart som möjligt hur den fungerar. Lösning: Se laboration 3. - Beskriv
Static vs Dynamic binding Polymorfism. Objekt-orienterad programmering och design Alex Gerdes, 2016
Static vs Dynamic binding Polymorfism Objekt-orienterad programmering och design Alex Gerdes, 2016 Diagnostiskt prov Shape + overlaps(shape): int return 1; Shape shape = new Shape(); Polygon tripoly =
Klasshierarkier. Klasser kan byggas på redan definierade klasser
Klasshierarkier Klasser kan byggas på redan definierade klasser på två sätt: Klassobjekt används som dataattribut när en ny klass beskrivs. Exempel: klassen partikel består av ett antal attribut av typen
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
Objektorienterad programmering D2
Objektorienterad programmering D2 Laboration nr 2. Syfte Att få förståelse för de grundläggande objektorienterade begreppen. Redovisning Källkoden för uppgifterna skall skickas in via Fire. För senaste
Föreläsning 9: Arv och UML
TDA 545: Objektorienterad programmering Föreläsning 9: Arv och UML Magnus Myréen Chalmers, läsperiod 1, 2015-2016 Quiz Vad betyder static? Varför skriver man get-metoder? public int getpos() { return pos;
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