a .net framework és programozása c# nyelvenmath.uni-pannon.hu/~lipovitsa/cs/1.pdf · •a c# a...

23
A .NET Framework és programozása C# nyelven Kedd 16-17 30 I104

Upload: phungkhanh

Post on 06-Feb-2018

217 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: A .NET Framework és programozása C# nyelvenmath.uni-pannon.hu/~lipovitsa/cs/1.pdf · •A C# A Visual Studio ... Programozás élesben, InfoKit, 2004 John Sharp: Visual C# 2005,

A .NET Framework és

programozása C# nyelven

Kedd 16-1730

I104

Page 2: A .NET Framework és programozása C# nyelvenmath.uni-pannon.hu/~lipovitsa/cs/1.pdf · •A C# A Visual Studio ... Programozás élesben, InfoKit, 2004 John Sharp: Visual C# 2005,

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)

Page 3: A .NET Framework és programozása C# nyelvenmath.uni-pannon.hu/~lipovitsa/cs/1.pdf · •A C# A Visual Studio ... Programozás élesben, InfoKit, 2004 John Sharp: Visual C# 2005,

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

Page 4: A .NET Framework és programozása C# nyelvenmath.uni-pannon.hu/~lipovitsa/cs/1.pdf · •A C# A Visual Studio ... Programozás élesben, InfoKit, 2004 John Sharp: Visual C# 2005,

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

Page 5: A .NET Framework és programozása C# nyelvenmath.uni-pannon.hu/~lipovitsa/cs/1.pdf · •A C# A Visual Studio ... Programozás élesben, InfoKit, 2004 John Sharp: Visual C# 2005,

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

Page 6: A .NET Framework és programozása C# nyelvenmath.uni-pannon.hu/~lipovitsa/cs/1.pdf · •A C# A Visual Studio ... Programozás élesben, InfoKit, 2004 John Sharp: Visual C# 2005,

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

Page 7: A .NET Framework és programozása C# nyelvenmath.uni-pannon.hu/~lipovitsa/cs/1.pdf · •A C# A Visual Studio ... Programozás élesben, InfoKit, 2004 John Sharp: Visual C# 2005,

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..

Page 8: A .NET Framework és programozása C# nyelvenmath.uni-pannon.hu/~lipovitsa/cs/1.pdf · •A C# A Visual Studio ... Programozás élesben, InfoKit, 2004 John Sharp: Visual C# 2005,

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)

Page 9: A .NET Framework és programozása C# nyelvenmath.uni-pannon.hu/~lipovitsa/cs/1.pdf · •A C# A Visual Studio ... Programozás élesben, InfoKit, 2004 John Sharp: Visual C# 2005,

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

Page 10: A .NET Framework és programozása C# nyelvenmath.uni-pannon.hu/~lipovitsa/cs/1.pdf · •A C# A Visual Studio ... Programozás élesben, InfoKit, 2004 John Sharp: Visual C# 2005,

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

Page 11: A .NET Framework és programozása C# nyelvenmath.uni-pannon.hu/~lipovitsa/cs/1.pdf · •A C# A Visual Studio ... Programozás élesben, InfoKit, 2004 John Sharp: Visual C# 2005,

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

Page 12: A .NET Framework és programozása C# nyelvenmath.uni-pannon.hu/~lipovitsa/cs/1.pdf · •A C# A Visual Studio ... Programozás élesben, InfoKit, 2004 John Sharp: Visual C# 2005,

CLR .NET 4.5.1

Page 13: A .NET Framework és programozása C# nyelvenmath.uni-pannon.hu/~lipovitsa/cs/1.pdf · •A C# A Visual Studio ... Programozás élesben, InfoKit, 2004 John Sharp: Visual C# 2005,

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

Page 14: A .NET Framework és programozása C# nyelvenmath.uni-pannon.hu/~lipovitsa/cs/1.pdf · •A C# A Visual Studio ... Programozás élesben, InfoKit, 2004 John Sharp: Visual C# 2005,

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

Page 15: A .NET Framework és programozása C# nyelvenmath.uni-pannon.hu/~lipovitsa/cs/1.pdf · •A C# A Visual Studio ... Programozás élesben, InfoKit, 2004 John Sharp: Visual C# 2005,

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, ...

Page 16: A .NET Framework és programozása C# nyelvenmath.uni-pannon.hu/~lipovitsa/cs/1.pdf · •A C# A Visual Studio ... Programozás élesben, InfoKit, 2004 John Sharp: Visual C# 2005,

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)

Page 17: A .NET Framework és programozása C# nyelvenmath.uni-pannon.hu/~lipovitsa/cs/1.pdf · •A C# A Visual Studio ... Programozás élesben, InfoKit, 2004 John Sharp: Visual C# 2005,

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 !

Page 18: A .NET Framework és programozása C# nyelvenmath.uni-pannon.hu/~lipovitsa/cs/1.pdf · •A C# A Visual Studio ... Programozás élesben, InfoKit, 2004 John Sharp: Visual C# 2005,

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

Page 19: A .NET Framework és programozása C# nyelvenmath.uni-pannon.hu/~lipovitsa/cs/1.pdf · •A C# A Visual Studio ... Programozás élesben, InfoKit, 2004 John Sharp: Visual C# 2005,

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

Page 20: A .NET Framework és programozása C# nyelvenmath.uni-pannon.hu/~lipovitsa/cs/1.pdf · •A C# A Visual Studio ... Programozás élesben, InfoKit, 2004 John Sharp: Visual C# 2005,

Feladat

• Automatikus szemétgyűjtő demo (egy osztály, amelyik

statikus adattagban számolja a példányai számát)

Page 21: A .NET Framework és programozása C# nyelvenmath.uni-pannon.hu/~lipovitsa/cs/1.pdf · •A C# A Visual Studio ... Programozás élesben, InfoKit, 2004 John Sharp: Visual C# 2005,

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)

Page 22: A .NET Framework és programozása C# nyelvenmath.uni-pannon.hu/~lipovitsa/cs/1.pdf · •A C# A Visual Studio ... Programozás élesben, InfoKit, 2004 John Sharp: Visual C# 2005,

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

Page 23: A .NET Framework és programozása C# nyelvenmath.uni-pannon.hu/~lipovitsa/cs/1.pdf · •A C# A Visual Studio ... Programozás élesben, InfoKit, 2004 John Sharp: Visual C# 2005,

Reflector

• math.uni-pannon.hu\~lipovitsa\Reflector.zip