po w13 utf8 id 557611 Nieznany

background image

Rub

y

(2)

Dynami zne

p

rogramo

w

anie

obiekto

w

e

background image

Rub

y

deni ja

klasy

lass

Osoba

...

end

background image

Rub

y

skª

ado

w

e

klasy

atrybut

y

obiektó

w

-

zmienne,

któ

ry h

zakresem

jest

obiekt,

i h

nazwy

rozp

o

zynaj¡

si

o

d

znaku



atrybut

y

klasy

-

zmienne,

któ

ry h

zakresem

jest

klasa,

i h

nazwy

rozp

o

zynaj¡

si

o

d

znak

ó

w



meto

dy

obiektu

to

funk

je

wyw

oªyw

ane

w

k

ontek± ie

obiektu,

maj¡

dostp

do

wszystki h

inny h

skª

ado

wy h

obiektu

i

klasy

meto

dy

klasy

to

funk

je

wyw

oªyw

ane

w

k

ontek± ie

klasy

,

maj¡

dostp

do

wszystki h

skª

ado

wy h

klasy

lass

Osoba

def

initialize(imie,nazwisko)

imie

=

imie

nazwisko

=

nazwisko

end

end

background image

Rub

y

k

onstrukto

r

k

onstrukto

r

to

meto

da

o

nazwie

initialize

k

onstrukto

r

mo»e

b

t

ylk

o

jeden

(w

Rub

ym

nie

mo»na

p

rze i¡»a¢

nazw

meto

d)

lass

Osoba

def

initialize(imie,

nazwisko)

imie

=

imie

nazwisko

=

nazwisko

end

end

background image

Rub

y

atrybut

y

obiektó

w

atrybutó

w,

p

o

dobnie

jak

inny h

zmienny h,

nie

dekla

ruje

si

atrybut

t

w

o

rzy

si

p

rzypisuj¡

do

niego

w

a

rto±¢

zesta

w

atrybutó

w

obiektu

nie

jest

ustalony

lass

Osoba

def

initialize(imie,

nazwisko)

imie

=

imie

nazwisko

=

nazwisko

end

def

nadaj_pesel(imie)

pesel=pesel

end

end

osoba

=

Osoba.new("Jan","Kowals ki" )

#

obiek

osoba

ma

2

atrybuty

osoba.nadaj_pesel("1234 5678 ")

#

obiekt

osoba

ma

3

atrybuty

nazwisko

background image

Rub

y

dynamik

a

obiektu

aktualn¡

list

atrybutó

w

mo»na

sp

ra

wdzi¢

za

p

omo

¡

meto

dy

instan e_variables

(meto

da

klasy

Obje t

-

patrz

te»

inne

meto

dy

tej

klasy)



o

=

