Wprowadzenie. Wprowadzenie

Wielkość: px
Rozpocząć pokaz od strony:

Download "Wprowadzenie. Wprowadzenie"

Transkrypt

1 Wprowadzenie Platforma.NET (.NET Framework) stanowi zintegrowane, niezależne od języka programowania środowisko programistyczne służące do wytwarzania i uruchamiania aplikacji lokalnych, internetowych oraz przeznaczonych na urządzenia mobilne Jej podstawowymi elementami składowymi jest środowisko uruchomieniowe CLR () oraz rozbudowana biblioteka klas BCL (Base Class Library) dostarczająca podstawowej funkcjonalności (m.in. operacje na plikach, wyświetlanie grafiki, interakcje z bazami danych, manipulacje dokumentami XML, komunikacja sieciowa, algorytmy kryptograficzne) Wprowadzenie Jednym z priorytetowych założeń w tworzeniu platformy.net było oparcie się na najnowszych standardach internetowych (m.in. XML, HTTP, SOAP, UDDI) oraz nacisk na rozwój usług sieciowych (głównie Web Services) Od swojej premiery w 2000 roku platforma.net jest uznawana za strategiczny kierunek rozwoju nowego oprogramowania w firmie Microsoft "Delivering an Internet-based platform of Next Generation Windows Services is the top priority of our company. The breakthroughs we re talking about here include changes to the programming model, to the user interface, to the application integration model, the file system, new XML schema..." Steve Ballmer Platforma.NET 2 Platforma.NET 3 Wprowadzenie Idea.NET sięga 1997 roku kiedy rozpoczęto prace nad unowocześnieniem technologii COM (Component Object Model) obejmującym przede wszystkim stworzenie lepszego systemu typów oraz usług dla przetwarzania rozproszonego Strategicznym celem prowadzonych prac rozwojowych było zaoferowanie logicznie spójnego i obiektowego środowiska dla różnorodnych aplikacji i usług W celu uniezależnienia się od języka programowania dążono do unifikacji różnych schematów zarządzania kodem, którego efektem końcowym było opracowanie infrastruktury wspólnego języka CLI Ewolucja nazwy projektu: COM3 COR COM+ 2.0 NGWS (Next Generation Windows/Web Services).NET Wprowadzenie Założenia i cele platformy.net: pełna interoperacyjność z istniejącym kodem (m.in. COM, kod natywny, Win32 API) pełna integracja językowa (obsługa wielu języków plus skrośne, międzyjęzykowe dziedziczenie, obsługa wyjątków i debugowanie) mechanizm wykonawczy wspólny dla wszystkich języków obsługiwanych przez platformę.net (język pośredni, dobrze zdefiniowany i zrozumiały dla wszystkich języków zbiór typów) bogata biblioteka klas podstawowych (duża funkcjonalność, uniezależnienie się od wywołań API, zgodny model obiektowy) minimalizacja konfliktów wersji heterogenicznych składników aplikacji (uproszczenie procesu dystrybucji i instalacji kodu) zarządzane środowisko wykonawcze (dowolny system operacyjny, uproszczona weryfikacja kodu pod względem bezpieczeństwa) uniezależnienie się od licencjonowania (i poprawienie) Javy Platforma.NET 4 Platforma.NET 5

2 Common Language Infrastructure Common Language Infrastructure U podstaw tworzonej platformy legła specyfikacja infrastruktury wspólnego języka CLI (Common Language Infrastructure) standardy ECMA-335, ISO/IEC Specyfikacja CLI definiuje: wspólny system typów CTS () zbiór zasad i wymagań definiujących podstawowe reguły współpracy języków programowania CLS (Common Language Specification) metadane (niezależne od języka programowania informacje pomocnicze dotyczące m.in. struktury programu) niezależne od platformy systemowej środowisko wykonywania kodu wirtualnego VES (Virtual Execution System) wspólny język pośredni CIL (Common Intermediate Language) generowany przez wszystkie kompilatory zgodne z CLI standardową bibliotekę klas BCL (Base Class Library) Obecnie ze specyfikacją CLI jest zgodne ponad 50 języków programowania, w tym m.in.: C# Managed C++ VB.NET J# Delphi.NET Fortran.NET JScript.NET Windows PowerShell IronPython IronRuby A#, L#, F#, P#,... Platforma.NET 6 Platforma.NET 7 Common Language Infrastructure Common Language Infrastructure Uproszczony model wykonawczy.net zdefiniowany w specyfikacji CLI źródło: Wikipedia Specyfikacja CLI definiuje dwa typy implementacji: Profil jądra (Kernel Profile) Profil kompaktowy (Compact Profile) Profil jądra zawiera typy i klasy niezbędne do pracy kompilatorów zgodnych ze standardem CLI (biblioteka klas bazowych BCL zawiera tylko podstawowe typy danych, klasy obsługujące operacje plikowe, implementujące jednowymiarowe tablice oraz atrybuty zabezpieczeń) Profil kompaktowy rozszerza funkcjonalność biblioteki BCL m. in. przez wprowadzenie dodatkowych bibliotek: XML zawierającą proste mechanizmy analizy składniowej XML Network obsługującą protokół HTTP i dostęp do portów Reflection obsługującą mechanizm refleksji Platforma.NET 8 Platforma.NET 9

3 Common Language Infrastructure.NET Framework Pojęcie platforma.net odnosi się do każdej implementacji specyfikacji CLI Przegląd platform.net:.net Framework Mono Portable.NET (DotGNU project).net Compact Framework.NET Micro Framework Microsoft XNA Microsoft Rotor SSCLI (Shared Source Common Language Infrastructure) Microsoft Silverlight Najbardziej znaną implementacją specyfikacji CLI jest Microsoft.NET Framework, na który składa się: środowisko uruchomieniowe CLR () biblioteka klas platformy FCL (Framework Class Library) CLR jest wirtualnym systemem wykonawczym odpowiedzialnym za zarządzanie typami danych.net, kompilowanie i uruchamianie kodu pośredniego MSIL (CIL), zarządzanie pamięcią, zapewnianie bezpieczeństwa typów FCL jest współdzieloną pomiędzy aplikacjami wykonywanymi w środowisku CLR biblioteką typów, na którą składają się klasy bazowe, klasy dostępu do danych, klasy obsługujące interfejs użytkownika oraz interakcje z kodem niezarządzalnym Platforma.NET 10 Platforma.NET 11.NET Framework.NET Framework Historia rozwoju.net Framework: 2002:.NET Framework :.NET Framework 1.1 kontrolki mobilne ASP.NET, wsparcie dla ODBC i Oracle, obsługa IPv6 2005:.NET Framework 2.0 klasy częściowe, typy parametryzowane (generics), metody anonimowe, architektura 64-bitowa, hosting CLR przez SQL Server 2006:.NET Framework 3.0 Windows Presentation Foundation (WPF), Windows Communication Foundation (WCF), Windows Workflow Foundation (WF), Windows CardSpace 2007:.NET Framework 3.5 Language Integrated Query (LINQ), typy anonimowe, wyrażenia lambda, ASP.NET AJAX, wsparcie dla WMI i ActiveDirectory >2008:.NET Framework 4.0 Parallel LINQ (PLINQ), Task Parallel Library (TPL), Code Contract Struktura.NET Framework źródło: Wikipedia Platforma.NET 12 Platforma.NET 13

4 Wspólny system typów (CTS) definiuje bazowy zbiór typów dostępnych dla każdego języka zgodnego ze specyfikacją platformy.net oraz definiuje zbiór reguł i aksjomatów umożliwiających weryfikowalne bezpieczeństwo typologiczne Zunifikowany system typów: pozwala na kontrolowanie dostępu danych do pamięci, ich przetwarzanie i łączenie oferuje statyczne wykrywanie i eliminowanie niektórych klas błędów programistycznych wprowadza usystematyzowany sposób budowania i wielokrotnego użytkowania aplikacji ułatwia tworzenie kompilatorów poprzez zaoferowanie bezpiecznego, wirtualnego systemu wykonawczego (VES) umożliwia samoopisywanie się programów w postaci metadanych Hierarchia typów zdefiniowanych przez CTS obejmuje dwie podstawowe kategorie: typy wartościowe (value types) typy referencyjne (reference types) Podział na typy referencyjne oraz wartościowe jest związany zasadniczo ze sposobem składowania i porównywania instancji typów oraz uzyskiwania przez nie dostępu do pamięci, w której są przechowywane Pierwszą kategorię tworzą złożone typy wbudowane (m.in. tablice, łańcuchy znaków), interfejsy oraz typy definiowane przez użytkownika (klasy), drugą natomiast wbudowane typy proste, typy wyliczeniowe oraz typy definiowane przez użytkownika (struktury) Platforma.NET 14 Platforma.NET 15 Klasyfikacja typów: Object Class Interface Array String Delegate... typy referencyjne ValueType Struct Enum Byte Char Int16 Boolean Single Int32 Decimal Double Int64... typy wartościowe typy proste UInt16 UInt32 UInt64 Typy wartościowe wywodzą się ze specjalnej klasy ValueType (pośrednio z klasy Object) i służą do reprezentowania prostych wartości skalarnych (sekwencji bitów) Instancje typów wartościowych są alokowane na stosie wykonawczym (z wyjątkiem pól statycznych oraz pól klas), porównywane bit po bicie, a podczas odwołań są one bezpośrednio kopiowane Typy wartościowe narzucają mniejsze koszty pamięciowe i czasowe podczas pracy, o ile ich rozmiar nie jest zbyt duży Oznacza to, że struktury definiowane przez użytkownika powinny być relatywnie niewielkie (zwykle maksymalnie do 16 lub 64 bajtów) Platforma.NET 16 Platforma.NET 17

