OOP - PowerPoint PPT Presentation

About This Presentation
Title:

OOP

Description:

Title: V voj aplikac a u ivatelsk ch rozhran Author: Dr. Jaroslav PELIK N Last modified by: pelikan Created Date: 9/13/1997 5:03:38 PM Document presentation ... – PowerPoint PPT presentation

Number of Views:97
Avg rating:3.0/5.0
Slides: 41
Provided by: Dr23718
Category:
Tags: oop | heap

less

Transcript and Presenter's Notes

Title: OOP


1
OOP
  • OOP (Object Oriented Programming)
  • je založeno na myšlence, že program provádí jisté
    akce nad jistými objekty, které reprezentují data
  • dovoluje vytvárení dále rozširitelných
    (otevre-ných) systému
  • Pro umožnení objektove orientovaného návr-hu
    poskytují dnešní programovací jazyky (vý-vojová
    prostredí) speciální datové typy
  • objektový typ (object) Turbo Pascal 5.0 a vyšší
  • trída (class) ObjectPascal (Delphi), C, C,
    Java

2
Programovací jazyk C
  • Vyvinutý v rámci platformy MS .NET
  • Jedná se o objektove orientovaný jazyk
  • Založen na jazycích C a Java
  • Syntaxe C je podobná syntaxi jazyka C
  • Lze jej využít k tvorbe napr.
  • desktopových aplikací
  • webových aplikací, webových služeb a stránek
  • programu pro mobilní zarízení (PDA, mobilní
    telefony)
  • databázových programu

3
Program v jazyce C
  • Tvoren trídami a jejich cleny (members)
  • Trídy a další datové typy jsou organizovány ve
    jmenných prostorech (namespace) a mo-hou být
    vnorovány do jiných tríd
  • Vstupním bodem každého programu v C je metoda
    (funkce obsažená v typu trída) Main
  • muže být v programu pouze jedna
  • jedná se o statickou metodu
  • návratovým typem muže být void nebo int
  • muže prijímat parametry z príkazové rádky OS

4
Datový typ trída class (1)
  • Datový typ definovaný uživatelem
  • Poskytuje mechanismus pro modelování entit, s
    nimiž manipulují aplikace
  • Charakterizuje vlastnosti a chování objektu
  • Je možné ji definovat pomocí klícového slova
    class
  • Muže obsahovat následující cleny
  • konstanty (constants)
  • datové položky (fields)

5
Datový typ trída class (2)
  • metody (methods)
  • vlastnosti (properties)
  • události (events)
  • operátory (operators)
  • indexery (indexers)
  • konstruktory instance (instance constructors)
  • destruktory (destructors)
  • statické konstruktory (static constructors)
  • vnorené deklarace typu (nested type declarations)

6
Datový typ trída class (3)
  • Každý clen uvnitr trídy má svoji tzv.
    prístup-nost (accessibility) urcující, jakým
    zpusobem je nebo není prístupný (viditelný)
    zvencí
  • Nejcasteji se používá prístupnost
  • public (verejná)
  • prístup k danému clenu není nijak omezován
  • clen je prístupný uvnitr i vne dané trídy
  • private (privátní, soukromá)
  • daný clen je prístupný pouze uvnitr trídy, v níž
    je defi-nován
  • jedná se o implicitní prístupnost k clenu

7
Datový typ trída class (4)
  • Príklad trídyclass Ctverec private int
    strana
  • public Ctverec(int pocatecniStrana)
  • strana pocatecniStrana
  • public int UrciObsah()
  • return stranastrana

8
Datový typ trída class (5)
  • Na základe datového typu trída lze vytvorit její
    instanci
  • Instanci typu trída oznacujeme jako objekt
  • Objekt je vytváren pomocí klícového slova new
    (zpusobí vyvolání konstruktoru)
  • PríkladCtverec cc new Ctverec(5)neboCtver
    ec c new Ctverec(5)

9
Jmenný prostor (1)
  • Jmenný prostor (namespace) predstavuje
    po-jmenovaný kontejner pro další identifikátory
    (napr. trídy)
  • Používán k seskupení a k rozlišení
    identifiká-toru
  • Ruzné jmenné prostory mohou obsahovat stejné
    identifikátory
  • Dva identifikátory se stejným názvem nelze
    zamenit, pokud se nacházejí v ruzných jmen-ných
    prostorech

10
Jmenný prostor (2)
  • Jmenný soubor je možné definovat pomocí klícového
    slova namespace
  • Každý jmenný prostor má prístup typu public
  • Identifikátor lze zprístupnit pomocí oznacení
    jmenného prostoru (jmenných prostoru),
    napr.System.Console.WriteLine()kde
  • System jmenný prostor
  • Console trída
  • WriteLine metoda

