812341A Olio-ohjelmointi, I Johdanto

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

Olio-ohjelmointi Johdanto olio-ohjelmointiin

TK Palvelinympäristö

1. Olio-ohjelmointi 1.1

815338A Ohjelmointikielten periaatteet

13/20: Kierrätys kannattaa koodaamisessakin

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Rajapinnat ja sisäluokat

815338A Ohjelmointikielten periaatteet

815338A Ohjelmointikielten periaatteet

ELEC-E8419 Sähkönsiirtojärjestelmät 1 Luento: Jännitteen säätö. Kurssi syksyllä 2015 Periodit I-II, 5 opintopistettä Liisa Haarla

Objective-C. Ryhmä 35: Ilpo Kärki Aleksi Pälä

Tietorakenteet ja algoritmit

HELIA 1 (21) Outi Virkki Tietokantasuunnittelu

TIE Principles of Programming Languages CEYLON

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

Muutamia peruskäsitteitä

Imperatiivisen ohjelmoinnin peruskäsitteet. Meidän käyttämän pseudokielen lauseiden syntaksi

Soveltuvuustutkimus Lifebelt-ohjelman ideologian käytettävyydestä olioorientoituneeseen

Choose Finland-Helsinki Valitse Finland-Helsinki

812347A Olio-ohjelmointi, 2015 syksy 2. vsk. X Poikkeusten käsittelystä

Ohjelmistokehykset ohjelmistorunkoja uudelleenkäyttö olioperustaisista ohjelmistorunko

Tietorakenteet ja algoritmit Johdanto Lauri Malmi / Ari Korhonen

Tietorakenteet ja algoritmit - syksy

Sisällys. JAVA-OHJELMOINTI Osa 7: Abstrakti luokka ja rajapinta. Abstraktin luokan idea. Abstrakti luokka ja metodi. Esimerkki

Concurrency - Rinnakkaisuus. Group: 9 Joni Laine Juho Vähätalo

Chapel. TIE Ryhmä 91. Joonas Eloranta Lari Valtonen

Rajapinta (interface)

Varhaiset oliokielet Modula, CLU ja Smalltalk. T : Seminar on the History of Programming Languages Kari Koskinen Otaniemi 29.9.

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

815338A Ohjelmointikielten periaatteet

812336A C++ -kielen perusteet,

ADA. Ohjelmointikieli. Ryhmä 5 Henna Olli, Päivi Hietanen

Tenttikysymykset. + UML-kaavioiden mallintamistehtävät

Abstraktit tietotyypit ja olio-ohjelmointi

Ohjelmointikielet ja -paradigmat 5op. Markus Norrena

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

A TIETORAKENTEET JA ALGORITMIT

Tenttikysymykset. + UML- kaavioiden mallintamistehtävät

4. Lausekielinen ohjelmointi 4.1

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

Prolog kielenä Periaatteet Yhteenveto. Prolog. Toni ja Laura Fadjukoff. 9. joulukuuta 2010

11/20: Konepelti auki

Common Lisp Object System

Ohjelmistojen mallintaminen Luokkakaaviot Harri Laine 1

Ohjelmoinnin peruskurssien laaja oppimäärä

TIE Ohjelmistojen suunnittelu. Luento 8..9: moniperintä

Oleelliset vaikeudet OT:ssa 1/2

18. Abstraktit tietotyypit 18.1

Ohjelmistojen mallintaminen. Luento 11, 7.12.

Kertaus: yleistys-erikoistus ja perintä

Pythonin alkeet Syksy 2010 Pythonin perusteet: Ohjelmointi, skriptaus ja Python

Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 1

JReleaser Yksikkötestaus ja JUnit. Mikko Mäkelä

tään painetussa ja käsin kirjoitetussa materiaalissa usein pienillä kreikkalaisilla

anna minun kertoa let me tell you

PERL. TIE Principles of Programming Languages. Ryhmä 4: Joonas Lång & Jasmin Laitamäki

Sisällys. JAVA-OHJELMOINTI Osa 6: Periytyminen ja näkyvyys. Luokkahierarkia. Periytyminen (inheritance)

9. Periytyminen Javassa 9.1

Paikkatiedon mallinnus Dokumentoinnin ymmärtäminen. Lassi Lehto

ELM GROUP 04. Teemu Laakso Henrik Talarmo

Ohjelmistojen mallintaminen luokkamallin lisäpiirteitä

Apuja ohjelmointiin» Yleisiä virheitä

Test-Driven Development

Solidity älysopimus ohjelmointi. Sopimus suuntautunut ohjelmointi

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

