Kodused ülesanded
Sellel kodutööl on ette antud mall. Laadi alla kokkupakitud fail, kust leiad lähtefailid. Ülesandeks on faile täiendada ja neid ka juurde programmeerida.
- Alusprogramm: (zip)
Kodutöö eesmärk on luua lihtne geomeetriateek. Lahendusena peab kompileerimisel tekkima teek nimega libgeometry.a. Teegi päised peavad olema tehtud nii, et alusfailidega kaasasolev testprogramm geometrytest kompileerub.
Testprogrammi kompileerib terminaliaknas make test.
Selles ülesandes struktureerime koodi kaustadesse. Päisefailid paiguta kausta include, lähtekoodifailid kausta src, valmisteek kausta lib, testrakendus kausta tests. Fail Makefile jääb juurkataloogi. Juhinduda tuleb alusfailides ette tehtud struktuurist. Palun ärge muutke klassi liikmete nimesid ja hoidke nad avalikud.
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 x ja y.
| Meetod | Eesmärk |
|---|---|
| Point2 () | algväärtustab koordinaadid nullidega |
| Point2 (float nx, float ny) | parameetritega konstruktor – väärtustab koordinaadid |
Realiseerida funktsioon distanceFrom ja operaator operator<<. Kahe punkti vahelise kauguse valemit vt
https://opiobjektid.tptlive.ee/joonevorrandid/kahe_punkti_vaheline_kaugus.html
| Meetod | Eesmärk |
|---|---|
| float distanceFrom (Point2 p) | tagastab punkti kauguse mingist teisest punktist tasandil |
| operator << | väljastab punkti koordinaadid kujul (x, y) |
Failis geometrytest.cpp on programmi testimiseks loodud kaks testi, proovi neid juurde luua.
2. Sirglõik
Loo klass Line2 (päisefail koos lähtekoodifailiga), mis kirjeldab sirglõiku kahe otspunkti p1 ja p2 abil.
| Meetod | Eesmärk |
|---|---|
| Line2 () | vaikekonstruktor – loob tipud (Point2 vaikekonstruktoriga) |
| Line2 (Point2 np1, Point2 np2) | parameetritega konstruktor – väärtustab klassi elemendid |
| float length () | tagastab sirglõigu pikkuse (kasuta punkti distanceFrom meetodit) |
| operator << | väljastab sirglõigu andmed kujul (p1 - p2) |
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.
| Meetod | Eesmärk |
|---|---|
| Circle2 () | vaikekonstruktor – loob punkti (0, 0) ja paneb raadiuseks nulli |
| Circle2 (Point2 np1, float nr) | parameetritega konstruktor – väärtustab klassi elemendid |
| float circumference () | tagastab ringi ümbermõõdu |
| float area () | tagastab ringi pindala |
| bool contains (Point2 p) | tagastab true, kui antud punkt on ringjoone peal või sees, vastasel juhul false (kasuta punkti distanceFrom meetodit) |
| bool contains (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) |
4. Kataloogistruktuuri järgiv Makefile
Korrigeeri faili Makefile nii, et juurkataloogist käivitatav make test kompileerib programmi.
Lahendus peab järgima korrektselt kataloogistruktuuri ning teek ja testrakendus tekivad
õigetesse kaustadesse.