Pobierz prezentację
Pobieranie prezentacji. Proszę czekać
OpublikowałUrszula Picheta Został zmieniony 11 lat temu
1
Programowanie w środowiskach zintegrowanych wykład 1 PSZ Programowanie w Środowiskach Zintegrowanych > Systemy i środowiska zintegrowane > Środowisko zintegrowane Visual Studio.NET
2
Programowanie w środowiskach zintegrowanych w wykładzie wykorzystano dostępne publicznie materiały firmy Microsoft, pochodzące z prezentacji.NET Framework & C#
3
Programowanie w środowiskach zintegrowanych Konspekt bieżącego wykładu Część administracyjna Podział typów Biblioteka system Biblioteka forms
4
Programowanie w środowiskach zintegrowanych Organizacja egzaminu / zaliczenia Strona http://sun.iinf.polsl.gliwice.pl/~mkolanohttp://sun.iinf.polsl.gliwice.pl/~mkolano Sekcja
5
Programowanie w środowiskach zintegrowanych Visual Studio.NET Operating System Common Language Runtime Base Class Library ADO.NET and XML ASP.NET Web Forms Web Services Mobile Internet Toolkit WindowsForms Common Language Specification VBC++C#JScriptJ# Visual Studio.NET
6
Programowanie w środowiskach zintegrowanych Typy w.NET Podział typów –Typy bezpośrednie (value type) są pochodnymi klasy System.ValueType. Zmienne tego typu przekazywane są przez wartość, podobnie jak typy proste w językach programowania. Wartości bezpośrednie zwykle przechowywane są na stosie. Dla zmiennych typów bezpośrednich istotna jest de facto wyłącznie wartość (obiekty wartościowe wg. CLR). Reprezentacja jest zwykle bardzo prosta. –Typy referencyjne – klasy, do których dostęp zawsze odbywa się przez wskaźnik. Złożona aktywność, struktura i reprezentacja (obiekty usługowe i rzeczywiste wg. CLR). Do wykonywania operacji potrzebne są raczej wyrafinowane metody niż proste operacje. Jedynym miejscem do przechowywania danych o obiektach typów referencyjnych jest pamięć. –Zauważmy, że typy bezpośrednie posiadają wsparcie sprzętowe. Procesor posiada rejestry stało i zmiennopozycyjne, i zdolny jest do wykonywania pewnego zestawu operacji na wartościach w nich przechowywanych. W przypadku typów referencyjnych sprzętowego wsparcie brak. Możemy jednak wykorzystać wbudowane w procesor mechanizmy adresacji pamięci (wskaźniki)
7
Programowanie w środowiskach zintegrowanych Typy w.NET źródło: Microsoft ®
8
Programowanie w środowiskach zintegrowanych Przestrzeń nazw System Zawiera podstawowe –klasy –klasy bazowe –interfejsy –struktury –delegacje –typy wyliczeniowe często używane lub wspólne dla całej platformy.NET
9
Programowanie w środowiskach zintegrowanych CategoryClass name DescriptionVisual Basic data type C# data typeManaged Extensions for C++ data type JScript data type IntegerByteAn 8-bit unsigned integer.BytebytecharByte SByteAn 8-bit signed integer. Not CLS-compliant. SByte No built-in type. sbytesigned charSByte Int16A 16-bit signed integer.Shortshort Int32A 32-bit signed integer.Integerintint -or- Longint Int64A 64-bit signed integer.Longlong__int64long UInt16A 16-bit unsigned integer. Not CLS-compliant. UInt16 No built-in type. ushortunsigned shortUInt16 UInt32A 32-bit unsigned integer. Not CLS-compliant. UInt32 No built-in type. uintunsigned int -or- unsigned long UInt32 UInt64A 64-bit unsigned integer. Not CLS-compliant. UInt64 No built-in type. ulongunsigned __int64 UInt64 Floating point SingleA single-precision (32-bit) floating-point number. Singlefloat DoubleA double-precision (64-bit) floating-point number. Doubledouble LogicalBooleanA Boolean value (true or false).Booleanbool OtherCharA Unicode (16-bit) character.Charcharwchar_tchar DecimalA 96-bit decimal value.DecimaldecimalDecimal IntPtrA signed integer whose size depends on the underlying platform (a 32-bit value on a 32- bit platform and a 64-bit value on a 64-bit platform). IntPtr No built-in type. IntPtr No built-in type. IntPtr No built-in type. IntPtr UIntPtrAn unsigned integer whose size depends on the underlying platform (a 32- bit value on a 32-bit platform and a 64-bit value on a 64- bit platform). Not CLS-compliant. UIntPtr No built-in type. UIntPtr No built-in type. UIntPtr No built-in type. UIntPtr Class objectsObjectThe root of the object hierarchy.ObjectobjectObject*Object StringAn immutable, fixed-length string of Unicode characters. StringstringString*String Typy podstawowe źródło: Microsoft ®
10
Programowanie w środowiskach zintegrowanych Klasa object Public Constructors –Object Initializes a new instance of the Object class.Object Public Methods –Equals Overloaded. Determines whether two Object instances are equal.Equals –GetHashCode Serves as a hash function for a particular type. GetHashCode is suitable for use in hashing algorithms and data structures like a hash table.GetHashCode –GetType Gets the Type of the current instance.GetTypeType –ReferenceEquals Determines whether the specified Object instances are the same instance.ReferenceEquals –ToString Returns a String that represents the current Object.ToStringString Protected Methods –Finalize Allows an Object to attempt to free resources and perform other cleanup operations before the Object is reclaimed by garbage collection.Finalize –MemberwiseClone Creates a shallow copy of the current Object.MemberwiseClone źródło: Microsoft ®
11
Programowanie w środowiskach zintegrowanych Różnica pomiędzy operatorem == i Equals public class Sample { void Method() { Object Obj1 = new Object(); Object Obj2 = new Object(); Console.WriteLine(Obj1.Equals(Obj2)); //===> false Obj2 = Obj1; Console.WriteLine(Obj1.Equals(Obj2)); //===> true } źródło: Microsoft ®
12
Programowanie w środowiskach zintegrowanych Przykład using System; class Point: Object { protected int x, y; public Point() { this.x = 0; this.y = 0; } public Point(int X, int Y) { this.x = X; this.y = Y; } public override bool Equals(Object obj) { //Check for null and compare run-time types. if (obj == null || GetType() != obj.GetType()) return false; Point p = (Point)obj; return (x == p.x) && (y == p.y); } public override int GetHashCode() { return x ^ y; } class Point3D: Point { int z; public Point3D(int X, int Y, int Z) { this.x = X; this.y = Y; this.z = Z; } public override bool Equals(Object obj) { return base.Equals(obj) && z == ((Point3D)obj).z; } public override int GetHashCode() { return base.GetHashCode() ^ z; } źródło: Microsoft ®
13
Programowanie w środowiskach zintegrowanych Przykład using System; class Rectangle { Point a, b; public Rectangle(int upLeftX, int upLeftY, int downRightX, int downRightY) { this.a = new Point(upLeftX, upLeftY); this.b = new Point(downRightX, downRightY); } public override bool Equals(Object obj) { // Performs an equality check on two rectangles (Point object pairs). if (obj == null || GetType() != obj.GetType()) return false; Rectangle r = (Rectangle)obj; //Uses Equals to compare variables. return a.Equals(r.a) && b.Equals(r.b); } public override int GetHashCode() { return a.GetHashCode() ^ b.GetHashCode(); }
14
Programowanie w środowiskach zintegrowanych funkcja GetHashCode Funkcja mieszająca (haszująca) zwracająca kod, potrzebny przy implementacji szybkiego dostępu. Założenia –jeśli dwa obiekty reprezentują tę samą wartość, wartośc funkcji haszująca powinna dla obu zwrócić tę sama wartość –aby osiągnać najlepszą wydajność przy wyszukiwaniu obiektów, wartości zwracane przez funkcję powinny być dystrubowany równomiernie w całej dziedzinie int –funkcja powinna być łatwa do obliczenia Uwagi: –dobrze skonstruowana funkcja mieszajaca umożliwi odnajdywanie obiektów w tablicy w czasie O(1); funkcja niechlujna może spowodować wiele kolizji, a to będzie oznaczać, że przeszukiwanie będzie przebiegać w czasie O(n), gdzie n jest liczbą elementów w tablicy haszującej.
15
Programowanie w środowiskach zintegrowanych Typy strukturalne Rekody (struktury) – podobnie jak w c++ Unie – bez szczególnego wspracia Pliki – bez szczególnego wsparcia Tablice – zupełnie nowe podejście
16
Programowanie w środowiskach zintegrowanych Klasa System.Array Tablica jest obiektem klasy System.Array, obiekty tablicowe są referencjami; obiekty są zawsze przechowywane na stercie nagłówek: –public abstract class Array : ICloneable, IList, ICollection, IEnumerableICloneableIListICollectionIEnumerable Rodzaje tablic: –jednowymiarowe (singledimensional) –wielowymiarowe (multidimensional) –zagnieżdzone (tablice, tablic) (jagged arrays) Deklaracja tablicy –przechowującej obiekty wartościowe: Int32[] myIntegers; // Declares a reference to an array myIntegers = new Int32[100]; // Create array of 100 Int32s –przechowującej obiekty rzeczywiste: Control[] myControls; // Declares a reference to an array myControls=new Control[49]; // Create array of 49 Control references
17
Programowanie w środowiskach zintegrowanych Klasa System.Array myControls[1] = new Button(); myControls[2] = new TextBox(); myControls[3] = myControls[2]; // 2 elements refer to the same object myControls[46] = new DataGrid(); myControls[47] = new ComboBox(); myControls[48] = new Button();
18
Programowanie w środowiskach zintegrowanych Klasa System.Array Tablice wielowymiarowe // Create a 2-dimensional array of Doubles Double[,] myDoubles = new Double[10, 20]; // Create a 3-dimensional array of Strings String[,,] myStrings = new String[5, 3, 10]; Tablice zagnieżdżone // Create a 1-dimensional array of Point-arrays Point[][] myPolygons = new Point[3][]; // myPolygons[0] refers to an array of 10 Point instances myPolygons[0] = new Point[10]; // myPolygons[1] refers to an array of 20 Point instances myPolygons[1] = new Point[20]; // myPolygons[2] refers to an array of 30 Point instances myPolygons[2] = new Point[30]; // Display the Points in the second polygon for (Int32 x = 0, l = myPolygons[1].Length; x < l; x++) Console.WriteLine(yPolygons[1][x]);
19
Programowanie w środowiskach zintegrowanych A co dają interfejsy A co dają interfejsy: –ICloneable - daje możliwość klonowania obiektówICloneable –IList – daje możliwość dostępu przez indeksIList –ICollection – daje możliwość traktowania tablicy jak kolekcjiICollection –IEnumerable – daje np. możliwość iterowania się przez for eachIEnumerable
20
Programowanie w środowiskach zintegrowanych Klasa System.Array przykład 9 / 01
21
Programowanie w środowiskach zintegrowanych Kolekcje Kolekcje zgromadzone są w dwóch przestrzeniach nazw –System.Collections ArrayList - tablica o nieokreślonym rozmiarze przechowująca obiekty BitArray – tablica do przechowywania wartości bitowych (boolean) HashTable – tablica par klucz/wartość (key/value) zorganizowana wartości funkcji haszująceh. Queue - kolejka o organizacji first-in, first-out SortedList – lista par klucz / wartość posortowana wg. kluczy. Stack – stos o organizacji first-in, last-out. –System.Collections.Specialized HybridDictionary – struktura hybrydowa używająca ListDictionary, jeśli lista jest mała, i HashTable jeśli lista urośnie. ListDictionary – klasyczna lista,dobra do przechowywania niewielkich kolekcji (zwykle poniżej 10 elementów). NameValueCollection – kolekcja par typu klucz / wartość (oba stringi). StringCollection – kolekcja łańcuchów (stringów). StringDictionary – kolekcja łańcuchów, zbudowana z użyciem funkcji haszującej
22
Programowanie w środowiskach zintegrowanych Przykład użycia using System.Collections;... ArrayList ar = new ArrayList(); ar.Add("a"); ar.Add("b"); ar.Add("c"); foreach(String s in ar) { Console.WriteLine(s); } Uwaga: kolekcje nie mogą być modyfikowane w czasie działania pętli foreach; w przeciwnym wypadku wystąpi wyjątek; dotyczy to także dostępu z wnętrzna innych wątków (brak synchronizacji)
23
Programowanie w środowiskach zintegrowanych Przykład przykład 9 / 02
24
Programowanie w środowiskach zintegrowanych Dostęp do plików Dostęp w postaci natychmiastowej zgrupowany jest w przestrzeni nazw System.IO przykład 9/03
Podobne prezentacje
© 2024 SlidePlayer.pl Inc.
All rights reserved.