Kodused ülesanded
Sellel nädalal arendame edasi 5. nädala kodutööd. Kasutame isendiväljadeks tarku viitasid (smart pointers), lisame klassidesse koopia- ja teisalduskonstruktorid.
1. Punkt tasandil
Failides point2.h
ja point2.cpp
on klassi Point2
definitsioon. Point2
määrab kahemõõtmelises ruumis punkti, millel on kaks float
tüüpi koordinaati nx
ja ny
.
Funktsioon | Eesmärk |
---|---|
Point2 () | algväärtustab koordinaadid nullidega |
Point2 (float nx, float ny) | parameetritega konstruktor – väärtustab koordinaadid |
getNx(), setNx(), getNy(), setNy() | piilufunktsioonid koordinaatide jaoks (koordinaadid on private) |
Realiseerida funktsioon distanceFrom
ja operaator operator<<
.
Funktsioon | Eesmärk |
---|---|
float distanceFrom (shared_ptr<Point2> p) | tagastab punkti kauguse mingist teisest punktist tasandil |
operator << | väljastab punkti koordinaadid kujul (x, y) |
2. Sirglõik
Loo klass Line2
(päisefail koos lähtekoodifailiga), mis kirjeldab sirglõiku kahe otspunkti p1
ja p2
abil. Klassi isendimuutujad on privaatsed (shared_ptr<Point2> p1
ja shared_ptr<Point2> p2
).
Meetod | Eesmärk |
---|---|
Line2 () | vaikekonstruktor – loob tipud (Point2 vaikekonstruktoriga) |
Line2 (shared_ptr<Point2> np1, shared_ptr<Point2> np2) | parameetritega konstruktor – väärtustab klassi elemendid |
Line2 (const Line2& lr) | koopiakonstruktor – väärtustab klassi elemendid |
Line2 (Line2&& lr) | teisalduskonstruktor – väärtustab klassi elemendid |
float length () | tagastab sirglõigu pikkuse (kasuta punkti distanceFrom meetodit) |
operator << | väljastab sirglõigu andmed kujul (p1 - p2) |
getNp1(), setNp1(), getNp2(), setNp2() | piilufunktsioonid punktide jaoks (punktid on private) |
3. Ring
Loo klass Circle2
(päisefail koos lähtekoodifailiga), mis esitab tasandil asuvat ringi keskpunktiga p1
ja mittenegatiivse raadiusega r
. Raadiuse mittenegatiivsust tuleb jälgida kõikides funktsioonides (konstruktor, skaleerimine). Kui kasutaja annab ette negatiivse raadiuse konstruktoris, siis asenda see nulliga. Kui kasutaja soovib skaleerida negatiivse väärtusega, siis ei tee midagi. Klassi isendimuutujad on privaatsed (shared_ptr<Point2> p
ja float r
).
Meetod | Eesmärk |
---|---|
Circle2 () | vaikekonstruktor – loob punkti (0, 0) ja paneb raadiuseks nulli |
Circle2 (shared_ptr<Point2> np1, float nr) | parameetritega konstruktor – väärtustab klassi elemendid |
Circle2 (const Circle2& cr) | koopiakonstruktor – väärtustab klassi elemendid |
Circle2 (Circle2&& cr) | teisalduskonstruktor – väärtustab klassi elemendid |
float circumference () | tagastab ringi ümbermõõdu |
float area () | tagastab ringi pindala |
bool contains (shared_ptr<Point2> p) | tagastab true , kui antud punkt on ringjoone peal või sees, vastasel juhul false (kasuta punkti distanceFrom meetodit) |
bool contains (shared_ptr<Line2> l) | tagastab true , kui antud lõik on ringjoone sees (sh tipud joone peal), vastasel juhul false (kasuta distanceFrom meetodit) |
void scale (float factor) | korrutab ringi raadiuse antud väärtusega |
operator << | väljastab ringi andmed kujul (p1, r) |
getNp1(), setNp1(), getNr(), setNr() | piilufunktsioonid liikmete jaoks (private) |