5 Podczas tworzenia instancje typów wartościowych są automatycznie zerowane, co skutkuje ustawieniem każdego pola na wartość domyślną (0 dla liczb całkowitych, 0.0 dla liczb zmiennoprzecinkowych, false dla wartości logicznych i null dla referencji) Typy wartościowe zdefiniowane przez użytkownika: są automatycznie pieczętowane (sealed) mogą mieć konstruktory z argumentami mogą dziedziczyć po wielu interfejsach mogą zawierać pola, metody, właściwości i zdarzenia Każdy typ wartościowy ma zdefiniowany i powiązany z nim typ referencyjny, nazywany tzw. opakowanym typem wartościowym CTS udostępnia mechanizm, który pozwala na zmianę domyślnego układu pól tworzonych struktur Atrybut StructLayoutAttribute pozwala na wskazanie jednego z trzech możliwych trybów działania: LayoutKind.Automatic tryb domyślny, w którym CLR samodzielnie uporządkowuje pola, co pozwala na optymalizację wyrównania pól LayoutKind.Sequential CLR uporządkowuje pola dokładnie tak, jak zostało to określone w kodzie IL LayoutKind.Explicit za pomocą atrybutu pola FieldOffsetAttribute programista może określać kolejność i rozmiar pól struktury Możliwość zmiany kolejności i przesunięcia pól w typach wartościowych ułatwia współpracę z kodem niezarządzanym, a także umożliwia precyzyjne określanie rozmiarów i położenia pól bitowych Platforma.NET 18 Platforma.NET 19 Przykład samodzielnego definiowania układu pól struktury: [StructLayout(LayoutKind.Explicit)] struct SampleUnion [FieldOffset(0)] string text; [FieldOffset(6)] short tag; [FieldOffset(4)] short data1; [FieldOffset(4)] byte data2; [FieldOffset(5)] byte data3; układ struktury w pamięci Typy referencyjne (typy odwołań) wywodzą się bezpośrednio z klasy Object i są specyficznym połączeniem informacji o położeniu oraz wartości (zawartości) typu Instancje typów referencyjnych (obiekty) są alokowane i zarządzane na odśmiecanej stercie, odwołania do nich sprowadzają się do przekazania informacji o ich położeniu na stercie (wskaźnika), a porównanie obiektów ogranicza się do porównania ich położenia Utworzony na stercie obiekt żyje tak długo, dopóki istnieje osiągalna do niego referencja, po czym zajmowana przez niego pamięć jest zwalniana automatycznie w wyniku działania mechanizmu oczyszczania pamięci (Garbage Collection) Platforma.NET 20 Platforma.NET 21

6 Typy referencyjne zasadniczo można podzielić na: typy obiektowe typy interfejsowe typy wskaźnikowe Typy obiektowe (głównie klasy i tablice) opisują same siebie, implementując następujące metody: Equals() porównującą dwa obiekty GetHashCode() zwracającą wartość skrótu dla obiektu GetType() zwracającą typ obiektu ToString() zwracającą opis obiektu w postaci łańcucha znaków MemberwiseClone() zwracającą płytką kopię obiektu Finalize() wywoływaną przez GC przed odzyskaniem pamięci zajmowanej przez obiekt Typ interfejsowy stanowi zbiór publicznych, metod, właściwości oraz zdarzeń, które muszą zostać zaimplementowane przez typ wywodzący się z interfejsu Typ wskaźnikowy jest specyficznym, niezarządzalnym typem umożliwiającym swobodny dostęp do pamięci (do funkcji oraz danych), wykorzystywanym przede wszystkim do współpracy z kodem niezarządzanym Wartości typu wskaźnikowego nie są obiektami, nie można więc na ich podstawie określić typu wskazywanych wartości, ale można na nich wykonywać operacje arytmetyczne W środowisku zarządzanym ekwiwalentem wskaźnika do funkcji jest delegat, będący rygorystycznie kontrolowanym przez CLR typem obiektowym Platforma.NET 22 Platforma.NET 23 Porównanie rozmieszczenia oraz rozmiaru struktury i obiektu w pamięci: struct Point public int X; public int Y; int X (4B) int Y (4B) stos class Point public int X; public int Y; Syncblk (4B) TypeHandle (4B) int X (4B) int Y (4B) sterta Synblk Entry Table Method Table SyncBlock Zawsze wtedy, gdy środowisko uruchomieniowe oczekuje typu referencyjnego, a przekazywany jest typ wartościowy, wykonywana jest operacja pakowania (boxing), polegająca na przekształceniu typu wartościowego w typ referencyjny Środowisko uruchomieniowe udostępnia ponadto mechanizm odpakowywania (unboxing) tj. przekształcania typów referencyjnych w typy wartościowe Pakowanie i odpakowywanie wiążą się z alokowaniem pamięci oraz kopiowaniem danych pomiędzy stosem a stertą, i stąd są one operacjami kosztownymi czasowo Pakowanie i odpakowywanie są realizowane za pomocą odpowiednich poleceń języka IL, większość kompilatorów języków.net generuje odpowiedni kod automatycznie Platforma.NET 24 Platforma.NET 25

7 Przykłady pakowania/odpakowywania: int i = 1; object o = i; // boxing int j = (int) o; // unboxing // 3 x boxing Console.WriteLine(i +, + i +, + i); // no boxing (manual optimization) Console.WriteLine(o +, + o +, + o); ldc.i4.s 1 stloc.0 ldloc.0 box [mscorlib]system.int32 stloc.1 ldloc.1 unbox.any [mscorlib]system.int32 stloc.2 ArrayList list = new ArrayList(); int j; for (int i = 0; i < 10000; i++) list.add(i); // boxing for (int i =0; i < list.count; i++) j = list[i]; // unboxing Identyczność dwóch obiektów testowana przez statyczną metodę ReferenceEquals() jest określana za pomocą następujących reguł tożsamości: jeżeli typy obiektów są różne, to obiekty nie są identyczne jeżeli typy wartości są takie same i wartości są takie same, to obiekty są identyczne jeżeli obiekty są wskazaniami, a ich położenie i wartości są takie same, to obiekty są identyczne Równość dwóch obiektów testowana metodą Equals() jest określana za pomocą następujących reguł: jeżeli dwa obiekty są identyczne, to obiekty są sobie równe jeżeli przynajmniej jeden z obiektów jest spakowany, to przed wykonaniem operacji porównania opartego na regułach tożsamości musi zostać odpakowany Platforma.NET 26 Platforma.NET 27 Typ referencyjny może cechować się semantyką wartości tzn. może zachowywać się tak jak typ wartościowy (kopiowana i porównywana jest cała zawartość obiektu) Class c1 = new Class(); Class c2 = new Class(); object o1 = c1; Console.WriteLine(Object.ReferenceEquals(c1, c2); // false Console.WriteLine(c1.Equals(c2)); // true Console.WriteLine(Object.ReferenceEquals(c1, o1); // true Console.WriteLine(c1.Equals(o1)); // true String s1 = Ala ma kota ; String s2 = Ala ma kota ; Console.WriteLine(Object.ReferenceEquals(s1, s2); // true Console.WriteLine(s1.Equals(s2)); // true Referencja do obiektu może przyjmować specjalną wartość null oznaczającą, że taka referencja jest pusta BCL od wersji 2.0 udostępnia typ Nullable<T> zapewniający semantykę null dla typów wartościowych (T? w C#) struct Nullable<T> where T : struct public Nullable(T value); public bool HasValue get; public T Value get; Jeżeli właściwość HasValue zwraca false to instancja takiego typu reprezentuje semantyczną wartość null, w przeciwnym wypadku wartość instancji jest udostępniana przez pole Value Platforma.NET 28 Platforma.NET 29

