Föreläsningar  Lektioner  Examination  Länkar  <<

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:

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);

För att få en lättbegriplig utskrift från de två sista kodraderna så ska toString() överskuggas i samtliga klasser. I klassen MIStudent räcker det med att namn och årskurs skrivs ut. För MILarare så kan klassens omdefinition av metoden här ske i stil med:

if(visaAdress() != "")
   return visaNamn() + " är en MILärare med
          epostadressen: " + visaAdress();
else
   return visaNamn() + " är en MILärare som
          borde skaffa en epostadress";