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";
}
}