8 Elementy składowe typu: pola (fields) metody (methods) właściwości (properties) typy zagnieżdżone (nested types) zdarzenia (events) atrybuty (attributes) CTS umożliwia ponadto definiowanie własnych atrybutów, których instancje mogą być dołączane do podzespołów, typów danych oraz ich składowych Atrybuty te stanowią część metadanych podzespołu i mogą być sprawdzane w trakcie wykonywania kodu poprzez mechanizm refleksji Przykład użycia własnych atrybutów: public class MyAttribute : Attribute public MyAttribute(string name) [MyAttribute( MyClass )] public class MyClass... [MyAttribute( MyClass::Test )] public void Test()... MyClass myclass = new MyClass(); Type type = myclass.gettype(); if (type.getcustomattributes( typeof(myattribute), false).length > 0) // do something MethodInfo minfo = type.getmethod( Test ); foreach (Attribute attr in minfo. GetCustomAttributes(false)) if (attr.gettype() == typeof(myattribute)) // do something Platforma.NET 30 Platforma.NET 31 Dostęp do elementów składowych typu jest uzależniony od trzech kryteriów: widoczności typu dostępności elementu składowego ograniczenia zabezpieczeń Pod względem widoczności (zakresu widoczności dla innych podzespołów) typy można przydzielić do trzech kategorii: typów eksportowanych możliwość eksportowania takich typów jest określana przez zasady dostępności zdefiniowane w konfiguracji podzespołu typów nieeksportowanych eksport takich typów jest zabroniony typów zagnieżdżonych (nested) typów będących elementem składowym innego typu (tzw. typu otaczającego), który to decyduje o zakresie widoczności Poziom dostępności składowych typu jest definiowany przez leksykalne reguły zasięgu danego języka programowania: dostęp publiczny public w C# dostęp prywatny private w C# dostęp rodzinny (chroniony) protected w C# dostęp podzespołowy internal w C# dostęp rodzinny lub podzespołowy protected internal w C# dostęp rodzinny i podzespołowy nieobsługiwany przez C# Dostęp do elementów składowych typu może być także kontrolowany za pomocą atrybutów zabezpieczeń, które pozwalają na definiowanie ograniczeń w postaci: żądań dziedziczenia żądań odwołania Platforma.NET 32 Platforma.NET 33

9 CLR jest wirtualnym systemem wykonawczym platformy.net odpowiedzialnym za całokształt wykonywania kodu zarządzanego (managed code) Do jego podstawowych zadań należy: ładowanie, kompilowanie i uruchamianie kodu pośredniego MSIL (Microsoft Intermediate Language), będącego implementacją języka CIL (Common Intermediate Language) zagwarantowanie bezpieczeństwa typów zapewnienie współpracy z kodem niezarządzanym zarządzanie pamięcią (zasobami) obsługa wyjątków obsługa mechanizmów kontroli bezpieczeństwa wykonywania aplikacji w oparciu o uprawnienia kodu CAS (Code Access Security) oraz role RBS (Role-Based Security) Kompilatory platformy.net przekształcają kod źródłowy z języków wysokiego poziomu do postaci wspólnego (niezależnego od CPU i systemu operacyjnego) kodu pośredniego MSIL, który w trakcie wykonywania aplikacji jest przekształcany dalej do postaci kodu macierzystego Ta dodatkowa warstwa abstrakcji pozwala na uzyskanie przenoszalności kodu, zwiększenie jego efektywności (optymalizacja na konkretną platformę) oraz umożliwia sprawdzenie bezpieczeństwa typów przed uruchomieniem MSIL jest językiem stosowym większość operandów, na których działają jego instrukcje znajduje się na tzw. logicznym stosie wykonawczym, który jest niezależny od zarządzanego przez system operacyjny stosu fizycznego Platforma.NET 34 Platforma.NET 35 Przykład operacji dodawania: Przykład programu Hello World : ldc.i4 5 ldc.i4 3 add Evaluation Stack Evaluation Stack Evaluation Stack Evaluation Stack public static void main() Console.WriteLine( Hello World ); ldc.i4 5 ldc.i4 3 add 1B method static void main().entrypoint.maxstack 1 ldc.i4 5 ldc.i4 3 add ldc.i4.5 ldc.i4.3 add ldstr "Hello world" call void [mscorlib] System.Console::WriteLine(string) optymalizacja kodu ret Platforma.NET 36 Platforma.NET 37

10 Każdy zarządzany moduł (managed module) będący produktem kompilatora platformy.net jest złożony z: nagłówka PE (PE header) nagłówka CLR (CLR header) metadanych (metadata) kodu pośredniego (IL code) Nagłówek PE (Portable Executable) jest strukturą opisującą format obiektowych plików binarnych w systemie Windows (opartą o UNIX-owy format COFF) Nagłówek CLR zawiera podstawowe informacje związane z zarządzanym modułem, m.in.: żądaną wersję CLR, silną nazwę (strong name), lokalizację i rozmiary metadanych oraz bloku kodu pośredniego modułu Metadane zawierają szczegółowy opis wszystkich danych związanych z wygenerowanym kodem zarządzanym, m.in. definicje typów, ich zasięgi, informacje o dziedziczeniu, interfejsach, polach, metodach, własnościach, obsługiwanych zdarzeniach i atrybutach Podstawowym zadaniem metadanych jest umożliwienie środowisku wykonawczemu prawidłowego i efektywnego zarządzanie kodem, w tym: weryfikowanie bezpieczeństwa typów, śledzenia wykorzystania obiektów przez Garbage Collector, serializacji/deserializacji obiektów do/z postaci binarnej na maszynie zdalnej (remote machine) Innym przykładem wykorzystania metadanych jest funkcja IntelliSense dostępna w Visual Studio.NET Platforma.NET 38 Platforma.NET 39 Z logicznego punktu widzenia podstawową, wersjonowaną jednostką wdrożenia, wykonywania i wielokrotnego użytku w strukturze.net jest tzw. podzespół (assembly) Pojedynczy podzespół składa się z jednego lub więcej modułów zarządzanych oraz opcjonalnie z jednego lub więcej plików zasobowych Jeden z modułów wchodzących w skład podzespołu (tzw. moduł podstawowy) zawiera manifest, będący opisem zawartości (metadanymi) podzespołu Manifest specyfikuje nazwę podzespołu, numer wersji, referencje do podzespołów zewnętrznych, informacje na temat kultury, listę tabel metadanych z nazwami wszystkich plików w podzespole oraz token klucza publicznego Podzespół wyznacza tzw. granicę wersji (version boundary), umożliwiającą współdzielenie logicznych atrybutów podzespołu przez wiele plików fizycznych (rozdzielenie warstwy fizycznej i logicznej podzespołu) Wszystkie pliki składające się na podzespół są traktowane jako taka sama jednostka logiczna, której numer wersji jest zdefiniowany w manifeście podzespołu Podzespół wyznacza także granicę bezpieczeństwa (security boundary), od której zależą wszelkie uprawnienia dostępu Dostęp do typów i składowych typów w ramach podzespołu jest kontrolowany przez tzw. modyfikatory dostępu (access modifiers), np. public (dostęp nieograniczony), czy internal (dostęp ograniczony do tego samego podzespołu) Platforma.NET 40 Platforma.NET 41

