You are on page 1of 19

Sin

ngleton
InternalStruct

tcall()

In
nternalItera
ator

+ st: boo
ol
+ ct: int

ELTE-IK
ELTE
IK
Programozsi
g
technolgia
g 1.
2. gyakorlat:
Programozsi paradigmk, az
objektumorientlt
bj kt
i tlt programozs

2008.09.17. Giachetta Roberto


groberto@inf.elte.hu
http://people.inf.elte.hu/groberto
p p p
g

Sin
ngleton
In
nternalItera
ator

tcall()

+ st: boo
ol
+ ct: int
InternalStruct

Programozsi paradigmk
A szoftverfejleszts sorn a legfbb cl, hogy a ksz
programrendszer megfeleljen a funkcionlis s minsgi
kvetelmnyeknek
Emellett,
Emellett a fejlesztk szmra fontos,
fontos hogy a ksz szoftver
fejlesztse a lehet legoptimlisabb legyen
a szoftverfejlesztsi modell meghatrozza a fejleszts
mdjt s menett
azt nem,
nem hogy milyen legyen a fejleszts stlusa,
stlusa milyen
absztrakcis szinten trtnjen a megvalsts, hiszen ezek
a tnyezk nem hatrozzk meg a szoftvert nmagt
nmagt, csak
a fejleszts folyamatt
A szoftverek tervezsnek s programozsnak mdszert
nevezzk programozsi paradigmnak
2. gyakorlat: Programozsi paradigmk, objektumorientci

2008.09.17.

Sin
ngleton
In
nternalItera
ator

tcall()

+ st: boo
ol
+ ct: int
InternalStruct

Programozsi paradigmk
A paradigma meghatrozza a programozs stlust s az
absztrakcis szintet
Vannak ltalnos cl, s szk krben alkalmazott
paradigmk minden adott feladatra megtallhat a legjobban
paradigmk,
alkalmazhat paradigma, vagy paradigmk
ltalban az elemzsi szakasz vgn clszer meghatrozni
az alkalmazni kvnt paradigmkat (egy projekten bell akr
programegysgenknt alkalmazhatunk ms paradigmt)
a paradigma meghatrozza az alkalmazhat programozsi
nyelvek krt is,
is s fordtva
egyes programozsi nyelvek tbb paradigmt is
tmogatnak gy a programozsi nyelv szempontjbl is
tmogatnak,
meghatrozhatjuk
2. gyakorlat: Programozsi paradigmk, objektumorientci

2008.09.17.

imperatv

funkcionlis

procedurlis

Sin
ngleton
In
nternalItera
ator

deklaratv(ler)

relcis(logikai)

InternalStruct

tcall()

+ st: boo
ol
+ ct: int

Elsdleges programozsi paradigmk

k l
korltozott

folyamalap

strukturlt

objektumorientlt
bj k
i l

2. gyakorlat: Programozsi paradigmk, objektumorientci

2008.09.17.

Sin
ngleton
In
nternalItera
ator

tcall()

+ st: boo
ol
+ ct: int
InternalStruct

Elsdleges programozsi paradigmk


Deklaratv:
a program a tartalmt
tartalmt, megjelenst rja le,
le nem pedig a
funkci mdjt
ltalban nem alkalmas teljes rtk programok rsra,
rsra
mert nem Turing teljes (azaz nem kpes minden feladatot
elvgezni)
megszokott alkalmazsi terlete konfigurcis fjlok,
interfsz felletek programozsra,
programozsra ezrt rendszerint
kiegsztsknt szolgl ms paradigma hasznlata mellett
deklaratv nyelvek: XSLT (XML)
(XML), HTML
HTML, XAML
XAML, SQL
egyes funkcionlis nyelvek is tmogatjk deklaratv
rszek rst (pl.
(pl LISP,
LISP Erlang,
Erlang Prolog),
Prolog) illetve imperatv
nyelvekben is elfordulhatnak deklaratv rszek (pl.
LINQ)
2. gyakorlat: Programozsi paradigmk, objektumorientci

2008.09.17.

Sin
ngleton
In
nternalItera
ator

tcall()

+ st: boo
ol
+ ct: int
InternalStruct

Elsdleges programozsi paradigmk