Luokka- ja oliokaaviot

Sisällys. 1. Omat operaatiot. Yleistä operaatioista. Yleistä operaatioista

Ohjelmointikielet ja -paradigmat 5op. Markus Norrena

Tietorakenteet op, 50 h. Luennot alkavat 7.9. ja päättyvät

1. Omat operaatiot 1.1

TIEA255 Tietotekniikan teemaseminaari ohjelmointikielet ja kehitysalustat. Antti-Juhani Kaijanaho. 16. helmikuuta 2011

Ohjelmistojen mallintaminen

CODEONLINE. Monni Oo- ja Java-harjoituksia. Version 1.0

Ohjelmoinnin perusteet Y Python

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op

Simulointi. Tapahtumapohjainen

15. Ohjelmoinnin tekniikkaa 15.1

15. Ohjelmoinnin tekniikkaa 15.1

815338A Ohjelmointikielten periaatteet Harjoitus 5 Vastaukset

Ylläpitodokumentti. Boa Open Access. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

1.3 Lohkorakenne muodostetaan käyttämällä a) puolipistettä b) aaltosulkeita c) BEGIN ja END lausekkeita d) sisennystä

Ohjelmoinnin perusteet Y Python

Olioperustaisuus (object oriented)

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

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

Salasanan vaihto uuteen / How to change password

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

Ohjelmoinnin perusteet Y Python

12. Kehysarkkitehtuurit

Imperatiivisten ohjelmien organisointiparadigmojen. historia

Imperatiivisten ohjelmien organisointiparadigmojen historia

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

Ohjelmistojen mallintaminen, mallintaminen ja UML

9. Periytyminen Javassa 9.1

ITK130 Ohjelmistojen luonne

Test-Driven Development

You can check above like this: Start->Control Panel->Programs->find if Microsoft Lync or Microsoft Lync Attendeed is listed

Ohjelmoinnin peruskurssien laaja oppimäärä

Älysopimusten kehittäminen. Sopimus suuntautunut ohjelmointi

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

Transkriptio:

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 n Yleensä kohdejärjestelmä monimutkainen: tarvitaan abstraktio n Prosessiabstraktio Jaetaan ohjelma erilaisiin proseduureihin Varhaisin abstraktion muoto n Data-abstraktio Yhdistetään data sitä käsitteleviin operaatioihin Johti abstrakin tietotyypin syntyyn 812341A Olio-ohjelmointi, Johdanto 3

Abstraktiosta n Abstrakti tietotyyppi (abstract data type, ADT) on tietotyyppi, joka toteuttaa ehdot: Tiedon kapselointi: Määrittely ja tietotyypin operaatiot määritelty yhdessä syntaktisessa yksikössä. Muut ohjelmayksiköt voivat muodostaa tämän tyypin muuttujia. Tiedon kätkentä: Määrittelyn ja operaatioiden yksityiskohdat eivät näy ulkopuoliselle käyttäjälle. n ADT + periytyvyys + monimuotoisuus = Olio-ohjelmointi 812341A Olio-ohjelmointi, Johdanto 4

Abstraktiosta Kapseloinnin hyödyt Data ja sitä käsittelevät operaatiot yhdessä -> Ohjelman tekninen ja looginen hallinta helpompaa Mentaalinen hahmottaminen on helpompaa Ohjelman osien välinen riippuvuus vähenee Kätkennän hyödyt Tietotyypin luotettavuus paranee Ylläpidettävyys helpottuu (ulospäin näkyvä rajapinta säilyy muuttumattomana) 812341A Olio-ohjelmointi, Johdanto 5

Abstraktiosta Monimuotoisuus metodien ylikuormitus Metodien uudelleenmäärittely muuttujien monimuotoisuus generisyys 812341A Olio-ohjelmointi, Johdanto 6

2 Olio-ohjelmoinnin historiaa n 1960-1970-lukujen vaihteessa havaittiin ongelmia Projektit eivät valmistuneet ajoissa tai ollenkaan Projektien budjetit ylittyivät Ohjelmat usein huonolaatuisia n Tilanne nimettiin ohjelmistokriisiksi Otettiin käyttöön uusia tuotantoprosesseja Kehiteltiin uusia kieliä Esiteltiin uusia ohjelmointiparadigmoja mm. olioohjelmointi 812341A Olio-ohjelmointi, Johdanto 7

