bild
Skolan för
elektroteknik
och datavetenskap

Programutvecklingsteknik, från föreläsning 1

Obs! Sidan är en sammanfattning av föreläsningen. Allt som tas upp på föreläsningen står inte här.

Föreläsningsbilder: F1-bilder

Vi börjar med en översikt av kursinnehållet, därefter blir det en snabbgenomgång av examinationen: labbar och tentamen. Vi repeterar sedan lite Java och introducerar UML-klassdiagram.

Kursinnehåll

Kursen heter Programutvecklingsteknik. Det är underförstått att det i första hand är Objektorienterad Programutvecklingsteknik.

Examination

Se kurshemsidan under Laborationer, Tentamen samt Examination och betyg.

Kurslitteratur

Se kurshemsidan under Kursmaterial/litteratur,

Java

Exemplet nedan finns även på föreläsningsbilderna.

När ett riktigt objektorienterat Javaprogram exekverar så består det av objekt som ber (eller befaller) varandra att göra olika saker. Det som objekten kan göra är programmerat i metoder. Varje metod ligger inuti en klass. De flesta klasser används som mallar för objekt. Här är t.ex. en klass för spelkort:

 class Spelkort {
    String färg;
    int valör;
 }
Om vi har tillgång till denna i en fil Spelkort.java kan den kompileras med javac Spelkort.java för att generera Spelkort.class. Objekt av Spelkort kan skapas med new Spelkort(). Mer användbart blir det om vi kan bestämma vilken valör och färg kortet ska ha när vi skapar det. Vi ger klassen en konstruktormetod:
class Spelkort {
    String färg;
    int valör;

    Spelkort (String f, int v) {
	färg = f;
	valör = v;
    }
}
Kort kan nu skapas med t.ex. new Spelkort("Hjärter", 7).

Inför även en metod toString() som presenterar objektet och gör det enkelt att skriva ut information om det. Ett spelkort presenteras med t.ex. "Klöver 2" eller "Ruter ESS".


class Spelkort {

    String färg;
    int valör;

    Spelkort (String f, int v) {
	färg = f;
	valör = v;
    }

    public String toString () {
	String valörString;
	if (valör == 1)
	    valörString = specvalör[0]; // ESS
	else if (valör >=2 && valör <=10)
	    valörString = "" + valör;   // 2..10
	else
	    valörString = specvalör[valör - 10]; // KNEKT,DAM,KUNG
	return färg + " " + valörString;
    }

    // ********************************************************
    // * Den del av klassen som beskriver ett Spelkort-objekt *
    // * är ovanför. Nedanför finns static-delen av klassen   *
    // * som existerar OBEROENDE av eventuella objekt.        *
    // ********************************************************

    static String[] specvalör = {"ESS", "KNEKT", "DAM", "KUNG"};
    // main - metod som testar Spelkort skulle mycket väl kunna ligga här
}
För att testa att Spelkortsklassen fungerar behöver vi en main- metod. Den kan vi lägga i en egen klass eller i klassen Spelkort.
class TestaKort {
    public static void main (String[] arg) {

	String[] färger = {"Hjärter", "Spader", "Ruter", "Klöver"};

        // Skapa vektor med plats för 52 Spelkort.
	Spelkort[] kortlek = new Spelkort[52];
	
	// Skapa korten
	int kortnr = 0;
	for (String färg : färger)
	    for (int valör = 1; valör<=13; valör++)
		kortlek[kortnr++] = new Spelkort(färg, valör);
	
	// Visa korten:
	for (Spelkort spk : kortlek)
	    System.out.println(spk);
    }
}
En körtning av programmet ger utskriften som finns här: spelkortsutskrift.

Om man vill använda korten till en patiens så kan man ha nytta av att korten själva håller reda på om de har fram- eller baksidan uppåt. Definiera klassen Patienskort

class Patienskort extends Spelkort {

    boolean rättvänd;

    Patienskort (String f, int v, boolean rv) {
	super(f,v);
	rättvänd = rv;
    }

    void vänd () {
	rättvänd = !rättvänd;
    }

    public String toString() {
	if (rättvänd)
	    return super.toString();
	else
	    return "BAKSIDA";
    }
}
Copyright © Sidansvarig: Ann Bengtsson <ann@nada.kth.se>
Uppdaterad 2014-03-23