I denna uppgift ombads vi utöka en geometrimodul bestående av klasser som vår kursansvarige skapat. Uppgiften var att först skapa ett klassdiagram, utöka modulen med klasser som behandlar rektanglar och trianglar. Sist skulle klasserna testas med hjälp av testprogrammet som vi även skulle utöka.
Klassdiagrammet skapades med hjälp av programmet ArgoUML. Jag började med att skissa upp klassdiagrammet med hjälp av papper och penna. Jag identifierade vilka klasser som skulle finnas i programmet samt vilka attribut och operationer de olika skulle innehålla. Jag identifierade också klassarvet mellan klasserna och illustrerade det med hjälp av pilar.
Bilden ovan visar en liten del av källkoden, klassen rektangel. Jag började med att utöka källkoden med klassen Rektangel och sedan fortsatte jag med den frivilliga uppgiften att även lägga till en klass som behandlar trianglar. Båda klasserna är uppbyggda på samma sätt. Operationen __init__ defineras och datagöms attributen som används i klassen. X och y datagömdes redan i klassen Punkt. Sedan följer två operationer som returnerar värdet av sidorna a och b (i triangelklassen finns också en sida c). Efter följer två operationer som returnerar värdet av rektangelns area samt omkrets. Uträkningarna sker enligt mellanstadiemattens formler för area och omkrets hos rektanglar. Operationen getHeight returnerar värdet av sidan b som utgör rektangelns höjd. Operationen __eq__ jämför två rektanglar med varandra och returnerar antingen true eller false beroende på om är rektanglarna är lika eller ej. __str__ returnerar en sträng med text innehållande sidornas och punkternas värden.
Bilden ovan visar en liten del av testprogrammet. I denna del av koden testas klasserna rektangel och triangel. Tre rektanglar tilldelas värden. Programmet skriver sedan ut testvärden, de tre första skriver ut area, omkrets och höjd för rektangel 1. Sedan följer en jämförelse mellan de två första rektanglarna, r1 och r3 skrivs ut och avslutningsvis jämförs värdena hos r1 med r3. Samma tester sker sedan hos triangelklassen.
Bilden ovan visar resultatet av testkörning.