Előadást letölteni
Az előadás letöltése folymat van. Kérjük, várjon
KiadtaÁbel Vörös Megváltozta több, mint 10 éve
1
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz
2
2 Probléma: A példány deklarálásakor meg kell adni a típusnevet. A típusnévnek egyedinek kell lennie. A típusnév lényegében osztálynév. Egy nagyobb objektum-osztály gyűjteményben több ezer osztály is előfordulhat. Ráadásul ha kiegészítő library-ket is használunk más-más külső (3rd party) programozók, fejlesztő cégek munkájakánt, akkor már könnyedén előfordulhat, hogy az osztálynév nem egyedi. Megoldás: Struktúrált (több szintű, összetett) osztálynév használata.
3
3 namespace Networking { class WebBrowser {... } namespace Networking { class WebBrowser {... } Az osztály neve itt ‘WebBrowser’, de a teljes (minősített neve) ‘NetWorking.WebBrowser’. Networking.WebBrowser ie = new Networking.WebBrowser();
4
4 A Base Class Library is több ezer objektumosztályt tartalmaz. Ezek között eligazodni is nehéz. A namespace-k segítenek, csoportosítják témakör szerint az osztályokat: System.Collections : összetett adatszerkezetek (tömbök, listák, verem, sor, …) System.Drawing : rajzoláshoz szükséges osztályok (ecset, toll, képformátumok, festővászon, …) System.IO : alkönyvtárak, állományok kezelése System.Reflection : futás közbeni típusinformációk kezelése, attribútumok, dll-ek (assembly) kezelése System.Runtime.Remoting : távoli metódushívások kezelése System.Threading : többszálú programok írása, kritikus szakaszok kezelése, lock-olás System.Web : web alapú kommunikációk kezelése … System.Collections : összetett adatszerkezetek (tömbök, listák, verem, sor, …) System.Drawing : rajzoláshoz szükséges osztályok (ecset, toll, képformátumok, festővászon, …) System.IO : alkönyvtárak, állományok kezelése System.Reflection : futás közbeni típusinformációk kezelése, attribútumok, dll-ek (assembly) kezelése System.Runtime.Remoting : távoli metódushívások kezelése System.Threading : többszálú programok írása, kritikus szakaszok kezelése, lock-olás System.Web : web alapú kommunikációk kezelése …
5
5 namespace System { namespace Threading { class Thread {... } namespace System { namespace Threading { class Thread {... } System.Threading.Thread t = …; Névtér neve Osztály neve
6
6 namespace System.Threading { class Thread {... } namespace System.Threading { class Thread {... } using System.Threading; … Thread t = new Thread( … ); using System.Threading; … Thread t = new Thread( … ); Névtér neve Osztály neve
7
7 Az osztályok nevét elvileg mindig minősített névvel (teljes névvel) kellene használni. De hogy ne kelljen annyit gépelni, a C#-ban lehetőség van a program elején a leggyakrabban használt namespace-k deklarálására a ‘using’ kulcsszóval. A ‘using’ után névterek nevét kell megadni. A program elején több ‘using’-ot is megadhatunk.
8
8 using System; using System.Threading; using System.Collection; using System.IO; using System.Environment; … FileStream f = new FileStream(”C:/hello.txt”); using System; using System.Threading; using System.Collection; using System.IO; using System.Environment; … FileStream f = new FileStream(”C:/hello.txt”); System.FileStream ?NEM System.Threading.FileStream ?NEM System.Collection.FileStream ?NEM System.IO.FileStream ? IGEN
9
9 using System; using System.Timers; using System.Threading; using System.Windows.Forms; … Timer t = new Timer(); using System; using System.Timers; using System.Threading; using System.Windows.Forms; … Timer t = new Timer(); System.Timer?NEM System.Timers.Timer?IGEN System.Threading.Timer ?IGEN System.Windows.Forms.Timer ?IGEN Nem szabad, hogy egy osztálynév ne legyen egyértelmű! System.Timers.Timer t = new System.Timers.Timer();
10
10 using alap = System.Windows.Forms; … alap.Timer t = new alap.Timer(); using alap = System.Windows.Forms; … alap.Timer t = new alap.Timer(); ‘alias’, álnév létrehozása
11
11 using System; namespace sajat { class FoProgram { public static void Main() { Console.WriteLine(”Helló világ!”); } using System; namespace sajat { class FoProgram { public static void Main() { Console.WriteLine(”Helló világ!”); } Elvileg minden osztályt illik névtérbe helyezni. Ha nem helyezzük névtérbe, akkor az üres névtérbe (más néven globális névtér) helyezzük!
12
12 using System; class FoProgram { public static void Main() { Console.WriteLine(”Helló világ!”); } using System; class FoProgram { public static void Main() { Console.WriteLine(”Helló világ!”); } Ez itt a globális névtér. Tartózkodjuk az ilyen megoldástól, mert elveszítjük annak lehetőségét, hogy ha osztálynév-ütközés van, akkor a minősített név használatával fel tudjuk azt oldani!
13
13 namespace sajat { class SegedOsztaly {... } }... namespace sajat { class Masik:sajat.SegedOsztaly {... } class Harmadik:SegedOsztaly {... } } namespace sajat { class SegedOsztaly {... } }... namespace sajat { class Masik:sajat.SegedOsztaly {... } class Harmadik:SegedOsztaly {... } } A namespace bármikor folytatható. A ‘namespace’ belsejében ugyanarra a névtérre nem kell minősített nevet használni.
Hasonló előadás
© 2024 SlidePlayer.hu Inc.
All rights reserved.