Ohjelmointikielet ja -paradigmat 5op. Markus Norrena



Samankaltaiset tiedostot
Ohjelmointikielet ja -paradigmat 5op. Markus Norrena

Ohjelmointikielet ja -paradigmat 5op. Markus Norrena

Mikä yhteyssuhde on?

1. Olio-ohjelmointi 1.1

812336A C++ -kielen perusteet,

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

Olio-ohjelmointi Javalla

1 Tehtävän kuvaus ja analysointi

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

Ohjelmoinnin peruskurssien laaja oppimäärä

2. Olio-ohjelmoinista lyhyesti 2.1

Ohjelmoinnin perusteet Y Python

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

P e d a c o d e ohjelmointikoulutus verkossa

Pedacode Pikaopas. Java-kehitysympäristön pystyttäminen

Apuja ohjelmointiin» Yleisiä virheitä

XNA grafiikka laajennus opas. Paavo Räisänen. Tämän oppaan lähdekoodit ovat ladattavissa näiden sivujen Ladattavat osiossa.

19/20: Ikkuna olio-ohjelmoinnin maailmaan

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

Oliot viestivät metodeja kutsuen

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

The CCR Model and Production Correspondence

PHP:n alkeita ja taustaa. Markus Norrena

9. Periytyminen Javassa 9.1

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

Javan perusteita. Janne Käki

812341A Olio-ohjelmointi Peruskäsitteet jatkoa

Periytyminen (inheritance)

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

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

1. Omat operaatiot 1.1

Listarakenne (ArrayList-luokka)

Ohjelmoinnin jatkokurssi, kurssikoe

Web Services tietokantaohjelmoinnin perusteet

812347A Olio-ohjelmointi, X Reflektiivisyys

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

Ohjelmointi 2 / 2010 Välikoe / 26.3

KOHDELUOKAN MÄÄRITTELY

Tietokannat II -kurssin harjoitustyö

Osio 4: Tietovirrat. Properties- eli ominaisuustiedostot Logger: lokitietojen käsittely

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

JavaScript alkeet Esimerkkikoodeja moniste 3 (Metropolia 11/2011)

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

15. Ohjelmoinnin tekniikkaa 15.1

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

SEPA REFAKTOROINTI Antti Ahvenlampi, 57408L Erik Hakala, 57509T

UML ja luokkien väliset suhteet

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

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

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

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

Tietokannat II -kurssin harjoitustyö

Java-kielen perusteet

Java kahdessa tunnissa. Jyry Suvilehto

TIE Ohjelmistojen suunnittelu

Metodien tekeminen Javalla

Olion elinikä. Olion luominen. Olion tuhoutuminen. Olion tuhoutuminen. Kissa rontti = null; rontti = new Kissa();

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

9. Periytyminen Javassa 9.1

4. Olio-ohjelmoinista lyhyesti 4.1

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

Verkkosivut perinteisesti. Tanja Välisalo

Luokat ja oliot. Ville Sundberg

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

815338A Ohjelmointikielten periaatteet Harjoitus 5 Vastaukset

Ohjelmoinnin peruskurssien laaja oppimäärä

Javascript 2: Ohjelmointikielen ominaisuudet. Jaana Holvikivi Metropolia

Ryhmäharjoitus III: Mitä on koodaaminen? A. TIEY4 Tietotekniikkataidot, kevät 2017 Tehdään ryhmäharjoitustunnilla 20.3.

Ohjelmoinnin peruskurssien laaja oppimäärä

Harjoitus 3: Flash-komponenttiarkkitehtuuri ( )

Java ja grafiikka. Ville Sundberg

Informaatioteknologian laitos Olio-ohjelmoinnin perusteet / Salo

Turnitin-ohjelma käyttö opettajana Turnitin.comissa

Ohjelmoinnin peruskurssien laaja oppimäärä

Attribuutit. Copyright IT Press Tämän e-kirjan kopiointi, tulostaminen ja jakeleminen eteenpäin luvatta on kielletty.

Luokan muodostimet (Constructors)

Delegaatit ja tapahtumakäsittelijät

Ohjelmoinnin perusteet Y Python

Metodit Arvotyyppi. Metodit Arvotyyppi. Metodit Parametrit. Metodit Parametrit. Metodit Kuormittaminen. Metodit Kuormittaminen. Javan perusteet

19. Olio-ohjelmointia Javalla 19.1

Olio-ohjelmointi: Luokkien toteuttaminen. Jukka Juslin

Harjoitus Olkoon olemassa luokat Lintu ja Pelikaani seuraavasti:

Solidity älysopimus ohjelmointi. Sopimus suuntautunut ohjelmointi

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