Funkcionlis:
a programfuts matematikai fggvnyek kirtkelsnek
sorozata, alapja a lambda-kalkulus
nincsenek benne llapotok s vltoz adatok,
adatok gyakori a
rekurzi, knny a prhuzamosts
korbban csak kutatsokban alkalmaztk
alkalmaztk, mostansg
megjelenik a piaci szoftverekben is
a nagyobb absztrakcis szint miatt magasabb az
erforrsigny, de rvidebb a programkd
funkcionlis nyelvek: LISP
LISP, Erlang,
Erlang Clean,
Clean Haskell,
Haskell R,
R
Mathematica
egyes imperatv nyelvekben lehet szimullni
fggvnymutatk s lambda-fggvnyek segtsgvel
2. gyakorlat: Programozsi paradigmk, objektumorientci

2008.09.17.

Sin
ngleton
In
nternalItera
ator

tcall()

+ st: boo
ol
+ ct: int
InternalStruct

Elsdleges programozsi paradigmk


Relcis, logikai:
a program logikai kirtkelsek sorozata,
sorozata ltalban
implikcikon keresztl
a programoz feladat,
feladat hogy a program igaz
igaz legyen
legyen, s
megfelelen hatkony
logikai nyelvek: Prolog,
Prolog Oz,
Oz Castor for C++
Korltozott:
nem a megolds
ld mdjt,
djt hanem
h
a megoldand
ld d problma
bl
tulajdonsgait rja le, a vltozk kapcsolatt
korltozsokon keresztl adja meg
korltozott nyelvek: B-Prolog, CHIP, Claire
imperatv
i
t nyelvek
l k kln
kl programknyvtrakkal
k t kk l
tmogatjk: Choco (Java), Disolver (C++)
2. gyakorlat: Programozsi paradigmk, objektumorientci

2008.09.17.

Sin
ngleton
In
nternalItera
ator

tcall()

+ st: boo
ol
+ ct: int
InternalStruct

Elsdleges programozsi paradigmk


Folyam alap:
a program fekete doboz jelleg alkalmazsok hlzata,
hlzata
amelyek zenetkldssel kommuniklnak egymssal
az egyes folyamatok prhuzamosan,
prhuzamosan aszinkron mdon
futnak, s informcis csomagokat fogadnak, illetve
kldenek
nyelvek: Linda, FBP
Imperatv:
a program utastsok sorozata, amelyek
llapotvltozsokat okoznak,
okoznak gy a program az llapotok
mentn rhat le
a feladat megvalstsnak lpseit rja le,
le azaz milyen
akcik sorozatt kell vgrehajtani, ezrt ltalban kizrja
a programkdban val ugrsok (GOTO) lehetsgeit
2. gyakorlat: Programozsi paradigmk, objektumorientci

2008.09.17.

Sin
ngleton
In
nternalItera
ator

tcall()

+ st: boo
ol
+ ct: int
InternalStruct

Elsdleges programozsi paradigmk


Procedurlis:
az imperatv elv tovbbfejlesztse,
tovbbfejlesztse az utastsok
eljrsokba vannak csoportostva (a program
modularizlva van),
van) s ezen eljrsok sszessge oldja
meg a feladatot
a procedurlis megkzelts elnyei:
kd jrahasznosts
programkd knny nyomon kvetse
kvetse, gyors
ttekinthetsge
a programszerkezet struktrjnak tetszleges
kialaktsa
procedurlis nyelvek: Fortran,
Fortran C,
C Ada
Ada, BASIC
BASIC, Pascal,
Pascal
PHP, Python, ECMAScript
2. gyakorlat: Programozsi paradigmk, objektumorientci

2008.09.17.

Sin
ngleton
InternalStruct

tcall()

In
nternalItera
ator

+ st: boo
ol
+ ct: int

10

Elsdleges programozsi paradigmk


Strukturlt:
a procedurlis programozs egy vltozata
a programok olyan rszegysgekre tagoldik, egy
belpsi ponttal,
ponttal s egy kilpsi ponttal
tervezsnl fellrl lefel megkzelts, azaz a f
problmt bontjuk rszekre
rszekre, s azokat tovbbi rszekre,
rszekre
satbbi
a programban hasznlt adatstruktrk a
programegysgeknek megfelelen strukturldnak
Objektum-orientlt:
Objektum orientlt:
a programegysget egymssal kommunikl objektumok
sszessge adja
adja, amelyek valamilyen relciban llnak
egymssal
2. gyakorlat: Programozsi paradigmk, objektumorientci

2008.09.17.

Sin
ngleton
InternalStruct

tcall()

In
nternalItera
ator

+ st: boo
ol
+ ct: int

11