11 W trakcie uruchamiania aplikacji wczytywane są tylko te podzespoły, bez których nie można przeprowadzić fazy inicjalizacji, pozostałe natomiast są wczytywane na żądanie wtedy, kiedy zajdzie taka konieczność Grupowanie często wykorzystywanego i wzajemnie powiązanego kodu daje programiście możliwość zoptymalizowania procesu wczytywania kodu W przypadku tworzenia aplikacji wielojęzycznych, zalecanym rozwiązaniem jest umieszczanie zasobów specyficznych dla danego języka, w dedykowanych do tego celu, specjalnych podzespołach tzw. satellite assemblies, definiując jednocześnie pozostałe podzespoły aplikacji jako kulturowo neutralne (culture-neutral) Podstawowym wymogiem dotyczącym równoczesnego współużytkowania wielu wersji tych samych podzespołów jest ich jednoznaczne identyfikowanie Atrybuty identyfikujące podzespół: nazwa podzespołu tzw. nazwa przyjazna (friendly name), będąca nazwą pliku podzespołu bez rozszerzenia wersja podzespołu numer wersji w formacie: <major version>.<minor version>.<build number>.<revision> kultura informacje o ustawieniach regionalnych (języku, kraju) token klucza publicznego symboliczna, 8-bajtowa reprezentacja klucza publicznego wykorzystanego w procesie podpisywania (signing) podzespołu W środowisku uruchomieniowym nazwa typu jest złożeniem nazwy nadanej przez programistę plus nazwy podzespołu Platforma.NET 42 Platforma.NET 43 Podzespoły mogą być wdrażane jako: prywatnie (privately deployed assemblies) instalowane najczęściej w katalogu bazowym aplikacji (AppBase) współdzielone (shared deployed assemblies) instalowane w globalnej pamięci podręcznej podzespołów GAC (Global Assembly Cache) i identyfikowane za pomocą silnej nazwy (strong name) Silna nazwa podzespołu tworzona w trakcie podpisywania podzespołu składa się ze wszystkich wcześniej wymienionych atrybutów identyfikujących podzespół oraz dodatkowo z podpisu cyfrowego Silna nazwa gwarantuje unikalność podzespołu w całym systemie oraz pozwala na weryfikację integralności podzespołu w trakcie jego ładowania Sposoby tworzenia kodu natywnego: Kompilacja JIT (Just-In-Time) stopniowo (tylko wywoływane fragmenty kodu) optymalizacja w kontekście aktualnego środowiska bezpieczeństwo typów weryfikacja bezpieczeństwa i uprawnień uruchamianego kodu Prekompilacja narzędziem NGEN (Native Image Generator) tworzy kod natywny przed pierwszym uruchomieniem nie są możliwe pewne optymalizacje, ale uruchomienie aplikacji jest szybsze (szczególnie jeśli przy starcie korzysta z wielu różnych klas) tak skompilowany kod może być tylko uruchomiony na docelowej platformie (dla której obraz został wygenerowany) Platforma.NET 44 Platforma.NET 45

Podstawy programowania. Wprowadzenie

Podstawy programowania. Wprowadzenie Podstawy programowania Wprowadzenie Proces tworzenia programu Sformułowanie problemu funkcje programu zakres i postać danych postać i dokładność wyników Wybór / opracowanie metody rozwiązania znaleźć matematyczne

Bardziej szczegółowo

Metodyka programowania. Podstawy C#

Metodyka programowania. Podstawy C# Metodyka programowania Podstawy C# Platforma.NET Platforma.NET (.NET Framework) Platforma programistyczna Microsoft, Obejmuje - środowisko uruchomieniowe CLR (Common Language Runtime) - biblioteki klas

Bardziej szczegółowo

Microsoft IT Academy kurs programowania

Microsoft IT Academy kurs programowania Microsoft IT Academy kurs programowania Podstawy języka C# Maciej Hawryluk Język C# Język zarządzany (managed language) Kompilacja do języka pośredniego (Intermediate Language) Kompilacja do kodu maszynowego

Bardziej szczegółowo

C# 6.0 : kompletny przewodnik dla praktyków / Mark Michaelis, Eric Lippert. Gliwice, cop Spis treści

C# 6.0 : kompletny przewodnik dla praktyków / Mark Michaelis, Eric Lippert. Gliwice, cop Spis treści C# 6.0 : kompletny przewodnik dla praktyków / Mark Michaelis, Eric Lippert. Gliwice, cop. 2016 Spis treści Spis rysunków 11 Spis tabel 13 Przedmowa 15 Wprowadzenie 17 Podziękowania 27 O autorach 29 1 Wprowadzenie

Bardziej szczegółowo

Obszar statyczny dane dostępne w dowolnym momencie podczas pracy programu (wprowadzone słowem kluczowym static),

Obszar statyczny dane dostępne w dowolnym momencie podczas pracy programu (wprowadzone słowem kluczowym static), Tworzenie obiektów Dostęp do obiektów jest realizowany przez referencje. Obiekty w języku Java są tworzone poprzez użycie słowa kluczowego new. String lan = new String( Lancuch ); Obszary pamięci w których

Bardziej szczegółowo

Czym jest Java? Rozumiana jako środowisko do uruchamiania programów Platforma software owa

Czym jest Java? Rozumiana jako środowisko do uruchamiania programów Platforma software owa 1 Java Wprowadzenie 2 Czym jest Java? Język programowania prosty zorientowany obiektowo rozproszony interpretowany wydajny Platforma bezpieczny wielowątkowy przenaszalny dynamiczny Rozumiana jako środowisko

Bardziej szczegółowo

Wykład 5 Okna MDI i SDI, dziedziczenie

Wykład 5 Okna MDI i SDI, dziedziczenie Wykład 5 Okna MDI i SDI, dziedziczenie Autor: Zofia Kruczkiewicz Zagadnienia 1. Aplikacja wielookienkowa. Zakładanie projektu typu CLR Windows Forms 1.1. Aplikacja typu MDI 1.2. Aplikacja typu SDI 2. Dziedziczenie

Bardziej szczegółowo

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki Dariusz Brzeziński Politechnika Poznańska, Instytut Informatyki Język programowania prosty bezpieczny zorientowany obiektowo wielowątkowy rozproszony przenaszalny interpretowany dynamiczny wydajny Platforma

Bardziej szczegółowo

Języki i paradygmaty programowania doc. dr inż. Tadeusz Jeleniewski

Języki i paradygmaty programowania doc. dr inż. Tadeusz Jeleniewski Języki i paradygmaty programowania doc. dr inż. Tadeusz Jeleniewski e-mail: t.jeleniewski@neostrada.pl tadeusz.jeleniewski@pwr.wroc.pl http://www.tjeleniewski.wstt.edu.pl Treści kształcenia: Paradygmaty

Bardziej szczegółowo

C# - innowacja czy plagiat?

C# - innowacja czy plagiat? C# - innowacja czy plagiat? Piotr Kowalski Seminarium magisterskie Zagadnienia programowania obiektowego Wydział Matematyki, Mechaniki i Informatyki Uniwersytet Warszawski Agenda! Wprowadzenie do platformy.net!

Bardziej szczegółowo

Środowiska i platformy programistyczne