11
Jmenný prostor (3)
  • Pomocí klícového slova using je možné da-ný
    jmenný prostor zaradit do aktuálního obo-ru
    platnosti
  • Pro zprístupnení identifikátoru pak není nutné
    uvádet oznacení jmenného prostoru
  • Príkladusing SystemConsole.WriteLine()

12
Pretežování metod
  • Pretežování metod overloading
  • dovoluje deklarovat více než jedenu metodu se
    stejným oborem platnosti a se stejným jménem
  • jedna metoda se tak muže vyskytovat ve více
    variantách
  • pretežované metody musí mít rozdílný seznam
    formálních parametru, tj. musí se lišit poctem
    formálních parametru nebo jejich typy
  • na základe použitých skutecných parametru (v
    dobe volání) je rozhodnuto, která varianta bude
    použita

13
Preddefinované datové typy (1)
  • Jazyk C poskytuje sadu preddefinovaných datových
    typu, které se nachází ve jmenném prostoru System
  • Jednotlivé datové typy (vyjma typu string a
    object) jsou synonymy struktur, které obsahují
    metody ? tyto metody lze pomocí teckové notace
    volat
  • Všechny tyto struktury poskytují napr. meto-du
    ToString, která umožnuje prevést císelnou hodnotu
    na její textové vyjádrení

14
Preddefinované datové typy (2)
Typ
Popis
Velikost
Typový ekvivalent
sbyte
celocíselný typ
8 b
System.SByte
se znaménkem
short
celocíselný typ
16 b
System.Int16
int
celocíselný typ
32 b
System.Int32
long
celocíselný typ
64 b
System.Int64
byte
celocíselný typ
8 b
System.Byte
bez znaménka
ushort
celocíselný typ
16 b
System.UInt16
uint
celocíselný typ
32 b
System.UInt32
ulong
celocíselný typ
64 b
System.UInt64
float
reálný typ (s jednoduchou presností)
32 b
System.Single
double
reálný typ (s dvojitou presností)
64 b
System.Double
15
Preddefinované datové typy (3)
Typ
Popis
Velikost
Typový ekvivalent
bool
logický (booleovský) typ
8 b
System.Boolean
char
znakový typ (Unicode)
16 b
System.Char
decimal
penežní hodnoty (28 platných císlic)
128 b
System.Decimal
object
koren objektové hierarchie
System.Object
string
posloupnost znaku (retezec)
16 b / znak
System.String
  • Poznámka
  • datové typy string a object jsou popsány jako
    trídy (nikoliv jako struktury)

16
Hodnotové a referencní typy (1)
  • Každý typ v jazyce C je prímo nebo neprí-mo
    odvozen od trídy object
  • Hodnotové typy (value types)
  • jejich promenné prímo nesou (obsahují) svá data
  • každá promenná má svou vlastní kopii dat
  • zmena hodnoty jedné promenné neovlivnuje hodnotu
    promenné jiné
  • jsou ukládány na zásobníku
  • patrí mezi ne vetšina preddefinovaných typu
    (vyj-ma object a string) a výctové typy
  • pro vytvorení vlastních hodnotových typu slouží
    struktury

17
Hodnotové a referencní typy (2)
  • Referencní (odkazové) typy (reference types)
  • jejich promenné ukládají odkaz (referenci) na
    data (objekty)
  • pokud dojde k prirazení promenné, tak dojde ke
    zkopírování odkazu
  • je možné, aby dve promenné obsahovaly odkaz na
    stejný objekt
  • operace nad jednou promennou muže ovlivnit
    objekt, na nejž se odkazuje promenná jiná
  • v pameti jsou ukládány na spravované halde
    (managed heap)

18
Predávání parametru metodám (1)
  • Parametry predávané hodnotou
  • deklarovány bez použití modifikátoru ref nebo out
  • u hodnotových typu
  • dochází k predání kopie dat ze skutecného
    parametru do parametru formálního
  • zmeny provedené uvnitr metody nad formálním
    para-metrem nijak neovlivnují hodnotu parametru
    skutec-ného
  • u referencních typu
  • dochází pouze k predání odkazu
  • jestliže metoda hodnotu prijatého objektu zmení,
    pak se zmena projeví i v puvodním objektu
  • skutecný parametr musí být v dobe volání
    inicia-lizovaný, tj. musí mít prirazenou hodnotu

