• Ei tuloksia

Javan suojausmääreetJavan suojausmääreet

N/A
N/A
Info
Lataa
Protected

Academic year: 2022

Jaa "Javan suojausmääreetJavan suojausmääreet"

Copied!
3
0
0

Kokoteksti

(1)

Sopimuspohjainen olio-ohjelmointi

Sopimuspohjainen olio-ohjelmointi 2008-03-18 2008-03-18

(c) 2006-2008 Jouni Smed

(c) 2006-2008 Jouni Smed 1 1

Javan suojausmääreet Javan suojausmääreet

public  public

package  package

protected  protected

private  private

Suojausmääreiden Suojausmääreiden vaikutusalueet vaikutusalueet

X X ei-perijä

ei-perijä

X X X X perijä

perijä

Eri pakkauksessa oleva Eri pakkauksessa oleva

X X X X X X ei-perijä

ei-perijä

X X X X X X perijä

perijä

Samassa pakkauksessa oleva Samassa pakkauksessa oleva

X X X X X X X X Luokka itse

Luokka itse

public public protected protected package package private private Viittauspaikka

Viittauspaikka

Javan luokkamekanismin Javan luokkamekanismin erityispiirteitä

erityispiirteitä

  Staattinen sisäluokka Staattinen sisäluokka

 liittyy syntaktisesti ulkoluokkaansa liittyy syntaktisesti ulkoluokkaansa

 Esiintymäkohtainen sisäluokka Esiintymäkohtainen sisäluokka

 ei voi olla olemassa ilman ei voi olla olemassa ilman ulkoluokkansa instanssia ulkoluokkansa instanssia

  Nimetön luokka Nimetön luokka

 luodaan lennossa kertakäyttöisesti luodaan lennossa kertakäyttöisesti

 Literaaliluokka Literaaliluokka enum enum

 voidaan konstruoidan vain omassa voidaan konstruoidan vain omassa määrittelylohkossaan

määrittelylohkossaan

Staattinen sisäluokka Staattinen sisäluokka

  Normaali luokkamääritys, jonka otsikkoon Normaali luokkamääritys, jonka otsikkoon on kirjoitettu

on kirjoitettu static static

  Liittyy kiinteästi ulkoluokkaan Liittyy kiinteästi ulkoluokkaan

 Sisäluokalla vapaa pääsy ulkoluokan Sisäluokalla vapaa pääsy ulkoluokan piirteisiin

piirteisiin

 Sisäluokkatyyppiin viitataan Sisäluokkatyyppiin viitataan pistenotaatiolla:

pistenotaatiolla: Ulkoluokka Ulkoluokka. .Sisäluokka Sisäluokka

 Esimerkkejä Esimerkkejä

Character Character. .Subset Subset

 Map Map. .Entry Entry

Esiintymäkohtainen Esiintymäkohtainen sisäluokka

sisäluokka

Tiukka sidos sisäluokan olion ja  Tiukka sidos sisäluokan olion ja sitä vastaavan ulkoluokan olion sitä vastaavan ulkoluokan olion välille

välille

 sisäluokan olio ei voi olla olemassa sisäluokan olio ei voi olla olemassa ilman ulkoluokan oliota

ilman ulkoluokan oliota

Sisäluokan oliolla vapaa pääsy  Sisäluokan oliolla vapaa pääsy ulkoluokan olion piirteisiin ulkoluokan olion piirteisiin

Esimerkki:

Esimerkki: Pankkitili Pankkitili 1(2) 1(2)

public class