Programozsi paradigmk
Vannak gynevezett msodlagos programozsi paradigmk,
amelyek a programozst stlust nagyban befolysoljk
befolysoljk, pl.:
pl :
esemnyvezrelt: a programfuts mentett az
interfszeken keresztl rkez esemnyek vezrlik
folyamat alap: a programban egymssal prhuzamosan
fut folyamatok kommuniklnak
iteratv: a feladatot iteratvan oldja meg, rekurzv hvs
nlkl
rekurzv: a feladatot rekurzv hvsok sorozatval oldja
meg
sablon programozs: az adatszerkezetek sablonokon
keresztl llnak ssze
meta programozs: a folyamatot a program
metainformcis (programmanipulcis) szinten vezrli
2. gyakorlat: Programozsi paradigmk, objektumorientci

2008.09.17.

Sin
ngleton
InternalStruct

tcall()

In
nternalItera
ator

+ st: boo
ol
+ ct: int

12

Objektumorientci
Az objektumorientlt programozsban a feladatot nem
fellrl lefel,
lefel hanem alulrl felfel oldjuk meg,
meg azaz
azonostjuk azon alkotelemeket, amelyek a vgrehajtsban
rszt vesznek, s ezek kapcsolatnak, kommunikcijnak
mdjt trjuk fel
az alkotelemek kln nll egysgeket alkotnak,
alkotnak
amelyek adott feladatok elvgzsre alkalmasak, s bels
vltozkkal s mveletekkel rendelkeznek, amelyekkel
klnbz llapotokat vehetnek fel
a kommunikci zenetkldseken keresztl valsul meg
ltalban nagyobb feladatok megoldsra alkalmazhat,
amelyek procedurlis mdon tl komplikltnak
bizonyulnak
2. gyakorlat: Programozsi paradigmk, objektumorientci

2008.09.17.

Sin
ngleton
InternalStruct

tcall()

In
nternalItera
ator

+ st: boo
ol
+ ct: int

13

Objektumorientci
A val vilg modellezsbl indul ki
Elszr a 60
60-as
as vekben tnt fel a Simula programozsi
nyelvben az objektumorientlt tmogats, majd a 80-as
vekben megjelent az els teljesen objektumorientlt nyelv,
nyelv a
SmallTalk
Manapsg a legnpszerbb programozsi paradigma
paradigma, a
programozsi nyelvek jelents rsze tmogatja
Objektumorientlt
Obj kt
i tlt tmogatssal
t
t l rendelkez
d lk nyelvek:
l k C++,
C++
Object-C, Ada, Object Pascal (Delphi), Common LISP, F#,
Vis al Basic,
Visual
Basic PHP,
PHP ECMAScript,
ECMAScript Python,
P thon Perl,
Perl D,
D Vis
Visual
al
Prolog,
Objektumorientlt
Obj k
i l nyelvek:
l k Smalltalk,
S ll lk JAVA,
JAVA C#
C#, Eiff
Eiffel,
l
Ruby,
2. gyakorlat: Programozsi paradigmk, objektumorientci

2008.09.17.

Sin
ngleton
InternalStruct

tcall()

In
nternalItera
ator

+ st: boo
ol
+ ct: int

14

Objektumorientci alkotelemei
Osztly (Class):
az alkotelemek absztrakt jellemzit,
jellemzit karakterisztikjt,
karakterisztikjt
azaz tpust adja meg (tekinthet egy tervrajznak is,
amely alapjn a pldnyokat le lehet gyrtani)
megadja, milyen rszekbl, s rtkekbl llhat egy
alkotelem s milyen tevkenysgre kpes (milyen
alkotelem,
mveleteket tud futtatni)
tekinthet vltozk (konstansok) s eljrsok
(fggvnyek) gyjtemnynek
az osztly vltozit attribtumoknak,
attribtumoknak az eljrsokat
pedig metdusoknak nevezzk
az osztly biztostja a program modularitst

2. gyakorlat: Programozsi paradigmk, objektumorientci

2008.09.17.

Sin
ngleton
InternalStruct

tcall()

In
nternalItera
ator

+ st: boo
ol
+ ct: int

15

