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