1960-luku: Simula67 n Olio-ohjelmoinnin isät norjalaiset Kristen Nygaard ja Ole- Johan Dahl n 1961 Simula I ohjelmointikieli simulointiin Pohjautui Algol60-kieleen Sisälsi luokan ja olion käsitteet n 1967 Simula67 Täysimittainen ja yleiskäyttöinen ohjelmointikieli The image cannot be displayed. Your computer may not have enough memory to open the image, or the image may have been corrupted. Restart your computer, and then open the file again. If the red x still appears, you may have to delete the image and then insert it again. The image cannot be displayed. Your computer may not have enough memory to open the image, or the image may have been corrupted. Restart your computer, and then open the file again. If the red x still appears, you may have to delete the image and then insert it again. Myös periytyminen Ei juuri levinnyt akateemisen maailman ulkopuolelle 812341A Olio-ohjelmointi, Johdanto 8

1980-luku n Olio-ohjelmoinnin läpimurto n Oliotekniikoiden käyttöönotto laajeni ohjelmointikielestä ja koodauksesta muihin kehitysvaiheisiin. Grady Booch 1980: Oliosuuntautuneen suunnittelun käsite n Ensimmäinen kaupallinen oliotietokanta julkaistiin 1985. 812341A Olio-ohjelmointi, Johdanto 9

1980-luku: Smalltalk n Kehittäjä Alan Kay Xeroxin Palo Alton tutkimuskeskuksessa Julkistettiin 1980 n Ohjelmointijärjestelmä Kayn kehittämälle Dynabooktietokoneelle n Puhdas oliokieli n Kaikkien olioiden kantaluokka Object Sisälsi kattavan luokkakirjaston n Ei merkittävää asemaa ohjelmistototannossa, vaikuttanut suuresti myöhempiin kieliin 812341A Olio-ohjelmointi, Johdanto 10

1980-luku: C++ n Kehittäjä Bjarne Stroustrup AT&T Bellin laboratoriossa n Työnimi C with classes C:hen lisätty oliotuki 1983 nimeksi C++ ja yleiseen käyttöön n Voimakasta kehitystä 1980-luvulla, mm. Moniperintä Parametrisoidut tyypit Poikkeusten käsittely n Standardisoitu 1997 Kieli + standardikirjasto n Ei puhdas oliokieli vaan hybridi n Melko vaikea käyttää, C-kielen perintö rasittaa The image cannot be displayed. Your computer may not have enough memory to open the image, or the image may have been corrupted. Restart your computer, and then open the file again. If the red x still appears, you may have to delete the image and then insert it again. 812341A Olio-ohjelmointi, Johdanto 11

1990-luku: Java n Pääasiallinen kehittäjä James Gosling Sun Microsystemsillä 1990-luvun puolivälissä n Alun perin pienlaitteiden sulautetuksi ohjelmointikieleksi C++:aa pidettiin liian epäluotettavana n Pohjautuu C++:aan, muutoksia: Ei moniperintää Kaikilla luokilla yhteinen kantaluokka Varattu muisti vapautetaan automaattisesti Osoitintyyppi poistettu Lisäominaisuus rinnakkaisen ohjelmoinnin tuki n Puhtaampi oliokieli kuin C++ Perustietotyypit eivät kuitenkaan olioita 812341A Olio-ohjelmointi, Johdanto 12

3 Olioparadigmasta: paradigman tavoitteet n Ongelman parempi mallintaminen n Ohjelmistokomponenttien uudelleenkäytettävyys Lisää luotettavuutta n Ohjelmistojen helppo laajennettavuus ja ylläpito n Toivotaan auttavan tuottavuuden ja laadun ristiriidassa. n Parantaa sisäistä laatua: ohjelma modulaarinen, luettava, rakenteellinen n Parantaa ulkoista laatua: loppukäyttäjän, kehittäjätiimin toisen jäsenen, jne näkökulmasta 812341A Olio-ohjelmointi, Johdanto 13

Olioparadigmasta: Uudelleenkäyttö, laatu ja ohjelmoinnin tehokkuus n Uudelleenkäyttö vs uudelleenkäytettävyys Käytetäänkö olemassa olevaa komponenttia uudelleen vai luodaanko komponentti uudelleenkäytettäväksi? n Koodia ei ole varaa kirjoittaa moneen kertaan. Ratkaisu voi soveltua sellaisenaan tai vain vähän räätälöitynä johonkin toiseenkin ongelmaan. n Laadittaessa uudelleenkäytettävää koodia myös laatu oletettavasti paranee Komponentin testaus useassa kontekstissa Ratkaisu suunniteltava yleiskäyttöiseksi ja laajennettavaksi n Uudelleenkäytettävyyden merkitys kasvaa 812341A Olio-ohjelmointi, Johdanto 14