Kursusarbejde 1 af 4:
Anvendelse af klasser, datatyper og aritmetik
Denne opgave er det første af fire kursusarbejder i kurset Grundlæggende Programmering på datamatikeruddannelsen i efteråret 2000.
Opgaven udleveres torsdag den 13. september 2000 kl. 21.30 og skal afleveres til læreren på papir i tre eksemplarer senest tirsdag den 19. september 2000 kl. 17.15. Opgaven indgår med en vægt på 10% af den samlede karakter for semesterets fire kursusarbejder. Bemærk, at opgaven skal besvares individuelt.
Opgaveformulering:
På en uddannelsesinstitution ønsker man en udskrift af ansøgerne til den uddannelse, som institutionen udbyder.
De oplysninger, som institutionen kender om hver ansøger er
- navn
- fødselsdato, på formen ddmmåååå
- køn
- 3 karakterer, angivet i 13-skalaen (matematik, kemi og engelsk)
Udskriften af en ansøger skal indeholde
- navn
- køn
- alder (den alder ansøgeren har ved ultimo dette ør)
- fødselsdato på formen: dd/mm/åå. Bemærk, at dette format er anderledes end det format, som bruges til at registrere datoen i klassen Ansoeger
- gennemsnittet af de 3 karakterer
Du skal gøre følgende:
- Tegne en UML-beskrivelse af klassen Ansoeger.
-
Vurdere klassen Ansoeger, herunder
- De valgte datatyper og operationer.
- Diskutere, om du ville have udarbejdet klassen med samme indhold.
- Argumentere for eventuelle ændringer og tilføjelser.
- Skrive den ændrede klasseerklæring som UML-diagram og klasseerklæring
- Overveje, hvilke ændringer det ville medføre i erklæringen af klassen Ansoeger, hvis det blev et krav, at en ansøgers CPR-nummer også skulle registreres?
- Udarbejd et program, der kan indlæse oplysninger om en ansøger fra tastaturet, oprette denne ansøger og udskrive denne ansøgers data efter ovenstående retningslinier. I denne del af opgaven skal du bruge den nuværende implementation af klassen Ansoeger, ikke en af de modifikationer, du selv har foreslået.
- Begrunde valget af de datatyper, du har brugt i dit program.
- Dokumentere at dit program virker ved at tage et skærmdump af programmet.
Krav til besvarelsen:
Du skal anvende programmeringssproget C++.
I dit mainprogram skal du anvende klassen Ansoeger, se klasseerklæringen sidst i denne opgavetekst.
Dit program skal være velstruktureret have sigende navne og gode kommentarer og være pænt opstillet, så det er let at læse.
Programmet skal være testet på maskinen, og der skal være dokumentation for dette. Fungerer programmet ikke pga. oversætterfejl, linkerfejl eller logiske fejl, skal du beskrive, hvad du mener, der skal til for at rette fejlen(e)
Forslag til punkter i indholdsfortegnelse:
- UML–diagram for klassen Ansoeger
- Vurdering af klassen Ansoeger og et begrundet forslag til ændringer.
- Begrundet forslag til ændringer af klassen Ansoeger, pga. at CPR–nummer skal registreres.
- Begrundelse for valg af datatyper i programmet.
- Kildeteksten til programmet.
- Dokumentation for programafvikling.
Bilag – Klasseerklæring og implementation for klassen Ansoeger
class Ansoeger {
private:
String navn; // ansøgernavn
char koen; // køn, 'm' for mand eller
'k' for kvinde
int foedselsDato; // fødselsdato (ddmmåååå)
short matematikKarakter; // matematikkarakter (13-skala)
short kemiKarakter; // kemikarakter
short engelskKarakter; // engelskkarakter
public:
// konstruktør
Ansoeger(String navn_, char koen_, int foedselsDato_,
short matematikKarakter_, short kemiKarakter_,
short engelskKarakter_);
// returnerer attributternes værdier
String hentNavn();
char hentKoen();
int hentFoedselsDato();
short hentMatematikKarakter();
short hentKemiKarakter();
short hentEngelskKarakter();
};
Ansoeger::Ansoeger(String navn_, char koen_, int foedselsDato_,
short matematikKarakter_, short kemiKarakter_,
short engelskKarakter_) {
navn = navn_;
koen = koen_;
foedselsDato = foedselsDato_;
matematikKarakter = matematikKarakter_;
kemiKarakter = kemiKarakter_;
engelskKarakter = engelskKarakter_;
}
String Ansoeger::hentNavn() {
return navn;
}
char Ansoeger::hentKoen() {
return koen;
}
int Ansoeger::hentFoedselsDato() {
return foedselsDato;
}
short Ansoeger::hentMatematikKarakter() {
return matematikKarakter;
}
short Ansoeger::hentKemiKarakter() {
return kemiKarakter;
}
short Ansoeger::hentEngelskKarakter() {
return engelskKarakter;
}