Praktikum 3
Abstraktsed andmetüübid
Realiseerida abstraktne andmetüüp "Kompleksarv", millel oleksid
järgmised operatsioonid:
__init__(self, re, im) -
konstruktor, mille parameetriteks on kaks reaalarvu - kompleksarvu
reaalosa ja imaginaarosa
__bool__(self) - predikaat, mis on tõene, kui kompleksarv
ei võrdu nulliga
__eq__(self, teine) - predikaat, mis on tõene, kui
kompleksarvud self ja teine on võrdsed
__str__(self) - meetod, mis tagastab kompleksarvu
tekstilise kuju: sõne kujul "a+bi" või "a-bi" vastavalt
imaginaarosa b märgile
__hash__(self) - meetod, mis tagastab kompleksarvu räsi -
täisarvu, mis sõltub nii reaalosast kui ka imaginaarosast, on
võrdsete kompleksarvude jaoks sama ning mittevõrdsete
kompleksarvude jaoks üldjuhul erinev (püüdke kollisioonide teket
vältida)
reaalosa(self) - meetod, mis tagastab kompleksarvu
reaalosa re
imaginaarosa(self) - meetod, mis tagastab kompleksarvu
imaginaarosa im
kaaskompleksarv(self) - meetod, mis tagastab kompleksarvu
kaaskompleksarvu, mis avaldub valemiga: kaaskompleksarv(a+bi) =
a-bi
__neg__(self) - meetod, mis tagastab kompleksarvu
vastandarvu, mis avaldub valemiga vastandarv(a+bi) = -a-bi
__add__(self, teine) - meetod mis tagastab kompleksarvude
self ja teine summa, mi avaldub valemiga (a+bi) + (c+di) = (a+c) +
(b+d)i
__mul__(self, teine) - meetod, mis tagastab
kompleksarvude self ja teine korrutise: mis avaldub valemiga
(a+bi) * (c+di) = (ac-bd) + (ad+bc)i
poordarv(self) - meetod, mis tagastab kompleksarvu
pöördarvu, mis avaldub valemiga 1/(a+bi) = a/(a*a+b*b) +
((-b)/(a*a+b*b))i
__sub__(self, teine) - meetod, mis tagastab
kompleksarvude self ja teine vahe. Lahutamine on vastandarvu
liitmine
__truediv__(self, teine) - meetod, mis tagastab
kompleksarvude self ja teine jagatise. Jagamine on pöördarvuga
korrutamine
moodul(self) - meetod, mis tagastab kompleksarvu mooduli,
mis avaldub valemiga moodul(a+bi) = sqrt(a*a + b*b)
nurk(self) - meetod, mis tagastab kompleksarvu polaarkuju
argumendi peaväärtuse radiaanides. Avaldub seosest a+bi = m*cos(p)
+ (m*sin(p))i, kus m on moodul ja p on argumendi peaväärtus
@staticmethod parse_kompleksarv(tekst) - klassimeetod,
mis tagastab kompleksarvu, mida kirjeldab parameetriks olev tekst.
Peab olema kooskõlas meetodiga __str__ (tõlgendama __str__ poolt
väljastatud teksti õigesti) ning vigase teksti korral tekitama
erindi ValueError, mille veateatest nähtuksid nii vigane tekst kui
ka vea põhjus.
Testida kõik operatsioonid ning eriolukorrad. Vajadusel otsige abi
matemaatikaleksikonidest ja Wikipediast.
Jaanus Pöial