ÖVNINGSUPPGIFT

Uppgift 1 - Bilmärken

Försök själv först. Ledtrådar och facit finns längre ner – helt utan inloggning.


Nyckelord: Klasser, Objekt

Objekt object java

Skapa en klass och objekt av en bil

Vi ska i denna uppgift testa att skriva vår första klass. Vi ska skapa klassen Car (bil) och lägga in typiska egenskaper för att visa hur vi kan skapa och hantera objekt.

Utgå från följande program:

public class KlasserObjektUppgift1 {
    public static void main(String[] args) { 
        // Skriv din kod här 
    } 
}

Skapa sedan en ny fil och namnge den till Car.

filen Car.java:

public class Car {
}

Vi har nu två filer, huvudskriptet i filen KlasserObjektUppgift1 samt filen Car som är klassen vi ska bygga upp.

a: Skapa instansvariablerna

Börja med att skapa instansvariablerna model, color samt year med motsvarande datatyper String, String och int. Instansvariablerna ska inte gå att anropa någon annanstans än inne i klassen.

Ledtråd a

En instansvariabel blir enbart synlig för klassen när man anger private när man skapar dem. Exempelvis:

private double instansvariabel;

b: Skapa konstruktorn

Skapa en konstruktor för klassen Car. I konstruktorn ska alla instansvariabler få värden tilldelade till sig.

Ledtråd b

Använd this för att tilldela värden till instansvariablerna. Exempelvis:

Syntaxmall: byt ut platshållarna mot konkreta namn, typer och värden.

Klassnamn(String instansvariabel){
    this.instansvariabel = instansvariabel;
}

c: Skapa getters och setters

Skapa nu getters och setters. Det ska alltså finnas tre getters och tre setters. Vi ska ha en getter för varje instansvariabel som returnerar motsvarande instansvariabel. Vi ska även ha tre setters som givet ett värde uppdaterar instansvariabeln till det nya värdet. Alla getters och setters ska kunna anropas utifrån klassen.

Ledtråd c

En getter kan man skapa genom en ny metod som returnerar instansvariabeln.

public int getInstansvariabel(){
    return instansvariabel;
}

En setter kan man skapa genom en ny metod som givet ett värde uppdaterar en instansvariabel.

public void setInstansvariabel(int instansvariabel){
    this.instansvariabel = instansvariabel;
}

En metod kan anropas utifrån klassen genom att ange public när man skapar metoden.

d: Instansiera objekt

Vi kan nu skapa nya objekt i huvudskripet. Skapa två nya bilar. Den första bilen ska vara en svart Volvo från 2017 och den andra bilen ska vara en blå BMW från 2004. Testa skriva ut några instansvariabler för att se om det fungerar.

Ledtråd d

En instans (ett objekt) från klassen kan skapas med följande syntax:

Syntaxmall: byt ut platshållarna mot konkreta namn, typer och värden.

Klassnamn objektnamn = new Klassnamn(datatyp parameter1, datatyp parameter2);

e: ändra objektens variabler

Avslutningsvis, testa att byta värdena i varje objekt. Uppdatera objekten så att Volvon istället blir vit och året på BMW:n uppdateras till 2008.

Ledtråd e

Använd dina setters för att uppdatera varje objekt.

car.setModel("Polestar");
Lösning

Klassen Car.java.

public class Car {

    // Instansvariabler
    private String model;
    private String color;
    private int year;

    // Konstruktorn
    Car(String model, String color, int year){
        this.model = model;
        this.color = color;
        this.year = year;
    }
    

    // Setters
    public void setModel(String model){
        this.model = model;
    }
    public void setColor(String color){
        this.color = color;
    }
    public void setYear(int year){
        this.year = year;
    }


    // Getters
    public String getModel(){
        return this.model;
    }

    public String getColor(){
        return this.color;
    }

    public int getYear(){
        return this.year;
    }
}

Huvudskriptet:



public class KlasserObjektUppgift1 {
    public static void main(String[] args) {

        // Skapar två objekt av typen Car
        Car car1 = new Car("Volvo", "Black", 2017);
        Car car2 = new Car("BMW", "Blue", 2004);

        // Skriver ut en instansvariabel från varje objekt
        System.out.println(car1.getModel());
        System.out.println(car2.getModel());

        // Uppdaterar instansvariablerna 
        car1.setColor("White");
        car2.setYear(2008);
        
        // Skriver ut de nya värdena
        System.out.println(car1.getColor());
        System.out.println(car2.getYear());
    }
}

Förklaring: 

Klassen Car innehåller tre instansvariabler som definieras i konstruktorn. Med nyckelordet this anger vi att det är instansvariabeln som ska uppdateras. Varje getter returnerar motsvarande instansvariabel och varje setter uppdaterar motsvarande instansvariabel.

I huvudskriptet kan vi nu skapa objekt från klassen där varje objekt håller sina egna instansvariabler. Objekten är oberoende på varandra så genom att anropa en getter/setter för ett objekt, vet man säkert att det enbart är ett objekt själv som uppdateras.

Tillbaka till översikt