Datov typ t da class 1
This presentation is the property of its rightful owner.
Sponsored Links
1 / 30

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


  • 39 Views
  • Uploaded on
  • Presentation posted in: General

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)

Download Presentation

Datový typ třída – class (1)

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;}}

    }


  • Login