Jypelin käyttöohjeet» Ruutukentän luominen

YHTEYSSUHDE (assosiation)

Java-API, rajapinnat, poikkeukset, UML,...

Luokan sisällä on lista

Liite 1. Projektin tulokset (Semaforit Javassa) Jukka Hyvärinen Aleksanteri Aaltonen

C# olio-ohjelmointi perusopas

Tapahtumapohjainen ohjelmointi. Juha Järvensivu 2007

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

Rinnakkaisohjelmointi, Syksy 2006

RINNAKKAINEN OHJELMOINTI A,

Rinnakkaisohjelmointi kurssi. Opintopiiri työskentelyn raportti

Ohjelmoin*kielet ja - paradigmat 5op. Markus Norrena

T Henkilökohtainen harjoitus: FASTAXON

Kertaus: yleistys-erikoistus ja perintä

15. Ohjelmoinnin tekniikkaa 15.1

Ohjelmassa henkilön etunimi ja sukunimi luetaan kahteen muuttujaan seuraavasti:

Transkriptio:

Ohjelmointikielet ja -paradigmat 5op Markus Norrena

Ko#tehtävä 4 Viimeistele "alkeellinen kuvagalleria". Käytännössä kaksi sivua Yksi jolla voi ladata kuvia palvelimelle (file upload) Toinen jolla ladattuja kuvia voi katsoa (ja selata) Tallenna tietokantaan tiedot ladatuista kuvista

Kotitehtävä 5 "Framework" Selvittele ja suunnittele, mihin valitsemasi Framework soveltuu ja mikä olisi sinua kiinnostava kokeiluprojekti? Esittele ensi kerralla suunnitelma mitä aiot Frameworkilla toteuttaa kurssin aikana (7 kertaa jäljellä) Suunnitelman tulee sisältää viikkokohtainen edistymisaikataulu! Palauta suunnitelmasi Facebook-ryhmäämme (Tiedostot -kohtaan).

Tämän päivän teema Olio-ohjelmoinnin aloitus

Olio-ohjelmointi: PHP Olio-ohjelmointi on eri tapa suunnitella ohjelmistoja kuin proseduraalinen ohjelmointi PHP5:ttä (2004) varten kirjoitettiin koko olio-osio PHP:ssä uusiksi ja siitä tuli aito olio-ohjelmointikieli. Olio-ohjelmoinnin peruskäsitteitä ovat luokka, olio, metodi ja perintä.

Luokka, olio ja metodi Luokka (class) määrittelee jonkun tietyn oliojoukon yhteiset piirteet. Olio on luokan ilmentymä, instanssi. $yhteys = new PDO(); Luo ilmentymän (olion) luokasta PDO ja sijoittaa viittauksen siihen muuttujaan $yhteys

Luokka, olio ja metodi Luokka määrittelee, millaista tietoa olio sisältää (luokan muuttujat) ja miten sitä voi käsitellä (luokan metodit / funktiot). $yhteys = new PDO(); // luo ilmentymän luokasta $yhteys->setattribute(); // kutsuu luokan sisäistä setattribute metodia (funktiota) $kysely = $yhteys->prepare(); // kutsuu prepare funktiota luokasta