Środowiska i platformy programistyczne Środowiska i platformy programistyczne 1 Rys historyczny lata 80-90: efektywność! Cel: zwiększyć efektywność programisty jedno narzędzie: integracja edytor kodu, funkcje programistyczne (kompilacja, łączenie,

Bardziej szczegółowo

MATERIAŁY DO ZAJĘĆ II

MATERIAŁY DO ZAJĘĆ II MATERIAŁY DO ZAJĘĆ II Zmienne w C# Spis treści I. Definicja zmiennej II. Hierarchia typów (CTS) III. Typy wbudowane IV. Deklaracja zmiennych V. Literały VI. Pobieranie i wypisywanie wartości zmiennych

Bardziej szczegółowo

Języki i paradygmaty programowania - 1

Języki i paradygmaty programowania - 1 doc. dr inż. Tadeusz Jeleniewski e-mail: t.jeleniewski@neostrada.pl tadeusz.jeleniewski@pwr.edu.pl http://www.tjeleniewski.wstt.edu.pl Cele przedmiotu Umiejętność zastosowania i oceny przydatności paradygmatów

Bardziej szczegółowo

Programowanie obiektowe. Literatura: Autor: dr inŝ. Zofia Kruczkiewicz

Programowanie obiektowe. Literatura: Autor: dr inŝ. Zofia Kruczkiewicz Programowanie obiektowe Literatura: Autor: dr inŝ. Zofia Kruczkiewicz Java P. L. Lemay, Naughton R. Cadenhead Java Podręcznik 2 dla kaŝdego Języka Programowania Java Linki Krzysztof Boone oprogramowania

Bardziej szczegółowo

Wykłady 1, 2. Wstęp do programowania w środowisku Visual C++ Autor: Zofia Kruczkiewicz

Wykłady 1, 2. Wstęp do programowania w środowisku Visual C++ Autor: Zofia Kruczkiewicz Wykłady 1, 2 Wstęp do programowania w środowisku Visual C++ Autor: Zofia Kruczkiewicz 1 Zagadnienia 1. Podstawowe pojęcia 2. Tworzenie aplikacji w Windows Forms 3. Zawartość projektu 4. Podstawowe cechy

Bardziej szczegółowo

Kurs programowania. Wykład 13. Wojciech Macyna. 14 czerwiec 2017

Kurs programowania. Wykład 13. Wojciech Macyna. 14 czerwiec 2017 Wykład 13 14 czerwiec 2017 Java vs cpp - podobieństwa Podobny sposób definiowania klas. Występowanie typów podstawowych: boolean, char, byte, short, int, long, float, double. Podobna zasada definiowania

Bardziej szczegółowo

Programowanie w środowiskach graficznych. Wykład 3 Język C#

Programowanie w środowiskach graficznych. Wykład 3 Język C# Programowanie w środowiskach graficznych Wykład 3 Język C# 1 Zagadnienia 1. Wprowadzenie 2. Przestrzenie nazw 3. Typy, parametry, konwersje 4. Klasy 5. Instrukcje sterujące 6. Właściwości 7. Interfejsy,

Bardziej szczegółowo

Java Język programowania

Java Język programowania Java Język programowania Język Java Bazuje i jest zbliżony do C/C++ Porosty zbiór typów danych (podział na typy prymitywne i obiektowe) Zarządzanie pamięcią i Garbage Collection Zintegrowana synchronizacja

Bardziej szczegółowo

Początki Javy. dr Anna Łazińska, WMiI UŁ Podstawy języka Java 1 / 8

Początki Javy. dr Anna Łazińska, WMiI UŁ Podstawy języka Java   1 / 8 Początki Javy Java została pierwotnie zaprojektowana dla telewizji interaktywnej, ale była to zbyt zaawansowaną technologią dla branży cyfrowej telewizji kablowej. James Gosling, Mike Sheridan i Patrick

Bardziej szczegółowo

Obiekt klasy jest definiowany poprzez jej składniki. Składnikami są różne zmienne oraz funkcje. Składniki opisują rzeczywisty stan obiektu.

Obiekt klasy jest definiowany poprzez jej składniki. Składnikami są różne zmienne oraz funkcje. Składniki opisują rzeczywisty stan obiektu. Zrozumienie funkcji danych statycznych jest podstawą programowania obiektowego. W niniejszym artykule opiszę zasadę tworzenia klas statycznych w C#. Oprócz tego dowiesz się czym są statyczne pola i metody

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Wykład 2 Marcin Młotkowski 4 marca 2015 Plan wykładu 1 2 3 4 5 Marcin Młotkowski Programowanie obiektowe 2 / 47 Krótki opis C Obiektowy, z kontrolą typów; automatyczne odśmiecanie;

Bardziej szczegółowo

MATERIAŁY DO ZAJĘĆ I. Podstawowe pojęcia. Algorytm. Spis treści Przepis

MATERIAŁY DO ZAJĘĆ I. Podstawowe pojęcia. Algorytm. Spis treści Przepis MATERIAŁY DO ZAJĘĆ I Podstawowe pojęcia Spis treści I. Algorytm II. Schemat blokowy III. Struktury danych IV. Program komputerowy V. Opis środowiska programistycznego VI. Obsługa wejścia wyjścia VII. Przykład

Bardziej szczegółowo

Programowanie obiektowe zastosowanie języka Java SE

Programowanie obiektowe zastosowanie języka Java SE Programowanie obiektowe zastosowanie języka Java SE Wstęp do programowania obiektowego w Javie Autor: dr inŝ. 1 Java? Java język programowania obiektowo zorientowany wysokiego poziomu platforma Javy z

Bardziej szczegółowo

Java - tablice, konstruktory, dziedziczenie i hermetyzacja

Java - tablice, konstruktory, dziedziczenie i hermetyzacja Java - tablice, konstruktory, dziedziczenie i hermetyzacja Programowanie w językach wysokiego poziomu mgr inż. Anna Wawszczak PLAN WYKŁADU zmienne tablicowe konstruktory klas dziedziczenie hermetyzacja

Bardziej szczegółowo

JAVA. Java jest wszechstronnym językiem programowania, zorientowanym. apletów oraz samodzielnych aplikacji.

JAVA. Java jest wszechstronnym językiem programowania, zorientowanym. apletów oraz samodzielnych aplikacji. JAVA Java jest wszechstronnym językiem programowania, zorientowanym obiektowo, dostarczającym możliwość uruchamiania apletów oraz samodzielnych aplikacji. Java nie jest typowym kompilatorem. Źródłowy kod

Bardziej szczegółowo

Klasy Obiekty Dziedziczenie i zaawansowane cechy Objective-C

Klasy Obiekty Dziedziczenie i zaawansowane cechy Objective-C #import "Fraction.h" #import @implementation Fraction -(Fraction*) initwithnumerator: (int) n denominator: (int) d { self = [super init]; } if ( self ) { [self setnumerator: n anddenominator:

Bardziej szczegółowo

Programowanie Komputerów

Programowanie Komputerów Programowanie Komputerów Łukasz Kuszner pokój 209, WETI http://www.kaims.pl/ kuszner/ kuszner@eti.pg.gda.pl Wykład 30 godzin, Laboratoria 30 godzin 2012/ Strona 1 z 28 1. Tablice w C# Indeksowane od zera

Bardziej szczegółowo

Wykład 8: klasy cz. 4

Wykład 8: klasy cz. 4 Programowanie obiektowe Wykład 8: klasy cz. 4 Dynamiczne tworzenie obiektów klas Składniki statyczne klas Konstruktor i destruktory c.d. 1 dr Artur Bartoszewski - Programowanie obiektowe, sem. 1I- WYKŁAD

Bardziej szczegółowo

Programowanie obiektowe. Wprowadzenie

Programowanie obiektowe. Wprowadzenie 1 Programowanie obiektowe Wprowadzenie 2 Programowanie obiektowe Object-oriented programming Najpopularniejszy obecnie styl (paradygmat) programowania Rozwinięcie koncepcji programowania strukturalnego

Bardziej szczegółowo

Materiały do zajęć VII

Materiały do zajęć VII Spis treści I. Klasy Materiały do zajęć VII II. III. Konstruktor Właściwości i indeksatory Klasy Programowanie obiektowe wiadomości wstępne Paradygmat programowania obiektowego Abstrakcja Hermetyzacja

Bardziej szczegółowo

Kurs programowania. Wstęp - wykład 0. Wojciech Macyna. 22 lutego 2016

Kurs programowania. Wstęp - wykład 0. Wojciech Macyna. 22 lutego 2016 Wstęp - wykład 0 22 lutego 2016 Historia Simula 67 język zaprojektowany do zastosowan symulacyjnych; Smalltalk 80 pierwszy język w pełni obiektowy; Dodawanie obiektowości do języków imperatywnych: Pascal

Bardziej szczegółowo

Kurs programowania. Wykład 1. Wojciech Macyna. 3 marca 2016

Kurs programowania. Wykład 1. Wojciech Macyna. 3 marca 2016 Wykład 1 3 marca 2016 Słowa kluczowe języka Java abstract, break, case, catch, class, const, continue, default, do, else, enum, extends, final, finally, for, goto, if, implements, import, instanceof, interface,

Bardziej szczegółowo

Programowanie współbieżne i rozproszone

Programowanie współbieżne i rozproszone Programowanie współbieżne i rozproszone WYKŁAD 11 dr inż. CORBA CORBA (Common Object Request Broker Architecture) standard programowania rozproszonego zaproponowany przez OMG (Object Management Group)

Bardziej szczegółowo

Klasy. dr Anna Łazińska, WMiI UŁ Podstawy języka Java 1 / 13

Klasy. dr Anna Łazińska, WMiI UŁ Podstawy języka Java   1 / 13 Klasy Klasa to grupa obiektów, które mają wspólne właściwości, a obiekt jest instancją klasy. Klasa w języku Java może zawierać: pola - reprezentują stan obiektu (odniesienie do pola z kropką), methods

Bardziej szczegółowo

C# /.NET. Copyright by 3bird Projects 2018,

C# /.NET. Copyright by 3bird Projects 2018, C# /.NET Copyright by 3bird Projects 2018, http://edukacja.3bird.pl Ogólne Opracowana przez Microsoft platforma programistyczna.net Framework jest odpowiednikiem platformy Java. Obejmuje gotowe biblioteki,

Bardziej szczegółowo

Języki i metodyka programowania. Język C# pętle, sterowanie, wyjątki

Języki i metodyka programowania. Język C# pętle, sterowanie, wyjątki Język C# pętle, sterowanie, wyjątki Język C# pętle Pętle: while ( ) do { while ( ); for ( ; ; ) foreach ( in

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Wykład 2 28 lutego 2019 Plan wykładu 1 2 3 4 5 Plan wykładu 1 2 3 4 5 Krótki opis C Obiektowy, z kontrolą typów; automatyczne odśmiecanie; standardy ISO i ECMA; podobny składniowo do C++; Język C Krótka

Bardziej szczegółowo

Java - wprowadzenie. Programowanie Obiektowe Mateusz Cicheński

Java - wprowadzenie. Programowanie Obiektowe Mateusz Cicheński Java - wprowadzenie Programowanie Obiektowe Mateusz Cicheński O języku Czym jest Java Cechy charakterystyczne języka Przykładowe zastosowania Składnia języka Podstawowe typy Wybrane słowa kluczowe Plan

Bardziej szczegółowo

Informatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018

Informatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018 Informatyka I Klasy i obiekty. Podstawy programowania obiektowego dr inż. Andrzej Czerepicki Politechnika Warszawska Wydział Transportu 2018 Plan wykładu Pojęcie klasy Deklaracja klasy Pola i metody klasy

Bardziej szczegółowo

1. Które składowe klasa posiada zawsze, niezależnie od tego czy je zdefiniujemy, czy nie?

1. Które składowe klasa posiada zawsze, niezależnie od tego czy je zdefiniujemy, czy nie? 1. Które składowe klasa posiada zawsze, niezależnie od tego czy je zdefiniujemy, czy nie? a) konstruktor b) referencje c) destruktor d) typy 2. Które z poniższych wyrażeń są poprawne dla klasy o nazwie

