Coder Social home page Coder Social logo

ot-harjoitustyo's Introduction

Ohjelmistotekniikka-kurssin projekti

Kuviogeneraattori

Projektin aiheena on kertotauluun perustuva kuviogeneraattori.

Lopullinen julkaisu.

Toinen julkaisu.

Ensimmäinen julkaisu.

Dokumentaatio

Vaatimusmäärittely

Arkkitehtuuri

Käyttöohje

Testausdokumentti

Tuntikirjanpito

Komentorivitoiminnot

Jar-tiedoston voi suorittaa komennolla

java -jar timestable.jar

Lähdekoodista ohjelman voi suorittaa pääkansiossa komennolla

mvn compile exec:java -Dexec.mainClass=timestable.ui.TimesTableUi

Suoritettavan jar-tiedoston voi generoida komennolla

mvn package

Checkstyleraportin saa luotua komennolla

mvn jxr:jxr checkstyle:checkstyle

Sitä voi tarkastella avaamalla selaimella tiedoston target/site/checkstyle.html

JavaDocista voi luoda HTML-version komennolla

mvn javadoc:javadoc

Sitä voi tarkastella avaamalla selaimella kansion target/site/apidocs/

Testaus

Testit suoritetaan komennolla

mvn test

Testikattavuusraportti luodaan komennolla

mvn jacoco:report

Kattavuusraporttia voi tarkastella avaamalla selaimella tiedosto target/site/jacoco/index.html

Checkstyle tyyliraportin voi luoda komennolla

mvn jxr:jxr checkstyle:checkstyle

Raportin löytää tiestosta target/site/checkstyle.html

ot-harjoitustyo's People

Contributors

vikketii avatar

ot-harjoitustyo's Issues

Koodikatselmointi

Projekti ladattu: 26.4.2019 11.01

Yleistä palautetta

Projektin koodi on siistiä ja selkeää, mitä edesauttavat myös projektin varsin suppea koko ja matemaattinen luonne. Koodia on helppo seurata, joskin eri osien toimintaa avaavat kommentit eivät olisi olleet pahitteeksi – tosin tämä korjautunee JavaDocin lisäämisen myötä ja, kuten sanottu, koodi on selkeää ja muuttujien ja metodien nimet sen verran kuvaavia, ettei sovelluksen toimintaa ole vaikea ymmärtää.

Yleinen toiminnallisuus

Kuten todettu, projektin kenties suurin "puute" on sen varsin rajattu mittakaava – perustoiminnallisuus on yksinkertainen – mutta visualisointina kiehtova – matemaattinen operaatio joten siihen ei ole kovin helppo keksiä luontevia lisätoiminnallisuuksia. Toteutetusta toiminnallisuudesta kuvion värin valinta tuntuu jossain määrin päälle liimatulta eikä valitettavasti tuo kovin paljoa lisäarvoa. Jos sovellukseen haluaa liittää lisätoiminnallisuutta, seuraavat voisivat olla mahdollisia mieleen tulevia vaihtoehtoja:

  • Mahdollisuus nollata tilanne ja palata alkuun olisi ehkä hyödyllinen jos käyttäjä haluaa leikkiä ohjelmalla pidempään.
  • Kertoimen muutosarvon voisi myös lisätä käyttäjän muokattavaksi parametriksi, joskin tämän mielekkyys lopputuloksen kannalta on tietysti kyseenalainen.
  • Vaihtoehto jossa viivojen värin vaihtuu vähitellen läpi spektrin kuvion edetessä voisi tuottaa mielenkiintoisen efektin joka havainnollistaisi kuvion olemusta ja liikettä.

Käytettävyys

Ohjelman käyttäminen on suoraviivaista ja käyttöliittymä on selkeä, joskin joitain parannuksia tuli testatessa mieleen:

  • Aloitusikkunassa Continue-painike kannattaisi määritellä Default-painikkeeksi, jolloin annetun nimen voisi syöttää painamalla enteriä sen kirjoittamisen jälkeen tarvitsematta erikseen klikata painiketta.
  • Ohjelma avaa pääikkunan jostain syystä näytön oikeaa alakulmaan niin, ettei se näy kokonaan ennen kuin sen siirtää keskemmälle (13" MacBook Pro 2014 (Retina), OSX High Sierra).
  • Nopeusasetus kannattaisi ehkä rajata kokonaislukuihin (tai tasakymmenyksiin).
  • Sekä nopeusasetuksen että viivojen määrän liukusäädinten käytettävyyttä parantaisi huomattavasti jos niitä pystyisi säätämään hienojakoisemmin näppäimistön avulla – tällä hetkellä nopeus hyppää kymmenen yksikköä jokaisella nuolinäppäimen painalluksella ja myös viivojen määrä kasvaa sadalla – usealla tuhannella yhdestä painalluksesta.

Koodin rakenne

Käyttöliittymä ja ohjelmalogiikka on erotettu hyvin toisistaan, ja vektorien tallentamista varten luotu oma luokka on tarkoituksenmukainen. Tätä tietysti edesauttaa ohjelman yksinkertaisuus, joka näkyy siinä, että luokkia on vain kolme. Omina luokkinaan toteutettavalle lisätoiminnallisuusdelle olisi tilaa. Seuraavassa joitakin huomioita ja muutosehdotuksia yksittäisiin luokkiin:

TimesTable.java

*Silmukka

        for (int i = 0; i < totalVectors; i++) {
            Vector v = initVector(i, multiplier, totalVectors);
            vectors.add(v);
        }

toistuu sekä konstruktorissa että metodissa updateVectors() (tosin hieman eri parametreilla), joten se voisi olla järkevää ulkoistaa omaksi metodikseen. Tämä ei kylläkään ole ehdottoman tarpeellista, koska metodit ovat jo nyt varsin lyhyitä.

TimesTableUi.java

  • Toiston käynnistys ja pysäytys olisi ehkä luontevampaa toteuttaa ToggleButton-objektilla kuin CheckBox-objektilla.
  • Painikkeiden ja muiden elementtien teksti on joissain tapauksissa määritetty setText()-metodilla ja joissain suoraan konstruktorin parametrina; tämän voisi yhdenmukaistaa.
  • Sovelluksen nimen pääikkunan otsikkopalkissa voisi ehkä kirjoittaa isoilla kirjaimilla.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.