I denna uppgift skulle vi implementera det ovan givna klassdiagrammet.
Jag löste uppgiften tillsammans med Malin Nyström. Vi började med att skapa tre olika filer, en för superklassen personal och dess subklasser, en för projektklassen och en för testfilen, "Uppgift 4". Vi hade en del problem i början med att förstå programmets syfte och uppgiften kändes stor och svår att greppa. Vi valde därför att bryta ner den i mindre delar och fokusera på en sak i taget. Därför började vi med klassen personal och dess subklasser. Med hjälp av klassdiagrammet kunde vi utläsa att klasserna Systemutvecklare, IT-tekniker och Projektledare ärver av personalklassen. Eftersom vi hade löst uppgift ett innan så kunde vi se tillbaka på den när vi definerade klasserna. Vi definerade de olika klasserna och gav konstruktorerna parameterlistor och attributen åtkomstmetoder. Vi fortsatte sedan med testfilen. Där ville vi testa de olika klasserna och skapade därför olika personer och gav attributen värden. Vi fastnade sedan lite men fick hjälp på det extrainsatta seminariet och förstod att vi var tvugna att använda oss av metoden __str__ för att testa klasserna på det sätt vi ville. Vi utökade därför varje klass med __str__ för att kunna skriva ut värdena från testfilen. Vi var noggranna med att ange varje attribut i rätt datatyp. Tack vare seminariet visste vi att datatyperna skulle anges i testfilen och inte de andra filerna. Sedan gick vi vidare med projektklassen som vi definerade och gav konstruktorn en parameterlista och samtliga attribut åtkomstmetoder. Denna klass testades på samma sätt som de andra i testfilen, men vi skapade såklart projekt istället för personer.
När vi testat samtliga klasser gick vi vidare till den del av uppgiften där man skulle kontrollera om en medarbetare besitter en viss egenskap som krävs i ett projekt. Detta löste vi med nedanstående if-sats.
Om medarbetaren besitter kunskapen läggs projektet till i listan av godkända projekt med hjälp av append. För att vi skulle kunna kontrollera att projektet lagts till i listan skapade vi en for-loop där projektlistan skrivs ut. Till sist beräknade vi nettot, med hjälp av nedanstående for-loop där de olika projektens budget adderades och skrevs ut.