Objektorienterad programmering i Java



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

TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

Kapitel 6. Kapitel 6. Hakparenteser fšr att ange index float[] priser = new float[500]; frekvens[4] boolean[] flaggor;

Objektorienterad programmering i Java

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

SMD 134 Objektorienterad programmering

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.

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

Tentamen OOP

OOP Objekt-orienterad programmering

Grundkurs i programmering, 6 hp (725G61) Dugga 2 tillfälle 2

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

Tentamen. Grundläggande programmering i Java A 5p, DTAA

Tänk på följande: Det finns en referensbok (Java) hos tentavakten som du får gå fram och läsa men inte ta tillbaka till bänken.

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 10. ADT:er och datastrukturer

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

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

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

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

TENTAMEN. Kurs: Objektorienterad programmeringsmetodik 5DV133 Ansvarig lärare: Anders Broberg. VT-13 Datum: Tid: kl

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

OOP Objekt-orienterad programmering

Föreläsning 6: Introduktion av listor

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

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

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

OOP Objekt-orienterad programmering

Objektsamlingar i Java

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

Introduktion till arv

(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

Tentamen. Lösningsförslag

"if"-satsen. Inledande programmering med C# (1DV402)

Att skriva till och läsa från terminalfönstret

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

Övningar Dag 2 En första klass

Exempel. Arrayer. Lösningen. Ett problem. Arrayer och hakparanteser. Arrayer

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

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

Laboration 13, Arrayer och objekt

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

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

Kort repetition. Programmeringsteknik för Bio1 och I1. Vad ska vi lära oss idag? Ett exempel

F4 Klasser och Metoder. ID1004 Objektorienterad programmering Fredrik Kilander

Variabler som hör till enskilda objekt. Deklareras på översta nivån i klassen och i regel som private.

Laboration A Objektsamlingar

Datastrukturer. Erik Forslin. Rum 1445, plan 4 på Nada

TENTAMEN OOP

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

TENTAMEN OOP

Tentamen på kursen DA7351, Programmering , kl Malmö högskola Teknik och samhälle. DA7351, Programmering

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

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

Programmeringsteknik med C och Matlab

Tentamen , Introduktion till Java, dtaa98, dtea53

Tentamen, EDAA20/EDA501 Programmering

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

Objektorienterad programmering D2

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

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

Föreläsning 1 & 2 INTRODUKTION

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

Klasshierarkier - repetition

Föreläsning REPETITION & EXTENTA

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

Bankkonto - övning. Övning 2 Skriv en metod, geträntan, som returnerar räntan.

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

JAVA Mer om klasser och objektorientering

Konstruktion av klasser med klasser

Examination i. PROGRAMMERINGSTEKNIK F1/TM1 TIN212 (Dugga) Dag: Onsdag Datum: Tid: (OBS 3 tim) Rum: V

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

Malmö högskola 2008/2009 CTS

Föreläsning 6: Metoder och fält (arrays)

Del A (obligatorisk för alla)

Laboration 1 - Grunderna för OOP i Java

Ett problem. Kontrollstrukturer och arrayer. Arrayer. Lösningen. Arrayer och hakparanteser. Exempel int[] results; results = new int[10]; // 0..

Föreläsning 3-4 Innehåll

Typkonvertering. Java versus C

Arrayer. results

Command line argumenter. Objektorienterad Programmering (TDDC77) Vad blir resultatet? Nu då? Ahmed Rezine. Hösttermin 2016

LÖSNINGSFÖRSLAG TILL TENTAMEN PROGRAMMERINGSMETODIK MOM2 - JAVA, 4P.

Objektorienterad Programmering (TDDC77)

Fält av referenser. Konstruktorerna används för att skapa Bilar och Trafikljus.

Föreläsning 3: Booleans, if, switch

//Använd main som ett "handtag" för att hålla ihop programmet. //Själva programmet finns i övriga klasser.

LÖSNINGSFÖRSLAG TENTAMEN

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

Tentamen ID1004 Objektorienterad programmering December 15, 2012

Java, klasser, objekt (Skansholm: Kapitel 2)

Föreläsning 2, vecka 8: Repetition

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

Lösningsförslag, tentamen FYTA11 Javaprogrammering

TENTAMEN OOP

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

Lösningsförslag till tentamen i EDA011/EDA017 Programmeringsteknik för F, E, I, π och N 27 maj 2008

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

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

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

Transkript:

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 från föreläsning 2 och 3. Vi kommer att ta upp viktiga delar i kapitlet och exemplifiera dessa. Exemplet bör du "skriva in" kompilera och exekvera. Du bör gå igenom denna föreläsning och motsvarande delar i kap 6 innan du börjar med laboration 3 Multidimensionella Arrays kommer ej att tas upp. 2

Fält. Array sid 208 (268) En ordnad följd av element av samma typ. Det första elementet finns på plats 0 (index 0), det andra på plats 1 (index 1), osv. Ett elements adress bestäms av dess relativa plats i fältet. I Java är fält objekt vilket bl.a innebär att fält måste skapas (instansieras) före det att fältet används. För att skapa fält: 1. Deklarera en referensvariabel ( pekare till fältet). int[] tal // tal är referensvariabel av typ array.som kan lagra heltal 2. Instansiera fältet ( genom att ange new ). Härvid reserveras minne för fältets element. tal = new int[25] // en array med 25 element av typ int. 3

Arrays Samtliga element i en array är av samma typ. Antal element bestäms vid instansieringen och kan ej ändras. Konstanten length anger antalet element i en array. Ex System.out.println("Antal tal-element =" +tal.length); Skulle om deklaration enligt föregående bild ge följande utskrift: Antal tal-element =25 4

Exempel Problembeskrivning Vi ska utöka/förändra vårt program för att kunna spara 10 plan i en array. Vi använder i detta fall en array: FlygPlan[] tabell= new FlygPlan[10]; Ett sätt är att helt enkelt lägga denna tabell eller lista av FlygPlan i testklassen, men här gör vi istället en ny klass som vi kallar PlanLista som ska kunna lagra 10 flygplan och vi ska kunna skriva ut hela listan. 5

Behållare-klasser (container) En "behållare" som har till uppgift att samla objekt av samma typ samt hantera dessa som en enhet. Skapar möjlighet att lagra ett antal objekt och definiera metoder som kan utföra operationer på behållaren, tex lägga till nya objekt eller ta bort existerande objekt. 6

behållare forts. FlygPlan, SegelPlan och MotorPlan behöver inte förändras. Utöka vårt exempelprogram med en klass som ska "agera" behållare Vi behöver i denna behållare-klass: - Ett fält (tabell) med plats för 10st element (referenser av typen FlygPlan). - En metod för att lägga till nya flygplan. - En metod för utskrift av alla flygplan. 7

Dynamisk bindning ( se även föreläsning 3) Hur skall vi skapa ett fält som ska kunna lagra båda typerna av plan? SegelPlan och MotorPlan ärver från samma superklass, FlygPlan. Vi kan deklarera ett fält som har plats för 10 element, där varje element är en referensvariabel av typen FlygPlan. Dvs: FlygPlan[] lista = new FlygPlan[10]; ( Jämför med och fundera över skillnaderna gentemot att skriva: FlygPlan ettplan = new FlygPlan(...,...,...); ) Låt dessa objekt vara instanser av SegelPlan och instanser av MotorPlan. Dynamisk bindning, se upp med anrop av rätt metod. 8

Klassen PlanLista PlanLista final int SIZE=10; FlygPlan[] lista; int index; void addplan (FlygPlan ettplan); void print(); PlanLista(); //konstruktor 9

Implementation av klassen PlanLista class PlanLista { private final int SIZE =10; private FlygPlan[] lista; private int index;// index till första lediga plats i listan public void addplan(flygplan ettplan) { to be implemented // metod addplan public void print() { to be implemented // metod print public PlanLista() { to be implemented // konstruktor // class PlanLista 10

Konstanter För att enkelt kunna ändra antalet plan, använd då konstant. Konstant kan ej ges nytt värde, men kan i övrigt användas som variabel. private final int SIZE=10; // i fortsättningen används SIZE i stället för 10 För att skilja KONSTANTER från variabler använd STORA bokstäver. envariabel EN_KONSTANT Fördel med konstant: om man ska ändra värde behöver man ändra bara på ett ställe. 11

Metoden addplan Nya flygplan blir parameter till metoden Finns det plats, så placera objektet på nästa lediga plats i lista[index], räkna upp index så att det pekar på nästa lediga plats Finns det inte plats, skriv felmeddelande public void addplan(flygplan ettplan) { if (index<size) { // om det finns plats kvar lista[index]=ettplan; index++; // öka index med 1 else { System.out.println("Fel, det finns inte plats för fler flygplan"); // metod addplan 12

Selektion se sid 92-102 (111-119) if-satsen har följande syntax: if (villkor) { satser ; Om villkoret är sant utförs satserna mellan {. Om det är bara en sats kan { uteslutas. Exempel: if (nr<0) { System.out.println("talet är negativt"); kan skrivas så här: if (nr<0) System.out.println("talet är negativt"); 13

Selektion forts. if-else satsen har följande syntax: if( villkor) { satser; else { satser; Exempel: if( nr<0) { System.out.println("talet är negativt "); else { System.out.println("talet är positivt eller 0 "); 14

Metoden print() i klassen PlanLista public void print() { System.out.println("Flygplans parken "); System.out.println(); // Radframmatning for(int i=0; i<index; i++) { lista[i].print(); // Anropar den print()-metod i objektet som // variabeln i element nr i refererar till. // metod print Objekten i lista[] kommer alltså att skrivas ut i ordningen först in först ut dvs lista[] fungerar i detta fall som en FIFO-kö. 15

Konstruktor till PlanLista public PlanLista() { lista=new FlygPlan[SIZE]; index=0; // Första lediga plats i listan. // konstruktor Konstruktorn skapar bara en behållare för att kunna lagra max 10 st referensvariabler och anger att första lediga plats har index=0 16

class PlanLista { Hela klassen PlanLista private final int SIZE =10; private FlygPlan[] lista; private int index; // index till första lediga plats i listan public PlanLista() { lista=new FlygPlan[SIZE]; index=0; // konstruktor public void addplan(flygplan ettplan) { if (index<size) { // om det finns plats kvar lista[index]=ettplan; index++; else { // öka index med 1 för att peka på nästa lediga plats System.out.println("Fel, det finns inte plats för fler flygplan"); // slut på if // metod addplan 17

PlanLista forts public void print() { System.out.println("Flygplans parken "); System.out.println(); // radframmatning for(int i=0; i<index; i++) { lista[i].print(); // Anropar den print()-metod i objektet som // variabeln i element nr i refererar till. // slut på for // metod print // class PlanLista 18

Testprogram Skapa ett objekt av typen PlanLista Skapa ett antal flygplan och lägg in dom på listan Skriv ut listan Gör även en kontroll att det inte går att lägga in mer än 10 plan i listan. 19

Testprogrammet i filen PlanTest4.java class PlanTest4 { public static void main (String[] args) { PlanLista lista=new PlanLista(); SegelPlan s1=new SegelPlan("SE-123",12.4f,"vit",22); SegelPlan s2=new SegelPlan("SE-124",13.4f,"vit",23); SegelPlan s3=new SegelPlan("SE-125",14.4f,"vit",24); SegelPlan s4=new SegelPlan("SE-126",15.4f,"vit",25); MotorPlan m1=new MotorPlan("SE-234",8.2f,"röd",300); MotorPlan m2=new MotorPlan("SE-235",9.2f,"röd",301); MotorPlan m3=new MotorPlan("SE-236",10.2f,"röd",302); MotorPlan m4=new MotorPlan("SE-237",11.2f,"röd",303); MotorPlan m5=new MotorPlan("SE-238",12.2f,"röd",304); MotorPlan m6=new MotorPlan("SE-239",13.2f,"röd",305); MotorPlan m7=new MotorPlan("SE-230",14.2f,"röd",306); lista.addplan(s1); lista.addplan(s2); lista.addplan(s3); lista.addplan(s4); lista.addplan(m1); lista.addplan(m2); lista.addplan(m3); lista.addplan(m4); lista.addplan(m5); lista.addplan(m6); lista.addplan(m7); // detta ska ge upphov till fel, listan full lista.print(); // metod main // klass PlanTest4 20

Iteration med for sid 196 For satsen har följande syntax: for(initiering ; villkor ; sats1) { (145-) satser ; initiering görs 1 gång i början. villkor testas och om det är sant utförs satser om villkoret är falskt utförs ej satser, iterationen avslutas. Efter varje iteration utförs sats1 och villkoret testas på nytt. EX. skriv ut värden 0,1,2,3.9 for(int i=0; i<10; i++) { System.out.println("i=" + i); For-satsen används oftast om man vet exakt antal gånger som en iteration ska utföras eller om man hanterar en array, (tabell, behållare,vektor) 21

Iteration med while sid 102 (131-) while(villkor) { satser; så länge villkor är sant utförs satser För att skriva ut värdena 0,1,2,3 9 som i föreg. bild int i=0; while(i<10) { i++; system.out.println("i=" + i); Detta är exakt detsamma som med for-satsen föreg bild While används oftast om man inte känner till exakt antal gånger som iterationen ska utföras. 22

Mer om array (tabeller) Tabellelementen numreras alltid från 0 I exemplet håller alltså tabellen lista ett antal referenser till objekt av typen FlygPlan 23

Mer om tabeller Ett program som läser in 5 värden till en tabell, och sedan skriver ut dom i omvänd ordning. import java.io.*; class Heltab{ public static void main (String[] args) throws java.io.ioexception{ BufferedReader stdin=new BufferedReader(new InputStreamReader(System.in)); int i=0; final int ANTAL=5; // En konstant med värdet 5 String str; int[] tabell=new int[10];// tabell med 10 tabellelement for(i=0;i<antal;i++){ System.out.print("Skriv in ett heltal: "); str=stdin.readline(); // inläsning av sträng tabell[i]=integer.parseint(str); // omvandling av sträng till heltal System.out.println("Här kommer det i omvänd ordning"); for(i=antal-1;i>=0;i--) System.out.println("varde " + i + " =" + tabell[i]); System.out.println("tabell.length=" + tabell.length); str=stdin.readline(); // metod main // klass Heltab // Väntar på inmatning (Enter) 24

Ett annat exempel med array, en lista (tabell) med bilar // filen BilTabell.java med klassen BilTabell class BilTabell { private final int ANTAL =10; // Det ryms 10 bilar i listan private Bil[] billista; private int index = 0; public void addbil(bil nybil) { if (index<antal){ // index till billista // om det finns plats kvar billista[index]=nybil; index++; // öka index med 1 else{ System.out.println("Fel, det finns inte plats för fler bilar"); //metod addbil // klassen BilTabell fortsätter på nästa bild 25

// Forts: filen BilTabell.java med klassen BilTabell public void skriv(){ System.out.println("Här är lista över alla bilar till salu "); System.out.println(); // för att göra en radframmatning for(int i=0; i<index; i++) { billista[i].skriv(); // objektet anropar sin egen definierade print() // metod skriv(), skriver ut alla i listan public Bil enbil(int bilnr) { // hämta en referens till en viss bil i listan return billista[bilnr]; // en viss bil public BilTabell() { billista=new Bil[ANTAL]; // konstruktor // klassen BilTabell // På nästa bild kommer klassen Bil 26

Filen Bil.java här är klassen Bil import java.io.*; class Bil { private String marke; private String farg; private int hk; public Bil(String pmarke,string pfarg,int phk) { marke=pmarke; farg=pfarg; hk=phk; // metod Bil konstruktor //---------metod för att skriva ut en bil------- public void skriv() { System.out.println(marke + farg + hk); // metod skriv //---------metod för att ändra färg------- public void andrafarg(string pfarg) { farg=pfarg; // metod andrafarg 27

//Filen Bil.java forts på klassen Bil public void matainfarg()throws java.io.ioexception{ // metod för inläsning System.out.println("Ny färg: "); // av färg farg=laes(); //metod matainfarg, läser in en ny färg -------- public String hamtafarg() // metod för att hämta färg { return farg; // metod hamtafarg public void matainhk()throws java.io.ioexception { // metod att läsa in hk System.out.println("Nya hästkrafter: "); hk=integer.parseint(laes()); // metod matainhk ---läser in hästkraftter //--------metod för inläsning av en sträng---- private String laes() throws java.io.ioexception { BufferedReader stdin = new BufferedReader(new InputStreamReader(System.in)); String temp = stdin.readline(); return temp; // metod laes // Här sker inläsningen // Här returneras den inlästa strängen // klassen Bil 28

// filen BilTesta.java testprogram till klasserna Bil och BilTabell import java.io.*; class BilTesta { public static void main (String[] args) throws java.io.ioexception { // skapa tabellen BilTabell mintabell= new BilTabell(); //------här tillverkas 3 olika objekt och läggs in i tabellen mintabell.addbil(new Bil("Volvo","röd",120)); mintabell.addbil(new Bil("Mitshubishi","svart",137)); mintabell.addbil(new Bil("Saab","vit",125)); //----här anropas metoden skriv för varje objekt---- mintabell.skriv(); // här skrivs alla bilar ut // forts på nästa bild 29

// forts : filen BilTesta.java testprogram till klasserna Bil och BilTabell //----här används metoden hamtafarg på första bil------- System.out.println ( "första bilen är " +mintabell.enbil(0).hamtafarg() ); //----här används metoden andrafarg--------- mintabell.enbil(0).andrafarg("grön"); System.out.println (" har Ändrat färg till mintabell.enbil(0).hamtafarg()); //-----här används metoden matainfarg----- mintabell.enbil(0).matainfarg(); mintabell.enbil(0).skriv(); mintabell.enbil(1).skriv(); // skriver ut första bilen i listan // skriver ut andra bilen i listan // metoden main // klassen BilTesta Här ser man hur mintabell.enbil[0] refererar till objektet i billista[0] i klassen BilTabell, men eftersom billista där är private så måste objektet hämtas med en metod i klassen BilLista i detta fall metoden enbil(int bilnr) 30

Finns i java.util.*; Vectorklassen För att hantera tabeller, antalet element är dynamiskt. Elementen i en Vector är alltid av typen/klassen Object. Därför kan de referera till objekt av alla klasser. (ej primitiver!!) (762-) Några metoder i Vectorklassen: addelement( Object element ) removeelement(object element) *) contains( Object element ) *) elementat( int index ) firstelement() lastelement() size() tostring() **) Lägger till ett element sist i listan. Tar bort angivet element i listan. Ger true om angivet element finns. Returnerar element på angiven plats. Returnerar första elementet. Returnerar sista elementet. Returnerar antalet element i listan. Returnerar en strängrepr. av objekten i listan. *) Kräver att metoden equals är lämpligt definierad för objekten. **) Kräver att metoden tostring är lämpligt definierad i objekten. Först två enkla exempel på de 2 följande bilderna. 31

import java.io.*; // användning av Vector klassen när vi lägger in strängar import java.util.*; class VectTest { public static void main(string[] args){ Vector lista= new Vector(); // dynamisk minnestilldelning lista.addelement("klara B. Sked"); // lägg in i listan lista.addelement("arne Anka"); lista.addelement("bo A. Orm"); System.out.println(lista); // skriv ut hela listan, tostring // är lämpligt definierad för klassen String. if(lista.contains("arne Anka")) System.out.println(" Han finns"); else System.out.println("Finns ej"); lista.removeelement("arne Anka"); // ta bort ur listan if(lista.contains("arne Anka")) System.out.println(" Han finns"); else System.out.println("Finns ej"); System.out.println(lista); // skriv ut hela listan igen System.out.println(lista.lastElement()); // skriv ut sista elementet // main //klass VectTest 32

// Filen VectTest2 som visar hur man använder Vector med heltal import java.io.*; import java.util.*; class VectTest2 { public static void main (String[] args){ Vector lista= new Vector(); lista.addelement(new Integer(12)); // Vector kräver object, därför kan lista.addelement( new Integer(13)); // man inte använda int, istället lista.addelement( new Integer(14)); // används objektet Integer System.out.println(lista); // tostring är lämpligt definierad i Integerklassen. if(lista.contains(new Integer (13)))System.out.println(" talet finns"); else System.out.println("Finns ej"); lista.removeelement( new Integer(13)); if(lista.contains( new Integer (13)))System.out.println(" talet finns"); else System.out.println("Finns ej"); System.out.println(lista); System.out.println(lista.lastElement()); // main //klass VectTest 33

Tillbaka till bilarna Vector klassen hanterar objekt, och därför lämpar den sig för att hantera t.ex. objekt av typen Bil. Vi ska nu använda förra exemplet med Bilar för att visa Vector klassen. Vi använder nu inte klassen BilTabell, utan enbart klassen Bil och det nya testprogrammet Biltesta2. Klassen BilTabell användes i det tidigare exemplet enbart för att hantera en array med bilar. Nu byter vi klassen BilTabell mot klassen Vector, men jag lägger den hanteringen direkt i testprogrammet. 34

// filen BilTesta2.java med Vector, använder klassen Bil men ej klassen BilTabell import java.io.*; import java.util.*; class BilTesta2 { public static void main (String[] args)throws java.io.ioexception{ Vector billista = new Vector(); // tabell av obestämd storlek, dynamisk tilldelning Bil temp; // används vid typomvandling //------här tillverkas 3 olika objekt------ billista.addelement(new Bil("Volvo","röd",120)); billista.addelement(new Bil("Mitshubishi","svart",137)); billista.addelement(new Bil("Saab","vit",125)); //----här anropas metoden skriv för varje objekt---- int storlek=billista.size(); // tar reda på hur många element (bilar) i listan for(int i=0;i<storlek;i++) { // här skrivs alla bilar ut temp = (Bil) billista.elementat(i); // typcast (Bil) och tilldelning temp.skriv(); forts nästa bild 35

// forts: filen BilTesta2.java //----här används metoden hamtafarg på första bil------- temp = (Bil) billista.elementat(0); // typcast (Bil) och tilldelning System.out.println( "första bilen är " + temp.hamtafarg() ); //----här används metoden andrafarg---- temp.andrafarg("grön"); //----här används metoden hamtafarg igen på första bil---- System.out.println( " har Ändrat färg till + temp.hamtafarg() ); //----här används metoden matainfarg---- temp.matainfarg(); //---- metoden skriv i Bil, första och andra bilen i listan---- temp.skriv(); temp = (Bil) billista.elementat(1); temp.skriv(); // metoden main // klassen BilTesta2 // typcast (Bil) och tilldelning 36