Henryk Budzisz. materiały przygotowane w ramach projektu ZPORR nr POKL /08-00

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

Download "Henryk Budzisz. materiały przygotowane w ramach projektu ZPORR nr POKL.04.01.01-00-449/08-00"

Transkrypt

1 Henryk Budzisz ZPORR Koszalin 2009

2 Komponenty.NET Struktura platformy.net Język C++/CLI Interfejsy w.net Definiowanie właściwości komponentów Delegacyjny model obsługi zdarzeń Implementacja komponentów 2

3 Struktura platformy.net 3

4 Biblioteki klas Biblioteka klas, dostępna w pakiecie.net Framework SDK, składa się z klas, interfejsów i stałych. Elementy biblioteki są pogrupowane w hierarchiczną strukturę przestrzeni nazw (ang. namespace). Biblioteki klas umożliwiają dostęp do usług systemowych i stanowią podstawę tworzenia aplikacji, komponentów i kontrolek.net. Zadaniem przestrzeni nazw jest zawężenie zakresu, w którym obowiązują nazwy typów. Dzięki temu mogą istnieć dwie klasy o tej samej nazwie pod warunkiem, że są zdefiniowane w różnych przestrzeniach nazw. Podstawowe klasy zgrupowane są w przestrzeni System. 4

5 Przestrzeo nazw System Przestrzeń nazw System zawiera klasy podstawowe oraz klasy bazowe, które definiują najczęściej używane referencyjne i skalarne typy danych, zdarzenia, procedury obsługi zdarzeń, interfejsy, atrybuty i klasy przeznaczone do obsługi wyjątków. Inne klasy tej przestrzeni nazw udostępniają usługi związane z konwersją typów danych, manipulowaniem parametrami metod, obliczeniami i stałymi matematycznymi, zdalnym i lokalnym przekazywaniem wywołań, zarządzaniem środowiskiem wykonywania aplikacji oraz nadzorowaniem zarządzanego i niezarządzanego kodu. Jedną ze składowych jest kolejna przestrzeń o nazwie System.ComponentModel, zawierająca klasy i interfejsy pomocne w tworzeniu komponentów i kontrolek. 5

6 Przestrzeo System.ComponentModel Przestrzeń System.ComponentModel udostępnia klasy (135 klas) i interfejsy (27) zapewniające funkcjonowanie komponentów i kontrolek zarówno w trybie projektowania (design-time), jaki w trybie uruchomieniowym (run-time). Podstawowe klasy to: Component i Container. Podstawowe interfejsy to: IComponent i IContainer. Pozostałe klasy umożliwiają implementację atrybutów i deskryptorów, konwersję typów (TypeConverter), dowiązanie do źródeł danych oraz licencjonowanie komponentów (License, LicenseManager, LicenseProvider i LicenseProviderAttribute). 6

7 Komponent w.net Z punktu widzenia programisty Komponent w.net jest klasą, która w sposób bezpośredni lub pośredni implementuje interfejs System.ComponentModel.IComponent Co to jest interfejs? Jak klasa implementuje interfejs? Jak definiuje się właściwości komponentu? Jak obsługiwać zdarzenia? 7

8 C++/CLI C++/CLI (Common Language Infrastructure) to język programowania oparty na C++, umożliwiający programowanie aplikacji korzystających za wspólnego środowiska uruchomieniowego CLR, jak i bez użycia CLR. C++ zarządzany C++ natywny Biblioteka klas.net C++ natywny Biblioteka MFC CLR System operacyjny Sprzęt (hardware) 8

9 Kod natywny i zarządzany W kodzie natywnym, obiekty tworzy się przy użyciu operatora new. Tak utworzone obiekty dostępne są przez wskaźnik. Po wykorzystaniu obiektu, trzeba pamiętać o usunięciu go z pamięci (operator delete). std::string* stdstr; // deklaracja wskaźnika stdstr = new std::string("string niezarządzany");... delete stdstr; // usunięcie łańcucha W kodzie zarządzanym, obiekty tworzy się przy użyciu operatora gcnew. Tak utworzone obiekty dostępne są przez odniesienie. Obiekty wykorzystane są automatycznie usuwane z pamięci (odśmiecanie). System::String^ clrstr; // deklaracja odniesienia clrstr = gcnew System::String("String zarządzany");... 9