Bardziej szczegółowo

Java. język programowania obiektowego. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak

Java. język programowania obiektowego. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak Java język programowania obiektowego Programowanie w językach wysokiego poziomu mgr inż. Anna Wawszczak 1 Język Java Język Java powstał w roku 1995 w firmie SUN Microsystems Java jest językiem: wysokiego

Bardziej szczegółowo

Podstawy Programowania Obiektowego

Podstawy Programowania Obiektowego Podstawy Programowania Obiektowego Wprowadzenie do programowania obiektowego. Pojęcie struktury i klasy. Spotkanie 03 Dr inż. Dariusz JĘDRZEJCZYK Tematyka wykładu Idea programowania obiektowego Definicja

Bardziej szczegółowo

UML a kod w C++ i Javie. Przypadki użycia. Diagramy klas. Klasy użytkowników i wykorzystywane funkcje. Związki pomiędzy przypadkami.

UML a kod w C++ i Javie. Przypadki użycia. Diagramy klas. Klasy użytkowników i wykorzystywane funkcje. Związki pomiędzy przypadkami. UML a kod w C++ i Javie Projektowanie oprogramowania Dokumentowanie oprogramowania Diagramy przypadków użycia Przewoznik Zarzadzanie pojazdami Optymalizacja Uzytkownik Wydawanie opinii Zarzadzanie uzytkownikami

Bardziej szczegółowo

Jeśli chcesz łatwo i szybko opanować podstawy C++, sięgnij po tę książkę.

Jeśli chcesz łatwo i szybko opanować podstawy C++, sięgnij po tę książkę. Języki C i C++ to bardzo uniwersalne platformy programistyczne o ogromnych możliwościach. Wykorzystywane są do tworzenia systemów operacyjnych i oprogramowania użytkowego. Dzięki niskiemu poziomowi abstrakcji

Bardziej szczegółowo

Instrukcja laboratoryjna cz.3

Instrukcja laboratoryjna cz.3 Języki programowania na platformie.net cz.2 2015/16 Instrukcja laboratoryjna cz.3 Język C++/CLI Prowadzący: Tomasz Goluch Wersja: 2.0 I. Utworzenie projektu C++/CLI z interfejsem graficznym WPF 1 Cel:

Bardziej szczegółowo

.NET Klasy, obiekty. ciąg dalszy

.NET Klasy, obiekty. ciąg dalszy .NET Klasy, obiekty ciąg dalszy Przeciążanie operatorów 1 W języku C# istnieje możliwość zdefiniowania funkcjonalności dużej części operatorów dla typów stworzonych przez użytkownika. Dzięki takiemu zabiegowi,

Bardziej szczegółowo

Historia modeli programowania

Historia modeli programowania Języki Programowania na Platformie.NET http://kaims.eti.pg.edu.pl/ goluch/ goluch@eti.pg.edu.pl Maszyny z wbudowanym oprogramowaniem Maszyny z wbudowanym oprogramowaniem automatyczne rozwiązywanie problemu

Bardziej szczegółowo

Komputery przemysłowe i systemy wbudowane

Komputery przemysłowe i systemy wbudowane Komputery przemysłowe i systemy wbudowane Systemy operacyjne w systemach wbudowanych 2 KSEM WETI PG October 7, 2015 System operacyjny System operacyjny (OS) - opcjonalny w systemach wbudowanych. zbiór

Bardziej szczegółowo

Tworzenie i wykorzystanie usług sieciowych

Tworzenie i wykorzystanie usług sieciowych Ćwiczenie 14 Temat: Tworzenie i wykorzystanie usług sieciowych Cel ćwiczenia: W trakcie ćwiczenia student zapozna się z procedurą tworzenia usługi sieciowej w technologii ASP.NET oraz nauczy się tworzyć

Bardziej szczegółowo

Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Opracował Jan T. Biernat

Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Opracował Jan T. Biernat Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Program, to lista poleceń zapisana w jednym języku programowania zgodnie z obowiązującymi w nim zasadami. Celem programu jest przetwarzanie

Bardziej szczegółowo

Programowanie współbieżne Wykład 8 Podstawy programowania obiektowego. Iwona Kochaoska

Programowanie współbieżne Wykład 8 Podstawy programowania obiektowego. Iwona Kochaoska Programowanie współbieżne Wykład 8 Podstawy programowania obiektowego Iwona Kochaoska Programowanie Obiektowe Programowanie obiektowe (ang. object-oriented programming) - metodyka tworzenia programów komputerowych,

Bardziej szczegółowo

PARADYGMATY PROGRAMOWANIA Wykład 4

PARADYGMATY PROGRAMOWANIA Wykład 4 PARADYGMATY PROGRAMOWANIA Wykład 4 Metody wirtualne i polimorfizm Metoda wirualna - metoda używana w identyczny sposób w całej hierarchii klas. Wybór funkcji, którą należy wykonać po wywołaniu metody wirtualnej

Bardziej szczegółowo

Metody dostępu do danych

Metody dostępu do danych Metody dostępu do danych dr inż. Grzegorz Michalski Na podstawie materiałów dra inż. Juliusza Mikody Jak działa JDO Podstawowym zadaniem JDO jest umożliwienie aplikacjom Javy transparentnego umieszczenia

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Laboratorium z przedmiotu Programowanie obiektowe - zestaw 02 Cel zajęć. Celem zajęć jest zapoznanie z praktycznymi aspektami projektowania oraz implementacji klas i obiektów z wykorzystaniem dziedziczenia.

Bardziej szczegółowo

Klasy cd. Struktury Interfejsy Wyjątki

Klasy cd. Struktury Interfejsy Wyjątki Klasy cd. Struktury Interfejsy Wyjątki Struktury Struktura pozwala na zdefiniowanie typu danych, który nie charakteryzuje się zbyt złożoną funkcjonalnością (np. punkt, kolor, etc). Do definiowania struktury

Bardziej szczegółowo

UML w Visual Studio. Michał Ciećwierz

UML w Visual Studio. Michał Ciećwierz UML w Visual Studio Michał Ciećwierz UNIFIED MODELING LANGUAGE (Zunifikowany język modelowania) Pozwala tworzyć wiele systemów (np. informatycznych) Pozwala obrazować, specyfikować, tworzyć i dokumentować

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Podstawowe cechy i możliwości języka Scala mgr inż. Krzysztof Szwarc krzysztof@szwarc.net.pl Sosnowiec, 2017 1 / 32 mgr inż. Krzysztof Szwarc Programowanie obiektowe Informacje

Bardziej szczegółowo

Języki i techniki programowania Ćwiczenia 2

Języki i techniki programowania Ćwiczenia 2 Języki i techniki programowania Ćwiczenia 2 Autor: Marcin Orchel Spis treści: Język C++... 5 Przekazywanie parametrów do funkcji... 5 Przekazywanie parametrów w Javie.... 5 Przekazywanie parametrów w c++...

Bardziej szczegółowo

Wykład 3 Składnia języka C# (cz. 2)

Wykład 3 Składnia języka C# (cz. 2) Wizualne systemy programowania Wykład 3 Składnia języka C# (cz. 2) 1 dr Artur Bartoszewski -Wizualne systemy programowania, sem. III- WYKŁAD Wizualne systemy programowania Metody 2 Metody W C# nie jest

