Uppgift1 är en träning i att använda viktiga OO-tekniker som klassarv, överlagring och överskuggning. För en nystartad utbildning i medicinsk informatik har du fått i uppgift att bygga en klasshierarki som håller reda på information om de personer som är inblandade. Börja med en bas- klass som förslagsvis kan heta MIPerson. I denna klass ska det finnas två stycken attribut:
private String namn
private String epost
Vidare så ska klassen ha två stycken konstruktorer, den första tar ett namn som inparameter, den andra tar emot bägge attributen. Då båda strängarna är deklarerade som private behövs också några åtkomst- metoder. Att kunna byta namn är inte nödvändigt i detta system men däremot så ska det finnas en mutator som kan ändra epostadressen: public void bytEpost(String epost)
För de personer som deltar i undervisningen behöver vi sedan två olika ärvande subklasser för att kunna hålla reda på studenter och lärare. I din klass MIStudent ska det finnas en
private int årskurs
som nås med en passande åtkomstmetod. Klassens konstruktorer ska överlagras enligt samma modell som i basklassen. Specialiseringen i MILarare består av instansvariabeln
private String kurs
som även den kompletteras med en åtkomstmetod och lämpliga konstruktorer.
DEL A: Rita upp ett klassdiagram för din lösning med hjälp av Rational Rose eller alternativt med verktyget ArgoUML.
DEL B: Implementera detta i javakod och en komplett lösning ska nu även innehålla en kontainerklass där några objekt av klasserna ovan testkörs i main-metoden. Klass kan heta
public class Uppgift1
och testningen kan ske enligt:
MILarare mil = new MILarare("Hippokrates", "UML");
MIStudent mis1 = new MIStudent("Pandora", 2);
MIStudent mis2 =
new MIStudent("Paracelsus", "par@celsus.nu", 1);
mil.bytAdress("hipp@dsv.su.se");
mis1.bytÅrskurs(1);
System.out.println(mil);
System.out.println(mis1);
if(visaAdress() != "")
return visaNamn() + " är en MILärare med
epostadressen: " + visaAdress();
else
return visaNamn() + " är en MILärare som
borde skaffa en epostadress";