datov typ t da class 1
Download
Skip this Video
Download Presentation
Datový typ třída – class (1)

Loading in 2 Seconds...

play fullscreen
1 / 30

Datový typ třída – class (1) - PowerPoint PPT Presentation


  • 68 Views
  • Uploaded on

Datový typ třída – class (1). Datový typ definovaný uživatelem Poskytuje mechanismus pro modelování entit, s nimiž manipulují aplikace Charakterizuje vlastnosti a chování objektů Je možné ji definovat pomocí klíčového slova class Může obsahovat následující členy : konstanty (constants)

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'Datový typ třída – class (1)' - andromeda-marinos


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
datov typ t da class 1
Datový typ třída – class (1)
  • Datový typ definovaný uživatelem
  • Poskytuje mechanismus pro modelování entit, s nimiž manipulují aplikace
  • Charakterizuje vlastnosti a chování objektů
  • Je možné ji definovat pomocí klíčového slova class
  • Může obsahovatnásledující členy:
    • konstanty (constants)
    • datové položky (fields)
datov typ t da class 2
Datový typ tří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)
  • vnořené deklarace typů (nested type declarations)
datov typ t da class 3
Datový typ třída – class (3)
  • Každý člen uvnitř třídy má svoji tzv. přístup-nost (accessibility) určující, jakým způsobem je nebo není přístupný (viditelný) zvenčí
  • Nejčastěji se používá přístupnost:
    • public(veřejná):
      • přístup k danému členu není nijak omezován
      • člen je přístupný uvnitř i vně dané třídy
    • private (privátní, soukromá):
      • daný člen je přístupný pouze uvnitř třídy, v níž je defi-nován
      • jedná se o implicitní přístupnost k členu
datov typ t da class 4
Datový typ třída – class (4)
  • Datové položky (fields):
    • reprezentují proměnné spojené s objektem nebos třídou
    • slouží k uchování informací
  • Metody (methods):
    • funkce definované uvnitř třídy
    • implementují výpočet (akci), který může být pro-veden objektem nebo třídou
    • obsahují:
      • seznam formálních parametrů (může být i prázdný)
      • návratovou hodnotu (je-li návratovým typem metody typ void, pak metoda nevrací žádnou hodnotu)
datov typ t da class 5
Datový typ třída – class (5)
  • Konstruktory instancí (instance constructors):
    • speciální typy metod
    • slouží k vytvoření instance třídy (objektu)
    • mají stejný název jako třída
    • mohou obsahovat formální parametry
    • nemohou vracet žádnou hodnotu (ani void)  v jejich hlavičce není uvedený žádný návratový typ
    • jedna třída může obsahovat více konstruktorů (pře-těžování – overloading)
    • není-li definován žádný konstruktor, pak překladač automaticky vygeneruje konstruktor implicitní, kte-rý neobsahuje žádné parametry
datov typ t da class 6
Datový typ třída – class (6)
  • Příklad třídy:class Square{privateintside;

public Square(int initialSide)

{

side = initialSide;

}

publicint GetArea(){

returnside*side;}}

datov typ t da class 7
Datový typ třída – class (7)
  • Na základě datového typu třída lze vytvořit její instanci
  • Instanci typu třída označujeme jako objekt
  • Objekt je vytvářen pomocí klíčového slova new(způsobí vyvolání konstruktoru)
  • Příklad:Square sq;sq = newSquare(5);neboSquare sq = new Square(5);
datov typ t da class 8
Datový typ třída – class (8)
  • Proměnná sq bude obsahovat odkaz, kde je v paměti uložený objekt (třída je referenční datový typ)
  • Poznámka:
    • každá instance třídy je objektem, který zabírá svůj vlastní prostor v paměti a běží nezávisle na všech ostatních instancích
  • Pro zpřístupnění členů třídy se používá tečko-vá notace:
    • identifikátor proměnné typu třída nebo typu třída
    • symbol tečka
    • identifikátor označující člen třídy
datov typ t da class 9
Datový typ třída – class (9)
  • Příklad:int s;Square sq = new Square(5);s = sq.GetArea();
  • Metody i datové položky mohou být deklaro-vány jako statické (static):
    • zpřístupňovány prostřednictvím třídy
    • před jejich zpřístupněním není nutné vytvářet in-stanci třídy (objekt)
    • nezávislé na konkrétní instanci třídy
