Objektumorientált programozás C# nyelven



Hasonló dokumentumok
Objektumorientált programozás C# nyelven

Objektumorientált programozás C# nyelven III.

C# osztályok. Krizsán Zoltán

C# nyelv alapjai. Krizsán Zoltán 1. Objektumorientált programozás C# alapokon tananyag. Általános Informatikai Tanszék Miskolci Egyetem

Objektumorientált programozás C# nyelven

Adatstruktúrák, algoritmusok, objektumok

Objektumorientált programozás C# nyelven

Objektumorientált programozás C# nyelven

Programozás C++ -ban 2007/4

Programozás BMEKOKAA146. Dr. Bécsi Tamás 1. Előadás

Számítástechnika I. BMEKOKAA152 BMEKOKAA119 Infokommunikáció I. BMEKOKAA606. Dr. Bécsi Tamás

Objektumorientált programozás C# nyelven

Osztály és objektum fogalma

Bánsághi Anna

Programozás III CSOMAGOK. Az összetartozó osztályok és interfészek egy csomagba (package) kerülnek.

Java VI. Egy kis kitérő: az UML. Osztály diagram. Általános Informatikai Tanszék Utolsó módosítás:

INFORMATIKAI ALAPISMERETEK

Bánsághi Anna

OBJEKTUM ORIENTÁLT PROGRAMOZÁS JAVA NYELVEN. vizsgatételek

117. AA Megoldó Alfréd AA 117.

INFORMATIKAI ALAPISMERETEK

A C++ öröklés. (Előfeltétel: 12. tétel ismerete)

Programozási technikák Pál László. Sapientia EMTE, Csíkszereda, 2009/2010

Vizuális és eseményvezérelt programozás , II. félév BMF NIK

Származtatási mechanizmus a C++ nyelvben

Programozás II gyakorlat. 4. Öröklődés

JAVA PROGRAMOZÁS 3.ELŐADÁS

Kalapácsvetés 2016 szöveges

3. Gyakorlat Ismerkedés a Java nyelvvel

Objektumorientált programozás IX. Osztályok, objektumok

Pénzügyi algoritmusok

Programozás alapjai II. (9. ea) C++ többszörös öröklés, cast, perzisztencia

Objektumorientált programozás C# nyelven

Objektumorientált programozás C# nyelven III.

4. Öröklődés. Programozás II

Programozás. C++ osztályok. Fodor Attila. Pannon Egyetem Műszaki Informatikai Kar Villamosmérnöki és Információs Rendszerek Tanszék

C# versus Java. Óbudai Egyetem, Java Standard Edition Mérnök Informatikus szak, BSc Labor 3. Bedők Dávid v0.4

Informatika terméktervezőknek

hiányzott szeptemberben vagy A tanuló nem hiányzott szeptemberben szöveget

PHP5 Új generáció (2. rész)

Programozás II. labor

Pál László. Sapientia EMTE, Csíkszereda, 2014/2015

Osztályok. 4. gyakorlat

C# osztálydeníció. Krizsán Zoltán 1. .net C# technológiák tananyag objektum orientált programozás tananyag

A PROGAMOZÁS ALAPJAI 1. Függvény mint függvény paramétere. Függvény mint függvény paramétere. Függvény mint függvény paramétere

Java programozási nyelv 4. rész Osztályok II.

PHP II. WEB technológiák. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) PHP II / 19

TestLine - OO Programozás alapjai Minta feladatsor

rendszerszemlélető, adatközpontú funkcionális

A Microsoft Visual Studio 2005 fejlesztőkörnyezet

C# feladatok gyűjteménye

Események C#-ban Krizsán Zoltán iit

Elemi Alkalmazások Fejlesztése II.

Emlékeztető: a fordítás lépései. Szimbólumtábla-kezelés. Információáramlás. Információáramlás. Információáramlás.

Objektumorientált programozás C# nyelven

Bevezetés a Programozásba II 11. előadás. Adatszerkezetek megvalósítása. Adatszerkezetek megvalósítása Adatszerkezetek

Eseményvezérelt alkalmazások fejlesztése II. A.NET keretrendszer és a C# programozási nyelv. Objektumorientált programozási nyelvek A Smalltalk nyelv

Objektumorientált programozás C# nyelven

Szerializáció. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) Szerializáció / 22

500. AA Megoldó Alfréd AA 500.

Adatbázisok biztonsága