Bardziej szczegółowo

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL III TI 4 godziny tygodniowo (4x30 tygodni =120 godzin ),

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL III TI 4 godziny tygodniowo (4x30 tygodni =120 godzin ), PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH KL III TI 4 godziny tygodniowo (4x30 tygodni =120 godzin ), Program 351203 Opracowanie: Grzegorz Majda Tematyka zajęć 1. Wprowadzenie do aplikacji internetowych

Bardziej szczegółowo

Wykład 6 Dziedziczenie cd., pliki

Wykład 6 Dziedziczenie cd., pliki Wykład 6 Dziedziczenie cd., pliki Autor: Zofia Kruczkiewicz 1. Dziedziczenie cd. 2. Pliki - serializacja Zagadnienia 1. Dziedziczenie aplikacja Kalkultory_2 typu Windows Forms prezentująca dziedziczenie

Bardziej szczegółowo

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki Dariusz Brzeziński Politechnika Poznańska, Instytut Informatyki Object-oriented programming Najpopularniejszy obecnie styl (paradygmat) programowania Rozwinięcie koncepcji programowania strukturalnego

Bardziej szczegółowo

Multimedia JAVA. Historia

Multimedia JAVA. Historia Multimedia JAVA mgr inż. Piotr Odya piotrod@sound.eti.pg.gda.pl Historia 1990 rozpoczęcie prac nad nowym systemem operacyjnym w firmie SUN, do jego tworzenia postanowiono wykorzystać nowy język programowania

Bardziej szczegółowo

Dotacje na innowacje. Inwestujemy w waszą przyszłość.

Dotacje na innowacje. Inwestujemy w waszą przyszłość. PROJEKT TECHNICZNY Implementacja Systemu B2B w firmie Lancelot i w przedsiębiorstwach partnerskich Przygotowane dla: Przygotowane przez: Lancelot Marek Cieśla Grzegorz Witkowski Constant Improvement Szkolenia

Bardziej szczegółowo

TOPIT Załącznik nr 3 Programowanie aplikacji internetowych

TOPIT Załącznik nr 3 Programowanie aplikacji internetowych Szkolenie przeznaczone jest dla osób chcących poszerzyć swoje umiejętności o tworzenie rozwiązań internetowych w PHP. Zajęcia zostały przygotowane w taki sposób, aby po ich ukończeniu można było rozpocząć

Bardziej szczegółowo

1 Atrybuty i metody klasowe

1 Atrybuty i metody klasowe 1 Atrybuty i metody klasowe Składowe klasowe (statyczne) Każdy obiekt klasy posiada własny zestaw atrybutów. Metody używają atrybutów odpowiedniego obiektu. Czasem potrzeba atrybutów wspólnych dla wszystkich

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Laboratorium 1. Wstęp do programowania w języku Java. Narzędzia 1. Aby móc tworzyć programy w języku Java, potrzebny jest zestaw narzędzi Java Development Kit, który można ściągnąć

Bardziej szczegółowo

LABARATORIUM 9 TESTY JEDNOSTKOWE JUNIT 3.8

LABARATORIUM 9 TESTY JEDNOSTKOWE JUNIT 3.8 Inżynieria Oprogramowania 2013/14 LABARATORIUM 9 TESTY JEDNOSTKOWE JUNIT 3.8 Hierarchia klas: TestCase klasa testująca, będąca klasą bazową dla wszystkich przypadków testowych. Zawiera przypadki testowe

Bardziej szczegółowo

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1 Podstawy programowania. Wykład Funkcje Krzysztof Banaś Podstawy programowania 1 Programowanie proceduralne Pojęcie procedury (funkcji) programowanie proceduralne realizacja określonego zadania specyfikacja

Bardziej szczegółowo

Techniki programowania INP001002Wl rok akademicki 2018/19 semestr letni. Wykład 3. Karol Tarnowski A-1 p.

Techniki programowania INP001002Wl rok akademicki 2018/19 semestr letni. Wykład 3. Karol Tarnowski A-1 p. Techniki programowania INP001002Wl rok akademicki 2018/19 semestr letni Wykład 3 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411B Plan prezentacji Abstrakcja funkcyjna Struktury Klasy hermetyzacja

Bardziej szczegółowo

Metodyka programowania. Podstawy C#

Metodyka programowania. Podstawy C# Metodyka programowania Podstawy C# Platforma.NET Platforma.NET (.NET Framework) Platforma programistyczna Microsoft, Obejmuje - środowisko uruchomieniowe CLR (Common Language Runtime) - biblioteki klas

Bardziej szczegółowo

Instytut Informatyki, Politechnika Poznańska, SUM-TWO. Zaawansowane programowanie obiektowe

Instytut Informatyki, Politechnika Poznańska, SUM-TWO. Zaawansowane programowanie obiektowe Instytut Informatyki, Politechnika Poznańska, SUM-TWO Zaawansowane programowanie obiektowe 9 października 2016 dr inż. Bartłomiej Prędki pok. 124 Centrum Wykładowe tel. 61-665-2932 Bartlomiej.Predki@cs.put.poznan.pl

Bardziej szczegółowo

76.Struktura oprogramowania rozproszonego.

76.Struktura oprogramowania rozproszonego. 76.Struktura oprogramowania rozproszonego. NajwaŜniejsze aspekty obiektowego programowania rozproszonego to: Współdziałanie (interoperability) modułów programowych na róŝnych maszynach. Wielokrotne wykorzystanie

Bardziej szczegółowo

Platformy programistyczne:.net i Java WYKŁ AD 3: WPROWADZENIE DO PL ATFORMY.NET / JĘZYK C#

Platformy programistyczne:.net i Java WYKŁ AD 3: WPROWADZENIE DO PL ATFORMY.NET / JĘZYK C# Platformy programistyczne:.net i Java WYKŁ AD 3: WPROWADZENIE DO PL ATFORMY.NET / JĘZYK C# W poprzednim odcinku Git ciągle jest git.net Framework wprowadzenie.net is all around Ala ma kota na Ubuntu Pierwszy

Bardziej szczegółowo

PROE wykład 2 operacje na wskaźnikach. dr inż. Jacek Naruniec

PROE wykład 2 operacje na wskaźnikach. dr inż. Jacek Naruniec PROE wykład 2 operacje na wskaźnikach dr inż. Jacek Naruniec Zmienne automatyczne i dynamiczne Zmienne automatyczne: dotyczą kontekstu, po jego opuszczeniu są usuwane, łatwiejsze w zarządzaniu od zmiennych

Bardziej szczegółowo

Microsoft Interface Definition Language

Microsoft Interface Definition Language Microsoft Interface Definition Language IDL IDL (Interface Definition Language) kompilowany jest przez MIDL.exe: Tworzy pliki nagłówkowe klas abstrakcyjnych dla zdefiniowanych w pliku *.idl interfejsów

Bardziej szczegółowo

Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych.

Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych. Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych. 1. Rodzaje pamięci używanej w programach Pamięć komputera, dostępna dla programu,

Bardziej szczegółowo

Podstawy programowania skrót z wykładów:

Podstawy programowania skrót z wykładów: Podstawy programowania skrót z wykładów: // komentarz jednowierszowy. /* */ komentarz wielowierszowy. # include dyrektywa preprocesora, załączająca biblioteki (pliki nagłówkowe). using namespace

Bardziej szczegółowo

Wykład 4: Klasy i Metody

Wykład 4: Klasy i Metody Wykład 4: Klasy i Metody Klasa Podstawa języka. Każde pojęcie które chcemy opisać w języku musi być zawarte w definicji klasy. Klasa definiuje nowy typ danych, których wartościami są obiekty: klasa to

Bardziej szczegółowo

Kurs programowania. Wykład 2. Wojciech Macyna. 17 marca 2016

Kurs programowania. Wykład 2. Wojciech Macyna. 17 marca 2016 Wykład 2 17 marca 2016 Dziedziczenie Klasy bazowe i potomne Dziedziczenie jest łatwym sposobem rozwijania oprogramowania. Majac klasę bazowa możemy ja uszczegółowić (dodać nowe pola i metody) nie przepisujac

Bardziej szczegółowo

Informacje ogólne. Karol Trybulec p-programowanie.pl 1. 2 // cialo klasy. class osoba { string imie; string nazwisko; int wiek; int wzrost;

Informacje ogólne. Karol Trybulec p-programowanie.pl 1. 2 // cialo klasy. class osoba { string imie; string nazwisko; int wiek; int wzrost; Klasy w C++ są bardzo ważnym narzędziem w rękach programisty. Klasy są fundamentem programowania obiektowego. Z pomocą klas będziesz mógł tworzyć lepszy kod, a co najważniejsze będzie on bardzo dobrze