datov typ t da class 10
Datový typ třída – class (10)
  • Poznámka:
    • metoda Main musí být statická, protože před je-jím voláním se nevytváří instance třídy, v níž je definována
  • Statické třídy:
    • deklarovány s použitím klíčového slova static
    • může obsahovat pouze statické členy
    • nemůže obsahovat žádná data ani metody instancí
    • příklad: třídy Math,Convert, Console
jmenn prostor 1
Jmenný prostor (1)
  • Jmenný prostor (namespace) představuje po-jmenovaný kontejner pro další identifikátory (např. třídy)
  • Používán k seskupení a k rozlišení identifiká-torů
  • Různé jmenné prostory mohou obsahovat stejné identifikátory
  • Dva identifikátory se stejným názvem nelze zaměnit, pokud se nacházejí v různých jmen-ných prostorech
jmenn prostor 2
Jmenný prostor (2)
  • V rámci jednoho souboru může být defino-váno více jmenných prostorů
  • Více souborů může zahrnovat jeden jmenný prostor
  • Jmenné prostory mohou být do sebe vzájemně vnořovány
  • Jmenný prostor je možné definovat pomocí klíčového slova namespace
  • Každý jmenný prostor má přístup typu public(nelze změnit)
jmenn prostor 3
Jmenný prostor (3)

Soubor1.cs

Soubor2.cs

public class ClassA{}

namespace NamespaceY

{

publicclass ClassB

{

}

}

public class ClassC{}

namespace NamespaceY

{

publicclass ClassA

{

}

}

namespace NamespaceZ

{

publicclass ClassB

{

}

}

  • Příklad:
jmenn prostor 4
Jmenný prostor (4)
  • Je-li identifikátor deklarovaný (definovaný) bez specifikovaného jmenného prostoru, pak jej automaticky překladač zařadí do globál-níhojmenného prostoru (global namespace)
  • Identifikátor lze zpřístupnit pomocí označení jmenného prostoru (jmenných prostorů), např.:System.Console.WriteLine(…);kde:
    • System – jmenný prostor
    • Console – třída
    • WriteLine– metoda
jmenn prostor 5
Jmenný prostor (5)
  • Pomocí klíčového slova using je možné da-ný jmenný prostor zařadit do aktuálního obo-ru platnosti
  • Pro zpřístupnění identifikátoru pak není nutné uvádět označení jmenného prostoru
  • Příklad:using System;Console.WriteLine(…);
p ed v n parametr metod m 1
Předávání parametrů metodám (1)
  • Parametry předávané hodnotou:
    • deklarovány bez použití modifikátoru ref nebo out
    • u hodnotových typů:
      • dochází k předání kopie dat ze skutečného parametru do parametru formálního
      • změny provedené uvnitř metody nad formálním para-metrem nijak neovlivňují hodnotu parametru skuteč-ného
    • u referenčních typů:
      • dochází pouze k předání odkazu
      • jestliže metoda hodnotu přijatého objektu změní, pak se změna projeví i v původním objektu
    • skutečný parametr musí být v době volání inicia-lizovaný, tj. musí mít přiřazenou hodnotu
p ed v n parametr metod m 2
Předávání parametrů metodám (2)
  • Parametry předávané odkazem:
    • před formálním i skutečným parametrem musí být uveden modifikátor ref
    • nedochází k vytvoření nového paměťového místa pro formální parametr
    • formální parametr reprezentuje stejné paměťové místo, které náleží parametru skutečnému
    • všechny změny provedené nad formálním para-metrem se promítají do parametru skutečného
    • skutečný parametr musí být v době volání inicia-lizovaný, tj. musí mít přiřazenou hodnotu
p ed v n parametr metod m 3
Předávání parametrů metodám (3)
  • Parametry výstupní:
    • před formálním i skutečným parametrem musí být uveden modifikátor out
    • podobné chování jako u parametrů předávaných odkazem
    • všechny změny provedené nad formálním para-metrem se promítají do parametru skutečného
    • skutečný parametr nemusí být v době volání ini-cializovaný, tj. nemusí mít přiřazenou hodnotu
    • v průběhu metody mu musí být přiřazena hodnota
p et ov n metod 1
Přetěžování metod (1)
  • Přetěž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 může vyskytovat ve více variantách
    • přetěžované metody musí mít rozdílný seznam formálních parametrů, tj. musí se lišit počtem formálních parametrů nebo jejich typy
    • na základě použitých skutečných parametrů (v době volání) je rozhodnuto, která varianta bude použita