C# feladatgyűjtemény Kovács Emőd, Radványi Tibor, Király Roland, Hernyák Zoltán

Java II. I A Java programozási nyelv alapelemei

Java és web programozás

Access adatbázis elérése OLE DB-n keresztül

HIDASNÉMETI KÖZSÉG ÖNKORMÁNYZATA POLGÁRMESTERI HIVATALÁNAK SZERVEZETFEJLESZTÉSE E-KÖZIGAZGATÁSI ALAPISMERETEK

Programozás II. 4. Dr. Iványi Péter

Abstract osztályok és interface-ek. 7-dik gyakorlat

VB C++ C# JScript J# Common Language Specification. ADO.NET and XML. Base Class Library. Common Language Runtime. Operating System

OOP #14 (referencia-elv)

Vizuális, eseményvezérelt programozás I.

BME MOGI Gépészeti informatika 8.

Számítástechnika II. BMEKOKAA Előadás. Dr. Bécsi Tamás

Webes alkalmazások fejlesztése 8. előadás. Webszolgáltatások megvalósítása (ASP.NET WebAPI)

Magas szintű programozási nyelvek 2 Előadás jegyzet

Bevezetés a C++ programozási nyelvbe

Ezeket a kiemelkedı sebességő számítógépeket nevezzük szuperszámítógépeknek.

C#, OOP. Osztályok tervezése C#-ban

A Jáva programozási nyelv rejtelmei

Adatbázis alapú rendszerek gyakorlat Adatbázis alapú alkalmazásfejlesztés Java, C# környezetben

Statikus adattagok. Statikus adattag inicializálása. Speciális adattagok és tagfüggvények. Általános Informatikai Tanszék

Java és web programozás

Objektumorientált programozás C# nyelven II.

Programozási Paradigmák és Technikák

Az élet szép, környezetünk tele van fákkal, virágokkal, repdeső madarakkal, vidáman futkározó állatokkal.

3. Határozza meg és írja ki a minta szerint, hogy a forrásállományban hány kémiai elem felfedezési adatai

A C# PROGRAMOZÁSI NYELV

Mentsd el code file-t kektura.cs néven, illetve kiterjesztéssel! Másold be a kektura.csv állományt a Projects munkamappa megfelelő almappájába!

Programozás II gyakorlat. 8. Operátor túlterhelés

Programozási nyelvek Java

ASP.NET 2.0 (Whidbey)

FELÜLET...13 PROJEKTTERV...14

Számítástechnika II. BMEKOKAA Előadás. Dr. Bécsi Tamás

INFORMATIKAI ALAPISMERETEK

Visual C++ osztály készítése, adattagok, és metódusok, láthatóság, konstruktor, destruktor. Objektum létrehozása, használata, öröklés.

JUnit. JUnit használata. IDE támogatás. Parancssori használat. Teszt készítése. Teszt készítése

3. gyakorlat Saját adatok használata

Java és web programozás

Szakdolgozat. Pongor Gábor

Programozás II. 3. gyakorlat Objektum Orientáltság C++-ban

Átírás:

Objektumorientált programozás C# nyelven 1. rész Osztályok és objektumok Mezık és metódusok Konstruktor és destruktor Láthatósági szintek Névterek és hatókörök Osztály szintő tagok Beágyazott osztályok Felbontott típusok

Hallgatói tájékoztató A jelen bemutatóban található adatok, tudnivalók és információk a számonkérendı anyag vázlatát képezik. Ismeretük szükséges, de nem elégséges feltétele a sikeres zárthelyinek, illetve vizsgának. Sikeres zárthelyihez, illetve vizsgához a jelen bemutató tartalmán felül a kötelezı irodalomként megjelölt anyag, a gyakorlatokon szóban, illetve a táblán átadott tudnivalók ismerete, valamint a gyakorlatokon megoldott példák és az otthoni feldolgozás céljából kiadott feladatok önálló megoldásának képessége is szükséges. 2006. október 17. 2

Osztályok és objektumok Osztály: belsı adatok és a rajtuk mőveleteket végzı algoritmusok által alkotott egységes adattípus Objektum: valamely osztály egy tényleges példánya Az objektumok (bizonyos esetekben maguk az osztályok is) a program futása során egymással kommunikálnak Osztály tartalma (az osztály tagjai ): Mezık ( field ) Normál és csak olvasható változók, konstansok ( constant ) Metódusok ( method ) Normál metódusok, konstruktorok ( constructor ), destruktorok ( destructor ) Tulajdonságok* ( property ) és indexelık* ( indexer ) Események* ( event ) Operátorok* ( operator ) Beágyazott típusok ( nested type ) Osztályok ( class ), struktúrák* ( struct ), interfészek* ( interface ), képviselık* ( delegate ) 2006. október 17. 3

