812347A Olio-ohjelmointi, 2015 syksy 2. vsk. VIII Suunnittelumallit Observer ja State
|
|
- Mika Laine
- 7 vuotta sitten
- Katselukertoja:
Transkriptio
1 2015 syksy 2. vsk VIII Suunnittelumallit Observer ja State
2 Sisältö 1. Johdanto käyttäytymismalleihin 2. Observer 3. State Suunnittelumallit Observer ja State 2
3 VIII.1 Johdanto käyttäytymismalleihin Päätarkoitus algoritmien toteuttaminen ja vastuiden jakaminen olioiden välillä Kuvaavat luokkien ja olioiden rakenteen lisäksi niiden välisen kommunikoinnin ilmenemismuodot Soveltuvat tapauksiin, joissa suorituspolku vaikea seurattava Mallit siirtävät huomion suorituspolusta olioiden välisiin suhteisiin Luokkamallit toteutetaan käyttäen hyväksi perintää Oliomalleissa käytetään koosteolioita Suunnittelumallit Observer ja State 3
4 VIII.2 Observer (Tarkkailija) Yleinen ongelma: Yhteistyötä tekevien luokkien rakenteessa syntyy kytkentöjä -> uudelleenkäyttö hankaloituu Malli vähentää kytkentöjä Tyypillinen tilanne: käyttöliittymän näkymät riippuvat samasta datasta mutta eivät tiedä toisistaan Keskeiset toimijat kohde (subject, observable) ja tarkkailijat (observers) Julkaise-tilaa-suhde (publish-subscribe) Tarkkailijat rekisteröityvät kohteeseen, kohde ilmoittaa näille muutoksistaan Suunnittelumallit Observer ja State 4
5 VIII.2.1 Tarkoitus ja sovellettavuus Tarkoitus Olioiden välille yksi-moneen riippuvuussuhde, jossa ensimmäisen muutoksesta automaattinen ilmoitus muille olioille. Oliot päivitetään ilmoitettaessa. Sovellettavuus Kytkentäisyyden vähentäminen Ohjelman olioista yhden muuttaminen aiheuttaa muutoksen oliojoukossa, jonka kokoa ei ennalta tunneta Olion muutoksen halutaan välittyvän joukolle olioita, joiden identiteettiä ei ennalta tiedetä Suunnittelumallit Observer ja State 5
6 VIII.2.2 Luokkakaavio Tarkkailtava olio, joka tuntee tarkkailijansa Rajapinta tarkkailijoille Sisältää tilan, jota tarkkaillaan Sisältää tilan, joka pidetään ConcreteSubjectia vastaavana Observer-mallin luokkarakenne. Vrt. Gamma, Helm, Johnson, Vlissides: Design Patterns: Elements of Reusable Object-Oriented Software, Addison-Wesley
7 Useita näkymiä, automaattinen päivitys Javapohjainen esimerkki Observable Observer update() addobserver() removeobserver() notifyobservers() NumeroNakyma MittariNakyma KeliNakyma update() update() update() Saatieto lampotila : double annalampotila() -8 C LIUKASTA Lähde: Lasse Harjumaan luentokalvot 7
8 VIII.2.3 Periaatteellinen C++-toteutus // Tarkkailijoiden kantaluokka class Observer { public: virtual ~Observer(){}; virtual void update(subject* changedsubject) = 0; }; // Kohde-luokan määrittely class Subject { public: virtual ~Subject(){}; virtual void attach(observer*); virtual void detach(observer*); virtual void notify(); private: std::list<observer*> observers; }; Suunnittelumallit Observer ja State 8
9 VIII.2.3 Periaatteellinen C++-toteutus (2) // Kohde-luokan metodit void Subject::attach (Observer* o) { observers.push_back(o); } void Subject::detach (Observer* o) { observers.remove(o); } void Subject::notify () { std::list<observer*>::iterator iter; for (iter = observers.begin(); iter!= observers.end(); iter++) { (*iter)->update(this); } } Suunnittelumallit Observer ja State 9
10 VIII.2.3 Periaatteellinen C++-toteutus (3) // Varsinainen kohde-luokka class ConcreteSubject : public Subject { // Luokan koodia // Metodi joka aiheuttaa ilmoituksen tarkkailijoille public: void changestate(); }; void ConcreteSubject::changeState(){ // Muutos olion tilassa notify(); } Suunnittelumallit Observer ja State 10
11 VIII.2.3 Periaatteellinen C++-toteutus (4) // Varsinainen tarkkailijaluokka, perii myös jonkin // toiminnallisen luokan class ConcreteObserver : public SomeClass, public Observer { }; // Luokan koodia // Metodi, joka suoritetaan, kun saadaan ilmoitus public: void update(subject *changedsubject); void ConcreteObserver::Update(Subject *changedsubject){ // Kysytään parametriolion tila ja // tehdään tarvittavat operaatiot } Suunnittelumallit Observer ja State 11
12 VIII.2.4 Etuja ja haittoja Euja Kohteita ja tarkkailijoita voi muokata toisistaan riippumatta Tarkkailijoita voidaan lisätä tekemättä muutoksia kohteisiin tai muihin tarkkailijoihin Kohde tietää tarkkailijoista vain, että ne toteuttavat yhteisen yksinkertaisen rajapinnan Haittoja Ilmoittaminen ei kohdennettu (broadcast) Tarkkailijat eivät tiedä kohteen muuttamisen seurauksia Tarkkailijat eivät tunne kohteen muutoksen syytä Suunnittelumallit Observer ja State 12
13 VIII.2.5 Mallin toteuttamisesta Yleensä kohde säilyttää tarkkailijat jonkinlaisessa listassa Jos kohteita paljon ja tarkkailijoita vähän, voi käyttää assosiatiivista hakua (hashtaulukko) Kohde voi välittää viitteen itseensä ilmoituksessa Tarkkailija voi kysyä kohteen tilaa Notify-kutsun voi jättää kohteen asiakkaiden tehtäväksi Tehokkaampi mutta epävarmempi Kohteiden poisto suunniteltava huolellisesti Tarkkailijoille voi jäädä roikkuvia osoittimia Moniperintäisissä kielissä toteuttaminen helpompaa Suunnittelumallit Observer ja State 13
14 VIII.2.6 Observer-tuki Javassa Java tukee suoraan mallia: perusluokat luokkakirjastossa Observer-rajapinta yksi metodi: void update(observable o, Object arg) Kohteelle Observable-luokka, metodeja public void addobserver(observer o) public void deleteobserver(observer o) public void notifyobservers() public void notifyobservers(object arg) protected void setchanged() Kutsuttava ennen ilmoittamista protected void clearchanged() Kutsuttava ilmoittamisen jälkeen Suunnittelumallit Observer ja State 14
15 VIII.3 State Ongelma: Tehtävä luokka, jonka käyttäytyminen muuttuu attribuuttien arvojoukon mukaan Johtaa usein koodissa mutkikkaisiin valintarakenteisiin Ratkaisu: Eristetään olion tila erityisiin tilaolioihin, joista valitaan yksi käytettäväksi kussakin tilanteessa State-suunnittelumalli Esimerkki: Yhtä asiakasta kerrallaan palveleva palvelin. Tilat (jokaiselle voidaan tehdä oma tilaolio) Kuuntelee pyyntöjä (Listening) Suorittaa pyyntöä (Serving) On suljettu (Closed) Suunnittelumallit Observer ja State 15
16 Esimerkin tilakaavio Palvelinoliolla kolme osaoliota, jotka vastaavat yo. tiloja Yksi kerrallaan aktiivinen Palvelinluokassa kolme viestiä (metodia), jotka vaihtavat aktiivista tilaa yo. kaavion mukaan Suunnittelumallit Observer ja State 16
17 VIII.3.1 Tarkoitus ja sovellettavuus Tarkoitus Luoda olio, jonka käyttäytyminen muuttuu sen sisäisen tilan mukaan niin, että olio näyttää vaihtavan luokkaansa Sovellettavuus Olion tilasta riippuvaa käyttäytymistä on muutettava ajon aikaisesti Luokan koodissa hankalia valintarakenteita, joissa ohjataan toimintaa sen tilan mukaan. Voidaan poistaa siirtämällä toimintaa sopiviin osaolioihin Suunnittelumallit Observer ja State 17
18 VIII.3.2 Luokkarakenne Määrittelee asiakkaihin päin näkyvän rajapinnan Tilaluokkien (abstrakti) kantaluokka Luokat, jotka toteuttavat kaikki mahdolliset tilat State-mallin luokkarakenne. Vrt. Gamma, Helm, Johnson, Vlissides: Design Patterns: Elements of Reusable Object-Oriented Software, Addison-Wesley
19 VIII.3.3 Etuja ja haittoja Etuja Uusia tiloja helppo lisätä tekemällä uusia tilaluokkia Tilamuutokset helppo havaita koodista -> koodista luettavampaa Tilaoliot voidaan jakaa, jos niillä itsellään ei ole sisäistä tilaa Haittoja Context-luokan toiminta hajautuu useampaan luokkaan Suunnittelumallit Observer ja State 19
20 VIII.3.4 Toteuttamisesta Kuka vaihtaa tilaa? Context-olio itse Keskitetty, kankea Tilaoliot Joustavampi Tilanmuutoslogiikan vaihtaminen helpompaa Uusien tilojen lisääminen helpompaa Context-olioon tehtävä ylimääräinen rajapinta tilan muuttamiseksi Tilaolioiden kytkentä voi kasvaa Suunnittelumallit Observer ja State 20
21 VIII.3.4 Toteuttamisesta (2) Millä tavoin tilaoliot luodaan? Kaikki kerralla ja pidetään ohjelman suorituksen ajan Tilojen vaihtuessa tiuhaan parempi vaihtoehto Luodaan tarvittaessa ja hävitetään kun ei enää tarvita Kannattaa, kun tilaoliot suuria ja tilanvaihtoja harvoin Voidaan korvata taulukkoja käyttämällä Keskittyy enemmän tilasiirtymiin, State tilakohtaiseen käyttäytymiseen Suunnittelumallit Observer ja State 21
Olio-ohjelmointi Suunnittelumallit Observer ja State. 1. Observer (Tarkkailija)
Olio-ohjelmointi Suunnittelumallit Observer ja State Käyttäytymismallien päätarkoitus on algoritmien toteuttaminen ja vastuiden jakaminen olioiden välillä. Näin ollen käyttäytymismallit kuvaavat luokkien
Lisätiedot812347A 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ätiedot812347A 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ätiedotOlio-ohjelmointi Suunnittelumallit Proxy, Factory Method, Prototype ja Singleton. 1. Proxy (Edustaja)
Olio-ohjelmointi Suunnittelumallit Proxy, Factory Method, Prototype ja Singleton Tässä osassa tutustutaan yhteen rakennemalliin (Proxy) ja kolmeen luontimalliin (Factory Method, ) teoksen [Gam] pohjalta.
LisätiedotOlio-ohjelmointi Johdanto suunnittelumalleihin. 1. Yleistä
Olio-ohjelmointi Johdanto suunnittelumalleihin Hyvin toimivan olio-ohjelmointiparadigmaa noudattavan ohjelman suunnitteleminen ei ole helppo tehtävä. On löydettävä sopiva luokkarakenne kuvaamaan ratkaistavaa
LisätiedotSuunnittelumalleja, MVC. Juha Järvensivu 2008
Suunnittelumalleja, MVC Juha Järvensivu juha.jarvensivu@tut.fi 2008 Sisältö Tarkkailija Strategia Rekursiokooste Tehdas-metodi MVC Tarkkailija suunnittelumalli Tarkkailijamalli (Observer) Määrittelee olioiden
LisätiedotGraafisen käyttöliittymän ohjelmointi Syksy 2013
TIE-11300 Tietotekniikan vaihtuva-alainen kurssi Graafisen käyttöliittymän ohjelmointi Syksy 2013 Luento 8 Suunnittelumallit käyttöliittymäohjelmoinnissa Juha-Matti Vanhatupa Yleistä Suunnittelumalli on
Lisätiedot812341A 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
LisätiedotOlio-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ätiedotOhjelmistotekniikan menetelmät, UML
582101 - Ohjelmistotekniikan menetelmät, UML 1 Sisältö DFD- ja sidosryhmäkaavioiden kertaus Oliomallinnus UML:än kaaviotyypit 2 Tietovuokaaviot Data flow diagrams, DFD Historiallisesti käytetyin kuvaustekniikka
LisätiedotTIE-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ätiedotUML -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
LisätiedotRajapinta (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ätiedotOliosuunnittelu. 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ätiedotTIE-20200 Ohjelmistojen suunnittelu
TIE-20200 Ohjelmistojen suunnittelu Luento 1: Virtuaalifunktiot, Template method 1 Yleistä asiaa Muistakaa harkkatyöilmoittautuminen 23 ryhmää (mm. lihansyöjäkirahvi), vajaita ryhmiäkin on 44 henkeä vielä
LisätiedotOhjelmistojen mallintaminen Unified Modeling Language (UML)
582104 Ohjelmistojen mallintaminen Unified Modeling Language (UML) 1 Olioperustaisuus Olio toimii mallinnuksen perusyksikkönä eri abstraktiotasoilla Järjestelmän rajaus, suunnittelu, ohjelmointi, suoritus..
LisätiedotT Henkilökohtainen harjoitus: FASTAXON
T-76.115 Henkilökohtainen harjoitus: FASTAXON Suunnittelumallit Group: Muuntaja Pentti Vänskä 52572W 2 1. Toteutus Tämä henkilökohtainen harjoitustyö käsitteli suunnittelumallien (Design Patterns) käyttöä
Lisätiedot812347A 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ätiedotT SEPA - päiväkirja: Design Patterns. ETL työkalu
T-76.115 SEPA - päiväkirja: Design Patterns ETL työkalu Versio Päivämäärä Tekijä Kuvaus 1.0 25.10.2004 Jani Honkanen PP-vaiheen jälkeinen versio 1,1 26.11.2004 Mika Suvanto I1- vaiheen kokemuksia lisätty
LisätiedotJAVA-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ätiedot812347A Olio-ohjelmointi, 2015 syksy 2. vsk. VI Johdanto suunnittelumalleihin
2015 syksy 2. vsk VI Johdanto suunnittelumalleihin Sisältö 1. Taustaa 2. Model View - Controller 3. Suunnittelumallin kuvaamisesta 4. Tavoitteita 5. Suunnitteluongelmien suhde malleihin 6. Suunnittelumallien
LisätiedotSisä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ätiedotSuunnittelumallien käyttö ohjelmistosuunnittelussa
Suunnittelumallien käyttö ohjelmistosuunnittelussa Mika Rantakeisu Rovaniemen ammattikorkeakoulu Avoin ammattikorkeakoulu mika.rantakeisu@edu.ramk.fi Tiivistelmä Tämä on selvitys suunnittelumallien käytöstä
LisätiedotMikä yhteyssuhde on?
1 Yhteyssuhde Mikä yhteyssuhde on? Yhteyssuhde Javalla Konstruktorit set-ja get-metodit tostring-metodi Pääohjelma 1 Mikä yhteyssuhde on? Tili - : String - : double * 1 Asiakas - hetu: String - : String
LisätiedotJavan 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ä).
Lisätiedot18. 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ätiedotUML ja luokkien väliset suhteet
UML ja luokkien väliset suhteet -Luokan kuvaaminen UML-tekniikalla -Yhteyssuhde ja koostumussuhde 1 Luokan kuvaaminen UML-tekniikalla : Luokka - attribuutti1 : tietotyyppi # attribuutti2 : tietotyyppi
LisätiedotTIE-20200 Ohjelmistojen suunnittelu
TIE-20200 Ohjelmistojen suunnittelu Luento 1: Virtuaalifunktiot, Template method 1 Seuraavaksi tarjolla: Otekn-asiaa vähän pintaa syvemmältä Virtuaalifunktiot ja erikoistaminen, olioiden kopiointi ja elinaika
Lisätiedot812341A 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ää
LisätiedotOpintojakso 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
LisätiedotOliosuunnitteluesimerkki: 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ätiedotUML- mallinnus: Tilakaavio
UML- mallinnus: Tilakaavio Karkea kuvaus UML- kaavioiden käytöstä ohjelmistonkehityksen eri vaiheissa ja tehtävissä. Mallinnus tilakaavioilla Tilakaaviolla kuvataan yhden luokan olioiden tilan muuttumista
LisätiedotHirviö. Design Patterns
Hirviö SEPA-päiväkirja Design Patterns Anssi Kalliolahti Liia Sarjakoski 8. helmikuuta 2005 1 Sisältö 1 Johdanto 3 2 Menetelmän käytäntöön soveltaminen 3 3 Kokemuksia ja muutoksia 3 3.1 PP..........................................
LisätiedotRajapinnasta 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
LisätiedotOhjelmistotekniikan menetelmät, suunnittelumalleja
582101 - Ohjelmistotekniikan menetelmät, suunnittelumalleja 1 Suunnittelumallit (design patterns) Kuvaus sellaisesta luokkarakenteesta & olioiden vuorovaikutuksesta, joka ratkaisee tietyn yleisen ongelman
LisätiedotTenttikysymykset. + 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ä
LisätiedotKompositio. Mikä komposition on? Kompositio vs. yhteyssuhde Kompositio Javalla Konstruktorit set-ja get-metodit tostring-metodi Pääohjelma
1 Kompositio Mikä komposition on? Kompositio vs. yhteyssuhde Kompositio Javalla Konstruktorit set-ja get-metodit tostring-metodi Pääohjelma 1 Mikä kompositio on? Tili - : String - : double 1 1 Kayttoraja
LisätiedotSisä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.
LisätiedotInteraktiivisten järjestelmien arkkitehtuuriratkaisu, jolla käyttöliittymä erotetaan sovelluslogiikasta.
Malli-näkym kymä-ohjain arkkitehtuurit (Model-View View-Controller, MVC) Interaktiivisten järjestelmien arkkitehtuuriratkaisu, jolla käyttöliittymä erotetaan sovelluslogiikasta. Lähtökohdat: Sovelluksen
LisätiedotSisä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.
LisätiedotOhjelmistojen mallintaminen, sekvenssikaaviot
582104 - Ohjelmistojen mallintaminen, sekvenssikaaviot 1 Vuorovaikutussuunnittelu Oliojärjestelmän toiminta perustuu olioiden vuorovaikutukseen ja yhteistyöhön Olioiden yhteistyö toteutuu operaatioiden
LisätiedotOhjelmistojen mallinnus Ohjelmistoarkkitehtuuri Harri Laine 1
Ohjelmistojen mallinnus Ohjelmistoarkkitehtuuri 2 28.11.2008 Harri Laine 1 Ohjelmistoarkkitehtuuri Rajapinta UML:ssä piirteiden (attribuuttien ja operaatioiden) kokoelma, josta ei voi suoraan luoda ilmentymiä
LisätiedotOhjelmistoarkkitehtuurit. Syksy 2010
Ohjelmistoarkkitehtuurit Syksy 2010 Kai Koskimies Tervetuloa Oulun yliopisto, Tampereen yliopisto, Turun yliopisto, Tampereen teknillinen yliopisto, Vaasan yliopisto Kurssin tavoitteet Arkkitehtuurin roolin
LisätiedotOhjelmistojen mallintaminen, suunnittelumalleja
582104 Ohjelmistojen mallintaminen, suunnittelumalleja 1 Suunnittelumallit (design patterns) Kuvaus sellaisesta luokkarakenteesta & olioiden vuorovaikutuksesta, joka ratkaisee tietyn yleisen ongelman tiettyjen
LisätiedotOhjelmistotuotanto. Luento 9 23.4.2012
Ohjelmistotuotanto Luento 9 23.4.2012 Lisää suunnittelumalleja Olion rikastaminen dekoraattorilla Joskus eteen tulee tarve lisätä olioon jotain ekstraominaisuuksia, pitäen kuitenkin olio sellaisena että
LisätiedotOhjelmistoarkkitehtuurit. Kevät
Ohjelmistoarkkitehtuurit Kevät 2012-2013 Johannes Koskinen http://www.cs.tut.fi/~ohar/ Tervetuloa Oulun yliopisto, Tampereen yliopisto, Turun yliopisto, Tampereen teknillinen yliopisto 2 Kurssin tavoitteet
LisätiedotKooste. Esim. Ympyrän keskipiste voidaan ajatella ympyrän osaksi.
17. Kooste 17.1 Kooste Kooste (aggregation) on luokkien A ja B välinen suhde, joka tarkoittaa A on B:n osa tai A kuuluu B:hen. Koostesuhteessa olevat luokat eivät yleensä ole periytymissuhteessa. Kooste
LisätiedotOhjelmistotuotanto, suunnittelu Syksy Suunnittelu. Suunnittelun tulos. Suunnitteluprosessin työvaiheet. Suunnitteluprosessi.
6. Suunnittelu Suunnittelun tulos Vaatimusanalyysin jälkeen seuraava työvaihe on suunnittelu. Siinä vaatimusanalyysin korkean abstraktiotason malleja käyttämällä luodaan alempien abstraktiotasojen malleja.
LisätiedotOhjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 1
Ohjelmistoarkkitehtuurit Syksy 2009 Kai Koskimies Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 1 Tervetuloa Kuopion yliopisto, Oulun yliopisto (Kajaani), Tampereen yliopisto, Turun yliopisto,
LisätiedotTenttikysymykset. + 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ä
LisätiedotHarjoitus 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
LisätiedotOhjelmistotuotanto, s
Ohjelmistotuotanto Suunnittelu 3 Kuvion piirtotavan erottaminen omaksi piirtoalgoritmin toteuttavaksi olioksi on esimerkki (strategy) suunnittelutason ratkaisumallista, joka lisää joustavuutta ja muunnettavuutta
LisätiedotKertaus: 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
LisätiedotSisä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ätiedotUML -mallinnus TILAKAAVIO
UML -mallinnus TILAKAAVIO SISÄLLYS 3. Tilakaavio 3.1 Tilakaavion alku- ja lopputilat 3.2 Tilan nimi, muuttujat ja toiminnot 3.3 Tilasiirtymä 3.4 Tilasiirtymän vai tilan toiminnot 3.5 Tilasiirtymän tapahtumat
LisätiedotA) on käytännöllinen ohjelmointitekniikka. = laajennetaan aikaisemmin tehtyjä luokkia (uudelleenkäytettävyys)
1(37) PERIYTYMINEN (inheritance) YLILUOKKA (superclass) ALILUOKKA (subclass) A) on käytännöllinen ohjelmointitekniikka = laajennetaan aikaisemmin tehtyjä luokkia (uudelleenkäytettävyys) B) on käsitteiden
LisätiedotUML-kielen formalisointi Object-Z:lla
UML-kielen formalisointi Object-Z:lla Kalvot ja seminaarityö WWW:ssä: http://users.jyu.fi/~minurmin/opiskelu/form/ UML UML == Unified Modelling Language. OMG:n standardoima kieli ohjelmistojärjestelmien,
LisätiedotT740103 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ätiedotOhjelmistojen 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ätiedotOsio 4: Graafinen käyttöliittymä
Javan Swing-tekniikan perusteet: Muistutus: Tarvitset seuraavia komponentteja harjoituksissa: otsikkoteksti (label) muokkausruutu (text field) komentopainike (button) yhdistelmäruutu (combo box) paneeli
LisätiedotSisä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:
Lisätiedot6. Suunnittelu. Suunnittelun tulos
6. Suunnittelu Vaatimusanalyysin jälkeen seuraava työvaihe on suunnittelu. Siinä vaatimusanalyysin korkean abstraktiotason malleja käyttämällä luodaan alempien abstraktiotasojen malleja. Tavoitteena on
LisätiedotSuunnittelun tulos. 6. Suunnittelu. Suunnitteluprosessin työvaiheet. Suunnitteluprosessi. 6.1 Arkkitehtuurisuunnittelu.
6. Suunnittelu Suunnittelun tulos Vaatimusanalyysin jälkeen seuraava työvaihe on suunnittelu. Siinä vaatimusanalyysin korkean abstraktiotason malleja käyttämällä luodaan alempien abstraktiotasojen malleja.
LisätiedotT SEPA - päiväkirja: Design Patterns. ETL työkalu
T-76.115 SEPA - päiväkirja: Design Patterns ETL työkalu Versio Päivämäärä Tekijä Kuvaus 1.0 25.10.2004 Jani Honkanen PP-vaiheen jälkeinen versio 1,1 26.11.2004 Mika Suvanto I1- vaiheen kokemuksia lisätty
Lisätiedot815338A 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ätiedot5. Suunnittelumallit. TTY Ohjelmistotekniikka
5. Suunnittelumallit Suunnittelumallin käsite Suunnittelumallien hyötyjä Suunnittelumallien kuvaaminen Antisuunnittelumallit Esimerkki: Rekursiokooste Suunnittelumallit ja kehykset Suunnittelumallit ja
LisätiedotAnalyysi, 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ätiedotSuunnittelumallit. OULUN YLIOPISTO Tietojenkäsittelytieteiden laitos Oliosuuntautunut analyysi ja -suunnittelu 27. joulukuuta 2003
Suunnittelumallit OULUN YLIOPISTO Tietojenkäsittelytieteiden laitos Oliosuuntautunut analyysi ja -suunnittelu 27. joulukuuta 2003 Mikael Kujanpää mahead@ee.oulu.fi LuTK / TOL -03 Tiivistelmä Suunnittelumallit
Lisätiedotprivate TreeMap<String, Opiskelija> nimella; private TreeMap<String, Opiskelija> numerolla;
Tietorakenteet, laskuharjoitus 7, ratkaisuja 1. Opiskelijarekisteri-luokka saadaan toteutetuksi käyttämällä kahta tasapainotettua binäärihakupuuta. Toisen binäärihakupuun avaimina pidetään opiskelijoiden
LisätiedotOlio-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ätiedotA274101 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ätiedotOhjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 1
3. Komponentit ja rajapinnat 3.1 Komponenttien idea: ohjelmistotuotannon rationalisointi 3.2 Mikä on ohjelmistokomponentti? 3.3 Komponentit ohjelmistoyksikköinä 3.4 Rajapinnat 3.6 Komponenttien räätälöinti
LisätiedotOhjelmistoarkkitehtuurit kevät
Ohjelmistoarkkitehtuurit Kevät 2011-2012 Johannes Koskinen http://www.cs.tut.fi/~ohar/ 5. Suunnittelumallit Suunnittelumallin käsite Suunnittelumallien hyötyjä Suunnittelumallien kuvaaminen Esimerkki:
Lisätiedot2. 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ätiedot9. 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.
Lisätiedot15. 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:
LisätiedotSuunnittelumallit (design patterns)
Suunnittelumallit (design patterns) Ohjelmoinnissa Rakennusarkkitehtuurissa Käyttöliittymäsuunnittelussa Sear ch Ohjelmointi Suunnittelumallit Usein toistuvia ohjelmointiongelmia ja niiden ratkaisuja:
LisätiedotMuusta kuin vesisioista
Muusta kuin vesisioista Janne Käki 8.12.2006 Metodin kuormittaminen (overloading) Samannimisestä metodista on määritelty samassa luokassa (tai samassa yli- ja aliluokkien jatkumossa) useita versioita,
LisätiedotOhjelmistojen suunnittelu
Ohjelmistojen suunnittelu 581259 Ohjelmistotuotanto 154 Ohjelmistojen suunnittelu Software design is a creative activity in which you identify software components and their relationships, based on a customer
LisätiedotSisä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ätiedotSisä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ätiedotOhjelmointi 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
LisätiedotMuutamia 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ä
LisätiedotOlio-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ätiedot1 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ätiedotKaksiloppuinen 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ätiedotAnalyysi, 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ätiedot5. Suunnittelumallit. TTY Ohjelmistotekniikka
5. Suunnittelumallit Suunnittelumallin käsite Suunnittelumallien hyötyjä Suunnittelumallien kuvaaminen Antisuunnittelumallit Esimerkki: Rekursiokooste Suunnittelumallit ja kehykset Suunnittelumallit ja
LisätiedotSisä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
Lisätiedoton 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ätiedotOpintojakso 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ätiedothttp://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ätiedotSisä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ätiedotOpintojakso 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
Lisätiedot4. Luokan testaus ja käyttö olion kautta 4.1
4. Luokan testaus ja käyttö olion kautta 4.1 Olion luominen luokasta Java-kielessä olio määritellään joko luokan edustajaksi tai taulukoksi. Olio on joukko keskusmuistissa olevia tietoja. Oliota käsitellään
LisätiedotOlio-ohjelmointi Johdanto olio-ohjelmointiin
Olio-ohjelmointi Johdanto olio-ohjelmointiin Ohjelmistoa kehitettäessä voidaan tunnistaa ainakin kaksi abstraktiota: prosessiabstraktio ja dataabstraktio. Prosessiabstraktio huomattiin jo varhain, koska
LisätiedotOpintojakso 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
LisätiedotOhjelmistotekniikan menetelmät, kesä 2008
582101 - Ohjelmistotekniikan menetelmät, kesä 2008 1 Ohjelmistotekniikan menetelmät Methods for Software Engineering Perusopintojen pakollinen opintojakso, 4 op Esitietoina edellytetään oliokäsitteistön
LisätiedotJava 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,
Lisätiedot812341A Olio-ohjelmointi, I Johdanto
812341A Olio-ohjelmointi, 2016 I Johdanto Sisältö 1. Abstraktiosta 2. Olio-ohjelmoinnin historiaa 3. Olioparadigmasta 4. Peruskäsitteiden kertausta 812341A Olio-ohjelmointi, Johdanto 2 1 Abstraktiosta
Lisätiedot