Henryk Budzisz. materiały przygotowane w ramach projektu ZPORR nr POKL /08-00
|
|
- Sławomir Leśniak
- 8 lat temu
- Przeglądów:
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 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ółowoWykł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ółowoProgramowanie 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
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ółowoObiekt 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ółowoProgramowanie 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ółowo1. 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ółowoRozdział 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ółowoUML 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ółowoInterfejsy. 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ółowoPHP 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ółowoKlasy 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ółowoProgramowanie 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ółowoMateriał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ółowoEnkapsulacja, 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ółowoPARADYGMATY 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ółowoInstrukcja 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ółowoTechniki 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ółowoMetodyka 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ółowoKlasy 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ółowoProgramowanie 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ółowoKurs 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ółowoProgramowanie 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ółowoProgramowanie 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ółowoProgramowanie 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ółowoIMIĘ 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ółowoJę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ółowoAplikacje 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ółowoWykł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ółowoTEMAT : 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ółowoWykł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ółowoMultimedia 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ółowoWykł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ółowoWprowadzenie 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ółowoProgramowanie 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ółowoWykł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ółowoZaawansowane 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ółowoDziedziczenie 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ółowoWykł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ółowoJę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ółowoPodstawy 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ółowoKlasy 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ółowoCo 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ółowoBudowa 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ółowoPrzykł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ółowoInformatyka 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ółowoDokumentacja 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ółowoProgramowanie 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ółowoObszar 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ółowoZaawansowane 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ółowo1 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ółowoJava - 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ółowoTechnologie 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ółowoProgramowanie 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ółowoInformacje 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ółowoTworzenie 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ółowo1 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ółowoWstę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ółowoProgramowanie 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ółowoProgramowanie 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 Sprawozdanie Na każdym zajęciu laboratoryjnym sporządza się za pomocą edytora Word sprawozdanie. Bazowa zawartość
Bardziej szczegółowoUML 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ółowoW2 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ółowoC# 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ółowoInstrukcja 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ółowoKurs 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ółowoTypy 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ółowoWykł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ółowoTechnologie 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ółowoKurs 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ółowoPodstawy 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ółowoRys. 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ółowo2. 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ółowoProgramowanie 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ółowoAplikacje 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ółowoZaawansowane 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ółowoInformatyka 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ółowoPolimorfizm, 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ółowoTworzenie 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ółowoProgramowanie 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ółowoTemat: 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ółowoWstę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ółowoObiektowy 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ółowoKLASA 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ółowoDelphi 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ółowoLaboratorium 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ółowoMATERIAŁ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ółowoRozdział 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ółowoPodczas 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ółowoProgramowanie 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ółowoJAVA 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ółowoSkł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ółowo1 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ółowoHenryk 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ółowoProgramowanie 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ółowoProgramowanie 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ółowoDziedziczenie. 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ółowoC++ - 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ółowoJę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