Osztályok és objektumok Az osztályok deklarálása a class kulcsszó segítségével történik Az osztályok deklarációja egyben tartalmazza az összes tag leírását és a metódusok megvalósítását Az osztályoknál tehát nincs külön deklaráció (létrehozás) és definíció (kifejtés) class Példaosztály // Itt kell deklarálnunk az osztály összes tagját (mezıket, metódusokat ) // A metódusok konkrét megvalósítását szintén itt kell megadnunk Osztályok és objektumok tagjainak elérése:. operátor Példány szintő tagoknál a példány nevét, osztály szintő tagoknál (ezeket lásd késıbb) az osztály nevét kell az operátor elé írnunk Az osztály saját tagjainak elérésekor (tehát az osztály saját metódusainak belsejében) nem kötelezı kiírni a példány, illetve az osztály nevét 2006. október 17. 4

Mezők Minden változó tagja egy osztálynak (tagváltozó) Ezeket az adatelemeket nevezzük mezıknek A mezık értéke helyben is megadható (inicializálás) string jegy = "jeles"; int j = -10; A mezık lehetnek Olvasható/írható mezık Értékük tetszés szerint olvasható és módosítható Csak olvasható mezık Értékük kizárólag inicializálással vagy konstruktorból állítható be readonly string SosemVáltozomMeg = "I Will Stay The Same"; Konstans mezık Értéküket a fordítóprogram elıre letárolja, futási idıben sosem módosíthatók const double π = 3.14159265; const int összeg = 23 * (45 + 67); 2006. október 17. 5

Metódusok Minden metódus tagja egy osztálynak (tagfüggvény) A metódusok rendelkezhetnek Megadott vagy változó darabszámú paraméterrel (params kulcsszó) void EgyparaméteresMetódus(bool feltétel); void TöbbparaméteresMetódus(int a, float b, string c); void MindenbılSokatElfogadóMetódus(params object[] paramétertömb); Visszatérési értékkel Nem kötelezı, ha nincs, ezt a void kulcsszóval kell jelölni void NincsVisszatérésiÉrtékem(); int EgészSzámotAdokVissza(float paraméter); string VálaszomEgyKaraktersorozat(string bemenıadat); SajátTípus Átalakító(SajátTípus forrásobjektum, int egyikmezıújértéke, string másikmezıújértéke); A paraméterek és a visszatérési érték határozzák meg azt a protokollt, amelyet a metódus használatához be kell tartani Szokás ezt a metódus aláírásának vagy szignatúrájának is nevezni 2006. október 17. 6

Speciális metódusok a konstruktor Minden osztálynak rendelkeznie kell konstruktorral A konstruktor gondoskodik az osztály példányainak létrehozásáról Szokás példánykonstruktornak is nevezni A konstruktorok neve mindig megegyezik az osztály nevével Több konstruktort is létrehozhatunk más-más paraméterlistával Egy konstruktor a this kulcsszó segítségével meghívhat egy másik konstruktort is Ha mi magunk nem deklarálunk konstruktort, a C# fordító automatikusan létrehoz egy paraméter nélküli alapértelmezett konstruktort Új objektum a new operátor segítségével hozható létre A new operátor gondoskodik a megfelelı konstruktor hívásáról Az osztályok konstruktorait kívülrıl nem kell és nem is lehet más módon meghívni System.Object Igaziİskövület = new System.Object(); Paraméter nélküli konstruktor hívása SajátTípus példány = new SajátTípus(25); Egy int típusú paraméterrel rendelkezı konstruktor hívása 2006. október 17. 7

Speciális metódusok a destruktor Az osztályoknak nem kötelezı destruktorral rendelkezniük A destruktor neve egy ~ karakterbıl és az osztály nevébıl áll Az objektumok megszüntetése automatikus Akkor szőnik meg egy objektum, amikor már biztosan nincs rá szükség Az objektumok megszüntetésének idıpontja nem determinisztikus (nem kiszámítható) A futtatókörnyezet gondoskodik a megfelelı destruktor hívásáról Nem kell (és nem is lehet) közvetlenül meghívni az osztályok destruktorait A destruktor nem tudhatja, pontosan mikor hívódik meg Destruktorra ritkán van szükség class SajátTípus // Destruktor ~SajátTípus() 2006. október 17. 8

