1. Olio-ohjelmointi 1.1



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

2. Olio-ohjelmoinista lyhyesti 2.1

Mikä yhteyssuhde on?

4. Luokan testaus ja käyttö olion kautta 4.1

1 Tehtävän kuvaus ja analysointi

Olio-ohjelmointi Javalla

Ohjelmistojen mallintaminen. Luento 3, 9.11.

Olio-ohjelmoinnin toteuttaminen Fortran 90 -kielellä

Ohjelmointitaito (ict1td002, 12 op) Kevät Java-ohjelmoinnin alkeita. Tietokoneohjelma. Raine Kauppinen

Ohjelmointikielet ja -paradigmat 5op. Markus Norrena

Kompositio. Mikä komposition on? Kompositio vs. yhteyssuhde Kompositio Javalla Konstruktorit set-ja get-metodit tostring-metodi Pääohjelma

4. Olio-ohjelmoinista lyhyesti 4.1

Olio-ohjelmointi Johdanto olio-ohjelmointiin

Imperatiivisten ohjelmien organisointiparadigmojen. historia

Imperatiivisten ohjelmien organisointiparadigmojen historia

815338A Ohjelmointikielten periaatteet Harjoitus 5 Vastaukset

Luokat ja oliot. Ville Sundberg

19/20: Ikkuna olio-ohjelmoinnin maailmaan

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

Metodien tekeminen Javalla

9. Periytyminen Javassa 9.1

C# olio-ohjelmointi perusopas

8. Näppäimistöltä lukeminen 8.1

Ohjelmointitaito (ict1td002, 12 op) Kevät Java-ohjelmoinnin alkeita. Tietokoneohjelma. Raine Kauppinen

Ohjelmoinnista. Ohjelmien toteutukseen tarjolla erilaisia välineitä:

9. Periytyminen Javassa 9.1

815338A Ohjelmointikielten periaatteet

Ohjelmointi 2 / 2010 Välikoe / 26.3

1. Omat operaatiot 1.1

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

812347A Olio-ohjelmointi, X Reflektiivisyys

Ruby. Tampere University of Technology Department of Pervasive Computing TIE Principles of Programming Languages

812341A Olio-ohjelmointi, I Johdanto

Rajapinta (interface)

Aalto Yliopisto T Informaatioverkostot: Studio 1. Oliot ja luokat Javaohjelmoinnissa

12 Mallit (Templates)

T Olio-ohjelmointi Osa 3: Luokka, muodostin ja hajotin, this-osoitin Jukka Jauhiainen OAMK Tekniikan yksikkö 2010

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

Sisällys. 19. Olio-ohjelmointia Javalla. Yleistä. Olioiden esittely ja alustus

YHTEYSSUHDE (assosiation)

Ohjelmistotekniikan menetelmät, koe

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

5. HelloWorld-ohjelma 5.1

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

Luokat. Luokat ja olio-ohjelmointi

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

KOHDELUOKAN MÄÄRITTELY

public static void main (String [] args)

Sisällys. JAVA-OHJELMOINTI Osa 1: Ohjelmoinnin perusteita. Ohjelmoinnin kehityssuuntia. Ohjelmointi luvuilla. Ohjelmointi luvuilla

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

1. Mitä tehdään ensiksi?

Ohjelmistojen mallintaminen, syksy 2011, laskuharjoitus 2

Johdanto Meta Kielten jaotteluja Historia. Aloitusluento. TIES542 Ohjelmointikielten periaatteet, kevät Antti-Juhani Kaijanaho

Tehtävä 1. Tehtävä 2. Arvosteluperusteet Koherentti selitys Koherentti esimerkki

Ohjelmoinnin perusteet Y Python

2. Olio-ohjelmoinnin perusteita 2.1

Ohjelmoinnin peruskurssien laaja oppimäärä

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

8. Näppäimistöltä lukeminen 8.1

8/20: Luokat, oliot ja APIt

Ohjelmoinnin jatkokurssi, kurssikoe

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

Operaattoreiden ylikuormitus. Operaattoreiden kuormitus. Operaattoreiden kuormitus. Operaattoreista. Kuormituksesta

Vertailulauseet. Ehtolausekkeet. Vertailulauseet. Vertailulauseet. if-lauseke. if-lauseke. Javan perusteet 2004

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

