Kertaus on opintojen äiti: OSI malli. Oliokeskeiset välikerrokset. Transmission Control Protocol (TCP) Kuljetus eli transport kerros
|
|
- Esko Mikkonen
- 8 vuotta sitten
- Katselukertoja:
Transkriptio
1 Kertaus on opintojen äiti: OSI malli Oliokeskeiset välikerrokset Application Presentation Session Transport Network Data link Physical Kuljetus eli transport kerros Kerros 4 OSI-mallissa. Tiedon siirto verkossa. Internetissä kaksi yleistä protokollaa, TCP ja UDP. Tarkalleen ottaen TCP/IPpino ei noudata OSImallia, mutta kuljetuskerroksen tehtävien osalta melko hyvin. Application Presentation Session Transport Network Data link Physical Transmission Control Protocol (TCP) Kaksisuuntainen tavuvirta hajautettujen komponenttien välillä. Esim. UNIXin rsh, rcp ja rlogin toimivat TCP:n päällä. Luotettava mutta hieman hidas. Puskurointi molemmissa päissä -> laskentanopeudet voivat olla erilaiset.
2 Pyynnöt ja vastaukset TCP:llä User Datagram Protocol (UDP) Asiakas Application Palvelin Application Tavuista koostuvien datagrammien välittäminen komponentilta toiselle. Datagrammissa on vastaanottajan osoite. Epäluotettava mutta hyvin nopea protokolla. Presentation Presentation Viestin pituus rajoitettu. Vastaanottajan pää puskuroitu. Session Pyynnöt Session Esim. UNIXin rwho-komento on UDP-pohjainen. Transport Syötevirta Tulosvirta Transport Vastaukset Pyynnöt ja vastaukset UDP:llä Sovellus suoraan kuljetuskerroksen päälle Asiakas Application Presentation Session Transport Palvelin Application Presentation Pyyntödatagrammit Session Transport Vastausdatagrammit Pyyntöjen parametrit muunnettava manuaalisesti tavujonoiksi. Tiedon heterogeenisyys ratkaistava manuaalisesti. Komponentit tunnistettava manuaalisesti. Komponentit aktivoitava manuaalisesti. Ei takeita tyyppiturvallisuudesta. Hajautettujen komponenttien interaktiot synkronoitava manuaalisesti. Ei Quality of Service-takeita (QoS).
3 Välikerroksen rooli 2 9 Sovelluksen ja kuljetuskerroksen välissä, toteuttaa istunto- (session) ja esitystapakerrokset (presentation). Tekee hajautuksen tuntumattomaksi. Ratkaisee heterogeenisyyden laitteistotasolla, käyttöjärjestelmätasolla, verkkojen välillä ja ohjelmointikielten välillä. Kehitys- ja ajoympäristö hajautetuille komponenteille. Metodikutsu vs. etämetodikutsu Caller Kutsuja Kutsuttava Kutsuja Tynkä Kutsuttava Tynkä Kuljetuskerros (esim. TCP tai UDP) 2 10 tynkä on englanniksi stub Tynkä (engl. stub) Tyngän koodi generoidaan automaattisesti rajapintamäärittelystä. Asiakastynkä edustaa palvelinta asiakkaalle, palvelintynkä edustaa asiakasta palvelimelle. Tynkä toteuttaa proxy-patternin Palvelintynkää kutsutaan joskus rangaksi (engl. skeleton). Tyyppiturvallisuus. Tyngät myös huolehtivat synkronoitumisesta kutsussa Synkronoituminen Tavoitteena samanlainen synkronoituminen kuin paikallisessa metodikutsussa (kutsuja odottaa vastausta). Tyngät toteuttavat: Asiakastynkä lähettää pyynnön ja odottaa vastausta palvelimelta. Palvelintynkä odottaa pyyntöjä ja kutsuu varsinaista palvelinoliota pyynnön saadessaan. 2 12
4 2 13 Yksinkertainen tynkä ranka toteutus Tehdään yksinkertaisen etäolion tynkä ja ranka itse Javalla. Etäoliolle määritellään seuraavanlainen rajapinta: public interface Person { public int getage() throws Throwable; public String getname() throws Throwable; Palvelinolion toteutus public class PersonServer implements Person { int age; String name; public PersonServer(String name, int age) { this.age = age; this.name = name; public int getage() { return age; public String getname() { return name; 2 14 Asiakkaan tynkä import java.io.objectoutputstream; import java.io.objectinputstream; import java.net.socket; public class Person_Stub implements Person { Socket socket; public Person_Stub() throws Throwable { socket = new Socket(" ", 9000); public int getage() throws Throwable { ObjectOutputStream outstream = new ObjectOutputStream(socket.getOutputStream()); outstream.writeobject("age"); outstream.flush(); ObjectInputStream instream = new ObjectInputStream(socket.getInputStream()); return instream.readint(); public String getname() throws Throwable { ObjectOutputStream outstream = new ObjectOutputStream(socket.getOutputStream()); outstream.writeobject("name"); outstream.flush(); ObjectInputStream instream = new ObjectInputStream(socket.getInputStream()); return (String)inStream.readObject(); 2 15 Palvelimen ranka import java.io.objectoutputstream; import java.io.objectinputstream; import java.net.socket; import java.net.serversocket; public class Person_Skeleton extends Thread { PersonServer myserver; public Person_Skeleton(PersonServer server) { this.myserver = server; ; 2 16 public void run() { try { ServerSocket serversock = new ServerSocket(9000); Socket sock = serversock.accept(); while (soc!= null) { ObjectInputStream istream = new ObjectInputStream(soc.getInputStream()); String method = (String)iStream.readObject(); if (method.equals("age")) { int age = myserver.getage(); ObjectOutputStream ostream = new ObjectOutputStream(sock.getOutputStream()); ostream.writeint(age); ostream.flush();
5 Palvelimen ranka (jatkoa) else if (method.equals("name")) { String name = myserver.getname(); ObjectOutputStream ostream = new ObjectOutputStream( sock.getoutputstream()); ostream.writeobject(name); ostream.flush(); catch (Throwable t) { t.printstacktrace(); System.exit(0); public static void main(string args[]) { PersonServer person = new PersonServer("Eufrosyne", 57); Person_Skeleton skel = new Person_Skeleton(person); skel.start(); 2 17 Asiakasohjelma public class PersonClient { public static void main(string [] args) { try { Person person = new Person_Stub(); int age = person.getage(); String name = person.getname(); System.out.println(name + " on " + age + "-vuotias"); catch (Throwable t) { t.printstacktrace(); 2 18 Yksinkertaisen tynkä ranka toteutuksen ongelmia Käsityötä Palvelimen osoite on langoitettu asiakastyngän koodiin Vain yksi henkilöpalvelin Jos palvelimia voisikin olla useita: Mitä jos haluttaisiin lisätä henkilölle vanhemmat: miten henkilö voi viitata toisiin henkilöihin? Miten erotettaisiin samalla koneella oleville eri henkilöpalvelimille tulevat kutsut? Entäpä jos asiakas ja palvelin olisivat erilaisissa laitteistoympäristöissä? Entä jos asiakas ja palvelin pitäisi tehdä eri ohjelmointikielillä? 2 19 Kutsumeklari (Object Request Broker, ORB) Kutsumeklari (lyhyesti ORB) on oliokeskeisen hajautetun järjestelmän ydin Mahdollistaa edellisen kalvon ongelmien ratkaisemisen ORBin avulla hajautetut oliot voivat viitata toisiinsa ja kutsua toistensa palveluita ORB mahdollistaa myös monet muut välikerroksen toiminnot Kaikissa kehittyneissä oliokeskeisissä välikerroksissa on ORB, kutsuttiin sitä sillä nimellä tai jollain muulla 2 20
6 Olioihin viittaaminen Edellä olevassa yksinkertaisessa toteutuksessa olio oli tietyssä portissa tietyllä koneella RPC:ssä käytetään portmap-demonia, joka kuvaa palveluiden nimet portteihin Jos sitä käytettäisiin oliojärjestelmässä, joka oliolla pitäisi olla yksikäsitteinen nimi Oliokeskeisissä välikerroksissa käytetään olioviitteitä ORB huolehtii olioviitteistä Asiakkaat ja palvelimet eivät ymmärrä olioviitteiden toteutuksesta mitään 2 21 Olioihin viittaaminen (jatkoa) Asiakas identifioi kutsuttavan olion olioviitteellä Asiakkaan ORB tietää viitteen perusteella, mille koneelle kutsu on matkalla Asiakkaan ORB välittää viitteen (tai osan siitä) kutsun mukana palvelimen ORBille Palvelimen ORB osaa viitteen perusteella ohjata kutsun oikealle oliolle Välissä voi olla vielä olioadapteri Tarvittaessa olio voidaan aktivoida 2 22 Rajapintamäärittelykieli (Interface Definition Language, IDL) 2 23 IDL esimerkki 2 24 Kaikissa oliokeskeisissä välikerroksissa on rajapintamäärittelykieli (IDL). (Java/RMI:ssä tämä kieli on Java.) Perus-RPC:n ominaisuuksien lisäksi parametreina voidaan välittää oliotyyppejä, voidaan nostaa poikkeuksia ja perinnän käsite on tuettu. IDL-kääntäjä tuottaa rajapintakuvauksesta tyngät ja rangat, jotka toteuttavat istunto- ja esitystapakerrokset. interface Document : Object { typedef struct _Date { short day; short month; short year; Date; attribute string name; attribute string content; ; interface DocumentStore : Object { exception NameNotFound{; short save (in Document d); Document load(in string name) raises(namenotfound); ;
7 Yksinkertaistettu kehitysprosessi Suunnittelu Rajapintojen määrittely 2 25 Pääsytuntumattomuus Asiakastyngällä on samat operaatiot kuin palvelinoliolla. Näinollen asiakas voi kutsua paikallisesti asiastynkää tai 2 26 Palvelintynkien generointi Palvelimen toteutus Palvelimen rekisteröinti Asiakastynkien generointi Asiakkaan toteutus kutsua paikallisesti suoraan palvelinoliota kutsua muuttamatta. Välikerros voi optimoida kommunikointia olemalla käyttämättä tynkää, jos asiakas ja palvelin ovat samalla koneella Paikkatuntumattomuus Palvelimen rekisteröinti Olion identiteetti Olioviitteet Asiakkaat tekevät pyyntöjä palvelinolioille, jotka tunnistetaan olioviitteillä. Palvelimen fyysistä sijaintia ei tarvitse tietää. Miten olioviite saadaan? Olioadapterin pitää pystyä paikallistamaan ja käynnistämään palvelinoliot. Palvelinoliot rekisteröidään jonkinlaiseen talletuspaikkaan. Rekisteröinti on välikerros- ja tuotekohtaista. Olioadapteri etsii oliota talletuspaikasta ennen aktivointia.
8 2 29 Sisältö 2 30 CORBA: yleisesittely CORBA CORBAn oliomalli CORBA IDL CORBA-arkkitehtuuri Object Management Group (OMG) Yleishyödyllinen yhteisö, jonka päämaja on Yhdysvalloissa. Perustettu Yli 800 jäsentä (v. 2000). Tehtävänä kehittää ja tehdä tunnetuiksi oliokeskeisiä teollisuusstandardeja sovellusten yhteensovittamiseksi, esim. CORBA ODMG-93 UML CORBAn tavoitteet Hajautetut ja heterogeeniset etäkutsut käyttäjille ja ohjelmoijille tuntumattomasti. Uusien ja legacy-komponenttien integrointi. Avoin, ilmainen standardi. Laaja teollisuuden konsensus.
9 CORBA arkkitehtuuri Oliomalli ja rajapintamäärittely Application Objects Domain Interfaces Object Request Broker CORBAservices CORBA facilities Oliot Tyypit Moduulit Attribuutit Operaatiot Pyynnöt Poikkeukset Alityypit OMG IDL Kieli, jolla voi ilmaista CORBAn oliomallin kaikki käsitteet. OMG/IDL on ohjelmointikieliriippumaton. perustuu paljolti C++:aan. ei ole ohjelmointikieli, vaan puhtaasti deklaratiivinen. Sidonnat moniin eri ohjelmointikieliin. CORBAn oliomalli: oliot Oliolla on tunniste, joka on yksikäsitteinen samassa ORBissa. Olioon voi olla monia viitteitä. Viitteet tukevat paikkatuntumattomuutta. Viitteet ovat säilyviä (persistent).
10 CORBAn oliomalli: tyypit CORBA: moduulit Rakennettuja tyyppejä Oliotyyppi typedef struct Osoite { string katuosoite; string postinumero; string postitoimipaikka; ; typedef sequence<osoite> Osoitelista; interface Postitoimisto {... ; Atomisia tyyppejä module People { typedef struct Address { string flat_number; string street; string postcode; string city; ;... ; People::Address CORBA: attribuutit ja operaatiot CORBA: poikkeukset interface Tyontekija; typedef sequence<tyontekija> Tyontekijalista; interface Ryhma { readonly attribute string nimi; attribute Tyontekija paallikko; attribute Tyontekijalista jasenet; void maksapalkat(in Paivays p);... ; Yleiset poikkeukset (esim. verkko rikki, epäkelpo olioviite, muisti loppunut) Käyttäjän määrittelemät poikkeukset exception KassaTyhja { double vaje; ; interface Ryhma {... void maksapalkat(in Paivays p) raises(kassatyhja); ;
11 CORBA: perintä ja alityypit CORBA: arkkitehtuuri interface Yhteiso { readonly attribute string nimi; ; Asiakas Palvelinolion toteutus interface Yritys : Yhteiso { readonly attribute string lytunnus;... ; Dyn. kutsurajap. Asiakas tynkä ORB rajapinta ORBin ydin Toteutusranka Olio adapteri Yksi standardoitu rajapinta Yksi rajapinta / oliotyyppi Yksi rajapinta / olioadapteri ORB kohtainen rajapinta Yksinkertainen CORBA esimerkki Syntyvät tiedostot Tehdään yksinkertainen kertoman laskeva palvelin CORBAlla ja C++:lla Kirjoitetaan tiedostoon kertoma.idl seuraava rajapinta: interface kertoma { long laske(in long n); ; Orbixin idl-kääntäjää käytetään seuraavasti: idl -base -poa kertoma.idl kertoma.hh: asiakastyngän otsikkotiedosto, tarvitaan myös palvelimessa kertomac.cxx: asiakastyngän toteutus kertomas.hh: palvelinrangan otsikkotiedosto kertomas.cxx: palvelinrangan toteutustiedosto
12 kertoma_impl.hh kertoma_impl.cxx #ifndef KERTOMA_IMPL_HH #define KERTOMA_IMPL_HH #include "kertomas.hh" using CORBA::Long; class kertoma_impl : public virtual POA_kertoma { public: virtual Long laske(long n) throw (CORBA::SystemException); ; #endif #include "kertoma_impl.hh" #include <iostream> using CORBA::Long; Long kertoma_impl::laske(long n) throw (CORBA::SystemException) { Long tulos = 1; for (Long i = 1; i <= n; ++i) { tulos *= i; return tulos; kertoma_server.cxx #include "kertoma_impl.hh" 2 47 kertoma_server.cxx (jatkoa) 2 48 #include <iostream> using std::cout; int main(int argc, char* argv[]) { try { // alustetaan ORB ja v litet n sille // mahdollisesti komentorivilt annetut // parametrit CORBA::ORB_var orb = CORBA::ORB_init(argc, argv); // Haetaan viite juuri-poa:aan CORBA::Object_var obj = orb->resolve_initial_references("rootpoa"); PortableServer::POA_var poa = PortableServer::POA::_narrow(obj); cerr << "Juuri-POA haettu" << endl; // Aktivoidaan POA:n hallinnoija PortableServer::POAManager_var mgr = poa->the_poamanager(); mgr->activate(); // Luodaan kertomaolio kertoma_impl kertoma_servant; // Kirjoitetaan merkkijonoksi muutettu // viite olioon stdoutiin. kertoma_var k = kertoma_servant._this(); CORBA::String_var str = orb->object_to_string(k); cout << str << endl; // Ruvetaan kuuntelemaan pyynt j orb->run(); catch (const CORBA::Exception&) { cerr << "K sittelem t n poikkeus" << endl; return 1; return 0;
13 kertoma_client.cxx #include <iostream> #include <strstream> #include "kertoma.hh" 2 49 kertoma_client.cxx (jatkoa) 2 50 using std::cout; using std::cerr; using CORBA::Long; int main(int argc, char* argv[]) { try { // Alustetaan ORB CORBA::ORB_var orb = CORBA::ORB_init(argc, argv); // Tarkistetaan komentoriviparametrit if (argc!= 3) { cerr << "K ytt : kertoma_client" << " IOR_merkkijonomuodossa luku" << endl; throw 0; // Muunnetaan parametrina saatu merkkijono // olioviitteeksi CORBA::Object_var obj = orb->string_to_object(argv[1]); if (CORBA::is_nil(obj)) { cerr << "Annettu olioviite on nil tai rikki" << endl; throw 0; // Muunnetaan viite oikean tyyppiseksi kertoma_var k = kertoma::_narrow(obj); if (CORBA::is_nil(k)) { cerr << "Parametri ei ole viite kertoma-olioon" << endl; throw 0; kertoma_client.cxx (jatkoa) istrstream n_str(argv[2]); Long n; n_str >> n; cout << n << ":n kertoma on " << k->laske(n) << endl; catch (const CORBA::Exception&) { cerr << "K sittelem t n CORBA-poikkeus" << endl; return 1; catch (...) { return 1; return 0; Hajautetuista metaoliomalleista
14 Motivointia Hajautetut järjestelmät koostuvat useista komponenteista. Komponentit ovat heterogeenisia. Niiden täytyy kuitenkin toimia yhdessä. Komponenteille täytyy määritellä yhteinen malli, johon sisältyvät komponenttien tilat, komponenttien palvelut ja komponenttien väliset interaktiot. Oliokeskeinen lähestymistapa Komponentti = olio. Komponentin näkyvä tila = olion attribuutit. Komponentin palvelu = olion metodi. Komponenttien interaktio = metodikutsu. Komponentin palvelun epäonnistuminen = poikkeus Metaoliomalli Tasot ja metatasot Oliokeskeisiä ohjelmointikieliä on useita, ja niiden kaikkien metaoliomallit ovat hieman erilaiset. Hajautusvälikerroksen pitää määritellä metaoliomalli, joka yhdistää heterogeenisten komponenttien mallit. Seuraavassa määritellään lyhyesti metaoliomalli, jota tällä kurssilla käytetetään. Metaoliomalli Olioiden tyypit (luokat) Taso 2 Taso 1 Oliot Taso 0
15 Olio Oliolla on yksilöllinen tunniste. Samaan olioon voi olla useita (erilaisiakin) viitteitä. Oliolla on joukko attribuutteja, joiden nimet viittaavat arvoihin. Kaksi viitettä voi viitata esim. samaan olioon tai kahteen identtiseen olioon. Oliolla on joukko operaatioita, jotka määräävät yhdessä attribuuttien kanssa sen rajapinnan. Operaatiot voivat nostaa poikkeuksia Luokka Luokka on olion tyyppi. Attribuutit, operaatiot ja poikkeukset määritellään luokassa Attribuutit Attribuutilla on nimi ja tyyppi. Tyyppi voi olla oliotyyppi (luokka) tai muu tyyppi. Toiset oliot voivat lukea attribuutin arvon Attribuutti saattaa olla myös toisten olioiden muokattavissa. Attribuuttia vastaa yksi tai kaksi operaatiota (set/get). Attribuuttia ei välttämättä toteuteta suoraan jäsenmuuttujan avulla, mutta se on hyvin yleistä. Poikkeukset 2 60 Hajautetun järjestelmän palvelupyynnöt saattavat syystä tai toisesta epäonnistua. Poikkeusta käytetään välittämään tieto epäonnistumisesta ja sen syystä palvelupyynnön lähettäjälle. Operaation suorituksen epäonnistuminen voi johtua yleisestä (esim. verkko nurin) tai oliolle spesifisestä syystä (esim. virheellinen parametri).
16 Operaatiot Operaation signatuuri koostuu nimestä, luettelosta in-, out-, ja inout-parametreja, paluuarvon tyypistä, ja luettelosta poikkeuksia, jotka operaatio voi nostaa. Operaatiokutsut Asiakasolio voi pyytää operaation suorittamista palvelinoliolta. Operaatiokutsu ilmaistaan lähettämällä viesti palvelinoliolle. Palvelinolio nimetään olioviitteellä. Asiakkaan pitää käsitellä palvelimen mahdollisesti nostamat poikkeukset Perintä ja alityypitys Metaoliomalliin sisältyy perinnän käsite, joka muodostaa alityyppisuhteen. Alityyppi perii attribuutit, operaatiot ja poikkeukset isätyypiltään. Alityypit voivat määritellä uusia ominaisuuksia. Alityypit voivat uudelleenmääritellä vanhoja ominaisuuksia. Hajautettujen oliomallien suunnittelu
17 Hajautettujen ja paikallisten olioiden erot Viitteet Aktivointi/deaktivointi Siirtäminen Säilyvyys Kutsuviive Rinnakkaisuus Kommunikointi Tietoturva Jos ei ole tarkkana, menee helposti vipuun Olion elinkaari Tavallisen olio-ohjelmointikielen oliot ovat samassa (virtuaali)koneessa, samassa muistiavaruudessa. Hajautetut oliot saatetaan luoda eri koneilla. Hajautettu olio saatetaan kopioida tai siirtää toiselle koneelle. Automaattinen roskienkeruu hankalaa. Elinkaari tarvitsee siis erityishuomiota hajautettuja olioita suunniteltaessa Viitteet olioihin Tavallisessa olio-ohjelmointikielessä viitteet toteutetaan yleensä yksinkertaisesti osoittimilla muistipaikkoihin. Joissakin kielissä osoittimet näkyvät suoraan ohjelmoijalle (C++), toisissa eivät (Smalltalk, Java). Viitteet hajautettuihin olioihin ovat ongelmallisempia Sijaintitieto Tietoturva Viitteet olioiden tyyppeihin (eli luokkiin) Viitteet hajautettuihin olioihin vievät paikallisia viitteitä enemmän tilaa (Orbixissa 40 tavua, tyypillinen tavallinen osoitin 4 tai 8 tavua) Kutsuviive Paikallisen metodikutsun viive on sadan nanosekunnin luokkaa (1 * 10-7 s) Etämetodikutsun viive on olosuhteista riippuen yleensä välillä 0, ms (0, * 10-3 s). Ero on siis kertainen! Hajautetun oliojärjestelmän partitiointi ja rajapinnat on suunniteltava siten, että olioiden palvelut suorittavat melko isoja kokonaisuuksia, eikä palveluita tarvitse pyytää kovin usein. 2 68
18 Esimerkki: peräkkäissäiliön läpikäynti Javassa Hajautetuissa olioissa Hajautetun oliomallin suunnittelu Kolme voimaa: Vector +size():int +elementat(i:int):object... List +long list (in how_many:long, out l:sequence<object>, out bi:iterator i) Iterator binding iterator +next_one(out o:object): boolean +next_n(in how_many:long, out l:sequence<object>):boolean Partitiointi Rajapintasuunnittelu Rakeisuus Partitiointi 2 71 Partitiointi koostuu niistä päätöksistä, jotka tehdään jaettaessa järjestelmän toiminnallisuutta alijärjestelmiin ja edelleen sijoiteltaessa syntyneitä alijärjestelmiä fyysisiin paikkoihinsa (tässä tapauksessa hajautettuja olioita eri koneille). Osa päätöksistä on pakotettuja toiminnallisten vaatimusten vuoksi. Toiset päätökset tehdään luovemmin eitoiminnallisten vaatimusten ja yleisten tavoiteltavina pidettävien seikkojen ohjaamina. Suorituskyky, laajennettavuus, kustannukset... Rajapintasuunnittelu Tavoitteena koheesion maksimointi Rajapinnan tulisi edustaa hyvin määriteltyä abstraktiota, ja sen kaikkien elementtien tulisi liittyä tuohon abstraktioon. Metodin tulisi tehdä yksi, koherentti tehtävä. Alijärjestelmä on kohesiivinen, jos sen rajapinnat ovat kohesiivisia ja tukevat alijärjestelmän edustamaa oliokeskeistä abstraktiota. 2 72
19 Rajapintasuunnittelu (jatkoa) Kytkentöjen (coupling) minimointi 2 73 Implisiittinen kytkentä 2 74 Kytkentä on mitta alijärjestelmien välisten riippuvuuksien vahvuudelle. Kytkennät pitäisi minimoida. Ei kytkentää (nil coupling) interface SomeObject { any do_it(in string method, in string arguments); ; Julkinen kytkentä (export coupling) Luokka riippuu vain toisen julkisesta rajapinnasta. Avoin kytkentä (overt coupling) Luokka riippuu luvallisesti toisen toteutusyksityiskohdista. Salakytkentä (covert coupling) Luokka riippuu ilman lupaa toisen toteutuksesta. Rakeisuus (granularity) 2 75 Dokumenttien noutaminen Document 2 76 Rakeisuus kuinka hienojakoinen tai karkea oliomalli on. Hienojakoisessa mallissa on paljon pieniä olioita ja pieniä tehtäviä tekeviä metodeja. Karkeassa mallissa on olioita, jotka edustavat suuria käsitteitä tai kokonaisuuksia. Hienojakoisessa mallissa enemmän kytkentöjä. Hajautetuissa järjestelmissä kovin hienojakoinen malli laskee todennäköisesti suorituskykyä. Karkeassa mallissa usein huono koheesio. Löydettävä sopiva kompromissi. -nbrchapters: long +addchapter(in posn: long, in Chapter chap) +getchapter(in long posn) : return Chapter Chapter -nbrparagraphs : long +addparagraph(in posn: long, in Paragraph para) +getparagraph(in long posn) : return Paragraph Paragraph -nbrsentences : long +addsentence(in posn: long, in Sentence sent) +getsentence(in long posn) : return Sentence <<seq>> Sentence String
20 Viestisekvenssikaavio edellisestä Parempi oliomalli :Client :Document :Chapter :Paragraph nbrchapters getchapter() nbrparagraphs() getparagraph() nbrsentences() getsentence() getsentence() getsentence() getparagraph()... Koko dokumentin läpikäyminen vaatii tolkuttoman määrän etämetodikutsuja Huono malli! ContentProvider +getcontent() : return Content Document -issection : boolean +getsubdocuments() : return Documents +getsecnames() : return SectionNames +getsec(in name : String) : return Document <<struct>> Content format: String data: <<any>> <<seq>> SectionNames String <<seq>> Documents Document
OHJ-5010 Hajautettujen järjestelmien perusteet
OHJ-5010 Hajautettujen järjestelmien perusteet Arkkitehtuureista (1/2) Kari Systä Kari.systa@tut.fi 1 Yleistä Uusimman tiedon mukaan ensimmäinen tentti on 19.5.2012 kello 09-12. Kurssin kotisivuilla http://www.cs.tut.fi/~hajap/
LisätiedotIntegrointi. Ohjelmistotekniikka kevät 2003
Integrointi Ohjelmistotekniikka kevät 2003 ERP (Toiminnanohjausjärjestelmä) Myynti Henkilöstö, palkanlaskenta Kirjanpito Myynti Myyjät Extranet Tietovarasto Laskutus, reskontrat Asiakas ERP Asiakasrekisteri
LisätiedotORB CORBA 101. Palvelinolio. Asiakasolio. Yleistä. Toiminta ja arkkitehtuuri. CORBA 101 Graafisten käyttöliittymien ohjelmointi 2000
GKO 16.11.2000 MIT Jyväskylän yliopisto CORBA 101 Jonne Itkonen jonne.itkonen@sonera.com Software Architectures Laboratory Mobile & Media Research Sonera (2004-8-6: Ylläoleva osoite ei enää toimi, enkä
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ä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ätiedotJavaRMI 1 JAVA RMI. Rinnakkaisohjelmoinnin projekti 1 osa C Tekijät: Taru Itäpelto-Hu Jaakko Nissi Mikko Ikävalko
JavaRMI 1 JAVA RMI Rinnakkaisohjelmoinnin projekti 1 osa C Tekijät: Taru Itäpelto-Hu Jaakko Nissi Mikko Ikävalko JavaRMI 2 Table of Contents...1 JAVA RMI...1 Yleistä...4 Arkkitehtuuri...5 Java RMI kerrosarkkitehtuuri...5
Lisätiedot14. Poikkeukset 14.1
14. Poikkeukset 14.1 Sisällys Johdanto. Tarkistettavat ja tarkistamattomat poikkeukset. Poikkeusten tunnistaminen ja sieppaaminen try-catchlauseella. Mitä tehdä siepatulla poikkeuksella? Poikkeusten heittäminen.
LisätiedotOlion elinikä. Olion luominen. Olion tuhoutuminen. Olion tuhoutuminen. Kissa rontti = null; rontti = new Kissa();
Sisällys 7. Oliot ja viitteet Olio Java-kielessä. Olion luominen, elinikä ja tuhoutuminen. Viitteiden käsittelyä: sijoitus, vertailu ja varautuminen null-arvoon. Viite metodin paluuarvona.. 7.1 7.2 Olio
LisätiedotSisällys. 14. Poikkeukset. Johdanto. Johdanto
Sisällys 14. Poikkeukset Johdanto. Tarkistettavat ja tarkistamattomat poikkeukset. Poikkeusten tunnistaminen ja sieppaaminen try-catchlauseella. Mitä tehdä siepatulla poikkeuksella? Poikkeusten heittäminen.
LisätiedotSisällys. 14. Poikkeukset. Johdanto. Johdanto
Sisällys 14. Poikkeukset Johdanto. Tarkistettavat ja tarkistamattomat poikkeukset. Miten varautua poikkeukseen metodissa? Poikkeusten tunnistaminen ja sieppaaminen try-catchlauseella. Mitä tehdä siepatulla
Lisätiedot14. Poikkeukset 14.1
14. Poikkeukset 14.1 Sisällys Johdanto. Tarkistettavat ja tarkistamattomat poikkeukset. Miten varautua poikkeukseen metodissa? Poikkeusten tunnistaminen ja sieppaaminen try-catchlauseella. Mitä tehdä siepatulla
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ä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ä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ätiedotJava-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)
Lisätiedot812347A Olio-ohjelmointi, 2015 syksy 2. vsk. X Poikkeusten käsittelystä
812347A Olio-ohjelmointi, 2015 syksy 2. vsk X Poikkeusten käsittelystä Sisältö 1. Yleistä poikkeusten käsittelystä 2. Poikkeuskäsittelyn perusteita C++:ssa 3. Standardissa määritellyt poikkeukset 4. Poikkeusvarmuus
LisätiedotOperaattoreiden ylikuormitus. Operaattoreiden kuormitus. Operaattoreiden kuormitus. Operaattoreista. Kuormituksesta
C++ - perusteet Java-osaajille luento 5/7: operaattoreiden ylikuormitus, oliotaulukko, parametrien oletusarvot, komentoriviparametrit, constant, inline, Operaattoreiden ylikuormitus Operaattoreiden kuormitus
LisätiedotVerkko-ohjemointia. TCP vs. UDP Socket, ServerSocket Datagrammit RMI
15.3.2005 Verkko-ohjemointia TCP vs. UDP Socket, ServerSocket Datagrammit RMI 1 Javaa verkossa Sovelmat - appletit ajetaan www-selaimessa peritään jawa.awt.applet tai javax.swing.japlet (vrt. JFrame) http://java.sun.com/docs/books/tutorial/applet/
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ätiedot17. Javan omat luokat 17.1
17. Javan omat luokat 17.1 Sisällys Application Programming Interface (API). Pakkaukset. Merkkijonoluokka String. Math-luokka. Kääreluokat. 17.2 Java API Java-kielen Application Programming Interface (API)
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ätiedot16. 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
LisätiedotListarakenne (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ätiedot1. Omat operaatiot 1.1
1. Omat operaatiot 1.1 Sisällys Yleistä operaatioista. Mihin operaatioita tarvitaan? Oman operaation määrittely. Yleisesti, nimeäminen ja hyvä ohjelmointitapa, määreet, parametrit ja näkyvyys. HelloWorld-ohjelma
Lisätiedot7. Oliot ja viitteet 7.1
7. Oliot ja viitteet 7.1 Sisällys Olio Java-kielessä. Olion luominen, elinikä ja tuhoutuminen. Viitteiden sijoitus. Viitteiden vertailu. Varautuminen null-arvoon. Viite metodin paluuarvona. Viite metodin
LisätiedotOhjelmointi 2 / 2008 Välikoe / Pöytätestaa seuraava ohjelma.
Välikoe / 20.3 Vastaa neljään (4) tehtävään. Jos vastaat 5:een, 4 huonointa arvostellaan. Kunkin tehtävän vastaus eri konseptille. 1. Pöytätesti Pöytätestaa seuraava ohjelma. Tutki ohjelman toimintaa pöytätestillä
LisätiedotRinnakkaisohjelmointi kurssi. Opintopiiri työskentelyn raportti
Rinnakkaisohjelmointi kurssi Opintopiiri työskentelyn raportti Opintopiiri: Heikki Karimo, Jesse Paakkari ja Keijo Karhu Päiväys: 15.12.2006 Ohjelmointitehtävä C i C i : Säikeet ja kriittisen vaiheen kontrollointi
LisätiedotMetodien tekeminen Javalla
1 Metodien tekeminen Javalla Mikä metodi on? Metodin syntaksi Metodi ja sen kutsuminen Parametreista Merkkijonot ja metodi Taulukot ja metodi 1 Mikä metodi on? Metodilla toteutetaan luokkaan toiminnallisuutta.
Lisätiedot20. 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)
LisätiedotSisä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)
LisätiedotYleistä. Nyt käsitellään vain taulukko (array), joka on saman tyyppisten muuttujien eli alkioiden (element) kokoelma.
2. Taulukot 2.1 Sisältö Yleistä. Esittely ja luominen. Alkioiden käsittely. Kaksiulotteinen taulukko. Taulukko operaation parametrina. Taulukko ja HelloWorld-ohjelma. Taulukko paluuarvona. 2.2 Yleistä
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ä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. 1. Omat operaatiot. Yleistä operaatioista. Yleistä operaatioista
Sisällys 1. Omat operaatiot Yleistä operaatioista. Mihin operaatioita tarvitaan? Oman operaation määrittely. Yleisesti, nimeäminen ja hyvä ohjelmointitapa, määreet, parametrit ja näkyvyys. HelloWorld-ohjelma
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ätiedotTIETORAKENTEET 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ä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ätiedotOhjelmoinnin 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.
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ä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ä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ätiedot1. 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ätiedot13 Operaattoreiden ylimäärittelyjä
248 13 C++-kielessä voidaan operaattoreita ylimäärittää. Ylimääriteltävää operaattoria voidaan pitää ikäänkuin metodina, joka esitellään luokan esittelyssä ja määritellään luokan ulkopuolella kuten metoditkin.
LisätiedotSisältö. 2. Taulukot. Yleistä. Yleistä
Sisältö 2. Taulukot Yleistä. Esittely ja luominen. Alkioiden käsittely. Kaksiulotteinen taulukko. Taulukko operaation parametrina. Taulukko ja HelloWorld-ohjelma. Taulukko paluuarvona. 2.1 2.2 Yleistä
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ätiedotSisältö. 22. Taulukot. Yleistä. Yleistä
Sisältö 22. Taulukot Yleistä. Esittely ja luominen. Alkioiden käsittely. Kaksiulotteinen taulukko. Taulukko metodin parametrina. Taulukko ja HelloWorld-ohjelma. Taulukko paluuarvona. 22.1 22.2 Yleistä
Lisätiedot12. 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ätiedotJava-kielen perusteet
Java-kielen perusteet String-merkkijonoluokka 1 Ohjelmointikielten merkkijonot Merkkijonot ja niiden käsittely on välttämätöntä ohjelmoinnissa Valitettavasti ohjelmointikielten tekijät eivät tätä ole ottaneet
LisätiedotPoikkeustenkäsittely
1 Poikkeustenkäsittely Mitä poikkeustenkäsittely tarkoittaa? Poikkeuksen käsitteleminen Poikkeusluokkien hierarkia Poikkeuksen heittäminen 1 Mitä poikkeustenkäsittely tarkoittaa? Poikkeus (Exception) on
LisätiedotTehtävä 1. Tehtävä 2. Arvosteluperusteet Koherentti selitys Koherentti esimerkki
Tehtävä 1 Koherentti selitys Koherentti esimerkki ½p ½p Tehtävä 2 Täysiin pisteisiin edellytetään pelaajien tulostamista esimerkin järjestyksessä. Jos ohjelmasi tulostaa pelaajat jossain muussa järjestyksessä,
LisätiedotOpintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op. Poikkeukset ja tietovirrat: Virhetilanteiden ja syötevirtojen käsittely
Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Poikkeukset ja tietovirrat: Virhetilanteiden ja syötevirtojen käsittely Poikkeukset Poikkeuksella tarkoitetaan yllättävää ajonaikaista tilannetta, joka
Lisätiedot8. Näppäimistöltä lukeminen 8.1
8. Näppäimistöltä lukeminen 8.1 Sisällys Arvojen lukeminen näppäimistöltä Java-kielessä. In-luokka. In-luokka, käännös ja tulkinta Scanner-luokka. 8.2 Yleistä Näppäimistöltä annettujen arvojen (syötteiden)
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ätiedot7/20: Paketti kasassa ensimmäistä kertaa
Ohjelmointi 1 / syksy 2007 7/20: Paketti kasassa ensimmäistä kertaa Paavo Nieminen nieminen@jyu.fi Tietotekniikan laitos Informaatioteknologian tiedekunta Jyväskylän yliopisto Ohjelmointi 1 / syksy 2007
LisätiedotSisällys. 7. Oliot ja viitteet. Olion luominen. Olio Java-kielessä
Sisälls 7. Oliot ja viitteet Olio Java-kielessä. Olion luominen, elinikä ja tuhoutuminen.. Viitteiden vertailu. Varautuminen null-arvoon. Viite metodin paluuarvona.. Muuttumattomat ja muuttuvat merkkijonot.
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ä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ätiedotMetodit. 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ätiedot17. Javan omat luokat 17.1
17. Javan omat luokat 17.1 Sisällys Application Programming Interface (API). Pakkaukset. Merkkijonoluokka String. Math-luokka. Kääreluokat. 17.2 Java API Java-kielen Application Programming Interface (API)
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ä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ä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ä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ätiedotSisällys. 12. Näppäimistöltä lukeminen. Yleistä. Yleistä 12.1 12.2 12.3 12.4
Sisällys 12. Näppäimistöltä lukeminen Arvojen lukeminen näppäimistöltä yleisesti. Arvojen lukeminen näppäimistöltä Java-kielessä.. Luetun arvon tarkistaminen. Tietovirrat ja ohjausmerkit. Scanner-luokka.
LisätiedotJava-kielen perusteet
Java-kielen perusteet Tunnus, varattu sana, kommentti Muuttuja, alkeistietotyyppi, merkkijono, literaalivakio, nimetty vakio Tiedon merkkipohjainen tulostaminen 1 Tunnus Java tunnus Java-kirjain Java-numero
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ätiedotOhjelmointitaito (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ä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ätiedotOhjelmoinnin perusteet Y Python
Ohjelmoinnin perusteet Y Python T-106.1208 15.3.2010 T-106.1208 Ohjelmoinnin perusteet Y 15.3.2010 1 / 56 Tiedostoista: tietojen tallentaminen ohjelman suorituskertojen välillä Monissa sovelluksissa ohjelman
LisätiedotSisä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ätiedotDemo 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ätiedot12. Näppäimistöltä lukeminen 12.1
12. Näppäimistöltä lukeminen 12.1 Sisällys Arvojen lukeminen näppäimistöltä yleisesti. Arvojen lukeminen näppäimistöltä Java-kielessä. In-luokka. Luetun arvon tarkistaminen. Tietovirrat ja ohjausmerkit.
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ätiedotOhjelmoinnin perusteet Y Python
Ohjelmoinnin perusteet Y Python T-106.1208 2.3.2009 T-106.1208 Ohjelmoinnin perusteet Y 2.3.2009 1 / 28 Puhelinluettelo, koodi def lue_puhelinnumerot(): print "Anna lisattavat nimet ja numerot." print
LisätiedotTaulukot. 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
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ätiedotC++ rautaisannos. Kolme tapaa sanoa, että tulostukseen käytetään standardikirjaston iostreamosassa määriteltyä, nimiavaruuden std oliota cout:
C++ rautaisannos Kolme tapaa sanoa, että tulostukseen käytetään standardikirjaston iostreamosassa määriteltyä, nimiavaruuden std oliota cout: # include #include main ( ) main (
LisätiedotAttribuutit. Copyright IT Press Tämän e-kirjan kopiointi, tulostaminen ja jakeleminen eteenpäin luvatta on kielletty.
8 Attribuutit Useimmat ohjelmointikielet on suunniteltu tavoitteena määrätty joukko ominaisuuksia. Kun esimerkiksi ryhdyt tekemään kääntäjää, mietit millainen uudella kielellä tehty sovellus on rakenteeltaan,
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ätiedot8. Näppäimistöltä lukeminen 8.1
8. Näppäimistöltä lukeminen 8.1 Sisällys Arvojen lukeminen näppäimistöltä Java-kielessä. In-luokka. In-luokka, käännös ja tulkinta Scanner-luokka. 8.2 Yleistä Näppäimistöltä annettujen arvojen (syötteiden)
LisätiedotOhjelmointi 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ä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ä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ätiedotTietojärjestelmäarkkitehtuurit
Tietojärjestelmäarkkitehtuurit ITK130 Johdatus ohjelmistotekniikkaan Syksy 2003 Sami Kollanus 1 Aluksi Tietojärjestelmäarkkitehtuurit vs. ohjelmistoarkkitehtuurit Pohjana Tietojärjestelmäarkkitehtuurit
LisätiedotTietueet. 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ä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ätiedotSisällys. 19. Olio-ohjelmointia Javalla. Yleistä. Olioiden esittely ja alustus
Sisällys 19. Olio-ohjelmointia Javalla Olioiden esittely ja alustus. Metodit Yleistä metodeista. Mihin metodeja tarvitaan? Metodien määrittely. Omat metodit: nimeäminen, paikka, kutsuminen, parametrit
LisätiedotOlio-ohjelmointi Virhetilanteiden käsittely
Olio-ohjelmointi 2016 Virhetilanteiden käsittely Poikkeustilanteet n Java-järjestelmässä voidaan ottaa kiinni ohjelman suoritusaikana tapahtuvia virhetilanteita, joita ei saada kiinni tavanomaisilla ohjausrakenteilla
Lisätiedot815338A Ohjelmointikielten periaatteet
815338A Ohjelmointikielten periaatteet 2015-2016 VIII Poikkeusten ja tapahtumien käsittely Sisältö 1. Poikkeusten käsittelyn käsitteitä ja suunnittelukriteerejä 2. Poikkeusten käsittely C++:ssa 3. Poikkeusten
Lisätiedot4. 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ätiedotC++11 lambdat: [](){} Matti Rintala
C++11 lambdat: [](){} Matti Rintala bool(*)(int) Tarve Tarve välittää kirjastolle/funktiolle toiminnallisuutta Callback-funktiot Virhekäsittely Käyttöliittymät Geneeristen kirjastojen räätälöinti STL:n
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ätiedotLuokan sisällä on lista
1 Luokan sisällä on lista Luokan sisällä lista Listan sisältävä luokka Konstruktorit get-metodi Lista muissa metodeissa addxx-metodi Yksinkertainen pääohjelma Kertauksen List-luokan metodeja 1 Luokan sisällä
LisätiedotHarjoitustyö: virtuaalikone
Harjoitustyö: virtuaalikone Toteuta alla kuvattu virtuaalikone yksinkertaiselle olio-orientoituneelle skriptauskielelle. Paketissa on testaamista varten mukana kaksi lyhyttä ohjelmaa. Ohjeita Noudata ohjelman
Lisätiedot7. 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
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ätiedotOhjelmistoarkkitehtuurit
Ohjelmistoarkkitehtuurit Konnektorit ohjelmistoarkkitehtuurissa 18.9.2012 1 Konnektorit (connectors) Konnektori (connector) (liitos) Arkkitehtuurielementti, jonka tehtävänä on mahdollistaa ja hallita komponenttien
LisätiedotHSMT Tietokannoista. Ville Leppänen. HSMT, c Ville Leppänen, IT, Turun yliopisto, 2008 p.1/32
HSMT Tietokannoista Ville Leppänen HSMT, c Ville Leppänen, IT, Turun yliopisto, 2008 p.1/32 Missä mennään... 1. Johdanto (1h) 2. Säikeet (2h) 3. Samanaikaisuudesta (2h) 4. Hajautetuista sovelluksista (1h)
Lisätiedot9. 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
LisätiedotOutputStream ja InputStream. Tietovirrat ja niiden suunnat. Tietovirtojen käyttö. FileInputStream esimerkki. DataOutputStream ja DataInputStream
Tietovirrat ja niiden suunnat Output stream Koodi Tiedosto OutputStream ja InputStream OutputStream (abstrakti) FileOutputStream Tallennus tavuina ObjectOutputStream Olioiden tallennus FilterOutputStream
Lisätiedot