PROGRAMOWANIE WIZUALNE
description
Transcript of PROGRAMOWANIE WIZUALNE
PROGRAMOWANIE WIZUALNE
● metoda tworzenia programu za pomocą narzędzi umożliwiających wybór standardowych elementów z menu z automatyczną generacją dużej części kodu źródłowego
PrzyciskPrzycisk
PrzyciskPrzycisk
MS Windows• wieloprocesowy system operacyjny
• sprzęg użytkowy C kilka tysięcy funkcji
• programowanie współbieżne
START
czy jest komunikat
czy kom. zakończenia
STOP
TAK
NIE
TAK
NIEobsługa komunikatu
Tworzenie Programów dla Środowiska MSWs
Application Programming Interface (API)
Software Development Kit (SDK)
biblioteki klas : OWL (Borland),
MFC (Microsoft), ATL (Microsoft)
przekład programu (.exe) zawiera :
— treść binarną (rozkazy, dane)
— zasoby : ikony, kursory, mapy bitowe, menu, akceleratory, dialogi, teksty
MSWs
MFC
API
API
Aplikacja Źródłowa
Aplikacja
class Baza
{ public : int x; }
//
class Potomek : public Baza
{ public: int y; }
//
Baza* ob = new Potomek;
ob -> x; // ok
ob -> y; // błąd
(( Potomek* ) ob ) -> y ; // ok
VB C# C++ L......
CVB CC# CC++ CL......
PAKIET ( CIL .exe , .dll )
Środowisko .NET
P1 P2 Pn..... CLASS LIBRARY
LOADER
JITC
BIN EXEC
N
E
T
.
F
r
a
m
e
w
o
r
k
pakiet ( assembly )
a - manifest
b - metadane opisujące typy
c - przekład w CIL
d - zasoby
mogą być
w wielu plikach
PE Header a + b + c + d
Start
pakiet.exe
wspólny system typów CTS
wspólna specyfikacja języka CLS
biblioteka klas platformy FCL
przestrzenie nazw
zbieranie śmieci
wspólne środowisko wykonawcze CLR
kod zarządzany i nie zarządzany
CIL (MSIL)
class Program
{ static int Main(string[] args)
{
int a = 5, b, c;
c = a + 3;
b = c + 2;
return b;
}
}
IL_0000: ldc.i4.5
IL_0001: stloc.0
IL_0002: ldloc.0
IL_0003: ldc.i4.3
IL_0004: add
IL_0005: stloc.2
IL_0006: ldloc.2
IL_0007: ldc.i4.2
IL_0008: add
IL_0009: stloc.1
IL_000a: ldloc.1
IL_000b: ret
ILDASMC:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\Bin
.method private hidebysig static int32 Main(string[] args) cil managed
{
.entrypoint
// Code size 12 (0xc)
.maxstack 2
.locals init ([0] int32 a,
[1] int32 b,
[2] int32 c)
// MSIL instructions
} // end of method Program::Main
Plik .exe ( Release )
File size : 16384
PE header size : 4096 (496 used) (25.00%)
PE additional info : 1075 ( 6.56%)
Num.of PE sections : 3
CLR header size : 72 ( 0.44%)
CLR meta-data size : 1404 ( 8.57%)
CLR additional info : 0 ( 0.00%)
CLR method headers : 13 ( 0.08%)
Managed code : 19 ( 0.12%) !!!!!
Data : 8192 (50.00%)
Unaccounted : 1513 ( 9.23%)
Asembler
int a = 5, b, c;
00000015 xor edi,edi // a
00000017 xor esi,esi // b
00000019 xor ebx,ebx // c
0000001b mov edi,5 // a
c = a + 3;
00000020 lea eax,[edi+3]
00000023 mov ebx,eax
b = c + 2;
00000025 lea eax,[ebx+2]
00000028 mov esi,eax
class Program
{
static int Main(string[] args)
{
double a = 5, b, c;
c = a + 3;
b = c + 2;
return 0;
}
}
double a = 5, b, c;
0000001a fldz
0000001c fstp qword ptr [esp+8] // a = 0
00000020 fldz
00000022 fstp qword ptr [esp+10h] // b = 0
00000026 fldz
00000028 fstp qword ptr [esp+18h] // c = 0
0000002c fld dword ptr ds:[03731140h] // 5
00000032 fstp qword ptr [esp+8] // a = 5
c = a + 3;
00000036 fld qword ptr [esp+8]
0000003a fadd dword ptr ds:[03731148h] // a + 3
00000040 fstp qword ptr [esp+18h]
b = c + 2;
00000044 fld qword ptr [esp+18h]
00000048 fadd dword ptr ds:[03731150h] // b + 2
0000004e fstp qword ptr [esp+10h]
MS Visual Studio ( MFC, C++ )
1.0 , ..... , 6.0
MS Visual Studio.NET ( FCL, C# )
2002 , 2003 , 2005 , 2008, 2010, 2012, 2013
NET . Framework , NET . Compact Framework
1.0 , 2.0 , 3.0 , 3.5, 4.0, 4.5, 5.0
C++ Kod Zarządzany
słowo kluczowe opis
__abstract klasa abstrakcyjna__box opakowanie (stos sterta)__delegate zamiana wsk. funkcji na delegację__event zgłoszenie zdarzenia__finally blok końcowy obsługi wyjątków__gc typ podlega zbieraniu śmieci__identifier odróżnia identyfikatory od słów kluczowych C++__interface wszystkie funkcje składowe są czystymi funkcjami wirtualnymi__nogc nie podlega zbieraniu śmieci__pin zabrania przesuwania przez gc__property tworzy właściwość__sealed nie może być klasą bazową__try_cast rzutowanie z ew. wyjątkiem__typeof typ obiektu zarządzanego__value utworzenie wartości (stos)