Bardziej szczegółowo

Spis treści. oraz Microsoft Visual Studio Wstęp... xiii. Część I Wprowadzenie do języka Microsoft Visual C# 1 Wprowadzenie do języka C#...

Spis treści. oraz Microsoft Visual Studio Wstęp... xiii. Część I Wprowadzenie do języka Microsoft Visual C# 1 Wprowadzenie do języka C#... Spis treści Wstęp... xiii Część I Wprowadzenie do języka Microsoft Visual C# oraz Microsoft Visual Studio 2010 1 Wprowadzenie do języka C#... 3 Rozpoczynamy programowanie przy użyciu środowiska Visual

Bardziej szczegółowo

Laboratorium nr 12. Temat: Struktury, klasy. Zakres laboratorium:

Laboratorium nr 12. Temat: Struktury, klasy. Zakres laboratorium: Zakres laboratorium: definiowanie struktur terminologia obiektowa definiowanie klas funkcje składowe klas programy złożone z wielu plików zadania laboratoryjne Laboratorium nr 12 Temat: Struktury, klasy.

Bardziej szczegółowo

Wstęp do programowania obiektowego. Wykład 2

Wstęp do programowania obiektowego. Wykład 2 Wstęp do programowania obiektowego Wykład 2 1 CECHY I KONCEPCJA PROGRAMOWANIA OBIEKTOWEGO 2 Cechy programowania obiektowego Dla wielu problemów podejście obiektowe jest zgodne z rzeczywistością (łatwe

Bardziej szczegółowo

Bezpieczenstwo aplikacji

Bezpieczenstwo aplikacji Języki Programowania na Platformie.NET (część 2) http://www.kaims.pl/ goluch/ goluch@eti.pg.gda.pl Bezpieczeństwo ogólne koncepcje sandboxing zbiór praw jest określany poprzez evidence prawa (permissions)

Bardziej szczegółowo

Szablony klas, zastosowanie szablonów w programach

Szablony klas, zastosowanie szablonów w programach Szablony klas, zastosowanie szablonów w programach 1. Szablony klas i funkcji 2. Szablon klasy obsługującej uniwersalną tablicę wskaźników 3. Zastosowanie metody zwracającej przez return referencję do

Bardziej szczegółowo

Podstawowe części projektu w Javie

Podstawowe części projektu w Javie Podstawowe części projektu w Javie Pakiet w Javie to grupa podobnych typów klas, interfejsów i podpakietów. Pakiet w Javie może być wbudowany lub zdefiniowany przez użytkownika. Istnieje wiele wbudowanych

Bardziej szczegółowo

Dziedziczenie. Tomasz Borzyszkowski

Dziedziczenie. Tomasz Borzyszkowski Dziedziczenie Tomasz Borzyszkowski Podstawy Zobacz: Dziedzictwo1.java Dziedzictwo2.java Dziedziczenie jest jedną z podstawowych cech OOP ponieważ umożliwia łatwe implementowanie klasyfikacji hierarchicznych.

Bardziej szczegółowo

Konstruktory. Streszczenie Celem wykładu jest zaprezentowanie konstruktorów w Javie, syntaktyki oraz zalet ich stosowania. Czas wykładu 45 minut.

Konstruktory. Streszczenie Celem wykładu jest zaprezentowanie konstruktorów w Javie, syntaktyki oraz zalet ich stosowania. Czas wykładu 45 minut. Konstruktory Streszczenie Celem wykładu jest zaprezentowanie konstruktorów w Javie, syntaktyki oraz zalet ich stosowania. Czas wykładu 45 minut. Rozpatrzmy przykład przedstawiający klasę Prostokat: class

Bardziej szczegółowo

Król Łukasz Nr albumu: 254102

Król Łukasz Nr albumu: 254102 Król Łukasz Nr albumu: 254102 Podstawy o Delphi Język programowania, którego można używać w środowiskach firmy Borland, Embarcadero, Microsoft (Delphi Prism), oraz w środowisku Lazarus. Narzędzia te są

Bardziej szczegółowo

Język programowania. Andrzej Bobyk http://www.alfabeta.lublin.pl. www.alfabeta.lublin.pl/jp/

Język programowania. Andrzej Bobyk http://www.alfabeta.lublin.pl. www.alfabeta.lublin.pl/jp/ Język programowania Andrzej Bobyk http://www.alfabeta.lublin.pl www.alfabeta.lublin.pl/jp/ Literatura K. Reisdorph: Delphi 6 dla każdego. Helion, Gliwice 2001 A. Grażyński, Z. Zarzycki: Delphi 7 dla każdego.

Bardziej szczegółowo

Plan. Wprowadzenie. Co to jest APEX? Wprowadzenie. Administracja obszarem roboczym

Plan. Wprowadzenie. Co to jest APEX? Wprowadzenie. Administracja obszarem roboczym 1 Wprowadzenie do środowiska Oracle APEX, obszary robocze, użytkownicy Wprowadzenie Plan Administracja obszarem roboczym 2 Wprowadzenie Co to jest APEX? Co to jest APEX? Architektura Środowisko Oracle

Bardziej szczegółowo

Technologie i usługi internetowe cz. 2

Technologie i usługi internetowe cz. 2 Technologie i usługi internetowe cz. 2 Katedra Analizy Nieliniowej, WMiI UŁ Łódź, 15 luty 2014 r. 1 Programowanie obiektowe Programowanie obiektowe (z ang. object-oriented programming), to paradygmat programowania,

Bardziej szczegółowo

Co to jest klasa? Z programistycznego punktu widzenia klasa stanowi typ danych, który odwzorowuje wspólne cechy jakiegoś obiektu.

Co to jest klasa? Z programistycznego punktu widzenia klasa stanowi typ danych, który odwzorowuje wspólne cechy jakiegoś obiektu. .NET Klasy, obiekty Klasa i obiekt Każdy obiektowy język programowania daje programiście możliwość tworzenia nowych typów danych. Nowy typ danych definiuje się poprzez zdefiniowanie klasy. Co to jest klasa?

Bardziej szczegółowo

Programowanie obiektowe - 1.

Programowanie obiektowe - 1. Programowanie obiektowe - 1 Mariusz.Masewicz@cs.put.poznan.pl Programowanie obiektowe Programowanie obiektowe (ang. object-oriented programming) to metodologia tworzenia programów komputerowych, która

Bardziej szczegółowo

1 Wprowadzenie do J2EE

1 Wprowadzenie do J2EE Wprowadzenie do J2EE 1 Plan prezentacji 2 Wprowadzenie do Java 2 Enterprise Edition Aplikacje J2EE Serwer aplikacji J2EE Główne cele V Szkoły PLOUG - nowe podejścia do konstrukcji aplikacji J2EE Java 2

Bardziej szczegółowo

Microsoft.NET: ASP.NET MVC + Entity Framework (Code First)

Microsoft.NET: ASP.NET MVC + Entity Framework (Code First) Microsoft.NET: ASP.NET MVC + Entity Framework (Code First) Do realizacji projektu potrzebne jest zintegrowane środowisko programistyczne Microsoft Visual Studio 2012. W ramach projektu budowana jest prosta

Bardziej szczegółowo

Dokumentacja do API Javy.

Dokumentacja do API Javy. Dokumentacja do API Javy http://java.sun.com/j2se/1.5.0/docs/api/ Klasy i obiekty Klasa jest to struktura zawierająca dane (pola), oraz funkcje operujące na tych danych (metody). Klasa jest rodzajem szablonu

Bardziej szczegółowo

Wprowadzenie. Organizacja pracy i środowisko programistyczne. Mirosław Ochodek

Wprowadzenie. Organizacja pracy i środowisko programistyczne. Mirosław Ochodek Wprowadzenie Organizacja pracy i środowisko programistyczne Mirosław Ochodek Miroslaw.Ochodek@pwsz.pila.pl Miroslaw.Ochodek@cs.put.poznan.pl Dane kontaktowe Mirosław Ochodek E-mail: Miroslaw.Ochodek@pwsz.pila.pl

Bardziej szczegółowo

Klasa jest nowym typem danych zdefiniowanym przez użytkownika. Najprostsza klasa jest po prostu strukturą, np

Klasa jest nowym typem danych zdefiniowanym przez użytkownika. Najprostsza klasa jest po prostu strukturą, np Klasy Klasa jest nowym typem danych zdefiniowanym przez użytkownika Wartości takiego typu nazywamy obiektami Najprostsza klasa jest po prostu strukturą, np struct Zespolona { Klasy jako struktury z operacjami

Bardziej szczegółowo