public class PankkitiliPankkitili { { private long private long numero, saldo;numero, saldo;

private private ListList<<TapahtumaTapahtuma> tilitapahtumat;> tilitapahtumat;

public enum public enum TapahtumatyyppiTapahtumatyyppi { TALLETUS, NOSTO }; { TALLETUS, NOSTO };

public classpublic class TapahtumaTapahtuma { {

private private TapahtumatyyppiTapahtumatyyppi tapahtumatyyppi; tapahtumatyyppi;

private private long saldomuutos;long saldomuutos;

public public TapahtumaTapahtuma((TapahtumatyyppiTapahtumatyyppi t, t, longlong s) { s) { tapahtumatyyppi = t; saldomuutos = s;

tapahtumatyyppi = t; saldomuutos = s;

} }

public public StringString toString() { toString() {

returnreturn numero + numero + ": "": " + tapahtumatyyppi + + tapahtumatyyppi + "(""(" + + saldomuutos +

saldomuutos + ")"")";; } }

} }

(2)

Sopimuspohjainen olio-ohjelmointi

Sopimuspohjainen olio-ohjelmointi 2008-03-18 2008-03-18

(c) 2006-2008 Jouni Smed

(c) 2006-2008 Jouni Smed 2 2

Esimerkki:

Esimerkki: Pankkitili Pankkitili 2(2) 2(2)

publicpublic PankkitiliPankkitili((longlong numero) { numero) { this this.numero = numero; .numero = numero; thisthis.saldo = 0L;.saldo = 0L;

thisthis.tilitapahtumat =.tilitapahtumat =

newnew LinkedListLinkedList<<TapahtumaTapahtuma>();>();

} }

public void public void pano( pano(longlong rahamäärä) { rahamäärä) { saldo += rahamäärä;

saldo += rahamäärä;

tilitapahtumat.add(

tilitapahtumat.add(newnew Tapahtuma(Tapahtuma(

TapahtumatyyppiTapahtumatyyppi.TALLETUS, rahamäärä));.TALLETUS, rahamäärä));

} }

public voidpublic void nosto( nosto(longlong rahamäärä) { rahamäärä) { saldo -= rahamäärä;

saldo -= rahamäärä;

tilitapahtumat.add(

tilitapahtumat.add(newnew Tapahtuma(Tapahtuma(

TapahtumatyyppiTapahtumatyyppi.NOSTO, rahamäärä));.NOSTO, rahamäärä));

} }} }

this

this-viittauksen semantiikka -viittauksen semantiikka

 Sisäluokan oliossa Sisäluokan oliossa this this viittaa viittaa normaalisti ko. olioon

normaalisti ko. olioon

 Ulkoluokan olioon viitataan Ulkoluokan olioon viitataan pistenotaatiolla

pistenotaatiolla

 esim. esim. Pankkitili Pankkitili. .this this

Nimetön luokka Nimetön luokka

JFrame

JFrame ikkuna = ikkuna = new new JFrame JFrame( ("Akkuna" "Akkuna"); );

ikkuna.addWindowListener(

ikkuna.addWindowListener(new new WindowAdapter WindowAdapter() () {

{

public void public void windowClosing( windowClosing(WindowEvent WindowEvent e) e) {

{

System System.exit(0); .exit(0);

} } } );

} );

Literaaliluokka

Literaaliluokka enum enum

  Käyttö Käyttö

 luetellut vakiot (kuten C-kielessä) luetellut vakiot (kuten C-kielessä)

 aito luokka (toisin kuin C-kielessä) aito luokka (toisin kuin C-kielessä)

 konstruktori konstruktori

 jäsenmuuttujat jäsenmuuttujat

 metodit metodit

 Literaaliluokan rajoitteet Literaaliluokan rajoitteet

 ei voida periä ei voida periä

 ei voida konstruoida kuin omassa ei voida konstruoida kuin omassa määrittelylohkossa

määrittelylohkossa

  periytyy luokasta periytyy luokasta java.lang. java.lang.Enum Enum

Luetellut vakiot Luetellut vakiot

enum

enum Presidentti Presidentti { {

STÅHLBERG, RELANDER, SVINHUFVUD, STÅHLBERG, RELANDER, SVINHUFVUD, KALLIO, RYTI, MANNERHEIM,PAASIKIVI, KALLIO, RYTI, MANNERHEIM,PAASIKIVI, KEKKONEN, KOIVISTO, AHTISAARI, HALONEN };

KEKKONEN, KOIVISTO, AHTISAARI, HALONEN };

Presidentti

Presidentti p = p = Presidentti Presidentti.PAASIKIVI; .PAASIKIVI;

System

System.out.println(p); .out.println(p);

boolean

boolean nykyinen = nykyinen =

(p == (p == Presidentti Presidentti.HALONEN); .HALONEN);

Esimerkki:

Esimerkki: Kortti Kortti 1(2) 1(2)