Kokeilkaa esimerkkiä Simple <?php class SimpleClass { Class definition // property declaration public $var = 'oletusarvo muuttujalle'; }?> // method declaration public function displayvar() { } echo $this->var;

Luodaan olio ja kokeillaan sen <?php class SimpleClass { // property declaration metodia public $var = 'oletusarvo muuttujalle'; } // method declaration public function displayvar() { echo $this->var; } $olio = new SimpleClass(); $olio->displayvar();?>

Simple Class definition Mitä äsken tapahtui? Mikä koodissa oli yllättävää tai kummallista? Mikä ihmetyttää? Kysymyksiä?

Simple Class definition Basic class definitions begin with the keyword class, followed by a class name, followed by a pair of curly braces which enclose the definitions of the properties and methods belonging to the class. A class may contain its own constants, variables (called "properties"), and functions (called "methods").

Simple Class definition The pseudo-variable $this is available when a method is called from within an object context. $this is a reference to the calling object. To create an instance of a class, the new keyword must be used. Classes should be defined before instantiation. http://php.net/manual/en/ language.oop5.basic.php

Lyhyesti suomeksi Olio kuuluu luokkaan joten aluksi on määriteltävää luokka Luokan ilmentymä luodaan avainsanalla new Luokka sisältää metodeja ja muuttujia Metodi = funktio joka sijaitsee luokan sisällä

Jokaiseen PHP-hommaan ei kannata yrittää olio-ohjelmointia. Yksinkertaiselle sivustolle, olio-ohjelmointi vain monimutkaistaa kehitystä turhaan Mutta monimutkaiseen ja laajaan palveluun, olio-ohjelmointi mahdollistaa yksinkertaisuuden.

PHP:n olio-manuaalisivu Sisältää ohjeita ja esimerkkejä: http://php.net/manual/en/language.oop5.php

Kokeilkaa <?php class Person { } function say_hello() { } echo "Hello from inside the class ". get_class($this).".<br>"; function hello() { } $this->say_hello(); $person = new Person(); $person->say_hello(); $person->hello();?>

Muuttakaa äskeistä Lisätkää Person luokkaan Etunimi ja Sukunimi muuttujat Luokaa koko_nimi metodi joka tulostaa olion kokonimen Luokaa pari oliota,määritelkää niille etu- & sukunimet ja tulostakaa ne koko_nimi metodilla

Vihje: näin pitäisi toimia <?php $person = new Person(); $person->etunimi = 'Liisa'; $person->sukunimi = 'Ricardo'; $new_person = new Person(); $new_person->etunimi = 'Eino'; $new_person->sukunimi = 'Merisaari'; echo $person->koko_nimi()."<br />"; echo $new_person->koko_nimi()."<br />";?>

Esimerkkivastaus <?php class Person { var $etunimi; var $sukunimi; function say_hello() { echo "Hello from inside the class ". get_class($this).".<br />"; } }?> function koko_nimi() { } echo $this->etunimi. " ". $this->sukunimi;

Muita työkaluja - kokeilkaa <?php echo get_class($person). "<br />"; if(is_a($person, 'Person')) { echo "Yup, it's a Person.<br />"; } else { echo "Not a Person.<br />"; } $vars = get_class_vars('person'); foreach($vars as $var => $value) { } echo "{$var}: {$value}<br />"; echo property_exists('person', 'etunimi')? 'true' : 'false';?>

Olioihin viittaaminen $person = new Person(); $customer = $person; Huom! Tämä luo kopion oliosta, joka saattaa viedä hyvin paljon muistia $customer = &$person; Parempi: luo viittauksen olioon kopioimatta sitä Nämä toimivat sitten samalla tapaa: echo $person->koko_nimi(); echo $customer->koko_nimi();

Konstruktori Konstruktori suoritetaan aina kun olio luodaan Sopiva esim. kaikenlaisten alkuarvojen asettamiseen Konstruktorin nimi on aina construct Tässä esim. jossa olion ilmentymälle välitetään alkuarvo konstruktorin avulla:

Konstruktori esim. Kokeilkaa! <?php class Henkilo { var $nimi; function construct($nimi) { } $this->nimi = $nimi; } function puhu() { } echo "Hei, nimeni on {$this->nimi}! <br>"; $aapeli = new Henkilo("Aapeli"); $maija = new Henkilo("Maija"); $aapeli->puhu(); $maija->puhu();?>

Muuttakaa äskeistä Muuttakaa Henkilo luokkaa jotta siinä on etunimi, sukunimi ja ika attribuutit voitte poistaa nykyisen nimi attribuutin Muuttakaa konstruktoria, jotta uuden olion voi luoda tällaisella käskyllä $mina = new Henkilo('John', 'Doe', 1234); Muuttakaa puhu metodia jotta se tulostaisi äskeisillä arvoilla Hei, nimeni on Doe, John Doe. Olen 1234 vuotta! Luokaa muutamia eri olioita (new käskyllä.)

Konstruktori eri kielissä in Java a constructor just has the same name as the class python method name is new in ruby the constructor method name is initialize

Eri ohjelmointikielissä PHP $fred = new Customer();

Olioiden suunnittelu, UML

Kotitehtävä 6, toteuttakaa alla olevan luokka ja attribuutit (muuttujat)

Kotitehtävä 6, toteuttakaa alla olevan luokka ja attribuutit (muuttujat) Kuvan luokan jokaisella oliolla on balance, eri olioissa (ilmentymissä) on tieto mikä tämä on (500$, -50$ tai muu)

Kotitehtävä 6, toteuttakaa alla olevan luokka ja attribuutit (muuttujat) Huom! Kuvan metodeja ei tarvitse vielä tehdä! Luokaa luokka ja sen ilmentymät (oliot) Syöttäkää arvot ja tehkää ohjelma joka tulostaa nämä arvot näytölle. Palauttakaa koodinne Markukselle sähköpostitse.

"Framework" kotitehtävä Framework Kerro mitkä ovat tavoitteesi ensi kerraksi. Ensi kerralla katsotaan taas edistymistänne.

Ensi kerralla mm. Enkapsulointi / näkyvyys Private / protected / public / static Perintä Extends, child, parent