19
Predávání parametru metodám (2)
  • Parametry predávané odkazem
  • pred formálním i skutecným parametrem musí být
    uveden modifikátor ref
  • nedochází k vytvorení nového pametového místa pro
    formální parametr
  • formální parametr reprezentuje stejné pametové
    místo, které náleží parametru skutecnému
  • všechny zmeny provedené nad formálním para-metrem
    se promítají do parametru skutecného
  • skutecný parametr musí být v dobe volání
    inicia-lizovaný, tj. musí mít prirazenou hodnotu

20
Predávání parametru metodám (3)
  • Parametry výstupní
  • pred formálním i skutecným parametrem musí být
    uveden modifikátor out
  • podobné chování jako u parametru predávaných
    odkazem
  • všechny zmeny provedené nad formálním para-metrem
    se promítají do parametru skutecného
  • skutecný parametr nemusí být v dobe volání
    ini-cializovaný, tj. nemusí mít prirazenou
    hodnotu
  • v prubehu metody mu musí být prirazena hodnota

21
Principy OOP
  • Objektove orientované programování vychá-zí ze
    trech základních principu (rysu)
  • zapouzdrení (encapsulation)
  • dedicnost (inheritance)
  • polymorfismus

22
Zapouzdrení
  • Trída muže obsahovat libovolné množství clenu
  • Pri správném objektove orientovaném prístu-pu by
    však mela být data skryta (zapouzdrena) uvnitr
    trídy
  • K jednotlivým objektum by se melo pristupo-vat
    prostrednictvím metod nebo vlastností
  • Toto snižuje nebezpecí vzniku chyby a umož-nuje
    tvurci modifikovat vnitrní reprezentaci trídy

23
Dedicnost (1)
  • Jedná se o prostredek, který umožnuje dosáh-nout
    snadné rozširitelnosti a znovupoužitel-nosti již
    existujících cástí programu
  • Dovoluje definovat novou trídu (B), která vznikne
    pouze pridáním nových clenu k tem, které již byly
    definovány v rámci jiné trídy (A)
  • Trída
  • A se stává bezprostredním predkem trídy B
  • B je bezprostredním potomkem trídy A

24
Dedicnost (2)
  • Necht je dána trídaclass Datum private byte
    den, mesic private ushort rok public
    Datum(byte d, byte m, ushort r) public
    string GetDatum() public bool
    JePrestupnyRok()
  • Na jejím základe lze definovat jejího potomka

25
Dedicnost (3)
  • Informace o bezprostredním predkovi se zapi-suje
    v definici trídy (za jejím názvem odde-lena
    dvojteckou)
  • Príkladclass DatumRoz Datum public
    DatumRoz (byte d, byte m, ushort r)
    base(d, m, r) public void PrictiDen()
    public void OdectiDen() private byte
    DniVMesici()

26
Dedicnost (4)
  • Jestliže trída B je potomkem trídy A, tak jsou
    tríde B automaticky dostupné všechny cleny (vyjma
    konstruktoru instancí, statických kon-struktoru a
    destruktoru ) trídy A, aniž by bylo nutné je
    znovu definovat
  • Ríkáme, že trída B dedí cleny trídy A
  • Jestliže pri definici trídy v jazyku C
    neuve-deme žádného predka, je jejím predkem
    auto-maticky trída object (System.Object)

27
Dedicnost (5)
  • Každá definovaná trída automaticky dedí cleny
    definované ve tríde object (napr. metodu
    ToString)
  • Zdedené datové položky bývají obvykle
    inicia-lizovány vyvoláním konstruktoru predka
  • Konstruktor predka se volá pomocí klícového slova
    base, které je uvedeno za hlavickou konstruktoru
    potomka (oddeleno dvojteckou)
  • Príkladpublic DatumRoz(byte d, byte m, ushort
    r) base(d, m, r)

28
Dedicnost (6)
  • Platí, že promenné typu trída A (predchudce) je
    možné priradit promennou typu trída B
    (následníka) opacné prirazení není možné
  • Lze provést prirazení tvaru
  • objekt predka objekt potomka
  • PríkladDatum d new Datum(1, 1,
    2000)DatumRoz dRoz new DatumRoz(2, 8,
    2010)d dRoz

29
Polymorfismus (1)
  • Rys umožnující, aby akce uskutecnované nad
    ruznými objekty byly pojmenovány stejne, pricemž
    ale jejich realizace je ruzná (podle toho, nad
    kterým objektem se provádejí)
  • Nástrojem pro realizaci polymorfismu jsou tzv.
    virtuální metody
  • Virtuální metody
  • obsahují ve své definici klícové slovo virtual
  • implementace virtuálních metod muže být na úrovni
    potomka nahrazena implementací jinou

