Luokat ja oliot Ville Sundberg 12.9.2007
Maailma on täynnä olioita
Myös tietokoneohjelmat koostuvat olioista Σ Ο ω Μ ς υ φ Ϊ Φ Θ ψ Љ Є Ύ χ Й
Mikä on olio? Tietokoneohjelman rakennuspalikka Oliolla on kaksi puolta Olioon liittyvä tieto eli attribuutit Olioon liittyvä toiminnallisuus eli metodit Oliot sijaitsevat tietokoneen muistissa ohjelman suorituksen aikana
Miksi tietokoneohjelmia on? -Jokaisella on tehtävä
Myös jokaisella oliolla on oma tehtävänsä
Kuva: http://www.dailyclipart.net Kukkia Brasiliaan?
Mihin olioita tarvitaan? Σ Μ υ φ Ο ω ς Ϊ ψ Є χ Φ Θ Љ Ύ Й
Olio kuuluu luokkaan... Jaakko on Kukkakauppias Olio Luokka...toisin sanoen: Olio on luokan ilmentymä.
Luokilla on yläluokkia Ihminen Kauppias Opettaja Taiteilija Kukkakauppias Lihakauppias Kemianopettaja Kirjailija Näyttelijä Jaakko
Tarkennus: olio kuuluu luokkaan... Ihminen Jaakko Kukkakauppias...ja kaikkiin sen yläluokkiin!
Luokka: olion piirustukset Luokassa määritellään ominaisuudet eli attribuutit taidot eli metodit Kauppias Ominaisuudet Nimi Kaupan osoite Taidot Osaa myydä
Olio: valmis talo Kauppias Jaakko Pedro Ominaisuudet Nimi: Jaakko Kaupan osoite: Merenkäynti 5 Taidot Osaa myydä Ominaisuudet Nimi: Pedro Kaupan osoite: Rio Branco 42 Taidot Osaa myydä
Java-luokka käytännössä.java-tiedosto Luokka Attribuutit Metodit
Pintaa syvemmältä Jaakko Ominaisuudet Nimi: Jaakko Kaupan osoite: Merenkäynti 5 Mitä nämä ovat? Taidot Osaa myydä
Yksinkertainen luokka class Ihminen { String nimi; String annanimi() { return nimi; Tämä on luokka (class). Luokan nimi on Ihminen. Joka ihmisellä on nimi. Nimi on merkkijono, Javassa String. Ihminen osaa kertoa nimensä. Luokka alkaa aaltosulkeesta ja päättyy sellaiseen.
Metodi String annanimi() { return nimi; Kun tätä metodia kutsutaan, se palauttaa jonkin merkkijonon (String). Metodin nimi on annanimi. Metodia voi kutsua vain yhdellä tavalla ilman parametreja. Metodi palauttaa ihmisen nimen. Metodi alkaa aaltosulkeesta ja päättyy sellaiseen.
Konstruktori class Ihminen { String nimi; Ihminen(String s) { nimi = s; String annanimi() { return nimi; Metodi, jonka nimi on sama kuin luokan nimi, on konstruktori. Metodille annetaan parametrina jokin merkkijono, jota merkitään tunnuksella s. Ihminen saa nimekseen merkkijonon s.
Pääohjelmametodi class Ihminen { String nimi; Ihminen(String s) { nimi = s; String annanimi() { return nimi; public static void main(string[] args) { Ihminen joku = new Ihminen( Jaakko ); Metodi, jolla on täsmälleen nämä määreet, on pääohjelmametodi. Luodaan uusi ihmisolio, jonka nimi on Jaakko...... ja tallennetaan se muuttujaan, jonka nimi on joku.
Metodin kutsuminen public static void main(string[] args) { Ohjelman suoritus alkaa pääohjelmametodista ja jatkuu rivi kerrallaan. Ihminen joku = new Ihminen( Jaakko ); String jonkunnimi = joku.annanimi(); Metodin kutsuminen siirtää suorituksen kutsuttuun metodiin, mistä suoritus palaa metodin päätyttyä. Tässä kutsutaan ihmisen konstruktoria. Tässä taas annanimi-metodia. Piste toimii erotinmerkkinä.
Tulostaminen public static void main(string[] args) { Ihminen joku = new Ihminen( Jaakko ); Tähän saakka ohjelman suoritus on ollut näkymätöntä. System.out on Java-olio, joka osaa kirjoittaa tekstikonsoliin. String jonkunnimi = joku.annanimi(); System.out.println(jonkunNimi); Metodi println (print line) kirjoittaa konsoliin rivin. println ottaa parametrina jonkin, minkä tahansa, merkkijonon.
Toimiva ohjelma class Ihminen { String nimi; Ihminen(String s) { nimi = s; Mitä ohjelmamme tulostaa? Ohjelma toimii, mutta tavallaan se ei ole vielä valmis. String annanimi() { return nimi; public static void main(string[] args) { Ihminen joku = new Ihminen( Jaakko ); String jonkunnimi = joku.annanimi(); System.out.println(jonkunNimi);
Näkyvyysmääreet public class Ihminen { Näkyvyysmääre ilmoittaa, kenellä on oikeus käyttää oliota tai sen osaa. private String nimi; public String annanimi() { return nimi; Tätä luokkaa saa käyttää kuka tahansa. Ihmisen nimen näkee vain ihmisolio itse (ja vain ihminen itse voi muuttaa sitä) Tätä metodia voi käyttää kuka tahansa. Nyrkkisääntö: Luokat ovat julkisia. Attribuutit ovat yksityisiä. Metodit ovat julkisia, jos ne tuottavat ulkopuolelle jonkin palvelun.
Tehtävä: essee Aihe: luokat ja oliot Javassa Deadline 22.9. klo 18 Kirjoittakaa huolella ja muistakaa lähdeviitteet! http://www2.cs.hut.fi/~studio1/tehtavat/essee_cmap_1