Osoba.new("Jan"

,"

Kow

al

sk

i")

=>

#<Osoba:0x81 31f

0

imie="Jan",

nazwisko="Kowa

lsk

i"

>



o.instan e_variab

le

s

=>

[:imie,

:nazwisko℄



o.nadaj_pesel("12

34

56

78"

)

=>

"12345678"



o.instan e_variab

le

s

=>

[:imie,

:nazwisko,

:pesel℄

background image

Rub

y

dynamik

a

obiektu

Mo»liw

e

jest

te»

do

da

w

anie

p

ojedyn zemu

obiekto

wi

meto

d.



b=Obje t.new

=>

#<Obje t:0x82397

60

>



def

b.moja()

p

rint

"T

ylk

o

ja

to

umiem!"

end

=>

nil



b.moja

Tylko

ja

to

umiem!



b.singleton_metho

ds

#

lista

metod

wªasny h

obiektu

=>

[:moja℄

background image

Rub

y

Programo

w

anie

obiekto

w

e

opa

rte

na

p

rotot

ypa h

Programo

w

anie

obiekto

w

e

opa

rte

na

p

rotot

ypa h

(p

rotot

yp

e-based

OOP)

to

alternat

ywne

w

ob

e

opa

rtego

na

klasa h

p

o

dej± ie

do

p

rogramo

w

ania

obiekto

w

ego.

P

o

dsta

w

o

w

e

op

era je

to:

klono

w

ane

obiektó

w

rozszerzanie

obiektó

w

Dzieki

p

ok

azanym

w

ze±niej

me hanizmom,

Rub

y

umo»liwia

stoso

w

anie

tego

st

ylu

p

rogramo

w

ania.

background image

Rub

y

Programo

w

anie

obiekto

w

e

opa

rte

na

p

rotot

ypa h:

p

rzykª

ad



b=Obje t.new

=>

#<Obje t:0x8239760>



def

b.moja()

p

rint

"Ja

to

umiem!"

end

=>

nil



b.moja

Tylko

ja

to

umiem!



=

b. lone

=>

#<Obje t:0x822894 >



.moja

Tylko

ja

to

umiem!

=>

nil



def

.t

ylk

omoja()

p

rint

"A

ja

umiem

jesz ze

to!"

end

=>

nil



.tylkomoja

A

ja

umiem

jesz ze

to!

=>

nil



b.tylkomoja

NoMethodError:

undefined

method

`tylkomoja'

for

#<Obje t:0x8239760>

from

(irb):65503

from

/usr/bin/irb1.9:12:in

`<main>'

background image

Rub

y

dynamik

a

klasy

W

trak

ie

dziaª

ania

p

rogramu

mo»na

zmo

dyk

o

w

deni j

klasy

,

na

w

et

je±li

istniej¡

ju»

obiekt

y

tej

klasy

.



lass

K;

end

=>

nil



k

=

K.new

=>

#<K:0x824d6a >



k.instan e_variables

=>

[℄



K.method_defined?(:nazwij )

=>

false



lass

K;

def

nazwij(imie)

imie

=

imie

end

end

=>

nil



K.method_defined?(:nazwij )

=>

true



k.nazwij("Jan")

=>

"Jan"



k.instan e_variables

=>

[:imie℄

background image

Rub

y

dynamik

a

klasy

Mo

dyk

o

w

mo»na

wszystkie

klasy!



lass

Array;

def

sum()

inje t(0)|a,x|

a+x

end

end

=>

nil



[1,2,3,4℄.sum

=>

10



lass

Fixnum;

def

+(x)

self*x

end

end

=>

nil



2+4

=>

8

background image

Rub

y

dynamik

a

klasy

i

obiektu:

realiza ja

klasa

jest

obiektem

(t

yp

Class)

klasa

(obiekt

klasy

-

t

ypu

Class)

p

rze ho

wuje

list

meto

d

(lista

ta

mo»e

si

zmienia¢),

list

atrybutó

w

klasy

(lista

ta

mo»e

si

zmienia¢)

o

raz

referen j

do

nadklasy

(innego

obiektu

t

ypu

Class)

obiekt

(instan ji

klasy)

p

rze ho

wuje

referen j

do

obiektu

sw

ojej

klasy

(obiekt

ten

mo»e

ulega¢

mo

dyk

a ji)

o

raz

list

zmienny h

obiektu

(lista

ta

mo»e

si

zmienia¢)

background image

Rub

y

dziedzi zenie

dziedzi zenie

jednokrotne

skª

adnia:

lass

A

<<

B

...

end

wyw

anie

k

onstrukto

ra

nadklasy:

super(

pa

rametry

)

background image

Rub

y

klasy

anonimo

w

e

Mo»liw

e

jest

denio

w

anie

nienazw

anej

klasy

t

ylk

o

dla

p

ojedyn zego

obiektu.

a

=

nil

lass



a

def

hello

print

"Cze±¢,

jestem

jedyny

z

tej

klasy"

end

end

a.hello

background image

Rub

y

domieszk

o

w

anie

(mixins)

me hanizm

p

o

dobny

do

interfejsó

w

Javy

ale

ba

rdziej

elast

y zny

i

o

wiekszej

mo

y

(domieszk

a

mo»e

za

wiera¢

wszystkie

element

y

,

któ

re

mog¡

wyst¡pi¢

w

deni ji

klasy)

domieszki

mo»na

rozumie¢

jak

o

z± io

w

e

deni je

klasy

domieszki

deniuje

si

jak

o

mo

duªy

(module)

mo

duªy

mo»na

¡ za¢

do

klas

(w

do

w

olnej

ilo± i),

jak

wnie»

do

p

ojedyn zy h

obiektó

w

background image

Rub

y

doª

¡ zenie

mo

duªu

do

klasy

module

Numerowany

def

setid(id)

id=id

end

def

id

id

end

end

lass

Osoba

in lude

Numero

w

any

def

initialize(imie,

nazwisko)

imie

=

imie

nazwisko

=

nazwisko

end

end

$osoba

=

Osoba.new("Jan","Kowalski ")

$osoba.setid(12345678)

print

$osoba.id

background image

Rub

y

doª

¡ zenie

mo

duªu

do

p

ojedyn zego

obiektu

module

Numerowany

def

setid(id)

id=id

end

def

id

id

end

end

lass

Osoba

def

initialize(imie,

nazwisko)

imie

=

imie

nazwisko

=

nazwisko

end

end

osoba

=

Osoba.new("Jan","Kowals ki" )

osoba.extend

Numero

w

any

osoba.setid(12345678)

print

osoba.id

background image

Rub

y

Ew

aluo

w

anie

do

w

olnego

k

o

du

w

k

ontek± ie

obiektu

P

oza

op

era jami

zdenio

w

anymi

w

p

osta i

meto

d,

mo»liw

e

jest

ew

aluo

w

anie

do

w

olnego

k

o

du

w

k

ontek± ie

obiektu.

lass

Osoba

def

initialize(imie,

nazwisko)

imie

=

imie

nazwisko

=

nazwisko

end

end

a

=

Osoba.new("Jan","Kowals ki")

a.instan e_eval

print

imie

+

'

'

+

nazwisko

a.instan e_eval

ekstra_atrybut

=

"Hej!"

a.instan e_eval

print

ekstra_atrybut


Wyszukiwarka

Podobne podstrony:
po w9 utf8 id 557617 Nieznany
po w7 utf8 id 557615 Nieznany
po w8 utf8 id 557616 Nieznany
Po prostu PageMaker 7 id 364216 Nieznany
BD 2st 1 2 w13 tresc 1 1 id 819 Nieznany (2)
Bazy danych w13 07 id 81707 Nieznany
FW2b Ruch po okregu 07 id 18259 Nieznany
III PO 31 63 id 210327 Nieznany
PO W 5 6 II ZIN id 364233 Nieznany
Po prostu PageMaker 7 id 364216 Nieznany
PO lab 5 id 364195 Nieznany
po modernizacji id 364203 Nieznany
po w2 id 557612 Nieznany
3 Test Europa po 1815 gimn id 3 Nieznany
po w3 id 557613 Nieznany
po w1 id 364234 Nieznany
ALF po paracetamolu id 55196 Nieznany
PREZENTACJA po prostu cwicz id Nieznany

więcej podobnych podstron