19. Olio-ohjelmointia Javalla 19.1

UML ja luokkien väliset suhteet

815338A Ohjelmointikielten periaatteet

Ohjelmointi 2, välikoe

Vastuuopettaja. Kurssiesite Olio-ohjelmoinnin perusteet Kevät Olio-ohjelmoinnin perusteet (5 op) Tavoitteena

Luokka Murtoluku uudelleen. Kirjoitetaan luokka Murtoluku uudelleen niin, että murtolukujen sieventäminen on mahdollista.

Oliot viestivät metodeja kutsuen

Harjoitus Olkoon olemassa luokat Lintu ja Pelikaani seuraavasti:

Ohjelmointi 1 / 2009 syksy Tentti / 18.12

815338A Ohjelmointikielten periaatteet

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

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

Tietokannat II -kurssin harjoitustyö

Ohjelmointi 2 / 2008 Välikoe / Pöytätestaa seuraava ohjelma.

A) on käytännöllinen ohjelmointitekniikka. = laajennetaan aikaisemmin tehtyjä luokkia (uudelleenkäytettävyys)

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

7/20: Paketti kasassa ensimmäistä kertaa

Imperatiivisten ohjelmien organisointiparadigmojen historia

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

Osoitin ja viittaus C++:ssa

812341A Olio-ohjelmointi, IX Olioiden välisistä yhteyksistä

Ohjelmistojen mallintaminen, sekvenssikaaviot

ITKP102 Ohjelmointi 1 (6 op)

Luokan sisällä on lista

Tämän lisäksi listataan ranskalaisin viivoin järjestelmän tarjoama toiminnallisuus:

Rinnakkaisohjelmointi kurssi. Opintopiiri työskentelyn raportti

812341A Olio-ohjelmointi Peruskäsitteet jatkoa

20. Javan omat luokat 20.1

Sisällys. 20. Javan omat luokat. Java API. Pakkaukset. java\lang

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op

Lohkot. if (ehto1) { if (ehto2) { lause 1;... lause n; } } else { lause 1;... lause m; } 15.3

Periytyminen (inheritance)

Yleistä. Nyt käsitellään vain taulukko (array), joka on saman tyyppisten muuttujien eli alkioiden (element) kokoelma.

Luokkakaavion laatiminen

Sisältö Johdanto. Tiedostojen lukeminen. Tiedostojen kirjoittaminen. 26.2

Transkriptio:

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 Kaiken ohjelmoinnin takana ovat tietorakenteet ja algoritmit. Tietokoneohjelman toteuttamiseksi on kuitenkin tarjolla useita enemmän tai vähemmän toisistaan poikkeavia lähestymistapoja (eli ohjelmointiparadigmoja). Paradigmoissa kiinnitetään vaihtelevasti huomiota toimintoihin ja tietoihin. 1.3

Ohjelmointiparadigmoja Proseduraalinen ohjelmointi: Entinen valtaparadigma, jossa ohjelma jaetaan pienempiin osiin aliohjelmiksi (proseduureiksi). Rakenteinen ohjelmointi eräs tämän paradigman muoto. Kehitettiin ohjelmistokriisin ratkaisuksi 1970-luvulla. GOTO-lause korvattiin ohjausrakenteilla (peräkkäisyys, valinta ja toisto), jolloin päästiin eroon "spagettikoodista". Ohjelman rakennetta selvennetään sisentämällä. Tuloksena helpommin ymmärrettäviä ja ylläpidettäviä ohjelmia. Muun muassa Fortran, COBOL, Basic, Pascal, C, C++. 1.4

Ohjelmointiparadigmoja Olio-ohjelmointi: Nykyisin vallitseva ohjelmointiparadigma. Oliokielet tukevat olioparadigmaa vaihtelevasti. Muun muassa Java, C++, Smalltalk ja Eiffel. Proseduraalinen ja olio-ohjelmointi ovat imperatiivisen ohjelmointiparadigman edustajia. Ohjelmalla tila, jota muutetaan vaiheittain käskyillä. Funktionaalinen ohjelmointi (Lisp) ja logiikkaohjelmointi (Prolog) kaksi muuta pääparadigmaa. 1.5