p et ov n metod 2
Přetěžování metod (2)
  • Užitečné zejména v situaci, kdy je nutné pro-vádět stejnou operaci na různých datových typech
  • Příklad:
    • metoda WriteLine třídy Console může být použita 19 různými způsoby (je definována v 19 různých variantách)
    • každá z nich má odlišnou sadu parametrů
    • např.:
      • nemá žádný parametr  vypíše pouze prázdný řádek
      • jako parametr má řetězec, který vypíše na standardní výstup
      • jako parametr přebírá desetinné (celé) číslo a vypíše jej na stan-dardní výstup
konstanty 1
Konstanty (1)
  • Členy třídy reprezentující konstantní hodno-ty, které se v průběhu programu nemohou měnit
  • Jedná se o hodnoty, které musí být určitelné v době překladu programu
  • Konstanty jsou statickými členy třídy, avšak při jejich definici se nepoužívá klíčové slovo static
  • Lze je definovat pomocí klíčového slova const
konstanty 2
Konstanty (2)
  • Příklad:classPhysics{public const double h=6.62606957E–34;public const doublehbar=h/(2*Math.PI);public const double F=9.6485E4; }
vlastnosti 1
Vlastnosti (1)
  • Členy třídy umožňující přístup k charakteris-tickým atributům objektu nebo třídy, např.:
    • délka řetězce
    • velikost fontu
    • titulek okna
    • jméno zákazníka
    • apod.
  • Představují rozšíření datových položek:
    • pojmenované členy s daným datovým typem
    • používají stejnou syntaxi pro své zpřístupnění
vlastnosti 2
Vlastnosti (2)
  • Na rozdíl od datových položek nereprezentují paměťové místo pro uložení hodnoty
  • Překladač automaticky převádí zpřístupnění vlastností na volání přístupových metod
  • Přístupové metody specifikují příkazy, jež mají být provedeny při:
    • čtení hodnoty vlastnosti
    • změně hodnoty vlastnosti (zápisu)
vlastnosti 3
Vlastnosti (3)
  • Přístupové metody jsou zapisovány pomocí klíčových slov:
    • get: uvozuje přístupovou metodu pro čtení
    • set: uvozuje přístupovou metodu pro zápis
  • Zapisovaná data jsou přístupovým metodám (set) předávána pomocí vestavěného (skry-tého) parametru value
  • Konvence:
    • soukromé datovépoložky jsou psány s malým po-čátečním písmenem, zatímco veřejné vlastnostis počátečním písmenem velkým
vlastnosti 4
Vlastnosti (4)
  • Příklad:classSquare{privateintside;publicintSide{get{returnside; }set{

side = value; }}}

vlastnosti 5
Vlastnosti (5)
  • Nechť je dána deklarace:int s;Squaresq = newSquare(5);
  • Vlastnost Side lze zpřístupnit:
    • pro čtení – např.:s = sq.Side; (volá sq.Side.get)
    • pro zápis – např.:sq.Side = 2*s; (volá sq.Side.set)
  • Vlastnost může obsahovat pouze metodu:
    • get: vlastnost určena jen pro čtení
    • set: vlastnost určena jen pro zápis
vlastnosti 6
Vlastnosti (6)
  • Omezení vlastnosti:
    • vlastnost nelze použít jako parametr s modifiká-torem ref nebo out (za vlastností se skrývá pří-stupová metoda nikoliv paměťové místo)
    • vlastnost může obsahovat jednu přístupovou me-todu get a jednu přístupovou metodu set (ne-smí obsahovat žádné jiné metody, datové polož-ky nebo vlastnosti)
    • přístupové metody nesmí přijímat žádné paramet-ry (zapisovaná data jsou u metody set předává-na prostřednictvím value)
    • u vlastností nelze používat modifikátor const
vlastnosti 7
Vlastnosti (7)
  • Jestliže metody get, resp. set provádějí pouze operace, které slouží k přečtení, resp. přiřazení do datové položky, pak je možné jejich příkazovou část vynechat
  • Příklad:classSquare{publicintSide {get;set;}

}

vlastnosti 8
Vlastnosti (8)
  • Překladač automaticky vygeneruje odpovída-jící programový kód:classSquare{privateint _side;publicintSide{get{return _side;}set{_side = value;} }

}

ad