30
Polymorfismus (2)
  • umožnují volat ruzné verze stejné metody na
    zá-klade typu objektu urceného dynamicky za behu
    programu
  • proces nahrazení implementace zdedené virtuální
    metody se oznacuje jako predefinování (potlacení,
    overriding) metody
  • metoda realizující odlišnou implementaci na
    úrov-ni potomka musí ve své definici obsahovat
    klícové slovo override
  • nová implementace metody (na úrovni potomka) muže
    volat puvodní implementaci téže metody (na úrovni
    predka) pomocí klícového slova base, jež se
    zapisuje v príkazové cásti metody

31
Polymorfismus (3)
  • poznámky
  • klícová slova virtual a override nelze použít u
    soukromých (privátních) metod
  • signatura metody, která provádí predefinování,
    musí být stejná (vcetne návratového typu) jako
    signatura puvodní metody
  • metoda s klícovým slovem override je rovnež
    vir-tuální a muže být na úrovni dalšího potomka
    opet pre-definována

32
Vlastnosti (1)
  • Cleny trídy umožnující prístup k
    charakteris-tickým atributum objektu nebo trídy,
    napr.
  • délka retezce
  • velikost fontu
  • titulek okna
  • jméno zákazníka
  • apod.
  • Predstavují rozšírení datových položek
  • pojmenované cleny s daným datovým typem
  • používají stejnou syntaxi pro své zprístupnení

33
Vlastnosti (2)
  • Na rozdíl od datových položek nereprezentují
    pametové místo pro uložení hodnoty
  • Prekladac automaticky prevádí zprístupnení
    vlastností na volání prístupových metod
  • Prístupové metody specifikují príkazy, jež mají
    být provedeny pri
  • ctení hodnoty vlastnosti
  • zmene hodnoty vlastnosti (zápisu)

34
Vlastnosti (3)
  • Prístupové metody jsou zapisovány pomocí
    klícových slov
  • get uvozuje prístupovou metodu pro ctení
  • set uvozuje prístupovou metodu pro zápis
  • Zapisovaná data jsou prístupovým metodám (set)
    predávána pomocí vestaveného (skry-tého)
    parametru value
  • Konvence
  • soukromé datové položky jsou psány s malým
    po-cátecním písmenem, zatímco verejné vlastnosti
    s pocátecním písmenem velkým

35
Vlastnosti (4)
  • Príkladclass Ctverec private int
    strana public int Strana get
    return strana set
  • strana value

36
Vlastnosti (5)
  • Necht je dána deklaraceint sCtverec c new
    Ctverec(5)
  • Vlastnost Strana lze zprístupnit
  • pro ctení napr.s c.Strana (volá
    c.Strana.get)
  • pro zápis napr.c.Strana 2s (volá
    c.Strana.set)
  • Vlastnost muže obsahovat pouze metodu
  • get vlastnost urcena jen pro ctení
  • set vlastnost urcena jen pro zápis

37
Vlastnosti (6)
  • Omezení vlastnosti
  • vlastnost nelze použít jako parametr s
    modifiká-torem ref nebo out (za vlastností se
    skrývá prí-stupová metoda nikoliv pametové místo)
  • vlastnost muže obsahovat jednu prístupovou
    me-todu get a jednu prístupovou metodu set
    (ne-smí obsahovat žádné jiné metody, datové
    polož-ky nebo vlastnosti)
  • prístupové metody nesmí prijímat žádné paramet-ry
    (zapisovaná data jsou u metody set predává-na
    prostrednictvím value)
  • u vlastností nelze používat modifikátor const

38
Vlastnosti (7)
  • Jestliže metody get, resp. set provádejí pouze
    operace, které slouží k prectení, resp. prirazení
    do datové položky, pak je možné jejich príkazovou
    cást vynechat
  • Príkladclass Ctverec public int Strana
    get set

39
Události (1)
  • Cleny trídy umožnující objektu nebo tríde
    reagovat na zprávy (události)
  • Program muže definovat metody, které mají za úkol
    zpracovat príchozí zprávy, napr.
  • stisknutí klávesy
  • stisknutí tlacítka myši
  • pohyb myši
  • apod.
  • Metoda realizující zpracování (obsluhu) zprá-vy
    (reagující na zprávu) se oznacuje jako tzv. event
    handler (obslužná metoda)

40
Události (2)
  • Parametry obslužné metody musí odpovídat definici
    prototypu funkce, která se nazývá delegát
    (delegate, zástupce)
  • Definice
  • delegáta se provádí pomocí delegate
  • události pomocí klícového slova event
  • Metod obsluhujících události muže být více a
    jejich návratovým typem je typ void
  • Odkaz na obslužnou metodu se
  • do události vkládá pomocí operátoru
  • z události odebírá pomocí operátoru -
Write a Comment
User Comments (0)
About PowerShow.com