Ohjelmointiparadigmoja C++ on hybridikieli: oliomekanismit liitetty perinteiseen C-ohjelmointikieleen. Monet ohjelmointikielet ovat itse asiassa moniparadigmakieliä, joissa kieli sisältää usean ohjelmointiparadigman käsitteitä. Esimerkiksi C++, PHP ja Common Lisp. Javaankin sisältyy rakenteisen ohjelmoinnin käsitteitä, vaikka Java luokitellaan (lähes) puhtaaksi olio-ohjelmointikieleksi. 1.6

Ohjelmointiparadigmoja Rakenteinen ohjelmointi Tieto (muuttujat) ja siihen liittyvä toiminnallisuus (aliohjelmat, proseduurit, funktiot) erilliset. Olio-ohjelmointi Tieto (attribuutit) ja siihen liittyvä toiminnallisuus (metodit) yhdistetty luokiksi. Ohjelma Ohjelma Tieto Toiminnot Tieto Toiminnot 1.7

Rakenteinen C++ -ohjelma Ohjelmoijan määrittelemä tietotyyppi, HENKILO-tietue, sisältää henkilön tiedot. Aliohjelma tulostahenkilo tulostaa annetun tietueen. pahis ei ole olio, vaan HENKILO-tyyppinen muuttuja. Tästä syystä pahis on annettava tiedot tulostavalle aliohjelmalle parametrina. Ohjelmassa ei ole luokkamäärittelyä, vaan tietue ja aliohjelma ovat erilliset. #include <iostream> #include <string> using namespace std; struct HENKILO { string nimi; }; void tulostahenkilo(henkilo apar) { cout << apar.nimi; } int main() { HENKILO pahis; pahis.nimi = "Tommy DeVito"; tulostahenkilo(pahis); return 0; } 1.8

Olio-ohjelma Java-kielellä Henkilo-luokka sisältää nimen (attribuutti) ja nimen tulostamisen (metodi). Tiedot tulostetaan metodia pistenotaatiolla kutsumalla. Tietoja ei tarvitse antaa metodille parametrina, koska olio sisältää tiedot. Luokkamäärittely sitoo yhteen sekä tiedot että niihin liittyvät toiminnot. public class Henkilo { public String nimi; public void tulosta() { System.out.print(nimi); } } public class HenkiloTesti { public static void main(string[] args) { Henkilo pahis = new Henkilo(); pahis.nimi = "Tommy DeVito"; pahis.tulosta(); } } 1.9

Olio-ohjelmoinnin muotoja Oliopohjainen ohjelmointi (object-based programming): Ohjelma kuvataan keskenään kommunikoivina olioina. Luokkapohjainen ohjelmointi (class-based programming): Olioiden lisäksi luokat. Olioperustainen ohjelmointi (object-oriented programming, OOP): oliot, luokat ja periytyminen. Kurssilla ohjelmoidaan kehittyneimmällä muodolla (OOP) Java-kieltä käyttäen. 1.10

Ohjelmiston analyysi ja suunnittelu Olioparadigma ei rajoitu pelkästään ohjelmointiin: Ohjelmistoja analysoidaan ja suunnitellaan olioperustaisesti (Object-Oriented Analysis/Design, OOA/D). Kurssilla käytetään UML:ää lähinnä OOA-tehtäviin. Luokkakaavioita tulee pian kalvoilla vastaan, mutta laajemmin UML opetetaan kurssin loppupuolella. Myöhemmillä kursseilla UML:ää enemmänkin sovelletaan kuin opetetaan. 1.11

Olioparadigman hyötyjä Vastaa paremmin ihmisen tapaa hahmottaa maailmaa, kuin esimerkiksi tiettyyn laskentamalliin perustuva ohjelmointiparadigma. Ohjelmisto on samanrakenteinen sovellusalueen käsitteiden kanssa, jolloin ylläpito on helpompaa ja ylläpitokustannukset pienempiä. Tukee ohjelmiston osien uudelleenkäyttöä. 1.12

Olioparadigman kritiikkiä Turhan raskas ja monimutkainen lähestymistapa pienten sovellusten toteuttamiseen. Olioparadigmaan kuuluva hierarkkinen periytymismekanismi ei sovi jokaisen sovellusalueen kuvaamiseen. Olioperustaisuuden odotetut hyödyt jääneet osin toteutumatta. Olioperustaisuudesta voi olla enemmän haittaa kuin hyötyä ensimmäisellä ohjelmointikurssilla. 1.13