10 Klasa zarządzana Klasa poprzedzona słowem ref class (jedno słowo kluczowe) staje się klasą zarządzaną (garbage-collected). Czas życia obiektu tej klasy kontrolowany jest przez CLR. Nie ma potrzeby jawnego wywołania operatora delete. Przykład: ref class Test { public: Test():i(0){ private: int i; ; // Test Klasa zarządzana nie ma domyślnego konstruktora kopiującego ani domyślnego operatora przypisania. Parametry funkcji (również konstruktorów) nie mogą mieć wartości domyślnych. Można definiować właściwości (słowo kluczowe property). void main () { while(true) { // pętla bez końca Test^ tst = gcnew Test; // tworzone obiekty są automatycznie usuwane 10

11 Klasa wartości Klasa poprzedzona słowem value class (jedno słowo kluczowe) jest przeznaczona do grupowania pewnej liczby danych w jedną całość. Obiekt klasy wartości może być umieszczony zarówno na stosie (jak zmienne typów standardowych) jak i na stercie CLR (operator gcnew). Przykład: value class Wynik { public: Wynik(double czas, double Par) : t(czas),par(par) { private: double t; // czas od początku pomiaru double par; // wartość mierzonego parametru ; // Wynik void main () { Wynik wynik(0.5, 0.342); // umieszczenie na stosie 11

12 Interfejs w.net Interfejs zawiera deklaracje metod, zdarzeń i właściwości, ale nie może zawierać ich implementacji. Nie może również zawierać deklaracji zmiennych (pól klasy) z wyjątkiem pól statycznych. Oprócz pól statycznych może zawierać także deklaracje innych składowych statycznych (metod, zdarzeń lub właściwości). Wszystkie składowe interfejsu mają publiczne prawa dostępu. Interfejs podlega dziedziczeniu. 12

13 Deklaracja interfejsu prawa_dostępu interface class nazwa {; prawa_dostępu interface class nazwa : interfejs_bazowy {; gdzie: prawa_dostępu - prawa dostępu do interfejsu spoza podzespołu.net (.NET assembly): public lub private (domyślne) Przykład: public interface class Interface_A { void Function_1(); void Function_2(); ; // Interface_A Nazwy interfejsów przyjęło się rozpoczynać od litery I, np.: IContainer. 13

14 Implementacja interfejsu Implementacja interfejsu jest realizowana w oparciu o składnię dziedziczenia przykład: public ref class MyClass : public Interface_A { virtual void Function_1() { Console::WriteLine( Function_1 ); virtual void Function_2() { Console::WriteLine( Function_2 ); ; // MyClass Ponieważ interfejs jest w Visual C++ typem zarządzanym, klasa implementująca interfejs musi być również klasą zarządzaną. Klasa może implementować wiele interfejsów. 14

15 Właściwości Definiowanie właściwości Funkcje dostępowe Właściwości proste Właściwości indeksowane 15

16 Rozwiązanie klasyczne pola klasy Pola klasy przechowują dane reprezentujące atrybuty obiektu opisywanego przez tą klasę. class Okno { public: void Szer(int nowa_szer) // ustaw szerokość i odrysuj { szer = nowa_szer; Rysuj(); int Szer(void) { return szer; // podobnie dla pola wys private: void Rysuj() {... int szer, wys; ; // Okno // pobierz szerokość 16

17 Rozwiązanie z użyciem właściwości Definicja właściwości zawiera standardowe funkcje dostępowe (akcesory), o z góry określonych nazwach: set i get. Przykład: public ref class Okno { public: property int Szer { void set(int nowa_szer) { // ustaw szerokość i odrysuj szer = nowa_szer; Rysuj(); int get(void) { return szer; // szer // podobnie dla właściwości Wys private: void Rysuj() {... int szer, wys; ; // Okno // pobierz szerokość 17

18 Definiowanie właściwości Właściwość definiuje się w klasie lub interfejsie przy użyciu słowa kluczowego property. modyfikator property typ nazwa { <deklaracja akcesorów> // brak średnika gdzie: modyfikator opcjonalny modyfikator static lub virtual, Przykład: public ref class Okno { public: property int Szer { // deklaracja akcesorów property int Wys { // deklaracja akcesorów ; Właściwość jest objęta prawami dostępu na takich samych zasadach jak inne składowe klasy lub interfejsu. 18

19 Funkcje dostępowe (akcesory) Właściwość może zawierać funkcję pobierającą (getter), funkcję ustawiającą (setter) lub obie funkcje. Składnia deklaracji: modyfikator void set(typ); modyfikator typ get(); gdzie: modyfikator opcjonalny modyfikator static lub virtual. Typ argumentu settera i wynik gettera muszą być jednakowe i zgodne z typem właściwości. Setter nie zwraca żadnego wyniku. Getter nie ma natomiast argumentów. Poza tymi ograniczeniami definicje funkcji mogą być dowolne. Deklaracja akcesorów może być poprzedzona deklaracją praw dostępu. Przy braku deklaracji, prawa dostępu są takie same jak dla właściwości. Prawa dostępu dla settera i gettera mogą być różne, ale w żadnym przypadku nie mogą rozszerzać praw dostępu określonych dla właściwości. 19

20 Przykład definiowania akcesorów Definicja akcesorów może być połączona z deklaracją (jak w poprzednim przykładzie) lub znajdować się poza klasą, z zastosowaniem nazwy kwalifikowanej (tak jak dla zwykłych metod). Przykład: public ref class Okno { public: property int Szer { void set(int); int get(void); // podobnie dla właściwości Wys private: void Rysuj() {... int szer, wys; ; // Okno void Okno::Szer::set(int nowa_szer) { szer = nowa_szer; Rysuj(); int Okno::Szer::get(void) { return szer; // ustaw szerokość i odrysuj // pobierz szerokość 20

21 Właściwości proste Deklaracja właściwości, dla której setter kopiuje wartość do pomocniczej zmiennej prywatnej, a getter pobiera wartość z tej samej zmiennej, może być uproszczona do postaci: modyfikator property typ nazwa; Przykład: public ref class Vector { public: property double x; property double y; property double z; ; Kompilator tworzy zmienną pomocniczą oraz domyślne akcesory. Nie ma bezpośredniego dostępu do automatycznie utworzonej zmiennej pomocniczej. 21

22 Właściwości indeksowane Właściwość indeksowana reprezentuje strukturę danych, w której dane dostępne są poprzez operator indeksowania [ ]. Właściwości indeksowanych używa się zwykle do udostępniania elementów tablicy zadeklarowanej wewnątrz klasy lub składowych wewnętrznych kontenerów. Składnia: modyfikator property typ_właściwości nazwa[typ_indeksu] { modyfikator void set(typ_indeksu, typ_właściwości); modyfikator typ_właściwości get(typ_indeksu); // brak średnika W kodzie klienta, właściwość z indeksem jest używana jak zwykła tablica. 22

23 Zdarzenia Delegacyjny model obsługi zdarzeń Deklarowanie delegata Deklaracja zdarzenia Delegaty w bibliotekach.net Zdarzenia w bibliotekach.net 23

24 Delegacyjny model obsługi zdarzeo delegat Subskrybenci Subskrybent 1 funkcja Sub1A źródło zdarzenia zgłoszenie zdarzenia invocation list Subskrybent 2 funkcja Sub2B Subskrybent3 funkcja Sub3C 24

25 Deklaracja delegata Delegat jest typem obiektowym. Do deklaracji delegata nie używa się jednak żadnej klasy bibliotecznej, ale słowa kluczowego delegate, według składni: prawa_dostępu delegate deklaracja_funkcji; Przykład: using namespace System; void Drukuj(char* tekst) { Console::WriteLine("Wydruk - {0\n", gcnew String(tekst)); void Zapisz(char* tekst) { Console::WriteLine("Zapis - {0\n", gcnew String(tekst)); delegate void Operacja(char*); // deklaracja delegata void main() { Operacja^ opr; opr += gcnew Operacja(&Drukuj); opr += gcnew Operacja(&Zapisz); opr("wywołanie z delegata"); Wynik działania programu: Wydruk wywołanie z delegata Zapis wywołanie z delegata Typ argumentów i wyniku w deklaracji delegata i deklaracji dodawanych funkcji muszą być zgodne. 25

26 Rejestrowanie metod klasy using namespace System; ref class Dokument { public: void Czytaj(String^ nazwa) { Console::WriteLine("Czytaj dokument: {0\n", nazwa); void Drukuj(String^ nazwa) { Console::WriteLine("Drukuj dokument: {0\n", nazwa); void Zapisz(String^ nazwa) { Console::WriteLine("Zapisz dokument: {0\n", nazwa); ; // Dokument ref class Obraz { public: static void Rysuj(String^ nazwa) { Console::WriteLine("Rysuj obraz: {0\n", nazwa); ; // Obraz delegate void Operacja(String^); void main() { Dokument^ dok = gcnew Dokument(); Operacja^ opr = gcnew Operacja(dok, &Dokument::Czytaj); opr += gcnew Operacja(dok, &Dokument::Drukuj); opr += gcnew Operacja(dok, &Dokument::Zapisz); opr += gcnew Operacja(&Obraz::Rysuj); // funkcja statyczna Console::WriteLine("Operacje:\n"); opr(gcnew String("Rysunek")); 26

27 Deklaracja zdarzenia W C++/CLI koncepcja delegacyjnego modelu obsługi zdarzeń została zrealizowana poprzez deklarację zdarzenia (słowo kluczowe event) i powiązanie go z delegatem. modyfikator event nazwa_delegatu ^ nazwa_zdarzenia; Wersja rozszerzona deklaracji umożliwia zdefiniowanie sposobu realizacji metod add, remove i raise. modyfikator event nazwa_delegatu ^ nazwa_zdarzenia { modyfikator typ_zwracany add (nazwa_delegatu ^ nazwa); modyfikator typ_zwracany remove(nazwa_delegatu ^ nazwa); modyfikator typ_zwracany raise(parametry); // event block 27

28 Przykład using namespace System; // deklaracja delegatów delegate void ZoomEventHandler(double); delegate void PrintEventHandler(String^); // klasa źródło zdarzeń ref class EventSource { public: event ZoomEventHandler^ OnZoom; event PrintEventHandler^ OnPrint; void FireEvents() { // symulacja zdarzeń OnZoom(1.5); OnPrint("diagram"); ; // klasa subskrybent ref class EventReceiver { public: void OnZoomClick(double scale) { Console::WriteLine( Skala {0", scale); void OnPrintClick(String^ document) { Console::WriteLine( Drukuj {0", document); ; int main() { // utworzenie żródła i subskrybenta EventSource ^ EventSourceObject = gcnew EventSource(); EventReceiver^ EventReceiverObject = gcnew EventReceiver(); // rejestracja funkcji obsługujących EventSourceObject->OnZoom += gcnew ZoomEventHandler(EventReceiverObject, &EventReceiver::OnZoomClick); EventSourceObject->OnPrint += gcnew PrintEventHandler(EventReceiverObject, &EventReceiver::OnPrintClick); // wygeneruj zdarzenia EventSourceObject->FireEvents(); Wynik na ekranie: Skala 1.5 Drukuj diagram 28

29 Przykład: ExcelIntegration Przykład demonstruje następujące konstrukcje programowe: Definiowanie klasy wartości Wynik do przechowywania dwóch pól typu double. Definiowanie klasy referencyjnej Pomiar symulującej przeprowadzanie pomiarów. Wynik każdego pomiaru przechowywany jest w obiekcie klasy Wynik. Po każdym pomiarze generowane jest zdarzenie PomiarEvent, obsługiwane przez delegata PomiarEventHeandler. Tworzenie graficznego interfejsu użytkownika klasa Form1. W obsłudze zdarzenia Click przycisku pomiarbtn, tworzony jest obiekt klasy Pomiar, rejestrowana jest funkcja OnPomiar obsługująca zdarzenie PomiarEvent i wywoływana jest funkcja wykonująca symulację pomiarów. Definiowanie funkcji odpowiedzi OnPomiar, która kolejne wyniki umieszcza na liście przewijanej pomiarlistbox. Wywołanie funkcji transfer z klasy Pomiar, powoduje utworzenie obiektu komponentu Excel i transfer wyników do arkusza kalkulacyjnego. 29

30 Delegaty w bibliotekach.net Dane przekazywane przez zdarzenie opisane są przez klasę <nazwa zd arzenia>eventargs, np.: PaintEventArgs, MouseEventArgs. Przykładowo klasa KeyEventArgs ma zdefiniowane właściwości: Alt, Control, Shift, Modifiers, Handled, KeyCode, KeyData, KeyValue, SuppressKeyPress, opisujące różne warianty użycia klawisza). Standardowa sygnatura delegata zdefiniowanego w bibliotece.net zawiera dwa parametry: public delegate void EventHandler ( Object^ sender, // źródło zdarzenia EventArgs^ e // dane związane z zderzeniem ); W System.Windows.Forms, zdefiniowano ok. 130 delegatów, m.in.: public delegate void PaintEventHandler(Object^ sender, PaintEventArgs^ e); public delegate void MouseEventHandler(Object^ sender, MouseEventArgs^ e); public delegate void KeyEventHandler(Object^ sender, KeyEventArgs^ e); 30

31 Zdarzenia w bibliotekach.net Zdarzenia powiązane z delegatami zadeklarowane zostały w klasach definiujących kontrolki (głównie w klasie Control - ok.70), m.in.: event EventHandler^ Click; event PaintEventHandler^ Paint; Funkcje odpowiadające, muszą być zdefiniowane z odpowiednimi parametrami, a także muszą być zarejestrowane w obiekcie delegata, np.: public ref class Form1 : public Form { public: Form1() { button1 = gcnew Button(); button1->click += gcnew EventHandler(this, &Form1::button1_Click); private: ; Button^ button1; void button1_click(object^ sender, EventArgs^ e) { // tu należy zdefiniować reakcję na naciśnięcie przycisku 31

32 Implementacja komponentów Infrastruktura komponentowa w.net Definiowanie komponentu Kontrolki Komponent w trybie projektowania Atrybuty Konwertery typu

33 Infrastruktura komponentowa w.net Przestrzeń nazw System.ComponentModel zawiera klasy i interfejsy składające się na technologię komponentową w.net. Komponent może być wprawdzie zdefiniowany z pominięciem tej infrastruktury wspomagającej, ale traci się w ten sposób wiele z funkcjonalności komponentu, a przede wszystkim wsparcie w trybie projektowania (desigened-time mode). Podstawową koncepcją modelu komponentowego w.net, jest użycie kontenerów do przechowywania komponentów. Koncepcja ta z kolei narzuca wymaganie, aby obiekty umieszczone w kontenerze miały wspólny typ bazowy. Dla komponentów jest to interfejs System.ComponentModel.IComponent. 33

34 Definiowanie komponentu Komponent w.net jest klasą, która w sposób bezpośredni lub pośredni implementuje interfejs System.ComponentModel.IComponent Interfejs IComponent definiuje standard komponentu.net. Nowy komponent definiuje się zwykle w oparciu o klasę Component, która implementuje interfejs IComponent, a ponadto definiuje typową dla komponentu funkcjonalność (np.: metodę Dispose zwalniającą przydzielone komponentowi zasoby). Schemat definicji komponentu: public ref class NowyKomponent : public System::ComponentModel::Component { 34

35 Komponenty a kontenery Komponenty zwykle umieszcza się w kontenerze (w obiekcie klasy Container (System::ComponentModel::Container). Użycie kontenera (chociaż nie jest obowiązkowe) ułatwia wzajemną komunikację pomiędzy komponentami, zarządzanie zasobami przydzielonymi komponentom oraz umożliwia integrację komponentu ze środowiskiem programistycznym (design-time environment). Kreator aplikacji typu Windows Forms Applications tworzy klasę formularza w oparciu o klasę biblioteczną Form. W klasie tej tworzony jest kontener components, przeznaczony do przechowywania komponentów. 35

36 Szkielet aplikacji typu Windows Forms public ref class Form1 : public System::Windows::Forms::Form { public: Form1(void) { InitializeComponent(); protected: ~Form1() { if (components) delete components; // usunięcie kontenere private: System::ComponentModel::Container ^components; // deklaracja odniesienia void InitializeComponent(void) { this->components = gcnew System::ComponentModel::Container(); ; 36

37 Kontener w komponencie Szkielet klasy definiującej komponent najłatwiej można wygenerować przy użyciu odpowiedniego kreatora (Project/Add Class /Component Class). Konstruktor klasy zawiera operację dodania komponentu do kontenera zewnętrznego: NowyKomponent(System::ComponentModel::IContainer ^container) { container->add(this); // inne operacje do wykonania przez konstruktor W klasie jest również definiowany kontener wewnętrzny do przechowania innych komponentów. 37

38 Szkielet definicji komponentu public ref class NowyKomponent : public System::ComponentModel::Component { public: NowyKomponent(void) { InitializeComponent(); NowyKomponent(System::ComponentModel::IContainer ^container) { container->add(this); InitializeComponent(); protected: ~NowyKomponent() { if (components) delete components; private: System::ComponentModel::Container ^components; void InitializeComponent(void) { components = gcnew System::ComponentModel::Container(); ; 38

39 Przykład: komponent HiResTimer Zadaniem komponentu jest pomiar czasu pomiędzy wywołaniem funkcji składowych Start() i Stop(). Właściwości statyczne Counter i TicksPerSecond zwracają odpowiednio stan i częstotliwość licznika procesora, udostępniane przez funkcje API QueryPerformanceCounter i QueryPerformanceFrequency. Częstotliwość licznika jest dla danego procesora stała i dlatego zostaje odczytana tylko jeden raz i zapamiętana w zmiennej statycznej frequency. Właściwości Seconds, Milliseconds i Microseconds zwracają w odpowiednich jednostkach interwał czasu jaki upłynął pomiędzy Start () i Stop(), a właściwość Ticks liczbę tyknięć licznika. Solution PerformanceTesting zawiera projekt Timer (definicja komponentu HiResTimer) oraz projekty TableTesting, PerformanceTesting i CSharpTesting (aplikacje testujące komponent HiResTimer). 39

40 Kontrolki Kontrolka jest komponentem wyposażonym w graficzny interfejs użytkownika. Kontrolki biblioteczne dzieli się na dwie grupy o różnym przeznaczeniu: kontrolki występujące w przestrzeni nazw System.Windows.Forms służą do budowania GUI aplikacji klienckich - klasą bazową tych kontrolek jest klasa System.Windows.Forms.Control wyprowadzona z klasy Component, kontrolki występujące w przestrzeni nazw System.Web.UI służą do budowania aplikacji internetowych w technologii ASP.NET - klasą bazową tych kontrolek jest klasa System.Web.UI.Control implementująca interfejs IComponent. 40

41 Definiowanie kontrolki W zależności od przyjętej strategii budowy, można wyróżnić trzy grupy: kontrolki rozszerzone (ang. extended control), które są modyfikacjami wcześniej zdefiniowanych kontrolek (są zwykle definiowane przez klasy pochodne wyprowadzone z klas definiujących kontrolki biblioteczne). kontrolki składane (ang. composite control), powstające przez umieszczenie zdefiniowanych już kontrolek we wspólnym kontenerze. Tym wspólnym kontenerem dla kontrolek Windows Forms jest zwykle klasa System.Windows.Forms.UserControl, udostępniająca funkcjonalność związaną z zarządzaniem wewnętrznymi kontrolkami (np.: rozmieszczanie kontrolek). Kontener dla kontrolek Web Forms buduje się natomiast w oparciu o klasę abstrakcyjną System.Web.UI.WebControls.CompositeControl. kontrolki adaptowane (ang. custom control), budowane niemal od podstaw w oparciu o klasę bazową Control. 41

42 Przykład: kontrolka Keyboard1 Kontrolka udostępniająca prostą klawiaturę ekranową, zdefiniowana na bazie klasy bibliotecznej UserControl. zawiera dwie właściwości: KeyCount typu całkowitego, która służy do odczytu i ustawienia liczby przycisków na klawiaturze ekranowej, CharSet typu "tablica znaków Unicode", która służy do odczytu i ustawienia znaków przypisanych poszczególnym przyciskom. Przyciski są ułożone w wiersze i kolumny za pomocą kontrolki bibliotecznej TableLayoutPanel. Kliknięcie dowolnego przycisku, uruchamia funkcję odpowiedzi buttonclick. Funkcja ta identyfikuje znak przypisany do przycisku i generuje zdarzenie CharEvent. Subskrybenci tego zdarzenia, zarejestrowani w delegacie CharEventHandler, otrzymują informację o wybranym z klawiatury znaku. 42

43 Komponent w trybie projektowania Właściwości i zdarzenia zdefiniowane w komponencie można w trybie projektowania (design-time) odczytywać i ustawiać w przeglądarce właściwości (property browser). Procesem tym można sterować poprzez: atrybuty (attributes), designery (designers), konwertery typów (type converters), wizualne edytory (UI type editors), typy projektowe (design-related types), usługi projektowe (design-time services). Przy realizacji komponentów dla celów komercyjnych, znaczna część kodu dotyczy zadań realizowanych tylko w trybie projektowania. Dla użytkownika końcowego komponentu, funkcjonalność w trybie projektowania jest często najważniejszym kryterium oceny przydatności komponentu czy kontrolki. 43

44 Atrybuty Atrybuty definiowane są przez klasy biblioteczne (np.: CategoryAttribute) wyprowadzone z klasy System.Attribute. Atrybut Category określa przynależność do grupy atrybutów w przeglądarce. Atrybut Description definiuje tekst wyświetlany na dole okienka przeglądarki. Atrybut Editor umożliwia przypisanie do właściwości odpowiedniego edytora (np.: do wyboru koloru). Atrybut TypeConverter określa sposób konwersji typu właściwości na inny typ. W bibliotekach.net zdefiniowanych zostało kilkaset klas opisujących atrybuty przeznaczone do różnych zastosowań. Wszystkie zostały wyprowadzone bezpośrednio lub pośrednio z klasy bazowej System.Attribute. Na bazie tej klasy można też definiować własne atrybuty. 44

45 Deklaracja atrybutu W definicji komponentu atrybuty umieszcza się według składni: [nazwa_atrybutu(argumenty), nazwa_atrybutu(argumenty), ] Przykład: // liczba przycisków na klawiaturze ekranowej [ Description("The number of keys on keyboard") ] property int KeyCount{ int get(); void set(int newcount); Atrybuty mogą być wykorzystane zarówno w trybie projektowania (design-time), jak i w trybie uruchomieniowym (run-time). Przykłady: komponent Keyboard1 i projekt DescriptionTest komponent HiResTimer i projekt Atrybuty.

46 Konwertery typu Konwertery typu, są stosowane do przekształcenia jednego typu danych na inny. W trybie projektowania, znajdują zastosowanie przede wszystkim do konwersji typu właściwości na postać tekstową i odwrotnie, ponieważ przeglądarka właściwości operuje na tekstach. Dla bibliotecznych typów danych (Int32, String, Color itd.), odpowiednie konwertery typu zostały zdefiniowane w przestrzeni System.ComponentModel. Wszystkie klasy definiujące konwertery zostały wyprowadzone ze wspólnej klasy bazowej TypeConverter. Dla ułatwienia identyfikacji, nazwy ich zostały skonstruowane według schematu TypDanychConverter, np.: Int32Converter, StringConverter, ColorConverter. Dla własnego typu danych, konwerter należy zdefiniować jako klasę wyprowadzoną z klasy TypeConverter lub jej pochodnej. 46

47 Przykład: KonwerterPunkt3D Klasa Punkt3D definiuje punkt w przestrzeni 3-wymiarowej. Klasa została udekorowana atrybutem TypeConverter specyfikującym konwerter dla tego typu danych - KonwerterPunkt3D. [TypeConverter(KonwerterPunkt3D::typeid)] // klasa definiuje punkt w przestrzeni 3-wymiarowej public value class Punkt3D {...; // Punkt3D ref class KonwerterPunkt3D : TypeConverter {... ; // KonwerterPunk3D W klasie definiującej konwerter należy przedefiniować cztery funkcje odziedziczone z klasy bazowej TypeConverter. Funkcje CanConvertFrom i ConvertFrom są wykorzystywane w procesie konwersji z typu String na typ Punkt3D, a funkcje CanConvertTo i ConvertTo przy konwersji typu Punkt3D do typu String, a także w procesie generowania kodu utrwalającego obiekt. Przykład: Solution KonwerteryTypu, Project KomponentPunkt. 47

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

Wykład 4 Delegat (delegate), właściwości indeksowane, zdarzenie (event) Zofia Kruczkiewicz

Wykład 4 Delegat (delegate), właściwości indeksowane, zdarzenie (event) Zofia Kruczkiewicz Wykład 4 Delegat (delegate), właściwości indeksowane, zdarzenie (event) Zofia Kruczkiewicz Zagadnienia 1. Delegaty wiązane, właściwości indeksowane 2. Delegaty niewiązane 3. Nowa wersja kalkulatora, delegaty

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Laboratorium z przedmiotu Programowanie obiektowe - zestaw 07 Cel zajęć. Celem zajęć jest zapoznanie z praktycznymi aspektami tworzenia aplikacji okienkowych w C#. Wprowadzenie teoretyczne. Rozważana w

Bardziej szczegółowo

- Narzędzie Windows Forms. - Przykładowe aplikacje. Wyższa Metody Szkoła programowania Techniczno Ekonomiczna 1 w Świdnicy

- Narzędzie Windows Forms. - Przykładowe aplikacje. Wyższa Metody Szkoła programowania Techniczno Ekonomiczna 1 w Świdnicy Wyższa Metody Szkoła programowania Techniczno Ekonomiczna 1 w Świdnicy - Narzędzie Windows Forms - Przykładowe aplikacje 1 Narzędzia Windows Form Windows Form jest narzędziem do tworzenia aplikacji dla

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 zaawansowane

Programowanie zaawansowane Programowanie zaawansowane Ćwiczenie 6 Komunikacja silnie typowana I. Utwórz aplikację okienkową realizującą proste obliczenia arytmetyczne. Obsługa zdarzeń w aplikacji typu Windows Form Application odbywa

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

Rozdział 4 KLASY, OBIEKTY, METODY

Rozdział 4 KLASY, OBIEKTY, METODY Rozdział 4 KLASY, OBIEKTY, METODY Java jest językiem w pełni zorientowanym obiektowo. Wszystkie elementy opisujące dane, za wyjątkiem zmiennych prostych są obiektami. Sam program też jest obiektem pewnej

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

Interfejsy. Programowanie obiektowe. Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej

Interfejsy. Programowanie obiektowe. Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej Programowanie obiektowe Interfejsy Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej pawel.rogalinski pwr.wroc.pl Interfejsy Autor: Paweł Rogaliński Instytut Informatyki,

Bardziej szczegółowo

PHP 5 język obiektowy

PHP 5 język obiektowy PHP 5 język obiektowy Wprowadzenie Klasa w PHP jest traktowana jak zbiór, rodzaj różnych typów danych. Stanowi przepis jak stworzyć konkretne obiekty (instancje klasy), jest definicją obiektów. Klasa reprezentuje

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

Programowanie obiektowe i zdarzeniowe wykład 4 Kompozycja, kolekcje, wiązanie danych

Programowanie obiektowe i zdarzeniowe wykład 4 Kompozycja, kolekcje, wiązanie danych Programowanie obiektowe i zdarzeniowe wykład 4 Kompozycja, kolekcje, wiązanie danych Obiekty reprezentują pewne pojęcia, przedmioty, elementy rzeczywistości. Obiekty udostępniają swoje usługi: metody operacje,

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

Enkapsulacja, dziedziczenie, polimorfizm

Enkapsulacja, dziedziczenie, polimorfizm 17 grudnia 2008 Spis treści I Enkapsulacja 1 Enkapsulacja 2 Spis treści II Enkapsulacja 3 Czym jest interfejs Jak definuje się interfejs? Rozszerzanie interfejsu Implementacja interfejsu Częściowa implementacja

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

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

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

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 obiektowe

Programowanie obiektowe Programowanie obiektowe IV. Interfejsy i klasy wewnętrzne Małgorzata Prolejko OBI JA16Z03 Plan Właściwości interfejsów. Interfejsy a klasy abstrakcyjne. Klonowanie obiektów. Klasy wewnętrzne. Dostęp do

Bardziej szczegółowo

Kurs WWW. Paweł Rajba. pawel@ii.uni.wroc.pl http://pawel.ii.uni.wroc.pl/

Kurs WWW. Paweł Rajba. pawel@ii.uni.wroc.pl http://pawel.ii.uni.wroc.pl/ Paweł Rajba pawel@ii.uni.wroc.pl http://pawel.ii.uni.wroc.pl/ Spis treści Wprowadzenie Automatyczne ładowanie klas Składowe klasy, widoczność składowych Konstruktory i tworzenie obiektów Destruktory i

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

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

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Wykład 7 Marcin Młotkowski 8 kwietnia 2015 Plan wykładu Z życia programisty, część 1 1 Z życia programisty, część 1 2 3 Z życia programisty, część 2 Model View Controller MVC w

Bardziej szczegółowo

IMIĘ i NAZWISKO: Pytania i (przykładowe) Odpowiedzi

IMIĘ i NAZWISKO: Pytania i (przykładowe) Odpowiedzi IMIĘ i NAZWISKO: Pytania i (przykładowe) Odpowiedzi EGZAMIN PIERWSZY (25 CZERWCA 2013) JĘZYK C++ poprawiam ocenę pozytywną z egzaminu 0 (zakreśl poniżej x) 1. Wśród poniższych wskaż poprawną formę definicji

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

Aplikacje w środowisku VBA. Visual Basic for Aplications

Aplikacje w środowisku VBA. Visual Basic for Aplications Aplikacje w środowisku VBA Visual Basic for Aplications Podstawowe informacje o VBA Visual Basic for Aplications, w skrócie VBA, to język programowania rozwijany przez Microsoft, którego zastosowanie pozwala

Bardziej szczegółowo

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

Wykład 2 Składnia języka C# (cz. 1) Wizualne systemy programowania Wykład 2 Składnia języka C# (cz. 1) 1 dr Artur Bartoszewski -Wizualne systemy programowania, sem. III- WYKŁAD Wizualne systemy programowania Budowa projektu 2 Struktura programu

Bardziej szczegółowo

TEMAT : KLASY DZIEDZICZENIE

TEMAT : KLASY DZIEDZICZENIE TEMAT : KLASY DZIEDZICZENIE Wprowadzenie do dziedziczenia w języku C++ Język C++ możliwa tworzenie nowej klasy (nazywanej klasą pochodną) w oparciu o pewną wcześniej zdefiniowaną klasę (nazywaną klasą

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

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

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

Wprowadzenie do projektu QualitySpy

Wprowadzenie do projektu QualitySpy Wprowadzenie do projektu QualitySpy Na podstawie instrukcji implementacji prostej funkcjonalności. 1. Wstęp Celem tego poradnika jest wprowadzić programistę do projektu QualitySpy. Będziemy implementować

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

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

Zaawansowane aplikacje internetowe - laboratorium

Zaawansowane aplikacje internetowe - laboratorium Zaawansowane aplikacje internetowe - laboratorium Web Services (część 3). Do wykonania ćwiczeń potrzebne jest zintegrowane środowisko programistyczne Microsoft Visual Studio 2005. Ponadto wymagany jest

Bardziej szczegółowo

Dziedziczenie jednobazowe, poliformizm

Dziedziczenie jednobazowe, poliformizm Dziedziczenie jednobazowe, poliformizm 1. Dziedziczenie jednobazowe 2. Polimorfizm część pierwsza 3. Polimorfizm część druga Zofia Kruczkiewicz, ETE8305_6 1 Dziedziczenie jednobazowe, poliformizm 1. Dziedziczenie

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

Język Java część 2 (przykładowa aplikacja)

Język Java część 2 (przykładowa aplikacja) Programowanie obiektowe Język Java część 2 (przykładowa aplikacja) Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej pawel.rogalinski @ pwr.wroc.pl Java Java przykładowa

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

Klasy abstrakcyjne, interfejsy i polimorfizm

Klasy abstrakcyjne, interfejsy i polimorfizm Programowanie obiektowe 12 kwietnia 2011 Organizacyjne Klasówka będzie 20 IV 2011. Sale jeszcze są pertraktowane. Materiał do wyjątków włącznie. Można mieć swoje materiały nieelektroniczne. Wywołanie z

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

Budowa aplikacji z graficznym interfejsem użytkownika - GUI (Graphic User Interface)

Budowa aplikacji z graficznym interfejsem użytkownika - GUI (Graphic User Interface) Budowa aplikacji z graficznym interfejsem użytkownika - GUI (Graphic User Interface) 1. Udostępnianie wszystkich prywatnych atrybutów do prezentacji, wprowadzenie standardu nazewnictwa plików nazwy plików

Bardziej szczegółowo

Przykładowa dostępna aplikacja w Visual Studio - krok po kroku

Przykładowa dostępna aplikacja w Visual Studio - krok po kroku Przykładowa dostępna aplikacja w Visual Studio - krok po kroku Zadaniem poniższego opisu jest pokazanie, jak stworzyć aplikację z dostępnym interfejsem. Sama aplikacja nie ma konkretnego zastosowania i

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

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

Programowanie obiektowe. Obiekt Klasa Składnia klasy: Interfejsy Składnia interfejsu: Metody Składnia instrukcji Sub: Składnia instrukcji function:

Programowanie obiektowe. Obiekt Klasa Składnia klasy: Interfejsy Składnia interfejsu: Metody Składnia instrukcji Sub: Składnia instrukcji function: Programowanie obiektowe. Obiekt Obiekt to dowolny element, który możemy wydzielić i którym możemy manipulować. W terminologii informatycznej obiekt to samodzielna jednostka zawierająca zarówno dane, jak

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

Zaawansowane programowanie w języku C++ Klasy w C++

Zaawansowane programowanie w języku C++ Klasy w C++ Zaawansowane programowanie w języku C++ Klasy w C++ Prezentacja jest współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego w projekcie pt. Innowacyjna dydaktyka bez ograniczeń

Bardziej szczegółowo

1 Podstawy c++ w pigułce.

1 Podstawy c++ w pigułce. 1 Podstawy c++ w pigułce. 1.1 Struktura dokumentu. Kod programu c++ jest zwykłym tekstem napisanym w dowolnym edytorze. Plikowi takiemu nadaje się zwykle rozszerzenie.cpp i kompiluje za pomocą kompilatora,

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

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

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

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

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

1 Podstawy c++ w pigułce.

1 Podstawy c++ w pigułce. 1 Podstawy c++ w pigułce. 1.1 Struktura dokumentu. Kod programu c++ jest zwykłym tekstem napisanym w dowolnym edytorze. Plikowi takiemu nadaje się zwykle rozszerzenie.cpp i kompiluje za pomocą kompilatora,

Bardziej szczegółowo

Wstęp do programowania obiektowego. WYKŁAD 3 Dziedziczenie Pola i funkcje statyczne Funkcje zaprzyjaźnione, this

Wstęp do programowania obiektowego. WYKŁAD 3 Dziedziczenie Pola i funkcje statyczne Funkcje zaprzyjaźnione, this Wstęp do programowania obiektowego WYKŁAD 3 Dziedziczenie Pola i funkcje statyczne Funkcje zaprzyjaźnione, this 1 Nazwa typu Rozmiar Zakres Uwagi bool 1 bit wartości true albo false stdbool.h TYPY ZNAKOWE

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

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

Ćwiczenia laboratoryjne. Oprogramowanie i badanie prostych metod sortowania w tablicach

Ćwiczenia laboratoryjne. Oprogramowanie i badanie prostych metod sortowania w tablicach Ćwiczenia laboratoryjne Oprogramowanie i badanie prostych metod sortowania w tablicach Sprawozdanie Na każdym zajęciu laboratoryjnym sporządza się za pomocą edytora Word sprawozdanie. Bazowa zawartość

Bardziej szczegółowo

UML a kod. C++, Java i C#

UML a kod. C++, Java i C# UML a kod C++, Java i C# UML a kod w C++ i Javie Projektowanie oprogramowania! Dokumentowanie oprogramowania Diagramy przypadków użycia Klasy użytkowników i wykorzystywane funkcje Mogą sugerować podział

Bardziej szczegółowo

W2 Wprowadzenie do klas C++ Klasa najważniejsze pojęcie C++. To jest mechanizm do tworzenia obiektów. Deklaracje klasy :

W2 Wprowadzenie do klas C++ Klasa najważniejsze pojęcie C++. To jest mechanizm do tworzenia obiektów. Deklaracje klasy : Wprowadzenie do klas C++ Klasa najważniejsze pojęcie C++. To jest mechanizm do tworzenia obiektów. Deklaracje klasy : class nazwa_klasy prywatne dane i funkcje public: publiczne dane i funkcje lista_obiektów;

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

Instrukcja laboratoryjna nr.4

Instrukcja laboratoryjna nr.4 Języki programowania na platformie.net cz.2 2016/17 Instrukcja laboratoryjna nr.4 Język Visual Basic for.net Prowadzący: Tomasz Goluch Wersja: 3.1 I. Współpraca Visual Basic z C# Cel: Wykorzystanie w kodzie

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

Typy zmiennych proste i złożone. Programowanie komputerów. Tablica. Złożone typy zmiennych. Klasa. Struktura

Typy zmiennych proste i złożone. Programowanie komputerów. Tablica. Złożone typy zmiennych. Klasa. Struktura Programowanie komputerów Programowanie obiektowe. Typy zmiennych proste i złożone Typy zmiennych "wbudowane", tj. identyfikowane przez słowa kluczowe, są określane jako proste: int short long float double

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

Technologie obiektowe

Technologie obiektowe WYKŁAD dr inż. Paweł Jarosz Instytut Informatyki Politechnika Krakowska mail: pjarosz@pk.edu.pl LABORATORIUM dr inż. Paweł Jarosz (3 grupy) mgr inż. Piotr Szuster (3 grupy) warunki zaliczenia Obecność

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

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

Rys. 1. Struktura środowiska.net 3.5. S. Fraser, Pro Visual C++/CLI and the.net 3.5 Platform, Apress, 2009.

Rys. 1. Struktura środowiska.net 3.5. S. Fraser, Pro Visual C++/CLI and the.net 3.5 Platform, Apress, 2009. 5.1 Środowisko.Net... 1 5.2 Biblioteki.Net... 2 5.3 Rozszerzenie języka C++, standard C++/CLI... 3 5.4 Delegacje... 5 5.5 Zdarzenia... 6 5.6 Szablon aplikacji CLR Windows Forms... 8 5.7 Formatka z przyciskiem...

Bardziej szczegółowo

2. Klasy cz. 2 - Konstruktor kopiujący. Pola tworzone statycznie i dynamicznie - Funkcje zaprzyjaźnione - Składowe statyczne

2. Klasy cz. 2 - Konstruktor kopiujący. Pola tworzone statycznie i dynamicznie - Funkcje zaprzyjaźnione - Składowe statyczne Tematyka wykładów 1. Wprowadzenie. Klasy cz. 1 - Język C++. Programowanie obiektowe - Klasy i obiekty - Budowa i deklaracja klasy. Prawa dostępu - Pola i funkcje składowe - Konstruktor i destruktor - Tworzenie

Bardziej szczegółowo

Programowanie obiektowe Wykład 6. Dariusz Wardowski. dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/14

Programowanie obiektowe Wykład 6. Dariusz Wardowski. dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/14 Dariusz Wardowski dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/14 Wirtualne destruktory class A int* a; A(int _a) a = new int(_a);} virtual ~A() delete a;} class B: public A double* b;

Bardziej szczegółowo

Aplikacje WWW. Laboratorium z przedmiotu Aplikacje WWW - zestaw 01

Aplikacje WWW. Laboratorium z przedmiotu Aplikacje WWW - zestaw 01 Laboratorium z przedmiotu Aplikacje WWW - zestaw 01 Cel zajęć. Celem zajęć jest zapoznanie z technologią ASP.NET Web Forms. Wprowadzenie teoretyczne. 1. Komunikacja klient-serwer poprzez połączenie internetowe

Bardziej szczegółowo

Zaawansowane programowanie w C++ (PCP)

Zaawansowane programowanie w C++ (PCP) Zaawansowane programowanie w C++ (PCP) Wykład 4 - wzorce projektowe. dr inż. Robert Nowak - p. 1/18 Powtórzenie klasy autonomiczne tworzenie nowych typów: dziedziczenie i agregacja dziedziczenie: przedefiniowywanie

Bardziej szczegółowo

Informatyka I. Dziedziczenie. Nadpisanie metod. Klasy abstrakcyjne. Wskaźnik this. Metody i pola statyczne. dr inż. Andrzej Czerepicki

Informatyka I. Dziedziczenie. Nadpisanie metod. Klasy abstrakcyjne. Wskaźnik this. Metody i pola statyczne. dr inż. Andrzej Czerepicki Informatyka I Dziedziczenie. Nadpisanie metod. Klasy abstrakcyjne. Wskaźnik this. Metody i pola statyczne. dr inż. Andrzej Czerepicki Politechnika Warszawska Wydział Transportu 2017 Dziedziczenie klas

Bardziej szczegółowo

Polimorfizm, metody wirtualne i klasy abstrakcyjne

Polimorfizm, metody wirtualne i klasy abstrakcyjne Programowanie obiektowe Polimorfizm, metody wirtualne i klasy abstrakcyjne Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej pawel.rogalinski pwr.wroc.pl Polimorfizm,

Bardziej szczegółowo

Tworzenie własnych komponentów

Tworzenie własnych komponentów Tworzenie własnych komponentów 1. Tworzenie nowego komponentu W tym celu należy wykorzystać menu Component. Interesujące są dwie opcje menu New Component i Install Component. Pierwsze polecenie służy do

Bardziej szczegółowo

Programowanie obiektowe

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

Bardziej szczegółowo

Temat: Programowanie zdarzeniowe. Zdarzenia: delegacje, wykorzystywanie zdarze. Elementy Windows Application (WPF Windows Presentation Foundation).

Temat: Programowanie zdarzeniowe. Zdarzenia: delegacje, wykorzystywanie zdarze. Elementy Windows Application (WPF Windows Presentation Foundation). Temat: Programowanie zdarzeniowe. Zdarzenia: delegacje, wykorzystywanie zdarze. Elementy Windows Application (WPF Windows Presentation Foundation). 1. Programowanie zdarzeniowe Programowanie zdarzeniowe

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

Obiektowy PHP. Czym jest obiekt? Definicja klasy. Składowe klasy pola i metody

Obiektowy PHP. Czym jest obiekt? Definicja klasy. Składowe klasy pola i metody Obiektowy PHP Czym jest obiekt? W programowaniu obiektem można nazwać każdy abstrakcyjny byt, który programista utworzy w pamięci komputera. Jeszcze bardziej upraszczając to zagadnienie, można powiedzieć,

Bardziej szczegółowo

KLASA UCZEN Uczen imię, nazwisko, średnia konstruktor konstruktor Ustaw Wyswietl Lepszy Promowany

KLASA UCZEN Uczen imię, nazwisko, średnia konstruktor konstruktor Ustaw Wyswietl Lepszy Promowany KLASA UCZEN Napisz deklarację klasy Uczen, w której przechowujemy następujące informacje o uczniu: imię, nazwisko, średnia (pola prywatne), poza tym klasa zawiera metody: konstruktor bezparametrowy (nie

Bardziej szczegółowo

Delphi podstawy programowania. Środowisko Delphi

Delphi podstawy programowania. Środowisko Delphi Delphi podstawy programowania Środowisko Delphi Olsztyn 2004 Delphi Programowanie obiektowe - (object-oriented programming) jest to metodologia tworzeniu programów komputerowych definiująca je jako zbiór

Bardziej szczegółowo

Laboratorium 1 - Programowanie proceduralne i obiektowe

Laboratorium 1 - Programowanie proceduralne i obiektowe Laboratorium 1 - Programowanie proceduralne i obiektowe mgr inż. Kajetan Kurus 4 marca 2014 1 Podstawy teoretyczne 1. Programowanie proceduralne (powtórzenie z poprzedniego semestru) (a) Czym się charakteryzuje?

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

Rozdział 3. Zapisywanie stanu aplikacji w ustawieniach lokalnych

Rozdział 3. Zapisywanie stanu aplikacji w ustawieniach lokalnych Rozdział 3. Zapisywanie stanu aplikacji w ustawieniach lokalnych Jacek Matulewski Materiały dla Podyplomowego Studium Programowania i Zastosowania Komputerów, sekcja Projektowanie i tworzenie aplikacji

Bardziej szczegółowo

Podczas dziedziczenia obiekt klasy pochodnej może być wskazywany przez wskaźnik typu klasy bazowej.

Podczas dziedziczenia obiekt klasy pochodnej może być wskazywany przez wskaźnik typu klasy bazowej. Polimorfizm jest filarem programowania obiektowego, nie tylko jeżeli chodzi o język C++. Daje on programiście dużą elastyczność podczas pisania programu. Polimorfizm jest ściśle związany z metodami wirtualnymi.

Bardziej szczegółowo

Programowanie Obiektowe GUI

Programowanie Obiektowe GUI Programowanie Obiektowe GUI Swing Celem ćwiczenia jest ilustracja wizualnego tworzenia graficznego interfejsu użytkownika opartego o bibliotekę Swing w środowisku NetBeans. Ponadto, ćwiczenie ma na celu

Bardziej szczegółowo

JAVA W SUPER EXPRESOWEJ PIGUŁCE

JAVA W SUPER EXPRESOWEJ PIGUŁCE JAVA W SUPER EXPRESOWEJ PIGUŁCE Obiekt Obiekty programowe to zbiór własności i zachowań (zmiennych i metod). Podobnie jak w świecie rzeczywistym obiekty posiadają swój stan i zachowanie. Komunikat Wszystkie

Bardziej szczegółowo

Składnia C++ Programowanie Obiektowe Mateusz Cicheński

Składnia C++ Programowanie Obiektowe Mateusz Cicheński Składnia C++ Programowanie Obiektowe Mateusz Cicheński Klasy i modyfikatory dostępu Przesłanianie metod Polimorfizm Wskaźniki Metody wirtualne Metody abstrakcyjne i interfejsy Konstruktory i destruktory

Bardziej szczegółowo

1 LINQ. Zaawansowane programowanie internetowe Instrukcja nr 1

1 LINQ. Zaawansowane programowanie internetowe Instrukcja nr 1 1 LINQ 1 1. Cel zajęć Celem zajęć jest zapoznanie się z technologią LINQ oraz tworzeniem trójwarstwowej aplikacji internetowej. 2. Zadanie Proszę przygotować aplikację WWW, która: będzie pozwalała na generowanie

Bardziej szczegółowo

Henryk Budzisz. materiały przygotowane w ramach projektu ZPORR nr POKL /08-00

Henryk Budzisz. materiały przygotowane w ramach projektu ZPORR nr POKL /08-00 Henryk Budzisz ZPORR Koszalin 2009 Wykaz ćwiczeo Ćw.1. Przycisk zamykajacy Ćw.2. Strzałka blokowa Uwaga: Ćwiczenia wymagają zainstalowania środowiska programistycznego VisualStudio. Ćwiczenie 1 Zadania:

Bardziej szczegółowo

Programowanie obiektowe, wykład nr 6. Klasy i obiekty

Programowanie obiektowe, wykład nr 6. Klasy i obiekty Dr hab. inż. Lucyna Leniowska, prof. UR, Zakład Mechatroniki, Automatyki i Optoelektroniki, IT Programowanie obiektowe, wykład nr 6 Klasy i obiekty W programowaniu strukturalnym rozwój oprogramowania oparto

Bardziej szczegółowo

Programowanie obiektowe w języku C++ dr inż. Jarosław Forenc

Programowanie obiektowe w języku C++ dr inż. Jarosław Forenc Rok akademicki 2016/2017, Wykład nr 4 2/45 Plan wykładu nr 4 Informatyka 2 Politechnika Białostocka - Wydział Elektryczny Elektrotechnika, semestr III, studia stacjonarne I stopnia Rok akademicki 2016/2017

Bardziej szczegółowo

Dziedziczenie. Streszczenie Celem wykładu jest omówienie tematyki dziedziczenia klas. Czas wykładu 45 minut.

Dziedziczenie. Streszczenie Celem wykładu jest omówienie tematyki dziedziczenia klas. Czas wykładu 45 minut. Dziedziczenie Streszczenie Celem wykładu jest omówienie tematyki dziedziczenia klas. Czas wykładu 45 minut. Rozpatrzmy przykład przedstawiający klasy Student oraz Pracownik: class Student class Pracownik

Bardziej szczegółowo

C++ - dziedziczenie. C++ - dziedziczenie. C++ - dziedziczenie. C++ - dziedziczenie. C++ - dziedziczenie C++ - DZIEDZICZENIE.

C++ - dziedziczenie. C++ - dziedziczenie. C++ - dziedziczenie. C++ - dziedziczenie. C++ - dziedziczenie C++ - DZIEDZICZENIE. C++ - DZIEDZICZENIE Do najważniejszych cech języka C++ należy możliwość wielokrotnego wykorzystywania kodu Prymitywnym, ale skutecznym sposobem jest kompozycja: deklarowanie obiektów wewnątrz innych klas,

Bardziej szczegółowo

Język C++ zajęcia nr 2

Język C++ zajęcia nr 2 Język C++ zajęcia nr 2 Inicjalizacja Definiowanie obiektu może być połączone z nadaniem mu wartości początkowej za pomocą inicjalizatora, który umieszczany jest po deklaratorze obiektu. W języku C++ inicjalizator

Bardziej szczegółowo