Objekt-orientering. Java är ett objekt-orienterat programmeringsspråk

Relevanta dokument
Föreläsning 5&6 LOGISKA VARIABLER; IMPLEMENTERA KLASSER; MER ALGORITMER

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

Föreläsning REPETITION & EXTENTA

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

Saker du ska kunna Föreläsning 13 & 14

OOP Objekt-orienterad programmering

Att deklarera och att använda variabler. Föreläsning 10. Synlighetsregler (2) Synlighetsregler (1)

EDAA20 Programmering och databaser. Mål komprimerat se kursplanen för detaljer. Om att lära sig programmera. Föreläsning 1-2 Innehåll.

Objekt som argument. Föreläsning 7-8 Innehåll. Hur komma åt den andra kvadratens attribut? Anropa metod på objektet självt

TENTAMEN OOP

Föreläsning 7-8 Innehåll

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

Föreläsning 13 Innehåll

Objektorienterad programmering (OOP) Föreläsning 15 & 16. Klasser för olika slags fordon. Klasser och objekt

Tentamen OOP

Föreläsning 3-4 Innehåll

Exempel på listor (klassen ArrayList). Ett exempel med fält. Avbildning är en speciell typ av lista HashMap.

SMD 134 Objektorienterad programmering

Tentamen, EDAA20/EDA501 Programmering

EDAA20 Programmering och databaser. Mål komprimerat se kursplanen för detaljer. Checklista. Föreläsning 1-2 Innehåll. Programmering.

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

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

TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P

DD2310. Javaprogrammering för Pythonprogrammerare. Johan Boye

Grundläggande programmering med C# 7,5 högskolepoäng

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

Föreläsning 9-10 Innehåll

Objektorienterad programmering i Java

Föreläsning Innehåll. Hantera många element. Exempel: polygon Godtyckligt antal element. Exempel: polygon forts

Tentamen DE12, IMIT12, SYST12, ITEK11 (även öppen för övriga)

Föreläsning 8 SLUMPTAL, SIMULERING + INTRODUKTION TILL VEKTORER

Exempel på program med objekt Klass med main-metod. Föreläsning 3-4 Innehåll. Övning Viktiga begrepp

Hur ser ett Java-program ut?

TENTAMEN OOP

Algoritmanalys. Genomsnittligen behövs n/2 jämförelser vilket är proportionellt mot n, vi säger att vi har en O(n) algoritm.

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

Programmering A. Johan Eliasson

Föreläsning ALGORITMER: SÖKNING, REGISTRERING, SORTERING

Datastrukturer. Föreläsning Innehåll. Program med vektor Exempel. Deklarera vektorer

Föreläsning 5 (6) Metoder. Metoder Deklarera. Metoder. Parametrar Returvärden Överlagring Konstruktorer Statiska metoder tostring() metoden javadoc

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

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

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper

OOP Objekt-orienterad programmering

TENTAMEN OOP

2. Betrakta följande program, där fyra heltal läses från tangentbordet och några (ointressanta) beräkningar görs:

Datatyper och kontrollstrukturer. Skansholm: Kapitel 2) De åtta primitiva typerna. Typ Innehåll Defaultvärde Storlek

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Felsökning. Datatyper. Referenstyper. Metoder / funktioner

OOP Objekt-orienterad programmering

Outline. Objektorienterad Programmering (TDDC77) Att instansiera en klass. Objekt. Instansiering. Åtkomst. Abstrakt datatyp.

Repetition av viktiga begrepp inom objektorienterad programmering

F4. programmeringsteknik och Matlab

Föreläsning 9: Arv och UML

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

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

Tentamen i Objektorienterad programmering

Föreläsning 1 & 2 INTRODUKTION

Tentamen, EDA501 Programmering M L TM W K V

Lösningsförslag till tentamen

Java, klasser, objekt (Skansholm: Kapitel 2)

1 Repetition av viktiga begrepp inom objektorienterad programmering

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

Föreläsning Innehåll. Checklista. Några metoder i klassen ArrayList<E> Exempel på vad du ska kunna