Láthatósági szintek Láthatósági (hozzáférési) szintek a C# nyelvben Szint public protected internal protected internal private Hozzáférési lehetıség az adott taghoz Korlátlan Adott osztály és leszármazottai* Adott program, adott osztály Adott program, adott osztály és leszármazottai* Adott osztály Megjegyzés.NET.NET 1 1 A.NET biztosít még egy további láthatósági szintet ( protected and internal ), amelyet a C# nyelv nem támogat A névterek láthatósága mindig public A típusok (osztályok) láthatósága public vagy internal (alapértelmezés) Az osztályok tagjainak láthatósága tetszılegesen megválasztható A tagok láthatósága alapértelmezésben mindig private A beágyazott típusok (osztályok) láthatóság szempontjából normál tagoknak minısülnek (láthatóságuk tetszılegesen megadható, alapértelmezésben private) A felsorolások elemeinek és az interfészek* tagjainak láthatósága mindig public 2006. október 17. 9

class Részvény private readonly string részvénynév; private double részvényárfolyam = 0.0; public int Darabszám; Példaosztály public Részvény(string név, double árfolyam, int darabszám) // Konstruktor (neve megegyezik az osztály nevével) - beállítja az adatmezık kezdeti értékét public void Vétel(int mennyiség) // A paraméterben megadott mennyiségő részvény vásárlása public void Eladás(int mennyiség) // A paraméterben megadott mennyiségő részvény eladása public void ÁrfolyamBeállítás(double árfolyam) // Az aktuális árfolyam beállítása a paraméterben megadott árfolyam alapján public double Érték() // Részvény összértékének kiszámítása részvénykezelı.cs 2006. október 17. 10

Példaosztály (folytatás) class Részvénykezelı static void Main() Részvény IBM = new Részvény("IBM", 77.59, 100); Részvény nvidia = new Részvény("NVDA", 21.49, 100); IBM.Vétel(50); nvidia.vétel(25); nvidia.árfolyambeállítás(29.15); nvidia.eladás(50); System.Console.WriteLine("IBM: " + IBM.Darabszám + " db ($" + IBM.Érték() + ")"); System.Console.WriteLine("nVidia: " + nvidia.darabszám + " db ($" + nvidia.érték() + ")"); System.Console.ReadLine(); részvénykezelı.cs 2006. október 17. 11

Névterek A névterek az elnevezések tetszıleges logikai csoportosítását teszik lehetıvé Nincs közük a fizikai tároláshoz (fájlokhoz és mappákhoz) Egy fájlban több névtér, egy névtér több fájlban is elhelyezhetı Tetszılegesen egymásba ágyazhatók A beágyazott névterek tagjait a. karakterrel választhatjuk el A névtérbe be nem sorolt elemek egy ún. globális névtérbe kerülnek namespace A namespace B class Egyik A.B.Egyik példa = new A.B.Egyik(); Ez a két névtér azonos (A.B) x.cs namespace A.B class Másik namespace C class Harmadik A.B.Másik példa2 = new A.B.Másik(); C.Harmadik példa3 = new C.Harmadik(); 2006. október 17. 12 y.cs

Névterek (folytatás) Minden névre a saját névterével együtt kell hivatkozni A teljes (minısített) név formája: névtér.elnevezés A névterek importálhatók (hivatkozás céljára elıkészíthetık) a using kulcsszó segítségével using System; using System.Text; Ezt követıen az adott névtérben található elnevezések elé hivatkozáskor nem kell kiírni a névteret, feltéve, hogy az elnevezés így is egyértelmően azonosítható A névtereknek importálás helyett álnév is adható Célja a hosszú, de importálni nem kívánt névterek egyértelmő rövidítése Importált névtér using System; using SOAP = System.Runtime.Serialization.Formatters.Soap; SOAP.SoapFormatter formázó = new SOAP.SoapFormatter(); Console.WriteLine(formázó); A névterek Microsoft által javasolt formátuma: Cégnév.Technológia.Funkció[.Design] Példa: Microsoft.VisualBasic.CompilerServices Nem importált névtér álnévvel 2006. október 17. 13

