Toteutusdokumentti Kaapo - Kaavioiden piirto-ohjelma Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos
|
|
- Santeri Oksanen
- 8 vuotta sitten
- Katselukertoja:
Transkriptio
1 Toteutusdokumentti Kaapo - Kaavioiden piirto-ohjelma Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos
2 Kurssi Ohjelmistotuotantoprojekti (6 ov) Projektiryhmä Ilari Heikkinen Allan Holsti Tero Kallioinen Kristian Ovaska Mikko Paltamaa Hannu-Pekka Rajaniemi Asiakas Inkeri Verkamo Johtoryhmä Juha Taina Sampo Yrjänäinen Kotisivu Versiohistoria Versio Päiväys Tehdyt muutokset Julkaistava versio Dokumenttirunko luotu
3 Sisältö 1 Johdanto 1 2 Toteutusratkaisut Arkkitehtuuri Päivitetyt komponenttikuvaukset Kaapo Gui Project Projectmanager Typemanager Filemanager Jatkokehitys Toteuttamatta jääneet ominaisuudet Syntaksisäännöt Kaavioiden ohjelmallinen analyysi ja muokkaus GUI: elementti useaan kaavioon Yhteydet yhteyksien välillä Kooste-elementit Linkit kaaviokomponentista toisiin komponentteihin Linkki elementistä tiedostoon Projektipuu: alemmat tasot, ikonit Kaavion kasvaminen vasemmalle ja ylös Vienti- ja tuontilaajennokset ja niiden rajapinnat Tulostus Yhteys elementistä itseensä Parannuksia olemassaoleviin ominaisuuksiin Elementtien piirto Yhteyksien piirto Yhteydet: tyhjät segmentit GUI:n sisäinen rakenne Projektipuu i
4 4.2.6 Attribuuttien muokkaus Kaavion attribuuttien muokkaus Ikonien piirto Luokka gui.diagramview.diagrampanel Luokka project.graphics.directtextarea Luokka project.graphics.linehead ja sen aliluokat Luokka project.graphics.solidgraphics Elementin ja yhteysviivan leikkauspisteen laskeminen Uudet ominaisuudet Sekvenssikaavion toteuttamisesta Yleistetyt yhteydet Muut plugin-rajapinnat Sisäinen XML-tiedostomuoto Leikepöytä ii
5 1 Johdanto Oops on Helsingin yliopiston tietojenkäsittelytieteen laitoksella toteutettava ohjelmistotuotantoprojekti. Kaapo, eli Kaavioiden piirto-ohjelma on geneerinen, käyttäjän tarpeisiin mukautuva piirtotyökalu. Projektiin liittyvä materiaali on saatavissa ryhmän kotisivulta osoitteesta Tässä dokumentissa kuvataan toteutuksessa käytetyt ratkaisut, esitetään toteutuksen jälkeen päivitetyt luokkakaaviot ja tuodaan esille jatkokehityksen kannalta hyödyllistä tietoa, kuten toteuttamatta jääneet toiminnot ja ideoita mahdollisista hyödyllisistä lisätoiminnoista. Ohjelmakoodi on dokumentoitu Javadoc-kommentein ja dokumentaatio on saatavissa ryhmän kotisivulta sekä ohjelman lähdekoodi-jakelupakkauksesta. 2 Toteutusratkaisut Tässä luvussa on esitetty toteutusratkaisut, jotka ovat syntyneet tai muuttuneet suunnitteluvaiheen jälkeen. 2.1 Arkkitehtuuri Ohjelma on jaettu osiin, joista kullakin on oma tehtävänsä. Kyseessä ei ole varsinaiset itsenäiset osajärjestelmät, mutta osat on pyritty pitämään mahdollisimman itsenäisinä, jotta kutakin olisi helppo muuttaa koskematta muihin. Osia kutsutaan tässä komponenteiksi. Kuten editoreissa yleensä, kaikki ohjelman toiminta käsittelee yhtä isoa tietorakennetta, projektia. Projekti sisältää kaavioita, jotka puolestaan sisältävät elementtejä ja yhteyksiä. Ohjelman arkkitehtuuri perustuu pitkälti observer-suunnittelumallin käyttöön. Siinä esitys ja sisältö on eriytetty niin, että tietorakennetta tarkkailee yksi tai useampia tarkkailijoita. Tarkkailun kohde sisältää listan tarkkailijoistaan ja ilmoittaa niille muutoksista sisällössään. Tarkkailijat rekisteröivät itsensä kohteensa tarkkailijoiksi. Observer-suunnittelumalli muistuttaa pitkälti Javan listener-mallia. Käyttöliittymä rekisteröi tarvittavat käyttöliittymäelementit projektin kuuntelijoiksi ja saa siten tiedon muutoksista tietorakenteessa ja voi päivittää muutokset näkyville käyttäjälle. Projektin hallintaan on oma komponenttinsa, joka pitää yllä komentohistoriaa sekä valintoja ja muuta projektin muokkaamiseen liittyvää tietoa. Käyttöliittymä ei koskaan suoraan muokkaa projektia, vaan kaikki muutokset tapahtuvat luomalla ja lähettämällä edit-olioita projektinhallinnalle suoritettavaksi. Näin käyttöliittymän ei tarvitse tietää projektin toteutuksen yksityiskohdista eikä myöskään ylläpitää komentohistoriaa. 1
6 Projektien tallennus ja avaus sisältyy tiedostonhallinta-komponenttiin. Se on toteutettu Javan oliotallennuksella, mistä seuraa se, ettei kyseisten metodien ei tarvitse tuntea projektin toteutusta. Seuraavassa päivitetty arkkitehtuurikaavio. Kuva 1: Päivitetty arkkitehtuurikaavio 2
7 3 Päivitetyt komponenttikuvaukset Tässä luvussa esitellään ohjelman luokkakaaviot pakkauksittain. Luokkakaaviot eivät ole täydellisiä, vaan sisältävät vain olennaiset osat pakkausten sisällöstä ja luokkien toteutuksesta sekä yhteyksistä. 3.1 Kaapo Kuva 2: kaapo-pääohjelmapakkauksen luokkakaavio 3
8 3.2 Gui Kuva 3: gui-pakkauksen luokkakaavio 4
9 3.3 Project -attributes: Map ProjectComponent +getsmallicon(): ImageIcon +gettypename(): String +addattribute(name:string,type:attributetype, value:object) +removeattribute(name:string): Object +hasattribute(name:string): boolean +getattribute(name:string): Object +setattribute(name:string,value:object): void +getattributemap(): Map +getattributepanel(): AttributePanel 0..* 0..* Attribute +getname(): String +gettype(): AttributeType +getvalue(): Object +setvalue(v:object) Project +getname(): String +setname(n:string): void +adddiagram(d:diagram,parent:diagram,prevsibling:diagram): DiagramWrapper +adddiagram(dw:diagramwrapper,parent:diagramwrapper, prevsibling:diagramwrapper) +removediagram(d:diagram): void +removediagramwrapper(dw:diagramwrapper): boolean +getdiagrams(): List<Diagram> +getdiagramwrappers(): List<DiagramWrapper> +adddiagramcomponent(dc:diagramcomponent): void +removediagramcomponent(dc:diagramcomponent): void +containsprojectcomponent(pc:projectcomponent): boolean DiagramComponent +getlargeicon(): Image +canmove(w:diagramcomponentwrapper): boolean +canresize(w:diagramcomponentwrapper): boolean +iselement(): boolean +getcomponenttype(): ComponentType #builddcgraphics(): DCGraphics Element +getdefaultwidth(): double +getdefaultheight(): double 1 -panel: JPanel Diagram +getlegaldiagramelements(): List<Class> +getlegaldiagramconnections(): List<Class> +getname(): String +setname(n:string): void +gettypename(): String +addcomponent(dcw:diagramcomponentwrapper): void +removecomponent(dcw:diagramcomponentwrapper): void +getdiagramcomponentwrappers(): List<DiagramComponentWrapper> +containsdiagramcomponent(dc:diagramcomponent): boolean +replacediagramcomponentwrappers(list<diagramcomponentwrappers>): void +getdiagrampanel(pm:projectmanager): DiagramPanel +setdiagrampanel(p:diagrampanel) 1 0..* DiagramWrapper 0..* -parent: DiagramWrapper -children: List<DiagramWrapper> +getparent(): DiagramWrapper +getchildren(): List<DiagramWrapper> +addchild(index:int,d:diagram) +removechild(dw:diagramwrapper) +getdiagram(): Diagram +setparent(parent:diagramwrapper) Connection +getisdirect(): boolean JComponent DCGraphics 0..* DiagramComponentWrapper +getdiagramcomponent(): DiagramComponent +addconnection(cw:connectionwrapper) +removeconnection(cw:connectionwrapper) +removeallconnections() +getinconnections(): List<ConnectionWrapper> +getoutconnections(): List<ConnectionWrapper> +canmove(): boolean +canresize(): boolean +getdcgraphics(pm:projectmanager): DCGraphics +movexy(changex:double,changey:double) #dc: DiagramComponent #dcw: DiagramComponentWrapper #pm: ProjectManager +getshape(): Shape +update() ElementWrapper +getx(): double +setx(x:double): void +gety(): double +sety(y:double) +getwidth(): double +setwidth(w:double) +getheight(): double +setheight(h:double) +setsize(w:double,h:double) +setxy(x:double,y:double) ConnectionWrapper +calcunitvectors(start:point2d,end:point2d): double[][] +getpath(): Point2D[] +setpath(path:point2d[]) +getstartcomponent(): DiagramComponentWrapper +setstartcomponent(dcw:diagramcomponentwrapper) +getendcomponent(): DiagramComponentWrapper +setendcomponent(dcw:diagramcomponentwrapper) +getstartpoint(): Point2D +getendpoint(): Point2D +isdirect(): boolean +generatepathbetween(start:point2d,end:point2d) +movepathsegment(index:int,change:point2d) Kuva 4: project-pakkauksen luokkakaavio 5
10 Kuva 5: project.graphics-pakkauksen luokkakaavio Kuva 6: Nuolenpääluokkien (luokka kaapo.project.graphics.linehead ja sen aliluokat) käyttämät geometriset abstraktiot. (Orthogonal=kohtisuora) 6
11 3.4 Projectmanager Kuva 7: projectmanager-pakkauksen luokkakaavio 7
12 Kuva 8: projectmanager.command-pakkauksen luokkakaavio 8
13 3.5 Typemanager Kuva 9: typemanager-pakkauksen luokkakaavio 3.6 Filemanager Kuva 10: filemanager-pakkauksen luokkakaavio 4 Jatkokehitys Tämä luku on tarkoitettu lähtökohdaksi ohjelmiston jatkokehitykselle. Luvussa on parannusehdotuksia jo toteutettuihin ominaisuuksiin sekä luettelo toteuttamatta jääneistä omi- 9
14 naisuuksista. Erillisessä testausdokumentissa on lueteltu ohjelmiston tunnetut virheet. Joidenkin virheiden kohdalla testausraportissa on myös korjausehdotuksia. 4.1 Toteuttamatta jääneet ominaisuudet Syntaksisäännöt Elementtien ja yhteyksien syntaksisääntöjä ei ole toteutettu. Ainoa olemassaoleva syntaksisääntö on se, mitä elementtejä ja yhteyksiä kaaviotyyppiin voi kuulua. Muille syntaksisäännöille ei myöskään ole valmista paikkaa luokkahierarkiassa. Luultavasti ne tulevat joko Diagram-luokkaan tai kokonaan pakkaukseen, mikä saattaa olla selkeämpi vaihtoehto. Muita syntaksisääntöjä olisivat ainakin: mihin kaaviokomponentteihin yhteys saa olla yhteydessä pitääkö elementillä olla tietynlaisia yhteyksiä (esim. UML-käyttötapauselementillä oltava yhteyksiä actor-elementtiin) luokkakaaviossa ei ole kahta samannimistä luokkaa. Yleistettynä: tietyssä elementtien joukossa jokin attribuutin arvo on uniikki. Käyttöliittymässä syntaksivirheet on tarkoitus näyttää visuaalisesti värjäämällä virheelliset kaaviokomponentit punaisella. Osa syntaksitarkistuksesta on tarkoitus tehdä reaaliajassa, mutta jos löytyy sellaisia syntaksisääntöjä, joiden tarkastus on mielekästä vasta kun kaavio on lähes valmis, tämä tehdään vain eri komennosta Kaavioiden ohjelmallinen analyysi ja muokkaus Ominaisuutta ei toteutettu eikä sille ole valmista paikkaa. Mahdollisia analyysejä ovat esim. jonoverkkoihin liittyvät laskutoimenpiteet. Esimerkki muokkauksesta olisi UMLsekvenssikaavion (puoli)automaattinen muuttaminen UML-yhteistyökaavioksi (kaaviot kuvaavat samat asiat hieman eri tavalla) GUI: elementti useaan kaavioon Tietorakenne tukee saman elementin lisäämistä useaan kaavioon, mutta käyttöliittymässä ei ole sille toiminnallisuutta. Toiminnon voisi tehdä esim. kaaviopuussa siten, että elementin voi raahata hiirellä toisen puussa olevan kaavion kohdalle. Tällöin elementin paikka uudessa kaaviossa määräytyy automaattisesti ja käyttäjä joutuu itse siirtämään sen oikeaan paikkaan. Toinen vaihtoehto on jonkinlainen copy-paste -ominaisuus. 10
15 4.1.4 Yhteydet yhteyksien välillä Ominaisuus on toteutettu osittain, mutta ei ole käytännössä käyttökelpoinen. Tietorakenne tukee ominaisuutta ja kälissä yhteyden lisääminen on mahdollista, mutta kun pääteyhteksiä liikutetaan, niiden väliset yhteydet eivät liiku oikein. Myöskään yhteyspisteen laskeminen ei toimi oikein. DCGraphics-luokan metodi calcconnectionintersectpoint on tarkoitettu vain laatikkotyyppisille elementeille, mutta tällä hetkellä sitä käytetään (ilmeisesti?) myös yhteyksille. Luokan ConnectionGraphics tulisi korvata metodi omalla toteutuksellaan Kooste-elementit Kooste-elementti on elementti, joka koostuu useasta alielementistä. Vaikka ei ole varsinaisesti toteutettu on tietorakenne suunniteltu ominaisuutta silmälläpitäen ja sen toteuttamisen pitäisi olla suhteellisen suoraviivaista. Kaavio (Diagram) muistuttaa huomattavasti kooste-elementtiä, joten siitä voi ottaa mallia. Mahdollisesti kaavio ja kooste-elementti tulisi periä samasta yliluokasta tai niillä olisi sama rajapinta Linkit kaaviokomponentista toisiin komponentteihin Näkymättömät, loogisen tason linkit kaaviokomponentista toiseen komponenttiin (tai komponenttiryhmään/kooste-elementtiin) voi mahdollisesti toteuttaa attribuutti-mekanismin kautta, jolloin varsinaista uutta koodia ei tarvita. Toisena vaihtoehtona voisi olla luokasta DiagramComponent tai Connection peritty uusi linkkityyppi Linkki elementistä tiedostoon Elementistä voi olla linkki esim. lähdekooditiedostoon. Tätä ei ole varsinaisesti toteuttu missään elementtityypissä, mutta se onnistuu attribuuttimekanismin avulla. Tätä varten on hyvä lisätä uusi attribuuttityyppi, FILENAME. Tiedostonimen muokkaaminen attribuuttipaneelissa (esim. GenericAttributePanel) voisi avata tiedostonvalintaikkunan Projektipuu: alemmat tasot, ikonit Tietorakenteen tasolla on toteutettu vain puun ylin tason, alemmat tasot eivät käytännössä toimi. Arkkitehtuuri on kuitenkin suunniteltu mielivaltaisille puille, joten ainakin tietorakenteen tasolla tarvitaan vain pienehköjä muutoksia. Käli: projektipuussa tulisi kunkin kaavion, elementin ja yhteyden vieressä näyttää asiaankuuluva ikoni, joka saadaan metodilla project.projectcomponent.getsmallicon. Tätä ei ole toteutettu lainkaan. 11
16 4.1.9 Kaavion kasvaminen vasemmalle ja ylös Tällä hetkellä kaavion koordinaatit ovat positiivisia, mikä tarkoittaa sitä, että kaaviota ei voi laajentaa vasemmalle eikä ylös. Ongelman voi korjata kahdella tavalla: a) kaavio sallii negatiiviset koordinaatit, tai b) kaaviossa on vain positiivisia koordinaatteja, mutta kaavion kaikkia elementtejä siirretään tarvittaessa oikealle ja alas, jolloin vaikuttaa siltä, että kaavio on kasvanut vasemmalle ja ylös. Vaihtoehto a) tuottaa ongelmia Swingin kanssa, sillä Swing ei salli negatiivisia koordinaatteja. Tällöin täytyisi pitää kaavion koordinaatit erillään Swingin koordinaateista (saattaa olla muutenkin hyvä idea). Vaihtoehto b) on hieman virhealtis Vienti- ja tuontilaajennokset ja niiden rajapinnat Vienti- ja tuontilajennosten rajapinnoista ainoastaan vienti on määritelty abstraktin rajapinnan avulla. Ohjelmaan tarvittaisiin vähintäänkin laajennokset kaavioiden viemiseksi PNG- ja EPS-muotoon. Myös monille muille vienti- ja tuontityypeille löytyi käyttöä käyttäjähaastattelussa. EPS-laajennoksen toteuttamiseksi ja oikean vektorigrafiikan tuottamiseksi pitäisi todennäköisesti tehdä joitakin muutoksia kaavioiden piirtometodeihin ja piirtotapaan. Nämä olisi hyvä tehdä varhaisessa vaiheessa, koska silloin myös toteutettuja kaavio-, elementtija yhteystyyppejä pitäisi muuttaa Tulostus Kaavioiden tulostaminen olisi käyttäjien kannalta hyvin oleellinen toiminto, mutta sitä ei ole ehditty vielä lainkaan toteuttaa. Tulostusta koskevat samat asiat kuin EPS-laajennoksia Yhteys elementistä itseensä Tietorakenne tukee sellaista yhteyttä, jonka alku- ja loppukomponentti on sama elementti, mutta käyttöliittymässä ominaisuus ei käytännössä toimi. Huom. tietorakenteessa tällaisten yhteyksien yhteysviivan reitin määrittämisen toimivuutta ei ole tarkistettu. 4.2 Parannuksia olemassaoleviin ominaisuuksiin Elementtien piirto Graafisesti yksinkertaisille elementtityypeille (laatikko, ellipsi ym.) löytyy luokka SolidGraphics, jonka avulla elementtien piirto onnistuu helposti, lähes ilman omaa koodia. Kuitenkin monimutkaisemmat graafiset esitykset joudutaan johtamaan alusta lähtien luokasta DCGraphics, mikä on virhealtista. 12
17 SolidGraphics koostuu vain yhdestä tekstialueesta. Elementtigrafiikkaluokille voisi tehdä monipuolisen yliluokan, joka osaisi käsitellä useista alueista koostuvia elementtejä. Esimerkiksi elementti Actor koostuu loogisella tasolla kahdesta osasta: tikku-ukkografiikasta ja alla olevasta nimikentästä. UML-luokkakaavio (ei toteutettu) koostuu kolmesta alueesta Yhteyksien piirto Yhteysgrafiikoille on melko monipuolinen yliluokka project.graphics.connectiongraphics, joka osannee piirtää useimmat normaalit yhteydet. Nuolenpäistä puuttuvat tärkeimpänä UML:n salmiakkinuolenpäät. Mahdollisia parannuksia: Tekstikenttä on TextLayout-instanssi, joka ei osaa helposti näyttää monirivistä tekstiä eikä tue suoraeditointia. Luokan DirectTextArea käyttö korjaisi molemmat viat. Tekstikenttiä tulisi olla useampia kuin vain yksi: ainakin alku- ja loppupään kentät lisäksi. Ehkä myös erikseen viivan ylä- ja alapuoliset kentät, jolloin kenttiä olisi yhteensä kuusi. Tämä vaatii jonkinlaisen yleistetyn tekstikenttämekanismin; ehkä HotSpottoteutuksesta voi ottaa mallia Yhteydet: tyhjät segmentit Luokalla ConnectionWrapper on path-kenttä, joka sisältää yhteysviivan polun taulukkona koordinaattipisteitä. Joissakin tapauksissa yhteydellä voi olla nollan pikselin pituisia segmenttejä, eli kaksi pistettä polku-taulukossa ovat samat. Tämä aiheuttaa ongelmia polun läpikäymisessä, ellei tyhjiin segmentteihin ole varauduttu. Niihin on pyritty varautumaan joka paikassa, mutta parempi ratkaisu olisi estää tyhjien segmenttien syntyminen. Luokan ConnectionWrapper metodi setpath voisi poistaa tyhjät segmentit automaattisesti. Toinen segmentteihin liittyvä ongelma on, että muutamat osat ohjelmassa saattavat virheellisesti olettaa tietyn pituisen polkutaulukon, esim. kaksi tai neljä pistettä. Jos näitä oletuksia löytyy, ne on poistettava GUI:n sisäinen rakenne GUI:n sisäinen rakenne on joiltain osin turhan monimutkainen. GUI:lla on sisäinen tila (esim. mikä painike alhaalla), jonka ylläpitäminen on monimutkaista. DiagramPanelluokan hiirenkäsittelijät ovat samaten monimutkaisia. GUI:sta kannattaisi piirtää selventävä tilasiirtymäkaavio. 13
18 4.2.5 Projektipuu Työnjako projektin kaaviopuun suhteen tietorakenteessa on hieman epäselvä. Project hallinnoi puun ensimmäisen tason ja DiagramWrapper alemmat tasot. Tästä aiheutuu myös koodin duplikointia. Parempi ratkaisu voisi olla se, että Project-luokalla on vain puun juurisolmu. Luokalle DiagramWrapper voisi parempi nimi olla DiagramTreeNode, koska termiä wrapper käytetään hieman toisessa merkityksessä muualla Attribuuttien muokkaus Uutena attribuuttityyppinä tarvitaan jatkossa taulukkotyyppi, joka koostuu alkeistyypeistä (INTEGER, DOUBLE, jne). Taulukkotyypille tarvitaan tiedot sarakkeiden lukumäärästä sekä kunkin sarakkeen nimestä ja tyypistä. Ehkä taulukkotyyppi olisi Attributeluokan aliluokka? Taulukkotyyppiä voidaan käyttää ainakin UML-luokkaelementissä. Kullakin luokalla on taulukko metodeita ja taulukko kenttiä. Myös enumeration-tyyppi on tarpeellinen. Esimerkiksi UML-luokkaelementin näkyvyysmääre kuuluu joukkoon {private, default, protected, public}. Tämän voisi koodata merkkijonoina, mutta oma enumeration-tyyppi on elegantimpi. Käyttöliittymän puolella saattaisi olla tarpeellinen yleinen attribuuttien muokkaamiseen tarkoitettu tekstikenttäkomponentti, jota voisi käyttää sekä attribuuttipaneelissa että piirtoalustalla suoraeditoinnissa. Komponentti olisi samankaltainen kuin JTextArea tai JTextField. Tekstikenttä tietäisi editoimansa attribuutin tyypin (esim. INTEGER, STRING) ja esim. kokonaislukukenttä estäisi kirjainmerkkien syöttämisen kenttään kokonaan. Monirivinen teksti aiheuttaa tällä hetkellä ongelmia attribuuttipaneelissa (GenericAttributePanel). Paneelissa on yksirivisiä editointikenttiä, mutta tyypin STRING attribuutit saattavat olla monirivisiä. Saattaa olla tarpeen tehdä erilliset tyypit STRING_MULTILINE ja STRING (yksirivinen) ja näille erilliset editorikentät. Toisena vaihtoehtona attribuuttipaneelissa olisi pelkkiä monirivisiä editoreita (JTextArea) Kaavion attribuuttien muokkaus Elementtien ja yhteyksien lisäksi myös kaavioilla (luokka Diagram) on attribuutteja. Kaavion attribuuttien muokkaamiseen ei tällä hetkellä ole tukea Project Managerissa; ModifyDComponentAttributeEdit tukee vain elementtejä ja yhteyksiä. Projektitietorakenne itsessään tukee kaavioiden attribuutteja, samoin käyttöliittymä osaa näyttää kaavion attribuuttipaneelin, kun mitään elementtiä ei ole valittu. Tarvittava muutos Project Manageriin on suoraviivainen. 14
19 4.2.8 Ikonien piirto Tällä hetkellä kullekin kaaviokomponenttityypille on piirrettävä käsin ikoni, joka on työlästä. Ohjelma voisi luoda ikonin käyttämällä kaaviokomponentin omia piirtotyökaluja. Ainakin yhteysnuolet pitäisi onnistua tällä tavalla Luokka gui.diagramview.diagrampanel Luokan paintcomponent-metodissa on varauduttu siihen, että Shape-olioilla saattaa olla NaN (Not a Number)-arvoja Bounds2D:ssään. NaN aiheuttaa JVM:n hyytymisen, joten tarkastus on olennainen. Olisi kuitenkin huomattavasti kauniimpaa tarkastaa Shapeja luotaessa, että ne eivät voi olla NaN-arvoisia. Tämä koskee lähinnä luokan Connection- Graphics viivaa ympäröivän alueen luomista. (aluetta käytetään yhteyksien valitsemiseen hiirellä piirto- alustalta) Luokka project.graphics.directtextarea Puuttuva ominaisuus/bugi: kaksoisklikkauksella hiiri menee aina editorikentän loppuun eikä siihen, mihin hiiren kursori osoittaa. Elementin raahaaminen hiirellä on hidasta, jos hiiri on DirectTextArea:n kohdalla. Tämä johtuu hiiritapahtumien välittämisen hitaudesta metodissa dispatcheventup, jota voi luultavasti optimoida siirtämällä parent-komponentin etsiminen pois k.o metodista. Välittämisen voisi tehdä myös robustimmaksi: mitä jos ei ole DCGraphics-yläkomponentti ei löydy vielä kutsulla getparent(), vaan esim. kutsulla getparent().getparent() Luokka project.graphics.linehead ja sen aliluokat Kenttä preferredheadlength on kyseenalainen, koska nuolen voi piirtää mihin kokoon tahansa. Lisäksi nuolenpääluokkaa käyttävä koodi joutuu itse laskemaan nuolen alku- ja loppupisteet. Parempi olisi, jos nuolella olisi oikea length-kenttä, ja nuolenpääluokkaa käytettäisiin antamalla parametrina yhteyssegmentti. LineHead laskisi itse oikean nuolen koon. Tämä yksinkertaistaa myös luokkaa ConnectionGraphics Luokka project.graphics.solidgraphics Paranneltava ominaisuus: suoraeditoinnin tekstinsyötön undo/redo toimii kirjain kerrallaan, mikä on ärsyttävää, jos syötetään paljon tekstiä. Olisi parempi koota yksittäiset kirjainmuutokset yhteen ModifyDComponentAttributeEdit-pakettiin. Tämä vaatii FocusListenerrajapinnan hyödyntämistä. 15
20 Elementin ja yhteysviivan leikkauspisteen laskeminen Luokassa project.graphics.dcgraphics on yleinen metodi calcconnectionintersectpoint yhteysviivan ja elementin leikkauspisteen laskemiseen. Joskus viiva on pikselin verran elementin sisä- tai ulkopuolella. Tämän voi mahdollisesti korjata tiukentamalla k.o. metodin loppuehtoa. 4.3 Uudet ominaisuudet Sekvenssikaavion toteuttamisesta UML-sekvenssikaavio on hieman muista poikkeava kaaviotyyppi aikajanansa vuoksi. Aikajana voisi olla yhteystyyppi, jonka toinen pää on kiinni olio-elementissä (tai luokkaelementissä) ja toinen pää roikkuu irti. Aikajanan muuttaminen x-suunnassa tulisi estää; aikajana menee aina kohtisuoraan alaspäin. Aikajanan viestien kronologinen järjestys on sekvenssikaaviossa tärkeä. Viestien keskeisen yhteyden voi laskea yhteyskääreiden y-koordinaateista. Analysoinnin helpottamiseksi viesteillä voisi olla attribuutti, joka kertoo sen järjestysnumeron: 1 tarkoittaa aikajanan ensimmäistä viestiä, jne. Tässä ratkaisussa on se ongelma, että attribuutit ovat yhteisiä kaikille kääreille ja saman viesti-yhteyden voi lisätä useaan kaavioon, jolloin tulee useita kääreitä. Pitäisikö kääreillä olla omat attribuuttinsa? Aikajanan piirtämisessä on otettava huomioon, että osa aikajanasta on paksunnettu (elämänkaari). Tämä vaatii oman DCGraphics-luokan Yleistetyt yhteydet Tällä hetkellä yhteyksiä voi olla vain kahden kaaviokomponentin välillä. Yleistetyt yhteydet (n-ary) voivat olla hyödyllisiä Muut plugin-rajapinnat Ohjelmassa on export-rajapinta (esim. EPS), mutta ei import-rajapintaa. Import-rajapinnalle on tarvetta, kun kaavio-ohjelmaa käytetään yhteistyössä muiden CASE-työkalujen kanssa. Myös analysoija-plugin-rajapinnalle voi olla käyttöä. Analysoija-plugin tekisi mielivaltaista kaavioiden analysointia ja muokkausta Sisäinen XML-tiedostomuoto Kaapo käyttää Javan oliotallennusta sisäisenä tallennusmuotona, missä on se ongelma, että tietorakenneluokkien muuttaminen saattaa rikkoa olemassaolevat kaaviotiedostot. On- 16
21 gelman voi ratkaista kirjoittamalla luokille omat writeobject ja readobject-metodit. Toinen ratkaisu ongelmaan on laatia ohjelmalle sisäinen XML-tiedostomuoto Leikepöytä Kaaviokomponenteille olisi hyvä toteuttaa standardimallinen leikepöytä. Semantiikassa on kaksi vaihtoehtoa: copy-paste voi tehdä uuden kääreen samalle kaaviokomponentille, tai se voi luoda kaaviokomponentista kokonaan uuden kloonin. 17
Testausdokumentti. Kaapo - Kaavioiden piirto-ohjelma. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos
Testausdokumentti Kaapo - Kaavioiden piirto-ohjelma Helsinki 1.9.2005 Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Kurssi 581260 Ohjelmistotuotantoprojekti (6 ov) Projektiryhmä
Suunnitteludokumentti
Suunnitteludokumentti Kaapo - Kaavioiden piirto-ohjelma Helsinki 28.7.2005 Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Kurssi 581260 Ohjelmistotuotantoprojekti (6 ov)
Ylläpitodokumentti. Boa Open Access. Helsinki 2.5.2006 Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos
Ylläpitodokumentti Boa Open Access Helsinki 2.5.2006 Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Kurssi 581260 Ohjelmistotuotantoprojekti (6 ov) Projektiryhmä Ilmari
Loppuraportti. Kaapo - Kaavioiden piirto-ohjelma. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos
Loppuraportti Kaapo - Kaavioiden piirto-ohjelma Helsinki 1.9.2005 Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Kurssi 581260 Ohjelmistotuotantoprojekti (6 ov) Projektiryhmä
Sisällys. 9. Periytyminen Javassa. Periytymismekanismi Java-kielessä. Periytymismekanismi Java-kielessä
Sisällys 9. Periytyminen Javassa Periytymismekanismi Java-kielessä. Piirteiden näkyvyys periytymisessä. Metodien korvaaminen ja super-attribuutti. Attribuutin peittäminen periytymisen kautta. Rakentajat
Tämän lisäksi listataan ranskalaisin viivoin järjestelmän tarjoama toiminnallisuus:
Dokumentaatio, osa 1 Tehtävämäärittely Kirjoitetaan lyhyt kuvaus toteutettavasta ohjelmasta. Kuvaus tarkentuu myöhemmin, aluksi dokumentoidaan vain ideat, joiden pohjalta työtä lähdetään tekemään. Kuvaus
9. Periytyminen Javassa 9.1
9. Periytyminen Javassa 9.1 Sisällys Periytymismekanismi Java-kielessä. Piirteiden näkyvyys periytymisessä. Metodien korvaaminen ja super-attribuutti. Attribuutin peittäminen periytymisen kautta. Rakentajat
Sisällys. JAVA-OHJELMOINTI Osa 7: Abstrakti luokka ja rajapinta. Abstraktin luokan idea. Abstrakti luokka ja metodi. Esimerkki
Sisällys JAVA-OHJELMOINTI Osa 7: Abstrakti luokka ja rajapinta Abstrakti luokka ja metodi Rajapintamäärittely (interface) Eero Hyvönen Tietojenkäsittelytieteen laitos Helsingin yliopisto 13.10.2000 E.
9. Periytyminen Javassa 9.1
9. Periytyminen Javassa 9.1 Sisällys Periytymismekanismi Java-kielessä. Piirteiden näkyvyys periytymisessä. Ilmentymämetodien korvaaminen. Luokkametodien peittäminen. Super-attribuutti. Override-annotaatio.
Ylläpitodokumentti. Ohjelmistotuotantoprojektin tietojärjestelmä OhtuTie
Ylläpitodokumentti Ohjelmistotuotantoprojektin tietojärjestelmä OhtuTie Helsinki 16.7.2004 Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Kurssi 581260 Ohjelmistotuotantoprojekti
812341A Olio-ohjelmointi Peruskäsitteet jatkoa
812341A Olio-ohjelmointi 2106 Peruskäsitteet jatkoa Luokkakohtaiset piirteet n Yhteisiä kaikille saman luokan olioille n Liittyvät luokkaan, eivät yksittäiseen olioon n Kaikki ko. luokan oliot voivat käyttää
16. Javan omat luokat 16.1
16. Javan omat luokat 16.1 Sisällys Johdanto. Object-luokka: tostring-, equals-, clone- ja getclass-metodit. Comparable-rajapinta: compareto-metodi. Vector- ja ArrayList-luokat. 16.2 Javan omat luokat
Hakemistojen sisällöt säilötään linkitetyille listalle.
Harjoitustyö 1 Harjoitustyö Tehtävä: ohjelmoi Java-kielellä komentoikkunaa (komentotulkkia, komentoriviä) simuloiva olioperustainen ohjelma. Hakemistojen sisällöt säilötään linkitetyille listalle. Työ
Tällä harjoituskerralla on tarkoituksena harjoitella käyttötapaus-, luokka- ja tapahtumasekvenssikaavioiden luontia.
MagicDraw-pikaohje Tällä harjoituskerralla on tarkoituksena harjoitella käyttötapaus-, luokka- ja tapahtumasekvenssikaavioiden luontia. Alkuvalmistelut Windows (sali TC205) 1) Kirjaudu sisään TTY:n intra-tunnuksella.
Sokkelon sisältö säilötään linkitetyille listalle ja tekstitiedostoon. Työ tehdään itsenäisesti yhden hengen ryhmissä. Ideoita voi vaihtaa koodia ei.
Harjoitustyö 1 Harjoitustyö Tehtävä: ohjelmoi olioperustainen sokkeloseikkailu peli Javakielellä. Sokkelon sisältö säilötään linkitetyille listalle ja tekstitiedostoon. Työ tehdään itsenäisesti yhden hengen
Kertaus: yleistys-erikoistus ja perintä
Kertaus: yleistys-erikoistus ja perintä Nauta, Lehmä ja Kuttu ovat Kotieläimiä, Kotieläimet Eläimiä Kotieläimillä (siis myös Naudoilla, Lehmillä ja Kutuilla) on Omistaja Kuttu ja Lehmä toteuttavat rajapinnan
Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Rajapinnat ja sisäluokat
Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Rajapinnat ja sisäluokat Rajapinnat Java-kieli ei tue luokkien moniperintää. Jokaisella luokalla voi olla vain yksi välitön yliluokka. Toisinaan olisi
15. Ohjelmoinnin tekniikkaa 15.1
15. Ohjelmoinnin tekniikkaa 15.1 Sisällys For-each-rakenne. Lueteltu tyyppi enum. Override-annotaatio. Geneerinen ohjelmointi. 15.2 For-each-rakenne For-rakenteen variaatio taulukoiden ja muiden kokoelmien
Sisällys. 9. Periytyminen Javassa. Periytymismekanismi Java-kielessä. Periytymismekanismi Java-kielessä
Sisällys 9. Periytyminen Javassa Periytymismekanismi Java-kielessä. Piirteiden näkyvyys periytymisessä. Metodien korvaaminen ja super-attribuutti. Attribuutin peittäminen periytymisen kautta. Rakentajat
Ylläpitodokumentti Mooan
Ylläpitodokumentti Mooan Helsinki 16.08.06 Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Kurssi 581260 Ohjelmistotuotantoprojekti (9+1op/6ov) Projektiryhmä Heikki Aitakangas
Rajapinnasta ei voida muodostaa olioita. Voidaan käyttää tunnuksen tyyppinä. Rajapinta on kuitenkin abstraktia luokkaa selvästi abstraktimpi tyyppi.
11. Rajapinnat 11.1 Sisällys Johdanto. Abstrakti luokka vai rajapinta? Rajapintojen hyötyjä. Kuinka rajapinnat määritellään ja otetaan käyttöön? Eläin, nisäkäs, kissa ja rajapinta. Moniperiytyminen rajapintojen
Sisällys. 19. Unified Modeling Language (UML) Johdanto. Johdanto. Johdanto. Luokkakaavio:
Sisällys 9. Unified Modeling Language (UML) Perustuu Kai Koskimiehen Oliokirjaan ja aikaisempaan luentomateriaaliin. Johdanto. Luokkakaavio: Luokkasymboli, attribuutit ja metodit. Suhteet: Assosiaatiot:
JAVA-PERUSTEET. JAVA-OHJELMOINTI 3op A274615 JAVAN PERUSTEET LYHYT KERTAUS JAVAN OMINAISUUKSISTA JAVAN OMINAISUUKSIA. Java vs. C++?
JAVA-OHJELMOINTI 3op A274615 JAVAN PERUSTEET LYHYT KERTAUS Teemu Saarelainen teemu.saarelainen@kyamk.fi Lähteet: http://java.sun.com/docs/books/tutorial/index.html Vesterholm, Kyppö: Java-ohjelmointi,
Ohjelmoinnin jatkokurssi, kurssikoe 28.4.2014
Ohjelmoinnin jatkokurssi, kurssikoe 28.4.2014 Kirjoita jokaiseen palauttamaasi konseptiin kurssin nimi, kokeen päivämäärä, oma nimi ja opiskelijanumero. Vastaa kaikkiin tehtäviin omille konsepteilleen.
Testausdokumentti. Kivireki. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos
Testausdokumentti Kivireki Helsinki 17.12.2007 Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Kurssi 581260 Ohjelmistotuotantoprojekti (6 ov) Projektiryhmä Anu Kontio Ilmari
DOORSin Spreadsheet export/import
DOORSin Spreadsheet export/import 17.10.2006 SoftQA Oy http/www.softqa.fi/ Pekka Mäkinen Pekka.Makinen@softqa.fi Tietojen siirto DOORSista ja DOORSiin Yhteistyökumppaneilla ei välttämättä ole käytössä
18. Abstraktit tietotyypit 18.1
18. Abstraktit tietotyypit 18.1 Sisällys Johdanto abstrakteihin tietotyyppeihin. Pino ja jono. Linkitetty lista. Pino linkitetyllä listalla toteutettuna. 18.2 Johdanto Javan omat tietotyypit ovat jo tuttuja:
UML Luokkakaavio 14:41
UML Luokkakaavio UML Olio-ohjelman luokkien pääpiirteet voidaan kätevähkösti esittää ns. UML-luokkakaaviona. Näin usein tehdäänkin esim. suunniteltaessa, millaisia luokkia ohjelmaan on tarkoitus laatia,
Sisällys. 18. Abstraktit tietotyypit. Johdanto. Johdanto
Sisällys 18. bstraktit tietotyypit Johdanto abstrakteihin tietotyyppeihin. Pino ja jono. Linkitetty lista. Pino linkitetyllä listalla toteutettuna. 18.1 18.2 Johdanto Javan omat tietotyypit ovat jo tuttuja:
BlueJ ohjelman pitäisi löytyä Development valikon alta mikroluokkien koneista. Muissa koneissa BlueJ voi löytyä esim. omana ikonina työpöydältä
Pekka Ryhänen & Erkki Pesonen 2002 BlueJ:n käyttö Nämä ohjeet on tarkoitettu tkt-laitoksen mikroluokan koneilla tapahtuvaa käyttöä varten. Samat asiat pätevät myös muissa luokissa ja kotikäytössä, joskin
2. Lisää Java-ohjelmoinnin alkeita. Muuttuja ja viittausmuuttuja (1/4) Muuttuja ja viittausmuuttuja (2/4)
2. Lisää Java-ohjelmoinnin alkeita Muuttuja ja viittausmuuttuja Vakio ja literaalivakio Sijoituslause Syötteen lukeminen ja Scanner-luokka 1 Muuttuja ja viittausmuuttuja (1/4) Edellä mainittiin, että String-tietotyyppi
TIE-20200 Samuel Lahtinen. Lyhyt UML-opas. UML -pikaesittely
Lyhyt UML-opas UML -pikaesittely UML, Unified Modeling Language Standardoitu, yleiskäyttöinen mallinnuskieli, jota ylläpitää/hallitsee (Object Management Group) OMG Historiaa: 90-luvulla oli paljon kilpailevia
Testausraportti. Orava. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos
Testausraportti Orava Helsinki 5.5.2005 Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Kurssi 581260 Ohjelmistotuotantoprojekti (6 ov) Projektiryhmä Juhani Bergström Peter
Vaatimusdokumentti. Kaapo - Kaavioiden piirto-ohjelma
Vaatimusdokumentti Kaapo - Kaavioiden piirto-ohjelma Helsinki 10.7.2005 Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Kurssi 581260 Ohjelmistotuotantoprojekti (6 ov) Projektiryhmä
Ohjelmistojen mallintamisen ja tietokantojen perusteiden yhteys
Ohjelmistojen mallintamisen ja tietokantojen perusteiden yhteys Tällä kurssilla on tutustuttu ohjelmistojen mallintamiseen oliomenetelmiä ja UML:ää käyttäen Samaan aikaan järjestetyllä kurssilla on käsitelty
Visual Case 2. Miika Kasnio (C9767) 23.4.2008
Visual Case 2 Miika Kasnio (C9767) 23.4.2008 Työn tarkasti: Jouni Huotari 24.4.2008 1 SISÄLTÖ 1. TYÖN LÄHTÖKOHDAT... 2 2. PERUSTIEDOT... 2 3. ASENTAMINEN... 2 4. OMINAISUUDET... 3 4.1. UML-kaaviot... 4
Tenttikysymykset. + UML-kaavioiden mallintamistehtävät
Tenttikysymykset 1. Selitä mitä asioita kuuluu tietojärjestelmän käsitteeseen. 2. Selitä kapseloinnin ja tiedon suojauksen periaatteet oliolähestymistavassa ja mitä hyötyä näistä periaatteista on. 3. Selitä
Sisällys. 11. Rajapinnat. Johdanto. Johdanto
Sisällys 11. ajapinnat. bstrakti luokka vai rajapinta? ajapintojen hyötyjä. Kuinka rajapinnat määritellään ja otetaan käyttöön? Eläin, nisäkäs, kissa ja rajapinta. Moniperiytyminen rajapintojen avulla.
Subversion-ohje. Linux Traffic Control-käyttöliittymä Ryhmä paketti2
Subversion-ohje Linux Traffic Control-käyttöliittymä Ryhmä paketti2 Helsinki 1.11.2004 Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Kurssi 581260 Ohjelmistotuotantoprojekti
15. Ohjelmoinnin tekniikkaa 15.1
15. Ohjelmoinnin tekniikkaa 15.1 Sisällys For-each-rakenne. Geneerinen ohjelmointi. Lueteltu tyyppi enum. 15.2 For-each-rakenne For-rakenteen variaatio taulukoiden ja muiden kokoelmien silmukoimiseen:
20. Javan omat luokat 20.1
20. Javan omat luokat 20.1 Sisällys Application Programming Interface (API). Pakkaukset. Merkkijonoluokka String. Math-luokka. Kääreluokat. 20.2 Java API Java-kielen Application Programming Interface (API)
Java kahdessa tunnissa. Jyry Suvilehto
Java kahdessa tunnissa Jyry Suvilehto Ohjelma Ohjelmointiasioita alkeista nippelitietoon n. 45 min Tauko 10 min Oliot, luokat ja muut kummajaiset n. 45 min Kysykää Sisältöä ei oikeasti ole 2x45 min täytteeksi,
Sisällys. 20. Javan omat luokat. Java API. Pakkaukset. java\lang
Sisällys 20. Javan omat luokat Application Programming Interface (API). Pakkaukset. Merkkijonoluokka String. Math-luokka. Kääreluokat. 20.1 20.2 Java API Java-kielen Application Programming Interface (API)
PÄIVITÄ TIETOSI OPTIMASTA! KOOSTE
PÄIVITÄ TIETOSI OPTIMASTA! KOOSTE IT-palvelut / Hannele Rajaniemi optima-support@jyu.fi www.jyu.fi/itp/optima-ohjeet 2 Sisältö Mikä on koosteen idea? Miten saan kooste-työkalun käyttööni? Miten luon koosteen?
Testausdokumentti. Sivu: 1 / 10. Ohjelmistotuotantoprojekti Sheeple Helsingin yliopisto. Versiohistoria
Sivu: 1 / 10 Testausdokumentti Ohjelmistotuotantoprojekti Sheeple Helsingin yliopisto Versiohistoria Versio Päivitykset 0.4 Lisätty mod_form.php -tiedostoon liittyvät testit 0.5 Lisätty johdanto 1.0 Dokumentti
ELM GROUP 04. Teemu Laakso Henrik Talarmo
ELM GROUP 04 Teemu Laakso Henrik Talarmo 23. marraskuuta 2017 Sisältö 1 Johdanto 1 2 Ominaisuuksia 2 2.1 Muuttujat ja tietorakenteet...................... 2 2.2 Funktiot................................
Oliosuunnitteluesimerkki: Yrityksen palkanlaskentajärjestelmä
Oliosuunnitteluesimerkki: Yrityksen palkanlaskentajärjestelmä Matti Luukkainen 10.12.2009 Tässä esitetty esimerkki on mukaelma ja lyhennelmä Robert Martinin kirjasta Agile and Iterative Development löytyvästä
Sisällys. 6. Metodit. Oliot viestivät metodeja kutsuen. Oliot viestivät metodeja kutsuen
Sisällys 6. Metodit Oliot viestivät metodeja kutsuen. Kuormittaminen. Luokkametodit (ja -attribuutit).. Metodien ja muun luokan sisällön järjestäminen. 6.1 6.2 Oliot viestivät metodeja kutsuen Oliot viestivät
Olio-ohjelmointi Javalla
1 Olio-ohjelmointi Javalla Olio-ohjelmointi Luokka Attribuutit Konstruktori Olion luominen Metodit Olion kopiointi Staattinen attribuutti ja metodi Yksinkertainen ohjelmaluokka Ohjelmaluokka 1 Olio-ohjelmointi
TIE = JOTU. VH5 - MagicDraw
TIE-02300 = JOTU VH5 - MagicDraw TIE-02300 2 VH5 kaavionpiirtelyharjoitus Tässä harjoituksessa opetellaan tunnistamaan ja piirtämään tavallisimpia ja käytetyimpiä ohjelmistotuotannon kaavioita: käyttötapauskaavio
Discendum Oy
1 CV+ ansioluettelon luominen ja muokkaus CV+ - Yleistä 3 CV+ -ansioluettelon luominen 5 Tietojen muokkaaminen Perustoiminnot 7 CV+ sisältöjen otsikoiden muokkaus 8 Koulutus- ja työkokemustiedot Todistuksen
Webforum. Version 14.3 uudet ominaisuudet. Viimeisin päivitys: 2014-09-14
Webforum Version 14.3 uudet ominaisuudet Viimeisin päivitys: 2014-09-14 Sisältö Tietoja tästä dokumentista... 3 Yleistä... 4 Yleistä & hallinnointi... 5 Käyttäjien tuonti toiselta alustalta... 5 Uusi sisäänkirjautumisen
Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Taulukot & Periytyminen
Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Taulukot & Periytyminen Taulukot: Array Taulukko Javassa pitää aina perustaa (new) Yksinkertaisessa tilanteessa taulukon koko tiedetään etukäteen ja
Harjoitus 7. 1. Olkoon olemassa luokat Lintu ja Pelikaani seuraavasti:
Harjoitus 7 1. Olkoon olemassa luokat Lintu ja Pelikaani seuraavasti: class Lintu //Kentät private int _siivenpituus; protected double _aivojenkoko; private bool _osaakolentaa; //Ominaisuudet public int
Linkitetystä listasta perittyä omaa listaa käytetään muun muassa viestiin liittyvien vastausten säilömiseen.
Harjoitustyö 1 Harjoitustyö Tehtävä: ohjelmoi Java-kielellä keskustelualuetta simuloiva olioperustainen ohjelma (Simple Oope Board, S.O.B). Linkitetystä listasta perittyä omaa listaa käytetään muun muassa
Ohjelmistojen mallintaminen, kurssikoe esimerkkivastauksia
Ohjelmistojen mallintaminen, kurssikoe 15.12. esimerkkivastauksia Tehtävä 1 a: Ohjelmistotuotantoprosessi sisältää yleensä aina seuraavat vaiheet: määrittely, suunnittelu, toteutus, testaus ja ylläpito.
812341A Olio-ohjelmointi, IX Olioiden välisistä yhteyksistä
2016 IX Olioiden välisistä yhteyksistä Sisältö 1. Johdanto 2. Kytkentä 3. Koheesio 4. Näkyvyydestä 2 Johdanto n Ohjelmassa syntyy kytkentöjä olioiden välille Toivottuja ja epätoivottuja n Näkyvyys vaikuttaa
812347A Olio-ohjelmointi, 2015 syksy 2. vsk. VII Suunnittelumallit Adapter ja Composite
2015 syksy 2. vsk VII Suunnittelumallit Adapter ja Composite Sisältö 1. Johdanto rakennemalleihin 2. Adapter (Sovitin) 3. Composite (Rekursiokooste) Suunnittelumallit Adapter ja Composite 2 VII.1 Johdanto
Avaa ohjelma ja tarvittaessa Tiedosto -> Uusi kilpailutiedosto
Condess ratamestariohjelman käyttö Aloitus ja alkumäärittelyt Avaa ohjelma ja tarvittaessa Tiedosto -> Uusi kilpailutiedosto Kun kysytään kilpailun nimeä, syötä kuvaava nimi. Samaa nimeä käytetään oletuksena
Olio-ohjelmointi: Luokkien toteuttaminen. Jukka Juslin
Olio-ohjelmointi: Luokkien toteuttaminen Jukka Juslin Luokkien kirjoittaminen Tähän mennessä on käytetty valmiiksi määritettyjä luokkia. Nyt opimme kirjoittamaan omia luokkia olioiden kuvaamiseksi Seuraavaksi
Java-API, rajapinnat, poikkeukset, UML,...
Java-API, rajapinnat, r poikkeukset, UML,... Janne Käki 12.10.2006 Keskeisimmät Java-API:n pakkaukset API = Application Programming Interface eli sovellusohjelmointirajapinta (!) pakkaus (engl. package)
Analyysi, staattinen mallintaminen, kohdealueen malli ja luokkakaavio
Analyysi, staattinen mallintaminen, kohdealueen malli ja luokkakaavio Analyysi Tarkentaa ja jäsentää vaatimusmäärittelyä, vastaa kysymykseen MITÄ järjestelmän tulisi tehdä. Suoritetaan seuraavia tehtäviä:
A274101 TIETORAKENTEET JA ALGORITMIT
A274101 TIETORAKENTEET JA ALGORITMIT PERUSTIETORAKENTEET LISTA, PINO, JONO, PAKKA ABSTRAKTI TIETOTYYPPI Tietotyyppi on abstrakti, kun se on määritelty (esim. matemaattisesti) ottamatta kantaa varsinaiseen
Käyttöohje. Boa Open Access. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos
Käyttöohje Boa Open Access Helsinki 5.5.2006 Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Kurssi 581260 Ohjelmistotuotantoprojekti (6 ov) Projektiryhmä Ilmari Heikkinen
Ohjelmointi 2 / 2010 Välikoe / 26.3
Ohjelmointi 2 / 2010 Välikoe / 26.3 Välikoe / 26.3 Vastaa neljään (4) tehtävään ja halutessa bonustehtäviin B1 ja/tai B2, (tuovat lisäpisteitä). Bonustehtävät saa tehdä vaikkei olisi tehnyt siihen tehtävään
Olio-ohjelmoinnissa luokat voidaan järjestää siten, että ne pystyvät jakamaan yhteisiä tietoja ja aliohjelmia.
4. Periytyminen 4.1. Johdantoa Käytännössä vähänkään laajemmissa ohjelmissa joudutaan laatimaan useita luokkia, joiden pitäisi pystyä välittämään tietoa toisilleen. Ohjelmien ylläpidon kannalta olisi lisäksi
4.12.2005. SEPA REFAKTOROINTI Antti Ahvenlampi, 57408L Erik Hakala, 57509T
SEPA REFAKTOROINTI Antti Ahvenlampi, 57408L Erik Hakala, 57509T SEPA: REFAKTOROINTI 2 (9) SEPA: REFAKTOROINTI 3 (9) VERSIOHISTORIA Version Date Author Description 0.1 2.12.2005 Erik Hakala Ensimmäinen
T740103 Olio-ohjelmointi Osa 5: Periytyminen ja polymorfismi Jukka Jauhiainen OAMK Tekniikan yksikkö 2010
12. Periytyminen Johdantoa Käytännössä vähänkään laajemmissa ohjelmissa joudutaan laatimaan useita luokkia, joiden pitäisi pystyä välittämään tietoa toisilleen. Ohjelmien ylläpidon kannalta olisi lisäksi
Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op. Tietorakenneluokkia 2: HashMap, TreeMap
Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Tietorakenneluokkia 2: HashMap, TreeMap Tietorakenneluokkia ja -rajapintoja Java tarjoaa laajan kokoelman tietorakennerajapintoja ja - luokkia. Aiemmin
VH5, JOTU, MagicDraw:n käyttö
VH5, JOTU, MagicDraw:n käyttö 1. Käynnistä MagicDraw (versio 18.2) 2. Valitse Manage Projects-kohdasta Create New Project toiminto. Oletusarvona on UML Project, saa olla. Täytä nimi (Name) ja tallennuspaikka
Interaktiivinen tarinankerronta
Interaktiivinen tarinankerronta Tehtävä 1: Tarinan alku pääohjelmaan Main. java ei tehdä muutoksia tulostusrivit tiedostoon Kayttoliittyma.java tulostus lyhyesti sout + tab komennolla Tiedoston Kayttoliittyma.java
UML:n yleiskatsaus. UML:n osat:
UML:n yleiskatsaus - voidaan hyödyntää hyvin laajasti. - sopii liiketoimintamallinnukseen, ohjelmistomallinnukseen sen jokaiseen vaiheeseen tai minkä tahansa pysyviä ja muuttuvia ominaisuuksia sisältävän
NETTISIVUOHJE. MUITA OHJEITA käyttäjän lisääminen, mediakirjasto, sähköpostien lisääminen
NETTISIVUOHJE SISÄLTÖ 2 JULKAISUJÄRJESTELMÄ tietoa WordPress julkaisujärjestelmästä perustoiminnot (kirjautuminen, asetukset) 6 MUITA OHJEITA käyttäjän lisääminen, mediakirjasto, sähköpostien lisääminen
Testaussuunnitelma. Koskelo. Helsinki Ohjelmistotuotantoprojekti. HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos
Testaussuunnitelma Koskelo Helsinki 16.12.2004 Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Kurssi 581260 Ohjelmistotuotantoprojekti (6 ov) Projektiryhmä Tom Bertell Johan
7. Näytölle tulostaminen 7.1
7. Näytölle tulostaminen 7.1 Sisällys System.out.println- ja System.out.print-operaatiot. Tulostus erikoismerkeillä. Edistyneempää tulosteiden muotoilua. 7.2 Tulostusoperaatiot System.out.println-operaatio
Sisällys. JAVA-OHJELMOINTI Osa 6: Periytyminen ja näkyvyys. Luokkahierarkia. Periytyminen (inheritance)
Sisällys JAVA-OHJELMOINTI Osa 6: Periytyminen ja näkyvyys Periytyminen (inheritance) Näkyvyys (visibility) Eero Hyvönen Tietojenkäsittelytieteen laitos Helsingin yliopisto 13.10.2000 E. Hyvönen: Java Osa
Condes. Quick Start opas. Suunnistuksen ratamestariohjelmisto. Versio 7. Quick Start - opas Condes 7. olfellows www.olfellows.net 1.
Condes Suunnistuksen ratamestariohjelmisto Versio 7 Quick Start opas Yhteystiedot: olfellows Jouni Laaksonen Poijukuja 4 21120 RAISIO jouni.laaksonen@olfellows.net www.olfellows.net olfellows www.olfellows.net
Oliot viestivät metodeja kutsuen
6. Metodit 6.1 Sisällys Oliot viestivät metodeja kutsuen. Kuormittaminen. Luokkametodit (ja -attribuutit). Rakentajat. Metodien ja muun luokan sisällön järjestäminen. 6.2 Oliot viestivät metodeja kutsuen
Webforum. Version 14.4 uudet ominaisuudet. Viimeisin päivitys: 2014-12-6
Webforum Version 14.4 uudet ominaisuudet Viimeisin päivitys: 2014-12-6 Sisältö Tietoja tästä dokumentista... 3 Yleistä... 4 Yleistä & hallinnointi... 5 Dokumentit... 5 Perättäinen tarkistus- ja hyväksymisprosessi...
812347A Olio-ohjelmointi, 2015 syksy 2. vsk. IX Suunnittelumallit Proxy, Factory Method, Prototype ja Singleton
2015 syksy 2. vsk IX Suunnittelumallit Proxy, Factory Method, Prototype ja Singleton Sisältö 1. Johdanto luontimalleihin 2. Proxy 3. Factory Method 4. Prototype 5. Singleton Suunnittelumallit Proxy et.
Muutamia peruskäsitteitä
Muutamia peruskäsitteitä Huom. 1: nämä peruskäsitteet eivät muodosta hyvin määriteltyä keskenään yhteensopivien käsitteiden joukkoa, vaan käsitteet ovat osittain päällekkäisiä ja eri yhteyksissä niillä
Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op
Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Opintojakso TT00AA11 Ohjelmoinnin jatko (Java) Tavoite Opiskelija ymmärtää olio-ohjelmoinnin problematiikan. Opiskelija osaa määritellä ja käyttää itse
Käyttöohje. Mooan. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos
Käyttöohje Mooan Helsinki 04.09.2006 Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Kurssi 581260 Ohjelmistotuotantoprojekti (9+1op/6ov) Projektiryhmä Heikki Aitakangas
PlanMan Project 2015 projektihallintaohjelmisto loma-aikataulu
PlanMan Project 2015 projektihallintaohjelmisto loma-aikataulu (PlanMan Project 2015 projektihallintaohjelmisto on PlanMan Oy:n kehittämä ja ylläpitämä tuote) 23.10.2015 Pekka Väätänen Loma-aikataulupohjan
Javan perusteita. Janne Käki
Javan perusteita Janne Käki 20.9.2006 Muutama perusasia Tietokone tekee juuri (ja vain) sen, mitä käsketään. Tietokone ymmärtää vain syntaksia (sanojen kirjoitusasua), ei semantiikkaa (sanojen merkitystä).
Arkkitehtuurikuvaus. Ratkaisu ohjelmistotuotelinjan monikielisyyden hallintaan Innofactor Oy. Ryhmä 14
Arkkitehtuurikuvaus Ratkaisu ohjelmistotuotelinjan monikielisyyden hallintaan Innofactor Oy Ryhmä 14 Muutoshistoria Versio Pvm Päivittäjä Muutos 0.4 1.11.2007 Matti Eerola 0.3 18.10.2007 Matti Eerola 0.2
JAVA-OHJELMOINTI 3 op A274615
JAVA-OHJELMOINTI 3 op A274615 JFC & Swing, Look & Feel, Events Teemu Saarelainen teemu.saarelainen@kyamk.fi Lähteet: http://java.sun.com/docs/books/tutorial/index.html Vesterholm, Kyppö: Java-ohjelmointi,
Tietorakenteet (syksy 2013)
Tietorakenteet (syksy 2013) Harjoitus 1 (6.9.2013) Huom. Sinun on osallistuttava perjantain laskuharjoitustilaisuuteen ja tehtävä vähintään kaksi tehtävää, jotta voit jatkaa kurssilla. Näiden laskuharjoitusten
UML -mallinnus LUOKKAKAAVIO EERO NOUSIAINEN
UML -mallinnus LUOKKAKAAVIO EERO NOUSIAINEN SISÄLLYS 3. Luokkakaavio UML -mallinnuskielessä 3.1 Luokkakaavion luokan rakenteet 3.2 Luokan kuvauksesta C++ ohjelmakoodiksi 3.3 Luokkakaavion luokkien yhteystyypit
Eclipse ja JUnit-ohjelmoijatestit
Eclipse ja JUnit-ohjelmoijatestit Tarkoitus on tutustua Eclipsen käyttöön vähän lähemmin ja varsinkin JUnit-ohjelmoijatesteihin (ohjelmoijatesti on vanhalta nimeltä yksikkötesti). Ohjelmoijatestit ovat
Analyysi, staattinen mallintaminen, kohdealueen malli ja luokkakaavio
Analyysi, staattinen mallintaminen, kohdealueen malli ja luokkakaavio Analyysi Tarkentaa ja jäsentää vaatimusmäärittelyä, vastaa kysymykseen MITÄ järjestelmän tulisi tehdä. Suoritetaan seuraavia tehtäviä:
1 Tehtävän kuvaus ja analysointi
Olio-ohjelmoinnin harjoitustyön dokumentti Jyri Lehtonen (72039) Taneli Tuovinen (67160) 1 Tehtävän kuvaus ja analysointi 1.1 Tehtävänanto Tee luokka, jolla mallinnetaan sarjaan kytkettyjä kondensaattoreita.
Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Pakkaukset ja määreet
Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Pakkaukset ja määreet Pakkaukset ja määreet Toisiinsa liittyvät luokkatiedostot voidaan koota pakkauksiksi. Luo hierarkiaa ja järjestystä ohjelmistotuotteeseen.
Jypelin käyttöohjeet» Ruutukentän luominen
Jypelin käyttöohjeet» Ruutukentän luominen Pelissä kentän (Level) voi luoda tekstitiedostoon "piirretyn" mallin mukaisesti. Tällöin puhutaan, että tehdään ns. ruutukenttä, sillä tekstitiedostossa jokainen
Opiskelijalistojen tulostaminen, opiskelijoiden hallinta ja sähköpostin lähettäminen
1 Opiskelijalistojen tulostaminen, opiskelijoiden hallinta ja sähköpostin lähettäminen Sisällysluettelo Opetustapahtuman opiskelijalistan tulostaminen... 2 Tenttien opiskelijalistojen tulostaminen... 3
TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 30. marraskuuta 2015
TIEA241 Automaatit ja kieliopit, syksy 2015 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 30. marraskuuta 2015 Sisällys t Väitöstilaisuus 4.12.2015 kello 12 vanhassa juhlasalissa S212 saa tulla 2 demoruksia
Taulukot. Jukka Harju, Jukka Juslin 2006 1
Taulukot Jukka Harju, Jukka Juslin 2006 1 Taulukot Taulukot ovat olioita, jotka auttavat organisoimaan suuria määriä tietoa. Käsittelylistalla on: Taulukon tekeminen ja käyttö Rajojen tarkastus ja kapasiteetti
Ohjelmistojen mallintaminen viikon 4 laskareiden mallivastauksia
Ohjelmistojen mallintaminen viikon 4 laskareiden mallivastauksia Tehtävä 1 Tehtävässä 1 mallinnettiin Monopolipeliä. Alla olevassa esimerkissä peliin liittyy aina 2 noppaa, peliä pelataan pelilaudalla,
Ohjelmoinnin perusteet Y Python
Ohjelmoinnin perusteet Y Python T-106.1208 12.4.2010 T-106.1208 Ohjelmoinnin perusteet Y 12.4.2010 1 / 34 Graafiset käyttöliittymät Tähän asti kirjoitetuissa ohjelmissa on ollut tekstipohjainen käyttöliittymä.
Tässä tehtävässä käsittelet metodeja, listoja sekä alkulukuja (englanniksi prime ).
Tehtävä 1: Metodit, listat, alkuluvut (4p) Tässä tehtävässä käsittelet metodeja, listoja sekä alkulukuja (englanniksi prime ). Alkuluvut ovat lukuja, jotka ovat suurempia kuin yksi ja jotka ovat jaollisia