![]() |
![]() |
|
02101 Indledende programmering | ||
Efterår 2007 |
Velkommen til 'Læg en studieplan' Programmet kender følgende ordrer: hjælp tilføj fjern udskrivbase visplan ... afslut Indtast din ordre/data efter '-->' nedenfor --> tilføj 02101 Angiv semesternummer --> 1 Kursus 02101 er blevet tilføjet --> tilføj 01017 Angiv semesternummer --> 1 Kursus 01017 er blevet tilføjet --> tilføj 02101 Angiv semesternummer --> 1 *** Kursus 02101 kunne ikke tilføjes - er allerede i planen *** --> tilføj 02105 Angiv semesternummer --> 1 *** Kursus 02105 kunne ikke tilføjes - manglende forudsætningskurser *** --> visplan Semester Mandag Tirsdag Onsdag Torsdag Fredag E 8-12 --- 02101 --- --- --- 13-17 --- --- --- 01017 --- --> afslutSpørgsmålet om forudsætningskurser behandles efterfølgende.
8-12
eller 13-17
) er bestemt af en
skemagruppe således:Mandag Tirsdag Onsdag Torsdag Fredag 8-12 1A 3A 5A 2B 4B 13-17 2A 4A 5B 1B 3BKurserne
02101
og 01017
udbydes om efteråret
(E
) på første semester. Placeringen på ugedag og
tidsperiode - jfr. underafsnittet Eksempel på en dialog -
angives derfor i DTU kursusbasen som E3A
henholdsvis
E1B
, altså med et foranstillet E
.
For kurser på 2. semester (om foråret) angives kursernes placering
i DTU kursusbasen med bogstavet F
foran skemagruppen.
Et eksempel på en studieplan for de første to semestre kunne være:
Semester Mandag Tirsdag Onsdag Torsdag Fredag E 8-12 --- 02101 01005 --- 02121 13-17 --- --- 01005 01017 01005 F 8-12 --- --- 01005 02105 02405 13-17 02161 02402 01005 --- 01005Denne studieplan opfylder følgende krav:
02105
på 1. semester, men det accepterede
programmet ikke, fordi 02105
har følgende to
forudsætningskurser: 02101
og 01017
.
Nedenfor er som eksempel vist de tre filer svarende til netop kurserne
i dén studieplan der blev vist i forrige afsnit -
Krav til en studieplan:
Fil med kursusnavne
01005 Matematik 1 01017 Diskret matematik og databaser 02101 Indledende programmering 02105 Algoritmer og Datastrukturer I 02121 Ingeniørarbejde 02161 Software Engineering 1 02402 Introduktion til statistik 02405 Sandsynlighedsregning
Her har vi forenklet modellen lidt, så kurser der udbydes både
efterår og forår internt har fået suppleret deres kursusnummer
med -e
, henholdsvis -f
:
01005-e E5A E5B E3B 01005-f F5A F5B F3B 01017 E1B 02101 E3A 02105 F2B 02121 E4B 02161 F2A 02402-e E3A 02402-f F4A 02405-e E4B 02405-f F4B
Kurserne 02105
og 02161
har de anførte
forudsætningskurser 01017
og 02101
,
henholdsvis 02101
:
02105 01017 02101 02161 02101
02105
, har i DTU-kursusbasen
blandt sine forudsætningskurser nogle der kan tages
senest samtidig. Denne komplikation for lægning
af en studieplan ser vi bort fra.
01005
, har vi valgt en semesteropdeling,
så kursusbasen internt indeholder kurserne
01005-e
og 01005-f
. Brugeren
må så tilføje kurset 01005
af to
gange, nemlig som 01005-e
og som
01005-f
. Og når kurset ønskes fjernet/flyttet
må brugeren også gøre dette af to gange.
02402
udbydes på to
semestre har vi også internt valgt at supplere kursusnummeret
med -e
og -f
. Herved forenkles
søgningen i kursusbasen: Enten forekommer kurset netop
én gang eller også findes det ikke i basen. Brugeren
må så selv sørge for kun at placere kurset én
gang i sin studieplan.
Overordnet skal programmet først etablere kursusbasen med de kurser der kan indgå i en studieplan, dernæst kunne lægge en studieplan i dialog med brugeren af programmet, og til sidst kunne gemme den lagte studieplan i en fil.
Kursusbasen dannes ud fra tre filer nævnt i den givne problemstilling i underafsnittet Kursusbasen:
Vær opmærksom på, at eksemplet ikke skal følges slavisk. Fx
kan I selv bestemme formatet
for ordrerne, dvs. ordrens navn og om ordren skal have alle
sine parametre med det samme, eller om programmets dialogdel
skal bede om parametrene. Så for ordren tilføj
kan I vælge mellem:
--> tilføj Angiv kursusnummer --> 02101 Angiv semesternummer --> 1
--> tilføj 02101 Angiv semesternummer --> 1
--> tilføj 02101 1
toString()
.
Et godt udgangspunkt for at opnå dette er, at man gør sig klart:
KursusBase
til at rumme passende
collections med de kurser der kan plukkes iblandt og
som kan indgå i en studieplan. Klassen har naturligvis
også ansvar for at danne en kursusbase med netop
de kurser der er defineret i de tre filer nævnt i starten
af afsnittet Opgave.
Kursus
med de nødvendig til blandt
andet kursusnavn, skemagruppeplacering og forudsætningskurser.
Studieplan
med de data der definerer
den studieplan programmet er ved at lægge. Gør jer klart
egenskaberne for Java's collection-klasser
og for array
s. Vurdér jeres opfattelse
af strukturen for en studieplan og kombinér om
nødvendigt flere klasser når strukturen skal implementeres.
Kontrol
der håndterer en
kursusbase og en studieplan og har en metode som kan udføre
enhver af de ordrer der kan benyttes i dialogen intoduceret
i afsnittet Problemstillingen. Metoden udfører
ordren ved at bruge metoder fra klassen KursusBase
og fra klassen Studieplan
og returnerer et svar
til klassen Dialog
.
Dialog
med en
main()
-metode der erklærer en instans
k
af Kontrol
-klassen:public class Dialog { ... public static void main(String[] args) { Kontrol k = new Kontrol(); ... // Løkke til håndtering af ordrer, // hvor hver løkkecyklus: // - udskriver '-->' // - læser ordren // - aktiverer k's metode(r) ... } }
Studieplan
og KursusBase
udgør model-delen og klassen Dialog
er view-delen, svarende til følgende klassediagram:
Testklasserne indføres samtidig med programklasserne og
udbygges efterhånden som klasserne skrives.
Kriterierne for bedømmelsen af jeres rapport med tilhørende Java-program fremgår af
Oplysninger om tidsfrister for gruppedannelsen og for aflevering af rapporten fremgår af
toString()
.
-e
eller -f
til kursusnummeret for at lette
håndteringen af kurser over to semestre og af kurser
der blev udbudt såvel forår som efterår. Foretag
de nødvendige rettelser så skemagruppefiler kan se
sådan ud:01005 E5A E5B E3B F5A F5B F3B 01017 E1B 02101 E3A 02105 F2B 02121 E4B 02161 F2A 02402 E3A 02402 F4A 02405 E4B 02405 F4BHvis jeres program kan håndtere kurser i 3-ugersperioderne skal
02121
specificeres således.02121 E4B januar
... manglende forudsætningskurser
*** Kursus 02105 ej tilføjet - forudsætningskurset 01017
mangler ***
02101;Indledende programmering;E3A;
02161;Software Engineering 1;F2A;02101
Sidst ændret: 28. november - afsnittet 'Opgavebesvarelsen' tilføjet
Tidligere ændret:
- 22. november - afsnittet 'Udvidede krav til
3-personersgrupper' tilføjet
- 21. november - afsnittet 'Reducerede krav til
1-personersgrupper' tilføjet
- 19. november - afsnittet 'Opgaven' tilføjet
- 17. november - afsnittet 'Problemstillingen' tilføjet
- 15. november - kun titlen