Hatókörök Kijelöli a változók érvényességi tartományát Nem azonos a névtérrel (amely a hivatkozás módját szabályozza) A C# hatókörre vonatkozó szabályai: Osztályok tagváltozói csak ott érhetık el, ahol az osztály is elérhetı Helyi változók a deklarációjukat tartalmazó blokk vagy metódus lezárásáig ( ) érhetık el A for, foreach, while, do while utasításokban deklarált helyi változók csak az adott utasítás belsejében érhetık el Ha egy változó érvényes, de nem azonosítható egyértelmően, akkor a C# a hivatkozást a legbelsı érvényességi tartományra vonatkoztatja Azonos érvényességi tartományon belül azonos néven nem hozhatók létre változók A tagváltozók érvényességi tartományában létrehozhatók azonos nevő helyi változók Ebben az esetben a legbelsı változó elrejti a vele azonos nevő, hozzá képest külsı szinten elhelyezkedı változókat Ha a legbelsı érvényességi tartományban egy azonos nevő külsı tagváltozót kívánunk elérni, akkor példány szintő változók esetén a this kulcsszót, osztály szintő változók esetén az osztály nevét kell a változó elé írnunk. karakterrel elválasztva 2006. október 17. 14

Metódusok átdefiniálása Egy osztályon belül is létrehozhatunk több azonos nevő, de eltérı paraméterlistával és visszatérési értékkel rendelkezı metódust Ezzel a technikával ugyanazt a funkciót többféle paraméterekkel és visszatérési értékkel is meg tudjuk valósítani ugyanazon a néven Logikusabb, átláthatóbb programozási stílust tesz lehetıvé class Részvény public void Vétel(int mennyiség) // A paraméterben megadott mennyiségő részvény vásárlása darabszám += mennyiség; public void Vétel(int mennyiség, double árfolyam) // A paraméterben megadott mennyiségő részvény vásárlása a megadott árfolyam beállításával Darabszám += mennyiség; részvényárfolyam = árfolyam; 2006. október 17. 15

A this paraméter A példány szintő metódusokban szükség lehet rá, hogy hivatkozni tudjunk arra az objektumra, amelyik a metódust éppen végrehajtja E hivatkozás a rejtett this paraméter segítségével valósul meg A rejtett this paraméter minden példány szintő metódusban az aktuális objektumot jelöli Osztály szintő tagok esetén ez a paraméter nem létezik (az osztály szintő tagokat lásd késıbb) Nem kell deklarálni, ezt a fordítóprogram automatikusan megteszi Általában a következı esetekben használatos: Az aktuális objektumot paraméterként vagy eredményként szeretnénk átadni Az érvényes hatókörön belül több azonos nevő tag található (pl. egymásba ágyazott hatókörök vagy névterek esetén), így ezek a tagok csak segítséggel azonosíthatók egyértelmően 2006. október 17. 16

A this paraméter (példa) Milyen nehézség adódott volna, ha a fenti példaosztályban az alábbi mezıneveket használjuk? class Részvény private string név; private double árfolyam; public int darabszám; public Részvény(string név, double árfolyam, int darabszám) részvénynév = név; részvényárfolyam = árfolyam; Darabszám = darabszám; Probléma: hogyan tudjuk módosítani a Részvény osztály név, árfolyam és darabszám nevő mezıit? public void ÁrfolyamBeállítás(double árfolyam) részvényárfolyam = árfolyam; 2006. október 17. 17

A this paraméter (példa) Megoldás a this paraméter segítségével class Részvény private string név; private double árfolyam; public int darabszám; public Részvény(string név, double árfolyam, int darabszám) this.név = név; this.árfolyam = árfolyam; this.darabszám = darabszám; public void ÁrfolyamBeállítás(double árfolyam) this.árfolyam = árfolyam; 2006. október 17. 18

Osztály szintű tagok Az osztály szintő mezık az osztály saját adatmezıi Minden osztály csak egyet tárol ezekbıl a mezıkbıl, függetlenül a késıbb létrehozott példányok számától Ezeket a mezıket tehát nem a példányok, hanem maga az osztály birtokolja Az osztály szintő metódusok az osztályon mőködnek Akkor is hívhatók, ha még egyetlen példány sem létezik az osztályból Csak osztály szintő mezıket használhatnak Osztály szintő metódusoknál nem létezik aktuális objektum, így this paraméter sem Konkrét példányt nem igénylı feladatra is alkalmasak (pl. fıprogram megvalósítása) Az osztály szintő tagokat a static kulcsszóval jelöljük // és most már minden kulcsszót könnyen felismerhetünk ebben a "bonyolult" programban internal class ElsıProgram public static void Main() System.Console.WriteLine("Hello, C# World"); 2006. október 17. 19