Objektumorientci alkotelemei
az osztlynak kell biztostania egy kls felletet (export
interface) amely a klvilg (a tbbi objektum) szmra
interface),
lthat, s amelyen keresztl a kommunikci lezajlik, az
osztly tbbi rszt el kell rejteni a klvilgtl
pl. kutya, villamos, aut
Objektum (Object):
az osztly egy pldnya, amely konkrt rtkekkel br, s
meghatrozza az egyedet
tnylegesen ilyen jnnek ltre s mkdnek a program
futsa sorn
sorn, s mindegyikk nll llapotokkal
rendelkezik
egy objektumokhoz tetszleges szm tovbbi objektum
is kapcsoldhat
pl.
pl Lassie,
Lassie 2025-s
2025 s Combino,
Combino AII-911-es
AII 911 es rendszm aut
2. gyakorlat: Programozsi paradigmk, objektumorientci

2008.09.17.

Sin
ngleton

rklds:
az osztlyoknl megszabhatunk ltalnosabb
ltalnosabb, illetve
specilisabb osztlyokat, ahol a specilisabbak
rendelkeznek minden tulajdonsggal
tulajdonsggal, amivel az
ltalnosabb vltozat
pl.:
pl :
ltalnos

llnyy

tcall()

In
nternalItera
ator

+ st: boo
ol
+ ct: int

Objektumorientci alkotelemei

ggerinces

kutya
y

sktjuhsz
j

InternalStruct

specilis
llegzik
vangerincoszlopa
ugat
hossz szr
hosszszr
16

2. gyakorlat: Programozsi paradigmk, objektumorientci

2008.09.17.

Sin
ngleton
InternalStruct

tcall()

In
nternalItera
ator

+ st: boo
ol
+ ct: int

17

Objektumorientci alkotelemei
ezt a folyamatot, amikor a specilisabb tveszi az
ltalnos jellemzit s mkdst,
mkdst rkldsnek
nevezzk
az rklds kt irnyt specializcinak
specializcinak, illetve
ltalnostsnak nevezzk, az ltalnosabb objektumot
snek, a specilisabbat leszrmazottnak nevezzk (ha
csak egy szint a klnbsg, akkor szlnek, illetve
gy
gyereknek)
)
ltalban egy szlnek tbb gyereke is van, m csak
egyes esetekben
ese e be engedlyezett,
e ged ye e , hogy
ogy egy gyereknek
gye e e tbb
bb
szlje is legyen (ezt tbbszrs rkldsnek nevezzk)
tbbszrs rklds sorn a gyerek megkaphatja
minden szlje minden tulajdonsgt, illetve
szablyozhatjuk,
y
j , hogy
gy melyik
y stl melyeket
y
kapja
pj
2. gyakorlat: Programozsi paradigmk, objektumorientci

2008.09.17.

Sin
ngleton
InternalStruct

tcall()

In
nternalItera
ator

+ st: boo
ol
+ ct: int

18

Objektumorientci alkotelemei
Absztrakci:
az objektumok tetszleges reprezentlsa lehetv teszi,
teszi
hogy az adott problmt tbb szinten kezeljk, azaz az
sszes lehetsges tulajdonsgnak egy tetszleges
halmazt vlasszuk ki, s azokat hasznljuk az
brzolsban
a reprezentcis szint megvlasztsa jelenti az
absztrakci szintet
a szmunkra lnyeges tulajdonsgokat megtartjuk, a
lnyegteleneket elhagyjuk
pl.: az autt brzolhatjuk rendszmmal, sebessggel s
tmeggel vagy brzolhatjuk,
tmeggel,
brzolhatjuk mint motor s karosszria
sszessge, vagy akr minden egyes alkatrszt klnkln vehetnk
2. gyakorlat: Programozsi paradigmk, objektumorientci

2008.09.17.

Sin
ngleton
InternalStruct

tcall()

In
nternalItera
ator

+ st: boo
ol
+ ct: int

19

Objektumorientci alkotelemei
Polimorfizmus:
ha egy objektum olyan osztlynak pldnya,
pldnya amelynek
tbb se is van, akkor az az objektum tekinthet brmely
snek pldnyaknt is
ezltal lehetv vlik, hogy egy objektumnak tbb
osztlya is legyen,
legyen s aktulisan azt az osztlyt
hasznljuk, amely az aktulis krnyezetbe beleillik
pl.:
pl : ha egy raktrben vegyesen akarunk autkat s
motorokat elhelyezni, akkor azt mondjuk, hogy
egysgesek szemlygpjrmveket helyeznk el
(amelynek mindkett specilis esete)
pl.:
pl : ha egy koordinta rendszerben krket s ngyzeteket
is akarunk rajzolni, akkor egysgesen geometriai
alakzatokat rajzolunk
2. gyakorlat: Programozsi paradigmk, objektumorientci

2008.09.17.

You might also like