Periytymisen tunnistaminen

Koko: px
Aloita esitys sivulta:

Download "Periytymisen tunnistaminen"

Transkriptio

1 object identification objectifying (oliointi) Luokkien (olioiden) tunnistaminen Luonteeltaan takaisinmallinnusta ohjelmia ei muuteta Ensimmäinen vaihe konvertoitaessa proseduraalisia (tai muita ei-olio-ohjelmia) olio-ohjelmiksi konversio voi olla täydellistä tai epätäydellistä Tunnistaminen voi olla automaattista ei riipu sovellusalueesta sovellusalueen tuntemukseen perustuvaa ei onnistu täysin automaattisesti Muita tunnistuksen kohteita: suunnittelumallit (design pattern) aspektit konversio tunnistaminen (takaisinmallinnus) TTY Ohjelmistotekniikka 1 Olioparadigman ominaisuuksien tunnistaminen Luokkien tunnistaminen tietueet ja unionit (vaihtelevat tietueet) moduulit (abstraktit tietotyypit) Periytymisen tunnistaminen tietueen sisällä määritelty tietue tai unioni tyypin muunnokset toisiaan muistuttavat tietorakenteet Operaatioiden liittäminen luokkiin viittaukset globaaleihin muuttujiin muodolliset parametrit ja paluutyypit operaatioiden ominaisuuksien tarkastelu (käsiteanalyysi) Monimuotoisuuden (polymorphism) tunnistaminen monivalintalauseet (case, switch) funktio-osoittimet ja aliohjelman välittäminen parametrina TTY Ohjelmistotekniikka 2 Luokkien tunnistaminen tietueista typedef struct { float re; float im; } complex; class complex { private: float re; float im; TTY Ohjelmistotekniikka 3 Luokkien tunnistaminen moduuleista DEFINITION MODULE StackManager; TYPE Stack; PROCEDURE Push ( S: Stack; X: CARDINAL ); PROCEDURE Pop ( S: Stack ): CARDINAL; PROCEDURE IsEmpty ( S: Stack ): BOOLEAN; PROCEDURE Init ( VAR S: Stack ); END StackManager; DEFINITION MODULE DataRepository; TYPE Stack; TYPE Queue; PROCEDURE Push ( S: Stack; X: CARDINAL ); PROCEDURE Pop ( S: Stack ): CARDINAL; PROCEDURE Enque ( Q: Queue; X: CARDINAL ); PROCEDURE Deque ( Q: Queue ); PROCEDURE Init ( VAR S: Stack; VAR Q: Queue ); Ohjelmien ylläpito ja END evoluutio DataRepository; TTY Ohjelmistotekniikka 4 Periytymisen tunnistaminen typedef struct { union { int student_number; int teacher_office; char name [ 30 ]; class person { char name [ 30 ]; class student: public person { int student_number; } person; class teacher: public person { int teacher_office; type personkind = ( student, teacher, ); persontype = record Huom! name: array [ ] of Char; Lueteltu case persontag: personkind of tyyppi student: ( studentnumber: Integer ); teacher: ( teacheroffice: Integer ); TTY Ohjelmistotekniikka 5 end; Operaatioiden liittäminen luokkiin Globaaleihin muuttujiin perustuva tunnistaminen Tyyppeihin perustuva tunnistaminen parametrien ja funktion paluuarvojen tyypit Käsiteanalyysi ja sen soveltaminen tunnistamisessa TTY Ohjelmistotekniikka 6 1

2 Globaalit muuttujat #define SIZE 100 int stack [ SIZE ]; int top; int [ SIZE ]; int first, last; struct list_type { int elem; struct list_type *next; } list; void inits ( ) { /* top */ } int isemptys ( ) { /* top */ } int isfulls ( ) { /* top */ } void push ( int i ) { /* stack, top */ } int pop ( ) { */ stack, top */ } void initq ( ) { /* first, last */ } int isemptyq ( ) { /* first, last */ } int isfullq ( ) {/* first, last */ } void ( int i ) { /*, last */ } int ( ) { /*, first */ } void initl ( ) { /* list */ } void add ( int i ) { /* list */ } void remove ( int i ) { /* list */ } TTY Ohjelmistotekniikka 7 stack push pop top inits isemptys isfulls push pop Globaalit muuttujat (lopputulos) list initl add remove last initq isemptyq isfullq first initq isemptyq isfullq TTY Ohjelmistotekniikka 8 Globaalit muuttujat (kaksijakoinen verkko) top tack inits isemptys isfulls t push s pop first last q initq inemptyq isfullq list initl add remove TTY Ohjelmistotekniikka 9 typedef struct stack_t { item_type item; struct stack_t *next; } stack_type; void push ( stack_type type **p, item_type type s ) { stack_type *q; /* allocate space for q */ q->item = s; q->next = *p; *p = q; } Parametrit ja paluutyypit TTY Ohjelmistotekniikka 10 Käsiteanalyysi Konteksti C = ( O, A, R ) O: olioiden äärellinen joukko A: attribuuttien äärellinen joukko R: binaarirelaatio O:n ja A:n välillä Sovitukset ( X ) = { a A o X: ( o, a ) R } etsii olioille attribuutit esim. ( { kissat, apinat } ) = { karvapeitteinen } ( Y ) = { o O a Y: ( o, a ) R } etsii attribuuteille oliot esim. ( { meressä elävä } ) = { delfiinit, valaat } TTY Ohjelmistotekniikka 11 Esimerkki kontekstista kissat koirat älykäs meressä elävä nelijalkainen karvapeitteinen kädellinen delfiinit apinat ihmiset valaat TTY Ohjelmistotekniikka 12 2

3 Lisää käsiteanalyysista Käsite koostuu oliojoukosta ja attribuuttijoukosta mahdollisimman suuri kokoelma sellaisia olioita, joilla on yhteiset attribuutit esim. ( { kissat, koirat }, { nelijalkainen, karvapeitteinen } ) on käsite esim. ( { kissat, apinat }, { karvapeitteinen } ) ei ole käsite Käsiteristikko käsitteiden osittainen järjestys esim. ( { delfiinit, valaat }, { älykäs, meressä elävä } ) ( { apinat, delfiinit, ihmiset, valaat }, { älykäs } ) Erikoistapaukset huippu-käsite: kaikki oliot pohja-käsite: kaikki attribuutit TTY Ohjelmistotekniikka 13 Jakamattomien käsitteiden laskenta ( ( { kissat } ) ) = ( { nelijalkainen, karvapeitteinen } ) = { kissat, koirat } ( ( { koirat } ) ) = ( { nelijalkainen, karvapeitteinen } ) = { kissat, koirat } ( ( { delfiinit } ) ) = ( { älykäs, meressä elävä } ) = { delfiinit, valaat } ( ( { apinat } ) ) = ( { karvapeitteinen, älykäs, kädellinen } ) = { apinat } ( ( { ihmiset } ) ) = ( { älykäs, kädellinen } ) = { apinat, ihmiset } ( ( { valaat } ) ) = ( { älykäs, meressä elävä } ) = { delfiinit, valaat } TTY Ohjelmistotekniikka 14 Jakamattomat käsitteet: Löydetyt käsitteet c 0 = ( { kissat, koirat }, { nelijalkainen, karvapeitteinen } ) c 1 = ( { apinat }, { karvapeitteinen, älykäs, kädellinen } ) c 2 = ( { delfiinit, valaat }, { älykäs, meressä elävä } ) c 3 = ( { apinat, ihmiset }, { älykäs, kädellinen } ) Johdetut käsitteet: c 4 = c 0 c 1 = ( { kissat, koirat, apinat }, { karvapeitteinen } ) c 5 = c 1 c 2 = ( { apinat, delfiinit, valaat, ihmiset }, { älykäs } ) TTY Ohjelmistotekniikka 15 c 0 = ( { kissat, koirat }, { nelijalkainen, karvapeitteinen } ) c 1 = ( { apinat }, { karvapeitteinen, älykäs, kädellinen } ) c 2 = ( { delfiinit, valaat }, { älykäs, meressä elävä } ) c 3 = ( { apinat, ihmiset }, { älykäs, kädellinen } ) työlista = [ (c 0, c 1 ), (c 0, c 2 ), (c 0, c 3 ), (c 1, c 2 ), (c 2, c 3 ) ] c 4 = c 0 c 1 = ( { kissat, koirat, apinat }, { karvapeitteinen } ) työlista = [ (c 0, c 2 ), (c 0, c 3 ), (c 1, c 2 ), (c 2, c 3 ), (c 2, c 4 ), (c 3, c 4 ) ] c 0 c 2 = huippu työlista = [ (c 0, c 3 ), (c 1, c 2 ), (c 2, c 3 ), (c 2, c 4 ), (c 3, c 4 ) ] c 0 c 3 = huippu työlista = [ (c 1, c 2 ), (c 2, c 3 ), (c 2, c 4 ), (c 3, c 4 )] c 5 = c 1 c 2 = ( { apinat, delfiinit, valaat, ihmiset }, { älykäs } ) työlista = [ (c 2, c 3 ), (c 2, c 4 ), (c 3, c 4 ), (c 0, c 5 ), (c 4, c 5 ) ] c 2 c 3 = c 5 työlista = [ (c 2, c 4 ), (c 3, c 4 ), (c 0, c 5 ), (c 4, c 5 ) ] c 2 c 4 = huippu työlista = [ (c 3, c 4 ), (c 0, c 5 ), (c 4, c 5 ) ] c 3 c 4 = huippu työlista = [ (c 0, c 5 ), (c 4, c 5 ) ] c 0 c 5 = huippu ja c 4 c 5 = huippu työlista = Ø Johdettujen käsitteiden etsintä TTY Ohjelmistotekniikka 16 Käsiteristikko huippu ( { kaikki oliot }, Ø ) c5 ( { delfiinit, apinat, ihmiset, valaat }, { älykäs } ) c4 ( { kissat, koirat, apinat }, huippu { karvapeitteinen } ) c 4 c 5 c3 ( { apinat, ihmiset }, { älykäs, kädellinen } ) c2 ({d delfiinit, it valaat t} }, c 3 { älykäs, meressä elävä } ) c 0 c1 ( { apinat }, c 1 c 2 { karvapeitteinen, älykäs, kädellinen } ) c0 ( { kissat, koirat }, { nelijalkainen, karvapeitteinen } ) pohja pohja ( Ø, { kaikki attribuutit } ) Käsiteanalyysin soveltaminen ohjelmiin 1. Muodosta konteksti oliojoukko: ohjelman aliohjelmat attribuuttijoukko: aliohjelmien ominaisuuksia ominaisuudet kuvaavat esim. aliohjelmien ja tietorakenteiden välisiä suhteita 2. Rakenna käsiteristikko 3. Etsi käsitteille ryhmittelyt TTY Ohjelmistotekniikka 17 TTY Ohjelmistotekniikka 18 3

4 struct stack { struct { Esimerkkiohjelma struct stack inits () { /* stack */ } struct initq ( ) { /* */ } int isemptys ( struct stack *s ) { /* stack */ } int isemptyq ( struct *q ) { /* */ } void push ( struct stack *s, int i ) { /* stack */ } void ( struct *q, int i ) { /* */ } int pop ( struct stack *s ) { */ stack */ } int ( struct *q ) { /* */ } TTY Ohjelmistotekniikka 19 Esimerkkiohjelman konteksti paluutyyppinä stack paluutyyppinä parametrina stack parametrina viittaa stack:n kenttiin viittaa :n kenttiin inits initq isemptys isemptyq push pop TTY Ohjelmistotekniikka 20 Käsiteristikko huippu ( { kaikki oliot }, Ø ) huippu c5 ( { initq, isemptyq,, }, { käyttää :n kenttiä } ) c 4 c 5 c4 ( { inits, isemptys, push, pop }, { käyttää stack:n kenttiä } ) c 0 c 2 c 1 c 3 c3 ( { isemptyq,, }, { parametrina, käyttää :n kenttiä } ) c2 ( { isemptys, push, pop }, pohja { parametrina stack, käyttää stack:n kenttiä } ) c1 ( { initq }, Ryhmittelyt { paluutyyppinä } ) R 1 { huippu } c0 ( { inits }, R 2 { c 4, c 5 } { paluutyyppinä stack } ) R 3 { c 0, c 2, c 5 } pohja ( Ø, { kaikki attribuutit } ) R 4 { c 4, c 1, c 3 } TTY R 5 Ohjelmistotekniikka { c 0, c 2, c 1, c 3 } 21 Sovellusaluetietämyksen hyödyntäminen 1. Suunnitteluratkaisun jäljittäminen j 2. Sovelluksen mallintaminen 3. Olioiden sovittaminen 4. Lähdekoodin mukauttaminen TTY Ohjelmistotekniikka 22 Suunnitteluratkaisun jäljittäminen Aloitetaan matalan tason suunnitteludokumenteista kulkukaaviot, tietovuokaaviot Tuotetaan ER-kaavio sisältää periytymissuhteita, osasuhteita Lopulta saadaan oliokeskeinen sovellusmalli (peruuttava) ER-kaavion oliot esim. ohjelmakoodissa esiintyvät tietuemäärittelyt Sovelluksen mallintaminen Rakennetaan oliokeskeinen sovellusmalli (etenevä) lähdetään sovelluksen vaatimuksista Sovellus on aikaisemmin suunniteltu muilla kuin oliokeskeisillä menetelmillä Sovellus mallinnetaan nyt uudestaan oliomenetelmiä käyttäen TTY Ohjelmistotekniikka 23 TTY Ohjelmistotekniikka 24 4

5 Olioiden sovittaminen Peruuttavan ja etenevän mallin oliot sovitetaan yhteen etenevä malli antaa kehykset peruuttava mallista saadaan yksityiskohdat Proseduraalinen jäännös sisältää osat, joille ei löydy vastaavuuksia Lähdekoodin mukauttaminen Yhteensovitetut oliot kapseloidaan löydetyt attribuutit ja operaatiot sekä globaalit tietoalkiot Proseduraalinen jäännös mukautetaan olioparadigman mukaiseksi Proseduraaliseen jäännökseen voivat kuulua: proseduraalisen ohjelman pääohjelma lajittelu- ja etsintätoimintoja, jotka eivät sovi mihinkään luokkaan TTY Ohjelmistotekniikka 25 TTY Ohjelmistotekniikka 26 Suunnittelumallien tunnistaminen Esimerkkejä tunnistettavista malleista: MVC-malli (arkkitehtuurimalli) GoF-mallit (mikroarkkitehtuuri) muut mallit (esim. oliomallit) Tunnistamismenetelmiä: osittava (top-down) kokoava (bottom-up) metriikat peittävyyden mittaaminen käsiteanalyysi Mahdollisia lähteitä: proseduraaliset ohjelmat olio-ohjelmat UML-kaaviot Ohjelmien laadun parantaminen TTY Ohjelmistotekniikka 27 Mallilähtöinen etsintä (top-down) Oliomallin (esim. Roles Played) ilmentymien tunnistaminen koodista mallin ilmentymät määritellään sovellusalueen termeillä esim. asiakas, työntekijä malli ilmaistaan ohjelmointikielen rakenteilla mallin ilmentymien etsintä TTY Ohjelmistotekniikka 28 Koodilähtöinen etsintä (bottom-up) Abstraktien tietotyyppien sovittaminen suunnittelumalleihin sopivien tietotyyppien etsintä esim. henkilö, työntekijä, asiakas tarkastellaan tietotyyppien ryppäitä ja niiden suhteita esim. henkilö voi olla osa työntekijää löydetyt suhteet muokataan oliokeskeisiksi esim. periytymissuhde suhteet sovitetaan suunnittelumalliin esim. periytymissuhde Roles Played malliin, jolloin tuloksena saadaan luokka PlayerRole ja sen aliluokat TTY Ohjelmistotekniikka 29 Player PlayerRole1 PlayerRole TimeStart: date TimeEnd: date PlayerRole2 Person type Employee = record data: Person; salary: Salary_type; end Employee type Person = record name: Name_type;... end Customer Esimerkki Malli- lähtöinen etsintä Koodilähtöinen etsintä type Customer = record data: Person; number: Number_type; end TTY Ohjelmistotekniikka 30 5

6 Composite-suunnittelumalli Client Component Operation ( ) Add ( Component ) Remove ( Component ) GetChild ( int ) Esimerkki Composite-mallin tunnistamisesta AbstractDocument print ( ) AbstractDocument Element print ( ) Document Element nbofelements Title getelements ( ) Paragraph Title Leaf Operation ( ) Composite children Operation ( ) forall g in children Add ( Component ) g.operation ( ); Remove ( Component ) GetChild ( int ) TTY Ohjelmistotekniikka 31 Document nbofelements getelements ( ) ParaIndent Main Paragraph ParaIndent TTY Ohjelmistotekniikka Main 32 Aspektit ja niiden tunnistaminen Lähtökohta: luokkien välillä esiintyy myös horisontaalista samankaltaisuutta Terminologiaa: concern mielenkiinnon kohde, jaotteluperuste (huolenaihe) eri mielenkiinnon kohteet johtavat erilaisiin jaotteluihin cross-cutting concerns läpileikkaavat jaotteluperusteet separation of concerns mielenkiinnon kohteiden tarkastelu erikseen aspect modulaarinen yksikkö, joka mahdollistaa mielenkiinnon kohteiden toteuttamisen erikseen TTY Ohjelmistotekniikka 33 Erilliset luokkahierarkiat Fruit peelable color ripeness pick ( ) refrigerate ( ) Grapes Orange globespercluster juiceable sour tanginess seedless squeeze ( ) makewine ( ) drypeel ( ) getsugar ( ) Gadget color turnon ( ) turnoff ( ) Wireless Wired frequency connectortype range isconnected ( ) acquiresignal ( ) reset ( ) receive ( ) TTY Ohjelmistotekniikka 34 Grapes makewine ( ) getsugar ( ) Läpileikkaavat jaotteluperusteet Orange squeeze ( ) drypeel ( ) Wireless acquiresignal ( ) receive ( ) Wired isconnected ( ) reset ( ) Osto ja myynti Pakkaaminen Varastointi TTY Ohjelmistotekniikka 35 Esimerkkejä aspekteista Aspekteja, joita ohjelmointikieli voi tukea poikkeusten hallinta try, throw, catch rinnakkaisuus synchoronized, wait, notify invariantit invariant, ensure, require Muita aspekteja lokitietojen ylläpito peruminen (undo) tarkistukset (esim. parametrien) ja virhetilanteiden käsittely vrt. viipalointi TTY Ohjelmistotekniikka 36 6

7 Aspektien tunnistaminen Staattisia menetelmiä fan-in-analyysi tunnusten analysointi Dynaamisia menetelmiä kutsuryhmien analysointi esim. resurssien varaaminen ja vapauttaminen esim. monivaiheiset toiminnot käsiteanalyysin soveltaminen ajetaan instrumentoitua koodia erilaisilla käyttötapauksilla ja kerätään ajojäljet ajojäljet: kontekstin olioita suoritetut operaatiot: kontekstin ominaisuuksia (attribuutteja) löydetään operaatiot, jotka suoritetaan samassa käyttötapauksessa TTY Ohjelmistotekniikka 37 7

Luokkien (olioiden) tunnistaminen

Luokkien (olioiden) tunnistaminen object identification objectifying (oliointi) Luokkien (olioiden) tunnistaminen Luonteeltaan takaisinmallinnusta ohjelmia ei muuteta Ensimmäinen vaihe konvertoitaessa proseduraalisia (tai muita ei-olio-ohjelmia)

Lisätiedot

TIETORAKENTEET JA ALGORITMIT

TIETORAKENTEET JA ALGORITMIT TIETORAKENTEET JA ALGORITMIT Timo Harju 1999-2004 1 typedef link List; /* Vaihtoehtoisia nimiä */ typedef link Stack; /* nodepointterille */ typedef link Queue typedef struct node Node; /* itse nodelle

Lisätiedot

A274101 TIETORAKENTEET JA ALGORITMIT

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

Lisätiedot

Ohjelmien analysointi. ER-kaaviot

Ohjelmien analysointi. ER-kaaviot Ohjelmien analysointi Ohjelmien kuvaaminen kaavioilla ohjelmien ymmärtäminen kaavioiden avulla kaavioiden tuottaminen ohjelmasta Erilaisia kaaviotyyppejä: ER-kaaviot, tilakaaviot, UML-kaaviot tietohakemisto

Lisätiedot

tietueet eri tyyppisiä tietoja saman muuttujan arvoiksi

tietueet eri tyyppisiä tietoja saman muuttujan arvoiksi tietueet eri tyyppisiä tietoja saman muuttujan arvoiksi ero taulukkoon taulukossa alkiot samantyyppisiä tietueessa alkiot voivat olla erityyppisiä tiedot kuitenkin yhteen kuuluvia ohjelmoinnin perusteet,

Lisätiedot

Tietorakenteet ja algoritmit

Tietorakenteet ja algoritmit Tietorakenteet ja algoritmit Merkintöjen tulkintoja *++Pstack->top = item *Pstack->top++ = item (*Pstack->top)++ *(Pstack++)->top = item *(++Pstack)->top = item Lisää pinon toteutuksia Dynaaminen taulukko

Lisätiedot

Listarakenne (ArrayList-luokka)

Listarakenne (ArrayList-luokka) Listarakenne (ArrayList-luokka) Mikä on lista? Listan määrittely ArrayList-luokan metodeita Listan läpikäynti Listan läpikäynti indeksin avulla Listan läpikäynti iteraattorin avulla Listaan lisääminen

Lisätiedot

12. Monimuotoisuus 12.1

12. Monimuotoisuus 12.1 12. Monimuotoisuus 12.1 Sisällys Johdanto. Periytymismekanismi määrittää alityypityksen. Viitteiden sijoitus ja vertailu. Staattinen ja dynaaminen luokka. Parametrinvälitys eräs monimuotoisuuden sovellus.

Lisätiedot

Sisällys. Yleistä attribuuteista. Näkyvyys luokan sisällä ja ulkopuolelta. Attribuuttien arvojen käsittely aksessoreilla. 4.2

Sisällys. Yleistä attribuuteista. Näkyvyys luokan sisällä ja ulkopuolelta. Attribuuttien arvojen käsittely aksessoreilla. 4.2 4. Attribuutit 4.1 Sisällys Yleistä attribuuteista. Näkyvyys luokan sisällä ja ulkopuolelta. Attribuuttien arvojen käsittely aksessoreilla. 4.2 Yleistä Luokan lohkossa, mutta metodien ulkopuolella esiteltyjä

Lisätiedot

Tietorakenteet ja algoritmit

Tietorakenteet ja algoritmit Tietorakenteet ja algoritmit Muuttujat eri muisteissa Ohjelman muistialueen layout Paikallisen ja globaalin muuttujan ominaisuudet Dynaamisen muistinkäytön edut Paikallisten muuttujien dynaamisuus ADT

Lisätiedot

1. Olio-ohjelmointi 1.1

1. Olio-ohjelmointi 1.1 1. Olio-ohjelmointi 1.1 Sisällys Olio-ohjelmointi on eräs ohjelmointiparadigma. Olio-ohjelmoinnin muotoja. Ohjelmiston analyysi ja suunnittelu. Olioparadigman etuja ja kritiikkiä. 1.2 Ohjelmointiparadigmoja

Lisätiedot

Tietorakenteet ja algoritmit

Tietorakenteet ja algoritmit Tietorakenteet ja algoritmit Pino Pinon määritelmä Pinon sovelluksia Järjestyksen kääntäminen Palindromiprobleema Postfix-lausekkeen laskenta Infix-lausekkeen muunto postfix-lausekkeeksi Sisäkkäiset funktiokutsut

Lisätiedot

Rakenteiset tietotyypit Moniulotteiset taulukot

Rakenteiset tietotyypit Moniulotteiset taulukot C! Rakenteiset tietotyypit Moniulotteiset taulukot 22.2.2018 Agenda Rakenteiset tietotyypit Vilkaisu 6. kierroksen tehtäviin Moniulotteiset taulukot Esimerkki Seuraava luento to 8.3. Ilmoittautuminen ohjelmointikokeeseen

Lisätiedot

JAVA-PERUSTEET. JAVA-OHJELMOINTI 3op A274615 JAVAN PERUSTEET LYHYT KERTAUS JAVAN OMINAISUUKSISTA JAVAN OMINAISUUKSIA. Java vs. C++?

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,

Lisätiedot

Pino S on abstrakti tietotyyppi, jolla on ainakin perusmetodit:

Pino S on abstrakti tietotyyppi, jolla on ainakin perusmetodit: Pino (stack) Pino: viimeisenä sisään, ensimmäisenä ulos (LIFO, Last In, First Out) -tietorakenne kaksi perusoperaatiota: alkion lisäys pinon päälle (push), ja päällimmäisen alkion poisto (pop) Push(alkio)

Lisätiedot

Algoritmit 1. Luento 3 Ti Timo Männikkö

Algoritmit 1. Luento 3 Ti Timo Männikkö Algoritmit 1 Luento 3 Ti 17.1.2017 Timo Männikkö Luento 3 Algoritmin analysointi Rekursio Lomituslajittelu Aikavaativuus Tietorakenteet Pino Algoritmit 1 Kevät 2017 Luento 3 Ti 17.1.2017 2/27 Algoritmien

Lisätiedot

Ohjelmointi 2. Jussi Pohjolainen. TAMK» Tieto- ja viestintäteknologia , Jussi Pohjolainen TAMPEREEN AMMATTIKORKEAKOULU

Ohjelmointi 2. Jussi Pohjolainen. TAMK» Tieto- ja viestintäteknologia , Jussi Pohjolainen TAMPEREEN AMMATTIKORKEAKOULU Ohjelmointi 2 Jussi Pohjolainen TAMK» Tieto- ja viestintäteknologia Tietotyypeistä C++ - kielessä useita tietotyyppejä Kirjaimet: char, wchar_t Kokonaisluvut: short, int, long Liukuluvut: float, double

Lisätiedot

Rajapinta (interface)

Rajapinta (interface) 1 Rajapinta (interface) Mikä rajapinta on? Rajapinta ja siitä toteutettu luokka Monimuotoisuus ja dynaaminen sidonta Rajapinta vs periytyminen 1 Mikä rajapinta on? Rajapintoja käytetään, kun halutaan määritellä

Lisätiedot

12. Monimuotoisuus 12.1

12. Monimuotoisuus 12.1 12. Monimuotoisuus 12.1 Sisällys Johdanto. Periytymismekanismi määrittää alityypityksen. Viitteiden sijoitus ja vertailu. Staattinen ja dynaaminen luokka. Myöhäinen ja aikainen sidonta. Parametrinvälitys

Lisätiedot

1.1 Pino (stack) Koodiluonnos. Graafinen esitys ...

1.1 Pino (stack) Koodiluonnos. Graafinen esitys ... 1. Tietorakenteet Tietorakenteet organisoivat samankaltaisten olioiden muodostaman tietojoukon. Tämä järjestys voidaan saada aikaan monin tavoin, esim. Keräämällä oliot taulukkoon. Liittämällä olioihin

Lisätiedot

Tietueet. Tietueiden määrittely

Tietueet. Tietueiden määrittely Tietueet Tietueiden määrittely Tietue on tietorakenne, joka kokoaa yhteen eri tyyppistä tietoa yhdeksi asiakokonaisuudeksi. Tähän kokonaisuuteen voidaan viitata yhteisellä nimellä. Auttaa ohjelmoijaa järjestelemään

Lisätiedot

812347A Olio-ohjelmointi, 2015 syksy 2. vsk. VII Suunnittelumallit Adapter ja Composite

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

Lisätiedot

Kääreluokat (oppikirjan luku 9.4) (Wrapper-classes)

Kääreluokat (oppikirjan luku 9.4) (Wrapper-classes) Kääreluokat (oppikirjan luku 9.4) (Wrapper-classes) Kääreluokista Javan alkeistietotyypit ja vastaavat kääreluokat Autoboxing Integer-luokka Double-luokka Kääreluokista Alkeistietotyyppiset muuttujat (esimerkiksi

Lisätiedot

2. Olio-ohjelmoinista lyhyesti 2.1

2. Olio-ohjelmoinista lyhyesti 2.1 2. Olio-ohjelmoinista lyhyesti 2.1 Sisällys Yleistä. Oliot ja luokat. Attribuutit. Olioiden esittely ja alustus. Rakentajat. Olion operaation kutsuminen. 2.2 Yleistä Olio-ohjelmointia käsitellään hyvin

Lisätiedot

Oliosuunnitteluesimerkki: Yrityksen palkanlaskentajärjestelmä

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ä

Lisätiedot

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Taulukot & Periytyminen

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

Lisätiedot

815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 5 Vastaukset

815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 5 Vastaukset 815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 5 Vastaukset Harjoituksen aiheena ovat aliohjelmat ja abstraktit tietotyypit sekä olio-ohjelmointi. Tehtävät tehdään C-, C++- ja Java-kielillä.

Lisätiedot

815338A Ohjelmointikielten periaatteet Harjoitus 3 vastaukset

815338A Ohjelmointikielten periaatteet Harjoitus 3 vastaukset 815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 3 vastaukset Harjoituksen aiheena ovat imperatiivisten kielten muuttujiin liittyvät kysymykset. Tehtävä 1. Määritä muuttujien max_num, lista,

Lisätiedot

Kehittää ohjelmointitehtävien ratkaisemisessa tarvittavia metakognitioita!

Kehittää ohjelmointitehtävien ratkaisemisessa tarvittavia metakognitioita! Kehittää ohjelmointitehtävien ratkaisemisessa tarvittavia metakognitioita! eli... Hyvä kaava sanoo enemmän kuin,... tuhat riviä koodia!... sata riviä tekstiä!... kymmenen diagrammia! Sopimusohjelmointi

Lisätiedot

Aliohjelmatyypit (2) Jakso 4 Aliohjelmien toteutus

Aliohjelmatyypit (2) Jakso 4 Aliohjelmien toteutus Jakso 4 Aliohjelmien toteutus Tyypit Parametrit Aktivointitietue (AT) AT-pino Rekursio Aliohjelmatyypit (2) Korkean tason ohjelmointikielen käsitteet: aliohjelma, proseduuri parametrit funktio parametrit,

Lisätiedot

UML Luokkakaavio 14:41

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,

Lisätiedot

Luento 4 Aliohjelmien toteutus

Luento 4 Aliohjelmien toteutus Luento 4 Aliohjelmien toteutus Tyypit Parametrit Aktivointitietue (AT) AT-pino Rekursio 1 Aliohjelmatyypit (2) Korkean tason ohjelmointikielen käsitteet: aliohjelma, proseduuri parametrit funktio parametrit,

Lisätiedot

18. Abstraktit tietotyypit 18.1

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:

Lisätiedot

lausekkeiden tapauksessa. Jotkin ohjelmointikielet on määritelty sellaisiksi,

lausekkeiden tapauksessa. Jotkin ohjelmointikielet on määritelty sellaisiksi, 3.5. TYYPIT 59 indeksit voidaan siirtää kielitasolta oliotasolle siirryttäessä alkamaan nollasta. Vain mikäli indeksin alin arvo oliotasolla ei ole tiedossa ennen suorituksen alkua, on tarpeen lisätä taulukko-olioon

Lisätiedot

TIE-20200 Samuel Lahtinen. Lyhyt UML-opas. UML -pikaesittely

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

Lisätiedot

Luento 4 (verkkoluento 4) Aliohjelmien toteutus

Luento 4 (verkkoluento 4) Aliohjelmien toteutus Luento 4 (verkkoluento 4) Aliohjelmien toteutus Tyypit, Parametrit Aktivaatiotietue (AT) AT-pino, rekursio 1 Aliohjelmatyypit Korkean tason ohjelmointikielen käsitteet aliohjelma, proseduuri Parametrit

Lisätiedot

Abstraktit tietotyypit. TIEA341 Funktio ohjelmointi 1 Syksy 2005

Abstraktit tietotyypit. TIEA341 Funktio ohjelmointi 1 Syksy 2005 Abstraktit tietotyypit TIEA341 Funktio ohjelmointi 1 Syksy 2005 Data abstraktio Abstraktio on ohjelmoinnin tärkein väline Data abstraktio abstrahoi dataa Abstrakti tietotyyppi Koostuu kolmesta asiasta:

Lisätiedot

Algoritmit ja tietorakenteet / HL Copyright Hannu Laine

Algoritmit ja tietorakenteet / HL Copyright Hannu Laine 1 Pino ja jono Yleistä Pino Pino ja jono ovat abstrakteja tietotyyppejä, joilla on yleistä käyttöä. Pino ja jono ovat listan erikoistapauksia. Kummassakin tapauksessa erona on se, että tietotyypin operaatiofunktioita

Lisätiedot

Algoritmit 1. Luento 4 Ke Timo Männikkö

Algoritmit 1. Luento 4 Ke Timo Männikkö Algoritmit 1 Luento 4 Ke 18.1.2017 Timo Männikkö Luento 4 Tietorakenteet Pino Pinon toteutus Jono Jonon toteutus Lista Listaoperaatiot Algoritmit 1 Kevät 2017 Luento 4 Ke 18.1.2017 2/29 Pino Pino, stack,

Lisätiedot

3. Binääripuu, Java-toteutus

3. Binääripuu, Java-toteutus 3. Binääripuu, Java-toteutus /*-------------------------------------------------------------/ / Rajapinta SearchTree: binäärisen hakupuun käsittelyrajapinta / / Metodit: / / void insert( Comparable x );

Lisätiedot

Kaksiloppuinen jono D on abstrakti tietotyyppi, jolla on ainakin seuraavat 4 perusmetodia... PushFront(x): lisää tietoalkion x jonon eteen

Kaksiloppuinen jono D on abstrakti tietotyyppi, jolla on ainakin seuraavat 4 perusmetodia... PushFront(x): lisää tietoalkion x jonon eteen Viimeksi käsiteltiin pino: lisäys ja poisto lopusta jono: lisäys loppuun, poisto alusta Pinon ja jonon yleistävä tietorakenne: kaksiloppuinen jono alkion lisäys/poisto voidaan kohdistaa jonon alkuun tai

Lisätiedot

Kielioppia: toisin kuin Javassa

Kielioppia: toisin kuin Javassa Object Pascal Pascal kielen oliolaajennus (Inprise/Borland:n oma) luokat Voit uudelleenkäyttää luomiasi objekteja esim. komponentteja Periytyminen Kielioppia: toisin kuin Javassa Ei eroa isojen ja pienien

Lisätiedot

Olio-ohjelmointi Javalla

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

Lisätiedot

Tietorakenteet ja algoritmit

Tietorakenteet ja algoritmit Tietorakenteet ja algoritmit Taulukon edut Taulukon haitat Taulukon haittojen välttäminen Dynaamisesti linkattu lista Linkatun listan solmun määrittelytavat Lineaarisen listan toteutus dynaamisesti linkattuna

Lisätiedot

Jakso 4 Aliohjelmien toteutus

Jakso 4 Aliohjelmien toteutus Jakso 4 Aliohjelmien toteutus Tyypit Parametrit Aktivointitietue (AT) AT-pino Rekursio 1 Aliohjelmatyypit (2) Korkean tason ohjelmointikielen käsitteet: aliohjelma, proseduuri parametrit funktio parametrit,

Lisätiedot

Olio-ohjelmoinnin toteuttaminen Fortran 90 -kielellä

Olio-ohjelmoinnin toteuttaminen Fortran 90 -kielellä Olio-ohjelmoinnin toteuttaminen Fortran 90 -kielellä Florian Berger 20.12.2002 Joensuun yliopisto Tietojenkäsittelytiede Pro gradu -tutkielma Tiivistelmä Olio-ohjelmointi on ohjelmointimenetelmä, jonka

Lisätiedot

Tieto ja sen osoite (3) Jakso 3 Konekielinen ohjelmointi (TTK-91, KOKSI) Osoitinmuuttujat. Tieto ja sen osoite (5)

Tieto ja sen osoite (3) Jakso 3 Konekielinen ohjelmointi (TTK-91, KOKSI) Osoitinmuuttujat. Tieto ja sen osoite (5) Jakso 3 Konekielinen ohjelmointi (TTK-91, KOKSI) Muuttujat Tietorakenteet Kontrolli Optimointi Tarkistukset 1 Tieto ja sen osoite (3) X DC LOAD, =X LOAD R2, X int x =; symbolin X arvo muuttujan X arvo

Lisätiedot

Luento 4 (verkkoluento 4) Aliohjelmien toteutus

Luento 4 (verkkoluento 4) Aliohjelmien toteutus Luento 4 (verkkoluento 4) Aliohjelmien toteutus Tyypit, Parametrit Aktivointitietue (AT) AT-pino, rekursio 1 Aliohjelmatyypit Korkean tason ohjelmointikielen käsitteet aliohjelma, proseduuri Parametrit

Lisätiedot

Jakso 4 Aliohjelmien toteutus

Jakso 4 Aliohjelmien toteutus Jakso 4 Aliohjelmien toteutus Tyypit Parametrit Aktivointitietue (AT) AT-pino Rekursio 1 Aliohjelmatyypit (2) Korkean tason ohjelmointikielen käsitteet: aliohjelma, proseduuri parametrit funktio parametrit,

Lisätiedot

2. Olio-ohjelmoinnin perusteita 2.1

2. Olio-ohjelmoinnin perusteita 2.1 2. Olio-ohjelmoinnin perusteita 2.1 Sisällys Esitellään peruskäsitteitä yleisellä tasolla: Luokat ja oliot. Käsitteet, luokat ja oliot. Attribuutit, olion tila ja identiteetti. Metodit ja viestit. Olioperustainen

Lisätiedot

Ohjelmistojen mallintaminen Luokkakaaviot Harri Laine 1

Ohjelmistojen mallintaminen Luokkakaaviot Harri Laine 1 Ohjelmistojen mallintaminen Luokkakaaviot 5.12.2008 Harri Laine 1 Olioiden palvelut Palvelun kuvauksessa annettavat tiedot näkyvyys (kuten attribuuttien kohdalla) nimi (ainoa välttämätön osa) parametrit

Lisätiedot

C++11 Syntaksi. Jari-Pekka Voutilainen Jari-Pekka Voutilainen: C++11 Syntaksi

C++11 Syntaksi. Jari-Pekka Voutilainen Jari-Pekka Voutilainen: C++11 Syntaksi 1 C++11 Syntaksi Jari-Pekka Voutilainen 13.4.2012 2 Range-for Iteroi säiliön kaikki alkiot for-silmukassa. Säiliöltä vaaditaan begin- ja end-iteraattorit. Pätee kaikille C++11 STL-säiliöille, taulukoille,

Lisätiedot

T740103 Olio-ohjelmointi Osa 5: Periytyminen ja polymorfismi Jukka Jauhiainen OAMK Tekniikan yksikkö 2010

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

Lisätiedot

Jakso 3 Konekielinen ohjelmointi (TTK-91, KOKSI)

Jakso 3 Konekielinen ohjelmointi (TTK-91, KOKSI) Jakso 3 Konekielinen ohjelmointi (TTK-91, KOKSI) Muuttujat Tietorakenteet Kontrolli Optimointi Tarkistukset 1 Muuttujan X osoite on 230 Muuttujan X arvo on 12 Symbolin X arvo on 230 symbolit ovat yleensä

Lisätiedot

Tietorakenteet ja algoritmit

Tietorakenteet ja algoritmit Tietorakenteet ja algoritmit Elegantti toteutus funktiolle insert_to_list_end Alkion lisäys sisällön mukaan järjestettyyn listaan (insert_to_list) Linkatun listan yleisyys alkiotyypin suhteen source-tasolla

Lisätiedot

Oliosuunnittelu. Oliosuunnittelu

Oliosuunnittelu. Oliosuunnittelu Oliosuunnittelu Perinnän ja dynaamisen sidonnan hyödyntäminen Tarkastellaan ohjelmaa, jonka tehtävänä on tuottaa erilaisista kuvioista muodostuva kuvaesitys Ratkaisu 1: perinteinen malli - ei perintää

Lisätiedot

Jakso 3 Konekielinen ohjelmointi (TTK-91, KOKSI)

Jakso 3 Konekielinen ohjelmointi (TTK-91, KOKSI) Jakso 3 Konekielinen ohjelmointi (TTK-91, KOKSI) Muuttujat Tietorakenteet Kontrolli Optimointi Tarkistukset 1 Muuttujan X osoite on 230 Muuttujan X arvo on 12 Symbolin X arvo on 230 Tieto ja sen osoite

Lisätiedot

Luento 3: Tietorakenteiden esittäminen

Luento 3: Tietorakenteiden esittäminen Luento 3: Tietorakenteiden esittäminen AS-0.110 XML-kuvauskielten perusteet Janne Kalliola Tietorakenteiden esittäminen XML-dokumentti puuna Muunnokset muodosta toiseen Perustietorakenteet listat puut

Lisätiedot

Algoritmit ja tietorakenteet / HL 1 Copyright Hannu Laine. Lista. Yleistä

Algoritmit ja tietorakenteet / HL 1 Copyright Hannu Laine. Lista. Yleistä Algoritmit ja tietorakenteet / HL 1 Lista Yleistä Lista, pino ja jono ovat abstrakteja tietotyyppejä, joilla on yleistä käyttöä. Niitä voidaan hyödyntää mitä erilaisimmissa probleemoissa ja sovelluksissa.

Lisätiedot

Sisällys. Metodien kuormittaminen. Luokkametodit ja -attribuutit. Rakentajat. Metodien ja muun luokan sisällön järjestäminen. 6.2

Sisällys. Metodien kuormittaminen. Luokkametodit ja -attribuutit. Rakentajat. Metodien ja muun luokan sisällön järjestäminen. 6.2 6. Metodit 6.1 Sisällys Metodien kuormittaminen. Luokkametodit ja -attribuutit. Rakentajat. Metodien ja muun luokan sisällön järjestäminen. 6.2 Oliot viestivät metodeja kutsuen Olio-ohjelmoinnissa ohjelma

Lisätiedot

Tietorakenteet ja algoritmit

Tietorakenteet ja algoritmit Tietorakenteet ja algoritmit Kurssin sisältö pääpiirteittäin Tarvittavat pohjatiedot Avainsanat Abstraktio Esimerkkiohjelman tehtäväkuvaus Abstraktion käyttö tehtävässä Abstrakti tietotyyppi Hyötyjä ADT:n

Lisätiedot

Sisällys. 18. Abstraktit tietotyypit. Johdanto. Johdanto

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:

Lisätiedot

Olio-ohjelmoinnissa luokat voidaan järjestää siten, että ne pystyvät jakamaan yhteisiä tietoja ja aliohjelmia.

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

Lisätiedot

Metodit. Metodien määrittely. Metodin parametrit ja paluuarvo. Metodien suorittaminen eli kutsuminen. Metodien kuormittaminen

Metodit. Metodien määrittely. Metodin parametrit ja paluuarvo. Metodien suorittaminen eli kutsuminen. Metodien kuormittaminen Metodit Metodien määrittely Metodin parametrit ja paluuarvo Metodien suorittaminen eli kutsuminen Metodien kuormittaminen 1 Mikä on metodi? Metodi on luokan sisällä oleva yhteenkuuluvien toimintojen kokonaisuus

Lisätiedot

http://www.enteract.com/~bradapp/docs/patterns-intro.html http://www.hillside.net/patterns/

http://www.enteract.com/~bradapp/docs/patterns-intro.html http://www.hillside.net/patterns/ 5. Suunnittelumallit Suunnittelumallin käsite Suunnittelumallien hyötyjä Suunnittelumallien kuvaaminen Esimerkki: Rekursiokooste Antisuunnittelumallit Suunnittelumallit ja UML Mallikielet Suunnittelumallit

Lisätiedot

812347A Olio-ohjelmointi, 2015 syksy 2. vsk. II Johdanto olio-ohjelmointiin

812347A Olio-ohjelmointi, 2015 syksy 2. vsk. II Johdanto olio-ohjelmointiin 812347A Olio-ohjelmointi, 2015 syksy 2. vsk II Johdanto olio-ohjelmointiin Sisältö 1. Abstraktiosta 2. Olio-ohjelmoinnin historiaa 3. Olioparadigmasta 4. Peruskäsitteiden esittely 2 II.1 Abstraktiosta

Lisätiedot

1 Tehtävän kuvaus ja analysointi

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.

Lisätiedot

Luento 4 Aliohjelmien toteutus

Luento 4 Aliohjelmien toteutus Luento 4 Aliohjelmien toteutus Tyypit Parametrit Aktivointitietue (AT) AT-pino Rekursio 1 Aliohjelmatyypit (2) Korkean tason ohjelmointikielen käsitteet aliohjelma, proseduuri parametrit funktio parametrit,

Lisätiedot

Tieto- ja tallennusrakenteet

Tieto- ja tallennusrakenteet Tieto- ja tallennusrakenteet Sisältö Tyyppi, abstrakti tietotyyppi, abstraktin tietotyypin toteutus Tallennusrakenteet Taulukko Linkitetty rakenne Abstraktit tietotyypit Lista (Puu) (Viimeisellä viikolla)

Lisätiedot

Olio-ohjelmointi Suunnittelumallit Adapter ja Composite. 1. Adapter

Olio-ohjelmointi Suunnittelumallit Adapter ja Composite. 1. Adapter Olio-ohjelmointi Suunnittelumallit Adapter ja Composite Rakennemalleissa päähuomio kohdistetaan siihen, miten luokkia ja olioita yhdistellään muodostamaan laajempia rakenteita. Rakenteelliset luokkamallit

Lisätiedot

TIE Principles of Programming Languages CEYLON

TIE Principles of Programming Languages CEYLON TIE-20306 Principles of Programming Languages CEYLON SISÄLLYSLUETTELO 1. YLEISTIETOA KIELESTÄ JA SEN KEHITTÄMISESTÄ... 1 2. CEYLONIN OMINAISUUKSIA... 2 2.1 Modulaarisuus... 2 2.2 Tyypit... 2 2.3 Muita

Lisätiedot

Demo 6 vastauksia. 1. tehtävä. #ifndef #define D6T1 H D6T1 H. #include <iostream> using std::ostream; using std::cout; using std::endl;

Demo 6 vastauksia. 1. tehtävä. #ifndef #define D6T1 H D6T1 H. #include <iostream> using std::ostream; using std::cout; using std::endl; Demo 6 vastauksia 1. tehtävä #ifndef #define D6T1 H D6T1 H #include using std::ostream; using std::cout; using std::endl; #include using std::string; 10 template class

Lisätiedot

Analyysi, staattinen mallintaminen, kohdealueen malli ja luokkakaavio

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ä:

Lisätiedot

Sisällys. Yleistä attribuuteista. Näkyvyys luokan sisällä. Tiedonkätkentä. Aksessorit. 4.2

Sisällys. Yleistä attribuuteista. Näkyvyys luokan sisällä. Tiedonkätkentä. Aksessorit. 4.2 4. Attribuutit 4.1 Sisällys Yleistä attribuuteista. Näkyvyys luokan sisällä. Tiedonkätkentä. Aksessorit. 4.2 Yleistä Luokan lohkossa, mutta metodien ulkopuolella esiteltyjä muuttujia ja vakioita. Esittely

Lisätiedot

Dynaaminen muisti Rakenteiset tietotyypit

Dynaaminen muisti Rakenteiset tietotyypit C! Dynaaminen muisti Rakenteiset tietotyypit 1.3.2016 Agenda Kertausta Dynaaminen muisti Valgrind-perusteet ja esimerkkejä Yhteenveto tietorakenteista Vilkaisu 3. kierroksen tehtäviin Esim: miten linkitetty

Lisätiedot

Olioperustaisuus (object oriented)

Olioperustaisuus (object oriented) DO NOT PRINT THIS DOCUMENT Olioperustainen ohjelmistokehitys Olioperustaisuus (object oriented) järjestelmä (system) muodostuu joukosta olioita (object), jotka yhteistyössä toimien tuottavat järjestelmän

Lisätiedot

HELIA 1 (14) Outi Virkki Käyttöliittymät ja ohjlmiston suunnittelu

HELIA 1 (14) Outi Virkki Käyttöliittymät ja ohjlmiston suunnittelu HELIA 1 (14) Luento 7 Käyttöliittymäolio... 2 Olioajattelun perusteet... 3 Tavoitteet... 3 Peruskäsitteet... 4 Olio / Olioinstanssi / Olion esiintymä... 4 Ominaisuudet... 4 Toiminnot... 4 Olioluokka /

Lisätiedot

Johdatus sovellussuunnitteluun, s99, osa2 Helsingin yliopisto;/tktl Harri Laine 1. Olioperustaisuus (object oriented)

Johdatus sovellussuunnitteluun, s99, osa2 Helsingin yliopisto;/tktl Harri Laine 1. Olioperustaisuus (object oriented) DO NOT PRINT THIS DOCUMENT Olioperustainen ohjelmistokehitys Olioperustaisuus (object oriented) järjestelmä (system) muodostuu joukosta olioita (object), jotka yhteistyössä toimien tuottavat järjestelmän

Lisätiedot

815338A Ohjelmointikielten periaatteet

815338A Ohjelmointikielten periaatteet 815338A Ohjelmointikielten periaatteet 2015-2016 V Abstraktit tietotyypit ja olioohjelmointi Sisältö I. Abstraktit tietotyypit II. 1. Johdatus abstrakteihin tietotyyppeihin 2. Abstraktit tietotyypit Adassa

Lisätiedot

Luento 4 Aliohjelmien toteutus

Luento 4 Aliohjelmien toteutus Luento 4 Aliohjelmien toteutus Tyypit Parametrit Aktivointitietue (AT) AT-pino Rekursio 1 Aliohjelmatyypit (2) Korkean tason ohjelmointikielen käsitteet aliohjelma, proseduuri parametrit funktio parametrit,

Lisätiedot

Tietorakenteet ja algoritmit

Tietorakenteet ja algoritmit Tietorakenteet ja algoritmit Rekursio Rekursion käyttötapauksia Rekursio määritelmissä Rekursio ongelmanratkaisussa ja ohjelmointitekniikkana Esimerkkejä taulukolla Esimerkkejä linkatulla listalla Hanoin

Lisätiedot

useampi ns. avain (tai vertailuavain) esim. opiskelijaa kuvaavassa alkiossa vaikkapa opintopistemäärä tai opiskelijanumero

useampi ns. avain (tai vertailuavain) esim. opiskelijaa kuvaavassa alkiossa vaikkapa opintopistemäärä tai opiskelijanumero Alkioiden avaimet Usein tietoalkioille on mielekästä määrittää yksi tai useampi ns. avain (tai vertailuavain) esim. opiskelijaa kuvaavassa alkiossa vaikkapa opintopistemäärä tai opiskelijanumero 80 op

Lisätiedot

Ohjelmoinnin peruskurssien laaja oppimäärä

Ohjelmoinnin peruskurssien laaja oppimäärä Ohjelmoinnin peruskurssien laaja oppimäärä Luento 11: Olioiden toteuttaminen Riku Saikkonen 28. 11. 2011 Sisältö 1 Miten oliot ja metodikutsut toimivat? 2 Oliot Minkä luokan metodia kutsutaan? Python-esimerkki

Lisätiedot

Tietorakenteet ja algoritmit - syksy 2015 1

Tietorakenteet ja algoritmit - syksy 2015 1 Tietorakenteet ja algoritmit - syksy 2015 1 Tietorakenteet ja algoritmit - syksy 2015 2 Tietorakenteet ja algoritmit Johdanto Ari Korhonen Tietorakenteet ja algoritmit - syksy 2015 1. JOHDANTO 1.1 Määritelmiä

Lisätiedot

STL:n uudistukset. Seppo Koivisto TTY Ohjelmistotekniikka

STL:n uudistukset. Seppo Koivisto TTY Ohjelmistotekniikka STL:n uudistukset Seppo Koivisto TTY Ohjelmistotekniikka 2012-05-04 Sisältö 1 Muutokset säiliöihin ja uudet säiliötyypit 2 3 4 5 STL:n säiliöt Viitteet ja osoittimet ovat muuttuneet: Allocator::reference

Lisätiedot

Antti-Jussi Lakanen Ohjelmointi 1, C# / kevät 2011

Antti-Jussi Lakanen Ohjelmointi 1, C# / kevät 2011 Antti-Jussi Lakanen Ohjelmointi 1, C# / kevät 2011 Yleistä olioista ja OOP:sta OOP, eng. Object Oriented Programming C#:ssa oliot luodaan käyttämällä (olio)luokkia Olio tarkoittaa yksinkertaisesti ohjelman

Lisätiedot

sama tyyppi (joka vastaa kaikkien mahdollisten arvojen summa-aluetta). Esimerkiksi

sama tyyppi (joka vastaa kaikkien mahdollisten arvojen summa-aluetta). Esimerkiksi 3.5. TYYPIT 51 3.5.3 Kielitason tyypit Staattinen tyypitys Kielitasolla tyyppejä käytetään sulkemaan pois joitakin merkittäviä ja automaattisesti tunnistettavissa olevia merkitysopillisia virheitä (oliotason

Lisätiedot

Sisällys. 6. Metodit. Oliot viestivät metodeja kutsuen. Oliot viestivät metodeja kutsuen

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

Lisätiedot

Tietorakenteet ja algoritmit Johdanto Lauri Malmi / Ari Korhonen

Tietorakenteet ja algoritmit Johdanto Lauri Malmi / Ari Korhonen Tietorakenteet ja algoritmit Johdanto Lauri Malmi / Ari 1 1. JOHDANTO 1.1 Määritelmiä 1.2 Tietorakenteen ja algoritmin valinta 1.3 Algoritmit ja tiedon määrä 1.4 Tietorakenteet ja toiminnot 1.5 Esimerkki:

Lisätiedot

Luento 3 Konekielinen ohjelmointi (TTK-91, KOKSI)

Luento 3 Konekielinen ohjelmointi (TTK-91, KOKSI) Luento 3 Konekielinen ohjelmointi (TTK-91, KOKSI) Muuttujat Tietorakenteet Kontrolli Optimointi Tarkistukset 1 Tieto ja sen osoite (3) X DC 12 LOAD R1, =X LOAD R2, X int x =12; symbolin X arvo muuttujan

Lisätiedot

on ohjelmoijan itse tekemä tietotyyppi, joka kuvaa käsitettä

on ohjelmoijan itse tekemä tietotyyppi, joka kuvaa käsitettä LUOKAN MÄÄRITTELY Luokka, mitä se sisältää Luokan määrittely Olion ominaisuudet eli attribuutit Olion metodit Olion muodostimet ja luonti Olion tuhoutuminen Metodin kutsu luokan ulkopuolelta Olion kopioiminen

Lisätiedot

Hohde Consulting 2004

Hohde Consulting 2004 Luento 5: XQuery AS-0.110 XML-kuvauskielten perusteet Janne Kalliola XQuery XQuery uudet funktiot sekvenssit muuttujat Iterointi järjestys suodatus järjestäminen Ehtorakenteet Muita toimintoja www.hohde.com

Lisätiedot

Johdatus sovellussuunnitteluun, s99, osa2 Helsingin yliopisto;/tktl Harri Laine 1. Olioperustainen ohjelmistokehitys

Johdatus sovellussuunnitteluun, s99, osa2 Helsingin yliopisto;/tktl Harri Laine 1. Olioperustainen ohjelmistokehitys DO NOT PRINT THIS DOCUMENT Olioperustainen ohjelmistokehitys Olioperustaisuus (object oriented) järjestelmä (system) muodostuu joukosta olioita (object), jotka yhteistyössä toimien tuottavat järjestelmän

Lisätiedot

4. Olio-ohjelmoinista lyhyesti 4.1

4. Olio-ohjelmoinista lyhyesti 4.1 4. Olio-ohjelmoinista lyhyesti 4.1 Sisällys Yleistä. Oliot ja luokat. Attribuutit. Olioiden esittely ja alustus. Rakentajat. Olion operaation kutsuminen. 4.2 Yleistä Olio-ohjelmointia käsitellään hyvin

Lisätiedot

Ohjelmistojen mallintamisen ja tietokantojen perusteiden yhteys

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

Lisätiedot

812347A Olio-ohjelmointi, 2015 syksy 2. vsk. IX Suunnittelumallit Proxy, Factory Method, Prototype ja Singleton

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.

Lisätiedot

Tietorakenteet ja algoritmit

Tietorakenteet ja algoritmit Tietorakenteet ja algoritmit Listan määritelmä Listan toteutustapoja Yksinkertainen taulukkototeutus Linkattu taulukko Dynaamisesti linkattu taulukko Listan toteutuksen yleisyysvaatimukset Millä ehdoilla

Lisätiedot

Ohjelmointitaito (ict1td002, 12 op) Kevät 2008. 1. Java-ohjelmoinnin alkeita. Tietokoneohjelma. Raine Kauppinen raine.kauppinen@haaga-helia.

Ohjelmointitaito (ict1td002, 12 op) Kevät 2008. 1. Java-ohjelmoinnin alkeita. Tietokoneohjelma. Raine Kauppinen raine.kauppinen@haaga-helia. Ohjelmointitaito (ict1td002, 12 op) Kevät 2008 Raine Kauppinen raine.kauppinen@haaga-helia.fi 1. Java-ohjelmoinnin alkeita Tietokoneohjelma Java-kieli ja Eclipse-ympäristö Java-ohjelma ja ohjelmaluokka

Lisätiedot

Luento 4 Aliohjelmien toteutus. Tyypit Parametrit Aktivointitietue (AT) AT-pino Rekursio

Luento 4 Aliohjelmien toteutus. Tyypit Parametrit Aktivointitietue (AT) AT-pino Rekursio Luento 4 Aliohjelmien toteutus Tyypit Parametrit Aktivointitietue (AT) AT-pino Rekursio 1 Aliohjelmatyypit (2) Korkean tason ohjelmointikielen käsitteet aliohjelma, proseduuri parametrit funktio parametrit,

Lisätiedot

Sisällys. 9. Periytyminen Javassa. Periytymismekanismi Java-kielessä. Periytymismekanismi Java-kielessä

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

Lisätiedot