Osztály szintű tagok (példa, 1. rész) using System; class Példányszámláló public static int Darabszám; Osztály szintő adatmezı static Példányszámláló() Darabszám = 0; Konstruktor public Példányszámláló() Darabszám++; Destruktor ~Példányszámláló() Darabszám--; Console.WriteLine("Megszőnt egy példány. A fennmaradók száma: " + Darabszám); Osztály szintő konstruktor (egyik fı célja az osztály szintő mezık kezdeti értékének beállítása) példányszámláló.cs 2006. október 17. 20

Osztály szintű tagok (példa, 2. rész) class PéldányszámlálóTeszt static void Main() Példányszámláló teszt = new Példányszámláló(); Console.WriteLine("Létrehoztam egy példányt"); Console.WriteLine("Példányszám: " + Példányszámláló.Darabszám); for (int i = 0; i < 10; i++) new Példányszámláló(); Console.WriteLine("Létrehoztam még tíz példányt"); Console.WriteLine("Példányszám: " + Példányszámláló.Darabszám); Console.ReadLine(); példányszámláló.cs 2006. október 17. 21

Beágyazott osztályok Az osztályok tetszıleges mélységben egymásba ágyazhatók Az egymásba ágyazással logikai tartalmazást jelezhetünk Az egymásba ágyazás nem jelent hierarchikus alá-, illetve fölérendelést A beágyazott típusok (osztályok) láthatóság szempontjából normál tagoknak minısülnek (láthatóságuk tehát tetszılegesen megadható, alapértelmezésben private) Beágyazott osztályokra azok teljes (minısített) nevével hivatkozhatunk A hivatkozás formája: osztály.beágyazottosztály 2006. október 17. 22

using System; Beágyazott osztályok (példa) class KülsıOsztály public class BelsıOsztály public void Üzenı() Console.WriteLine("Hurrá, belül vagyunk!"); public void Üzenı() Console.WriteLine("Kívül vagyunk."); KülsıOsztály K = new KülsıOsztály(); KülsıOsztály.BelsıOsztály B = new KülsıOsztály.BelsıOsztály(); K.Üzenı(); B.Üzenı(); beágyazottosztályok.cs 2006. október 17. 23

Felbontott típusok A felbontott típusok több fizikai részre osztott, logikai szempontból viszont egységes típusok Példa: egy-egy osztály forráskódja elosztva, több fájlban is tárolható A felbontott típusok minden részét a partial kulcsszóval kell megjelölni Elınye, hogy a típusok úgy oszthatók meg több programozó vagy automatikus kódgenerátor között, hogy fizikailag nem kell osztozniuk a forrásfájlokon Különválasztható (és ezáltal külön fejleszthetı és verzionálható) az osztályok automatikusan, illetve kézzel elıállított része Különválasztható az egyes osztályok kódján dolgozó fejlesztıcsapatok munkája is A felbontott típusok elemeit a C# fordító összefésüli A fordító úgy kezeli az elemeket, mintha egy fájlban, egy típusdefinícióként hoztuk volna létre ıket Ellentmondás esetén a fordítás nem lehetséges A felbontott típusok elemei csak együtt, egyszerre fordíthatók le Nem lehetséges tehát már lefordított osztályokat utólag ilyen technikával bıvíteni 2006. október 17. 24

Felbontott típusok (példa) partial class Részvény private readonly string részvénynév; private double részvényárfolyam = 0.0; public int Darabszám; public Részvény(string név, double class árfolyam, Részvény int darabszám) private readonly string részvénynév; private double részvényárfolyam = 0.0; public int Darabszám; Részvény_KovácsJános.cs public Részvény(string név, double árfolyam, int darabszám) partial class Részvény public void Vétel(int mennyiség) public void Vétel(int mennyiség) public void Eladás(int mennyiség) public void Eladás(int mennyiség) public void ÁrfolyamBeállítás(double árfolyam) public void ÁrfolyamBeállítás(doublepublic árfolyam) double Érték() public double Érték() Részvény_SzabóPéter.cs 2006. október 17. 25