public final class public final class KorttiKortti { {

public enum public enum ArvoArvo { { ÄSSÄ(

ÄSSÄ('A''A', 1), KAKSI(2), KOLME(3), NELJÄ(4),, 1), KAKSI(2), KOLME(3), NELJÄ(4), VIISI(5),VIISI(5),

KUUSI(6), SEITSEMÄN(7), KAHDEKSAN(8), KUUSI(6), SEITSEMÄN(7), KAHDEKSAN(8), YHDEKSÄN(9),YHDEKSÄN(9),

KYMMENEN(10), JÄTKÄ( KYMMENEN(10), JÄTKÄ('J''J', 11),, 11), KUNINGATAR(KUNINGATAR('Q''Q', 12),, 12),

KUNINGAS( KUNINGAS('K''K', 13);, 13);

private private StringString symboli; symboli;

private int private int numeroarvo;numeroarvo;

private private ArvoArvo((char char s, s, int int a) {a) { symboli =

symboli = CharacterCharacter.toString(s); numeroarvo = a; }.toString(s); numeroarvo = a; }

private private ArvoArvo((int int a) {a) { symboli =

symboli = IntegerInteger.toString(a); numeroarvo = a; }.toString(a); numeroarvo = a; }

public public StringString annaSymboli() { annaSymboli() { return return symboli; }symboli; }

public intpublic int annaNumeroarvo() { annaNumeroarvo() { return return numeroarvo; }numeroarvo; }

}}

(3)

Sopimuspohjainen olio-ohjelmointi

Sopimuspohjainen olio-ohjelmointi 2008-03-18 2008-03-18

(c) 2006-2008 Jouni Smed

(c) 2006-2008 Jouni Smed 3 3

Esimerkki:

Esimerkki: Kortti Kortti 2(2) 2(2)

public enum public enum MaaMaa { { RISTI(

RISTI(''♣♣''), RUUTU(), RUUTU(''♦♦''), HERTTA(), HERTTA(''♥♥''), PATA(), PATA(''♠♠''););

private private StringString symboli; symboli;

privateprivate MaaMaa(char s) { symboli = (char s) { symboli = CharacterCharacter.toString(s); }.toString(s); }

publicpublic StringString annaSymboli() { annaSymboli() { returnreturn symboli; } symboli; } }

}

private final private final ArvoArvo arvo; arvo;

private final private final MaaMaa maa; maa;

private private KorttiKortti((ArvoArvo arvo, arvo, MaaMaa maa) { maa) {

thisthis.arvo = arvo; .arvo = arvo; thisthis.maa = maa; }.maa = maa; }

public public ArvoArvo arvo() { arvo() { returnreturn arvo; } arvo; }

publicpublic MaaMaa maa() { maa() { returnreturn maa; } maa; }

publicpublic StringString toString() { toString() {

returnreturn maa.annaSymboli() + arvo.annaSymboli(); maa.annaSymboli() + arvo.annaSymboli();

} } } }

Viittaukset

LIITTYVÄT TIEDOSTOT

Sosiaalipsykologisen tutkimuksen parissa usein jäsennellään identiteetti sekä henkilökohtaiseen että sosiaaliseen identiteettiin. Ensimmäisellä viitataan usein yksilön

löin viitataan Nordens folkliga akademihin sekä vapaan sivistys­. työn ja

Lyhenteellä viitataan yleisesti sekä Neuvostoliiton että sen vaikutuspiirissä olleiden maiden vanki- tai työleirijärjestelmään, jonka puitteissa muun muassa

Suomietnolla viitataan kirjan yhteydessä musiikkigenreen, jota nykyään usein kutsutaan nykykansanmusiikiksi. Sen ominaispiirteitä ovat perinteisiin sävel- tai

Maasillan mentorointia käsittelevässä artikkelissa viitataan Tampereen yliopiston harjoitteluohjausjärjestelmään (ollut muuten käytössä vuosia myös Jyväskylän

Maasillan mentorointia käsittelevässä artikkelissa viitataan Tampereen yliopiston harjoitteluohjausjärjestelmään (ollut muuten käytössä vuosia myös Jyväskylän

Havaintojen tekotapaan nähden viitataan lumi- ja jäähavainto- ohjeihin, jotka on säilytettävä sillä tavoin, että ne ovat aina helposti käsiin

Havaintojen tekotapaan nähden viitataan lumi- ja jäähavainto- ohjeihin, jotka on säilytettävä sillä tavoin, että ne ovat aina helposti käsiin