a .net framework és programozása c# nyelvenmath.uni-pannon.hu/~lipovitsa/cs/1.pdf · •a c# a...
Post on 06-Feb-2018
223 Views
Preview:
TRANSCRIPT
A .NET Framework és
programozása C# nyelven
Kedd 16-1730
I104
Feltételek • I104 Visual Studio 2013 • Letölthető http://msdn.mik.uni-pannon.hu
oldalról ▫ Aki saját gépet hoz, annak javasolt a legújabb verzió
letöltése ▫ A telepítésnél MsSQL Express is
• Gyakorlati jegy (portfólió): ▫ Zh (lehet saját gépen, minden használható) ▫ Órán feltöltött feladatok ▫ HF-ok ▫ Választott témakör feldolgozása (beépítése a
keretrendszerbe)
Témakörök
• A .NET • A C#
▫ A Visual Studio fejlesztőeszköz ▫ Az osztály és az objektum ▫ A vezérlők, tulajdonságok, események, ablakok ▫ Az öröklés és a .NET osztálykönyvtár ▫ A felügyelt kód és a Toolbox komponensek
• Nyelvi specialitások • DLL • Windows vezérlő • Adatbázis-elérés • Webalkalmazás • Mobilalkalmzás
Ajánlott irodalom
▫ Albert István, Balássy György, Charaf Hassan, Erdélyi Tibor, Horváth Ádám, Levendovszky Tihamér, Péteri Szilárd, Rajacsics Tamás: A .NET Framework és programozása, Szak kiadó, 2004
▫ Bradley L. Jones: C# mesteri szinten, Kiskapu Kft, 2004
▫ MSDN Online: http://msdn.microsoft.com
▫ www.microsoft.com/net
▫ Code.msdn.com
▫ Csharp.lap.hu
▫ Sipos Marianna: Programozás élesben, InfoKit, 2004
▫ John Sharp: Visual C# 2005, Szak kiadó, 2005
▫ Trey Nash: C# 2008, Panem Könyvkiadó, 2009
MCP vizsgák
• Bővebben: http://www.microsoft.com/learning/mcp/default.asp
• Kapcsolodó vizsgák:
• http://www.microsoft.com/learning/exams/70-315.asp
• http://www.microsoft.com/learning/exams/70-316.asp
• http://www.microsoft.com/learning/exams/70-320.asp
• http://www.microsoft.com/learning/exams/70-340.asp
Mi a .NET?
• Platform, melynek fő részei ▫ Absztrakciós réteg az operációs rendszer fölött
(Common Language Runtime), benne közös típusrendszer
▫ Közös típusrendszerre épülő sokrétű osztálykönyvtár (Base/Framework Class Library)
▫ Fejlesztő eszközök és nyelvek, melyek a közös köztes nyelvre (Common Language Infrastucture) készítenek programokat
Windows
Common Language Runtime
Base Class Library
ADO.NET and XML
ASP.NET
Web Forms Web Services
Mobile Internet Toolkit
Windows
Forms
A .NET Framework
Rich Runtime Environment
(Sokrétű futási környezet)
• Common Language Runtime
(közös nyelvi futási környezet)
minden nyelv számára közös:
• Típusrendszer
• Metaadat kezelés
• Futtató környezet
• Jobb biztonság és telepítés
Rich Class libraries
(Sokrétű osztálykönyvtárak)
• Sokrétűbb API lehetőségek
• Hierarchikus névterek
• Konzisztens, lényegében
objektum-orientált tervezési
minták
• Koncentrálás a kódra, és nem a
ragasztó részekre
Eszközök támogatása
• Tervezés, Nyomkövetés, stb..
Előnyök
.NET Framework
Hátrányok
Nem natív kód, fordítás szükséges
Biztonságos kód
Könnyű telepítés
Többnyelvűség
Konzisztens programozási modell
Kisebb kódhiba lehetőség
Hardver és op rendszer függetlenségi lehetőség (Compact Framework)
Nyelvi támogatás A .NET által támogatott nyelvek
• A .NET platform és nyelv semleges
▫ Minden .NET nyelv teljes értékű
▫ A meglévő nyelvtudás továbbra is használható
Web Services User Interface
Common Language Runtime
Base Framework
ADO.NET: Data and XML
VB C++ C# Perl Python …
ASP.NET
Nyelvi támogatás 21 nyelv
• Microsoft
▫ C++, C#, Visual Basic, Jscript, Java
• Más gyártók
▫ APL, Cobol, Component Pascal, Eiffel, Fortran, Fujitsu Cobol, Haskell, Mercury, Oberon, Oz, Perl, Python, RPG, Scheme, Smalltalk, Standard ML, Delphi
.NET
Perl
Python
VBScript
JScript COBOL
APL
Smalltalk
C++
C#
Visual Basic
Scheme
Oz
Mercury
ML
Haskell
Oberon
Eiffel
Nyelvi támogatás Alap nyelvek
Visual C#.NET ▫ Modern, komponens orientált, szigorúan típusos nyelv ▫ C++-hoz hasonló szintaktika ▫ Gyors alkalmazás fejlesztés lehetősége C++ fejlesztőknek
Visual C++.NET ▫ Attribútum alapú programozás ▫ Felügyelt kiterjesztések (Managed Extensions) C++-hoz ▫ Teljesen illeszkedik a .NET keretrendszerbe
Visual Basic.NET ▫ Objektum orientált nyelv kód újrahasznosítással ▫ Szabad szálkezelés, maximális léptékezhetőség ▫ Strukturált kivétel kezelés, könnyű karbantarthatóság ▫ Megőrizte a megszokott Visual Basic szintaktikát
CLR .NET 4.5.1
Visual C# .NET Egy komponens alapú nyelv
• A C# az első “komponens orientált” nyelv a C/C++ családban
• Kiváló komponens koncepciók
▫ Tulajdonságok, tagfüggvények, események
▫ Tervezés- és futásidejű attribútumok
▫ XML-en alapuló integrált dokumentáció
• Programozás egy helyen
▫ Nincsenek header, IDL, stb. fájlok
▫ Beágyazható ASP.NET lapokba
A fájlok struktúrája
• Nincs header fájl
• C# támogatja a „definíció a deklarálásnál" modellt
▫ mint a Visual Basic, Pascal, Modula, Java
• Minden kód és deklaráció egy helyen
▫ a kód konzisztens és könnyen kezelhető
▫ csapatmunka esetén sokkal közérthetőbb
▫ deklaráció metaadatokon át jobban elérhető
• Feltételes fordítás (prepocesszor) van, de makró nincs
A típus rendszer
• A .NET CLS típus-rendszerére épül
• Natív elérés a .NET típus rendszerhez
▫ C# a .NET bölcsőjéből született
• Minden Objektum
▫ minden objektum implicite a System.Object–ből származik
Console.Write( 256.ToString() );
• Megkülönböztetés érték és a referencia típusok között
érték: egyszerű típusok, enum, struct
referencia: interface, class, array, string, ...
Az egyszerű típusok
• Egész típusok
▫ int, uint (32 bit), long, ulong (64 bit)
▫ byte, sbyte (8 bit), short, ushort (16 bit)
• IEEE lebegőpontos típusok
▫ double (pontosság: 15-16 számjegy)
▫ float (pontosság: 7 számjegy)
• Pontos szám típus
▫ decimal (28 szignifikáns számjegy)
• Karakter típusok
▫ char (egy unicode karakter, nem cserélhető fel az int-tel)
▫ string (gazdag funkcionalitás, referencia szerinti típus)
• Boolean típus
▫ bool (külön típus, nem cserélhető fel az int-tel)
Tömbök • Nulla alapú, erősen típusos, a .NET System.Array
osztályán alapul
• Deklaráláskor típus és dimenziók, de nincs korlát ▫ int[] EgyDim;
▫ int[,] KetDim;
▫ int [][] Beagyazott;
• Létrehozás new–val (korlátokkal vagy inicializálással) ▫ EgyDim = new int[20];
▫ KetDim = new int[,] { {1,2,3}, {4,5,6} };
KetDim[0,0] == 1 !
▫ Beagyazott = new int[1][];
▫ Beagyazott[0] = new int[]{1,2,3};
Beagyazott[0][2] == 3 !
Statementek
• C-szerű: Flow Control és Loop
▫ if (<bool expr>) { ... } else { ... }
▫ switch(<var>) { case <const>: ...; }
▫ while (<bool expr>) { ... }
▫ for (<init>;<bool test>;<modify>) { ... }
▫ foreach( típus <var> in <var> ) { ... } ▫ do { ... } while (<bool expr>);
• Nem C szerű:
▫ lock(<object>){ ... };
nyelvvel járó kritikus szekció szinkronizáció lehetőség
▫ checked { ... }; unchecked { ... };
▫ checked ( ... ); unchecked ( ... );
uncheck: aritmetikai műveletek hibáinak kezelése, nullával osztás NEM
Operátorok
• C-szerű: ▫ Logikai: && || ^ !
▫ Aritmetikus: * / + - % << >>
▫ Relácionális: == != < > >= <=
• C-hez hasonló: ▫ Integer: & és | bináris AND/OR
▫ Bool: & és | logikai operátor teljes kiértékeléssel
1 == 0 && isValid( a )
1 == 0 & isValid( a ) isValid hívás
• Nem C-szerű: ▫ is: Runtime-Type tesztelése
▫ as: Type-Cast, nincs exception, null lesz
▫ typeof: Runtime-Type lekérése
Feladat
• Automatikus szemétgyűjtő demo (egy osztály, amelyik
statikus adattagban számolja a példányai számát)
Szemétgyűjtő
• Módszerek
▫ Kézi (free, delete): hatékony, sok hibalehetőség, csak egy modulon belül működik
▫ Referencia számlálás (komponens rendszerek): körkörös hivatkozások detektálása probléma
▫ Teljesen automatikus (Java, .NET): gyors fejlesztés, nincs memória szivárgás, lassú lehet
• Módszer
▫ A gyökér elemektől (globális, lokális, modulokat összekapcsoló változók) bejárni a hivatkozási láncot
▫ Ami elérhetetlen a programból, az szemét, törölhető
▫ Memóriatömörítés (defragmentálás)
Szemétgyűjtő
• A .NET-ben ▫ Ideje nem definiált ▫ Generációk (a fiatal objektumok korán halnak)
▫ Nincs mindig memóriatömörítés
▫ Destruktorok (nem törölhető rögtön az
objektum, újraélesztés lehetséges)
▫ Szerver és kliens változatok (Konkurens futás, Szálak száma)
+ gyökér-objektu
m
+
objektum
+ gyökér-objektu
m
+ gyökér-objektu
m
+
objektum
+
objektum +
objektum
+
objektum
+
objektum
+
objektum
+
objektum szemét
szemét
Reflector
• math.uni-pannon.hu\~lipovitsa\Reflector.zip
top related