F4 Klasser och Metoder. ID1004 Objektorienterad programmering Fredrik Kilander

Föreläsning 2, vecka 8: Repetition

Kungliga Tekniska Högskolan Ämneskod 2D4134 Nada Tentamensdag maj - 19 Tentamen i Objektorientering och Java Skrivtid 5 h

1 Uppgift 1. a) Skapar ett Company-objekt med hjälp av den överlagrade konstruktorn. Du kan själv välja värden på instansvariablerna.

Del A (obligatorisk för alla)

Objektorienterad Programmering (TDDC77)

Del A (obligatorisk för alla)

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

(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

Kapitel 6. Hakparenteser fšr att ange index MŒnga všrden av samma typ

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

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

Dagens text. Programmeringsteknik. Mer om Scanner-klassen. Dialogrutor (klassen JOptionPane) Bubbelsortering. Omslagsklasser.

Dagens text. Programmeringsteknik. Mer om Scanner-klassen. Dialogrutor (klassen JOptionPane) Bubbelsortering. Omslagsklasser.

Föreläsning 11. Arrayer. Arrayer. Arrayer. Lagrar flera värden av samma typ Kan vara primitiva typer eller objekt. Kan ha en array av t.

Föreläsning 4. Klass. Klassdeklaration. Klasser Och Objekt

Classes och Interfaces, Objects och References, Initialization

Sammanfattning och repetition utgående från typiska tentamensuppgifter

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

LÖSNINGSFÖRSLAG TENTAMEN

Objektorienterad programmering. Fält som funktionsresultat. Mer om fält: att uppdatera ett parameterfält. Kontrast: Parametrar av primitiv typ

Tentamen , Introduktion till Java, dtaa98, dtea53

Tentamen Programmeringsteknik II och NV2 (alla varianter) Skriv bara på framsidan av varje papper.

Repetition av OOP- och Javabegrepp

Vem är vem på kursen. Objektorienterad programvaruutveckling GU (DIT011) Kursbok Cay Horstmann: Big Java 3rd edition.

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

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper

Repetition av OOP- och Javabegrepp

Introduktion till Datalogi DD1339. Föreläsning 2 22 sept 2014

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

TDDD78 Viktiga begrepp, del 2

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

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

2D1311 Programmeringsteknik för Bio1 och Bio2, vt 2003 Fiktivt prov På flervalsfrågorna är endast ett svar rätt om inget annat anges i frågan! Det rik

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

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

Transkript:

Repetition EDAA10

Objekt-orientering Java är ett objekt-orienterat programmeringsspråk Program byggs upp av klasser och objekt Objekt instantieras från klasser Klasser och objekt innehåller attribut och metoder Klasser innehåller även konstruktorer Klasser kan dela med sig av attribut, konstruktorer och metoder till underliggande klasser genom arv

(Kap 1) Kompilering och exekvering

Kap 2 - objekt Objekt Referensvariabler, objekt och moln -bilder Punktnotation för access till (attribut) och metoder Deklaration och instantiering av objekt från klass med new null Referenstilldelning Specifikation av klasser Kommentarer Konstruktorer Metoder Metod Parametrar, argument, returvärde Funktion = metod som returnerar ett värde Huvudprogram

Fullständig specifikation Exempel: Text som beskriver implementationen /* Skapar en kvadrat med övre vänstra hörnet i x, y och med sidlängden side */ Square(int x, int y, int side); Konstruktor /* Ritar kvadraten i fönstret w */ void draw(simplewindow w); Metod /* Flyttar kvadraten avståndet dx i x-led, dy i y-led */ void move(int dx, int dy); Parameterlista

Ofullständig specifikation Exempel: Saknar konstruktor Saknar draw-metod Ska kunna skapa en kvadrat med övre vänstra hörnet i x, y och med sidlängden side. Ska kunna rita ut en kvadrat i fönstret w. Ska kunna flytta kvadraten avståndet dx i x- led, dy i y-led: void move(int dx, int dy); Saknar parameterlista för konstruktor och draw-metod Identifiera och komplettera med saknade delar. Leta efter ytterligare krav och delar bland uppgiftstext

Huvudprogram Exempel: public class Huvudprogram { public static void main(string[] args) { // Deklaration av lokala variabler int x = 2; Square s = new Square(1, 2); // Satser s.move(x, 2);

Kap 3 klass och metod Implementation av klass från specifikation av klass Bestämma attribut Implementera konstruktorer Implementera metoder Lokala variabler Parametrar (referenser till objekt och primitiver) Returvärde (referens till objekt eller primitiv) Statiska attribut och metoder Överlagring av metoder och konstruktorer this

Kap 3 klass Instantieras till ett eller flera objekt public class klassnamn { // Deklarationer av attribut // Deklarationer av konstruktorer // Deklarationer av metoder Exempel: public class Point {

Kap 3 attribut Variabler (tillstånd) som är tillgängliga i objekt av en klass Deklareras i klassen: modifierare typ attributnamn ; Exempel: public class Point { private int x; Modifierare kan vara public, protected eller private. Ofta är attribut privata Typ kan vara en primitiv typ (int, double, boolean,...) eller en klass (ArrayList<Point> eller Point)

Kap 3 konstruktor Anropas när ett objekt skapas av en klass Har till uppgift att initialisera attribut till kända värden Deklareras i klassen: modifierare klassnamn ( parameterlista ) { // satser som ger attribut kända värden public class Point { private int x; Exempel: public Point(int x) { this.x = x;

Kap 3 konstruktor Modifierare kan vara public, protected eller private. Ofta är konstruktorer publika Konstruktornamnet måste vara samma som klassnamnet Konstruktorer skiljer sig från metoder genom att de saknar typ mellan modifierare och namn En klass kan innehålla flera konstruktorer (överlagring), de måste då skilja sig i parameterlistan. Exempel: public class Point { private int x; public Point() { x = 0; public Point(int x) { this.x = x; Konstruktorn anropas då ett objekt skapas, dvs då new används. Exempel: public class Huvudprogram { public static void main(string[] args) { Point p1 = new Point(); Point p2 = new Point(1); Vilken konstruktor som används beror på parameterlistan. New point() skapar ett objekt och anropar den första konstruktorn. New point(1) skapar ett objekt och anropar den andra konstruktorn.

Metod Anropas med punktnotation från objekt av klassen Statiska metoder kan anropas med punktnotation från klassen Deklareras i klassen: modifierare typ metodnamn (parameterlista ) { // Lokala variabler // Satser // Eventuell retur public class Point { private int x; public Point(int x) { this.x = x; public int getx() { return x;

Metod Modifierare är public, protected eller private. Ofta används public. Private används ibland för hjälpmetoder, dvs metoder som bara används inom den egna klassen. Typ kan vara en primitiv typ eller en klass. Typen måste matchas mot en retur-sats med samma typ. Void är en speciell typ som betyder att inget värde returneras från metoden. Metoder kan överlagras (samma metodnamn används), då måste olika parameterlistor användas. public class Square{ private Point p; public Square(int x) { p = new Point(x); public int getx() { return p.getx(); public void dosomething() { public void dosomething(int x) {

Kap 4 - kodutseende Layout En sats per rad Indragningar Namngivning Klassnamn Inledande stor bokstav (Square) Metodnamn Inledande liten bokstav (mymethod) Variabelnamn Samma som metodnamn Konstantnamn Stora bokstäver (MY_CONSTANT) Kommentarer // Enradskommentar /* Flerraderskommentar */

Kap 5 typer Primitiva typer Heltal, flyttal, boolean (sanningsvärde), tecken, referens Deklaration av variabel / attribut typ namn = startvärde; Implicita startvärden Deklaration av konstanter byte b = 2; //Heltal -127 128 short s = 45; // -32767 32768 int i = 333; // -2*10^9 2*10^9 long l =555; // -9*10^18 9*10^18 float f = 10f; // Flyttal double = 10.0; boolean b = true; // true, false char c = \n ; // Tecken Square r = null; // Referens public class Square { private int x = 1; public int add(int y) { int z = 1; return x + y + z; Attribut Parameter Lokal variabel

Kap 6 - uttryck Tilldelningssats variabel = nytt värde; Tilldelningsregler Aritmetiska uttryck + - * / % Konvertering (casting) Logiska uttryck == && och eller! icke int num = 12; double div = 123 / (double)num; num = (long)math.round(div); int max = Integer.MAX_VALUE; int min = Integer.MIN_VALUE; for (int i=0; i<9; i++) if (i%2 == 0) ; boolean found = false; int i=32; while (! found && i>0) { i--; /*...*/ String[] str = { aa, ab, ba, cc ; int p=3; while (str[p].compareto( bb ) > 0 && p > 0) { p--;

Kap 6 Teckenuttryck Ordningsnummer Speciella tecken \n Stränguttryck Jämförelse Objektuttryck Jämförelse char ch = A ; if (ch >= A && ch <= Z ) ch = (char) (ch A + a ); ch = \n ; String s = Hej + san\n ; s = s + och hejsan\n ; if (s.compareto( Hej ) < 0) ; Point p1 = new Point(10, 20); Point p2 = new Point(10, 20); Point p3 = p1; p3 = null; if (p1!= null) ; if (p1 == p2) ; if (p1.equals(p2)) ;

Kap 6 Slumptalsklass (java.util.random) import java.util.random; public class Huvudprogram { public static void main(string[] args) { Random r = new Random(); for (int i=0; i<10; i++) { int a = r.nextint(); double b = r.nextdouble();

Kap 7 satser I metoder och konstruktorer Sekvens Tilldelning Metodanrop Retursats Tom sats Alternativ if switch break Repetition while do while for break, continue Utskrift Inläsning int a = 4; Point p = new Point(a); int x = p.getx(); return x; ; if (a < 5) { // Sats om sant else { // Sats om falskt switch (a) { case 1: ; break; case 2: ; break; while (a>0) { a--; do { a++; while (a<5); for (int i=0; i<4; i++) ;

Inläsning System.in Scanner import java.util.scanner; public class Inlasning { public static void main(string[] args) { Scanner scan = new Scanner(System.in); while (scan.hasnextint()) { int n = scan.nextint(); String s = scan.next();

Utskrift System.out public class Utskrift{ public static void main(string[] args) { StringBuilder sb = new StringBuilder(); sb.append( Hej ).append( san ).append( \n ); System.out.println( Hello ); System.out.print(sb.toString()); for (int i=0; i<5; i++) { double r = Math.sqrt(i); System.out.printf( %5d...%6.3f%n, i, r);

Kap 8 vektor och lista Vektor, matris Listalgoritmer för vektor Insättning i osorterad lista Insättning i sorterad lista Borttagning från osorterad lista Borttagning från sorterad lista Utöka storlek Linjärsökning Binärsökning Sortering Registrering

Kap 8 Anta att klass Fartyg finns public class Fartyg{ private String name; public Fartyg(String name) { this.name = name; public String getname() { return name; public String tostring() { return Fartyg + \t + name;

Kap 8 vektor Deklaration och startvärden import java.util.scanner; public class MinVektor { private Fartyg[] v = new Fartyg[25]; private int n; public MinVektor() { Scanner s = new Scanner(System.in); n = 3; v[0] = new Fartyg( a, 1 ); for (int i = 1; i<3; i++) { v[i] = new Fartyg(s.next()); import java.util.scanner; public class MinVektor2 { private int[] a; public MinVektor2() { Scanner s = new Scanner(System.in); a = new int[25]; a[0] = 1; a[1] = a[0] + 1; for (int i = 0; i<n; i++) { a[i] = s.nextint();

Kap 8 matris Deklaration och startvärden import java.util.scanner; public class MinMatris { private int[][] a = new int[25][12]; public MinMatris() { Scanner s = new Scanner(System.in); a[0][0] = 1; a[1][0] = a[0][0] + 1; for (int i = 0; i<25; i++) { for (int j=0; j<12; j++) { a[i][j] = s.nextint();

Kap 8 Insättning i osorterad lista public class MinVektor { private Fartyg[] v = new Fartyg[25]; private int n; public void insert(fartyg f) { v[n] = f; n++; Sätt in sist Öka listans storlek

Kap 8 Insättning i sorterad lista public class MinVektor { private Fartyg[] v = new Fartyg[25]; private int n; public void insert(fartyg f) { int pos = 0; while (pos<n && f.getname().compareto(v[pos].getname())<0) { pos++; for (int i=n; i>pos; i--) { v[i] = v[i-1]; v[pos] = f; n++; Linjärsökning efter insättningsposition Skapa utrymme för att sätta in fartyg Öka listans storlek Sätt in

Kap 8 Borttagning ur osorterad och sorterad lista public class MinVektor { private Fartyg[] v = new Fartyg[25]; private int n; public void remove(fartyg f) { int pos = 0; while (pos<n && f.getname().compareto(v[pos].getname())!=0) { pos++; if (pos<n) { for (int i=pos; i<n-1; i--) { v[i] = v[i+1]; n--; Minska listans storlek Linjärsökning efter borttagningsposition Om fartyget finns i listan, så ta bort

Kap 8 Utöka storlek Vektorns storlek public class MinVektor { private Fartyg[] v = new Fartyg[25]; private int n; Saknar vektorn plats private int size = 25; för nästa listelement? public void insert(fartyg f) { if (n>=size) { Fartyg[] tmp = v; v = new Fartyg[2 * size]; for (int i=0; i<n; i++) { v[i] = tmp[i]; size = 2 * size; // Resten av insert-koden Skapa ny vektor av dubbla storleken Kopiera innehållet i den gamla vektorn till den nya

Kap 8 Linjärsökning public class MinVektor { private Fartyg[] v = new Fartyg[25]; private int n; public int find(fartyg f) { int pos = 0; while (pos<n && f.getname().compareto(v[pos].getname())!=0) { pos++; if (pos<n) { return pos; else { return -1; Fartyget hittades inte Linjärsökning Om fartyget hittades, så returnera listindex

Kap 8 Binärsökning (kallas också mittpunktssökning eller intervallhalvering) Förutsätter sorterad vektor Leta medan det finns ett giltigt intervall och fartyget inte är funnet public class MinVektor { private Fartyg[] v = new Fartyg[25]; private int n; public int find(fartyg f) { int low = 0; int high = n-1; int mid = -1; boolean found = false; while (low<=high &&! found) { mid = (low+high) / 2; if (f.getname().compareto(v[mid].getname()) == 0) { found = true; else if (f.getname().compareto(v[mid].getname()) > 0) { low = mid + 1; else { high = mid 1; if (found) { return mid; else { return -1; Returnera position för funnet fartyg eller -1 Det sökta namnet finns i intervallet [low,high] Titta på mittpunkten Fartyget är hittat Fartygsnamnet finns i intervallet [mid+1,high] Fartygsnamnet finns i intervallet [low,mid-1]

Kap 8 Urvalssortering public class MinVektor { private Fartyg[] v = new Fartyg[25]; private int n; public void sort() { for (int i=0; i<n-1; i++) { String min = v[i].getname(); // startsträng int minindex = i; for (int k=i+1; k<n; k++) { if (v[k].getname().compareto(min) < 0) { min = v[k].getname(); minindex = k; Fartyg tmp = v[minindex]; v[minindex] = v[i]; v[i] = tmp; Hitta minsta elementet i intervallet [i,n-1] Byt plats på element i och minsta elementet i [i,n-1]

Kap 8 Registrering Registreringsfack public class Registrering { private int[] v = new int[5]; // 0-9, 10-19,..., 40-50 public void registernumber0-50(int n) { int index = -1; if (n < 50) { index = n / 10; // Heltalsdivision else { index = 5; v[index]++; Räkna ut vilket fack (index) talet n tillhör Räkna upp antalet i rätt fack

Kap 9 arv Superklass och subklasser Subklass ärver attribut, konstruktorer och metoder Subklassen specialiserar, utvidgar superklassen Superklass Kan vara abstrakt Abstrakta metoder Subklass Anrop av superklass konstruktor från konstruktor super Anrop av metod i superklass Anrop av metod i superklass vid överlagring super.tostring() Typregler instanceof

Kap 9 Arv public class SuperKlass { private String s; protected int n; public SuperKlass(String s, int n) { this.s = s; this.n = n; public String tostring() { return s +, + n; public String gets() { return s; public void SubKlass extends SuperKlass { private double g; public SubKlass(String s, int n, double g) { super(s, n); this.g = g; public String tostring() { return super.tostring() +, + g; extends anger arv Attribut n, konstruktor, metod tostring och gets från SuperKlass tillgängliga i SubKlass super för att anropa konstruktor i SuperKlass super för att anropa överlagrad metod i SuperKlass

Abstrakta klasser kan ha abstrakta metoder Kap 9 Abstrakt public abstract class SuperKlass { private String s; protected int n; public SuperKlass(String s, int n) { this.s = s; this.n = n; public abstract String abstractmethod(); Ingen implementation av abstrakt metod ges i SuperKlass public void SubKlass extends SuperKlass { private double g; public SubKlass(String s, int n, double g) { super(s, n); this.g = g; public String abstractmethod() { g = 1.0; Implementation av abstrakt metod ges i SubKlass

Kap 11 String och StringBuilder String för konstant sträng length charat equals compareto indexof substring String s1 = Hello ; String s2 = Hej ; int len = s1.length(); if (s1.equals( Hello )) ; if (s1.compareto(s2) == 0) ; if (s1.compareto(s2) > 0) ; // s1 > s2 if (s1.compareto(s2) < 0) ; // s1 < s2 if (s1.indexof( He ) >= 0) ; String s3 = s1.substring(0, 2); // He

Kap 11 String och StringBuilder StringBuilder för förändringsbar sträng används för att bygga strängar tostring konvertering till konstant sträng append insert delete replace Metoden String tostring() StringBuilder sb = new StringBuilder(); sb.append( Hej ).append( san ); String s = sb.tostring(); Alla klasser kan deklarera en tostring-metod som har till uppgift att skapa en sträng som representerar objektet.

Kap 12 ArrayList ArrayList<typ> Enkla listoperationer finns Insättning Borttagning Utöka storlek ArrayList<Fartyg> v = new ArrayList<Fartyg>(); int n = v.size(); v.add(new Fartyg( a )); // Lägg till fartyg sist v.add(0, new Fartyg( b )); // Lägg till fartyg på pos 0 Fartyg f = v.remove(0); // Ta bort fartyg på pos 0 Mer avancerade måste fortfarande implementeras Insättning i sorterad lista Borttagning från sorterad lista Linjärsökning ~ (finns givet att equals finns överlagrad i lagrat objekt) Binärsökning Sortering Autoboxing

Kap 12 Insättning i sorterad lista public class MinVektor { Linjärsökning efter private ArrayList<Fartyg> v = new ArrayList<Fartyg>(); insättningsposition public void insert(fartyg f) { int pos = 0; while (pos<v.size() && f.getname().compareto(v.get(pos).getname())<0) { pos++; v.add(pos, f); Sätt in

Kap 12 Borttagning ur sorterad lista public class MinVektor { private ArrayList<Fartyg> v = new ArrayList<Fartyg>(); Linjärsökning efter public void insert(fartyg f) { borttagningsposition int pos = 0; while (pos<v.size() && f.getname().compareto(v.get(pos).getname())!=0) { pos++; if (f.getname().compareto(v.get(pos).getname())==0) { v.remove(pos); Ta bort

Kap 12 Urvalssortering public class MinVektor { public void sort(arraylist<fartyg> v) { for (int i=0; i<n-1; i++) { String min = v.get(i).getname(); // startsträng int minindex = i; for (int k=i+1; k<n; k++) { if (v.get(k).getname().compareto(min) < 0) { min = v.get(k).getname(); minindex = k; Fartyg tmp = v.get(minindex); v.set(minindex, v.get(i)); v.set(i, tmp); Hitta minsta elementet i intervallet [i,n-1] Byt plats på element i och minsta elementet i [i,n-1]