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



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

Wykład 5 Okna MDI i SDI, dziedziczenie

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

Microsoft IT Academy kurs programowania

Języki i paradygmaty programowania - 1

Instrukcja laboratoryjna cz.3

Programowanie obiektowe

Strona główna. Strona tytułowa. Programowanie. Spis treści. Sobera Jolanta Strona 1 z 26. Powrót. Full Screen. Zamknij.

Praca w środowisku Visual Studio 2008, Visual C

Wykład 3 Typy danych w C++/CLI, typy fundamentalne, operacje wejścia/wyjścia, właściwości klasy (property) Zofia Kruczkiewicz

Szablony klas, zastosowanie szablonów w programach

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

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

Podstawy programowania. Wprowadzenie

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

Programowanie obiektowe

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

2. W oknie dialogowym Choose Toolbox Items w zakładce.net Framework Components naciskamy przycisk Browse...

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

1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość

PROE wykład 3 klasa string, przeciążanie funkcji, operatory. dr inż. Jacek Naruniec

Programowanie obiektowe zastosowanie języka Java SE

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

Wykład 8: klasy cz. 4

I - Microsoft Visual Studio C++

Część 4 życie programu

C++ - przeciążanie operatorów. C++ - przeciążanie operatorów. C++ - przeciążanie operatorów. C++ - przeciążanie operatorów

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

Języki i metody programowania Java. Wykład 2 (część 2)

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

Wykład 4: Klasy i Metody

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

Programowanie w C++ Wykład 8. Katarzyna Grzelak. 15 kwietnia K.Grzelak (Wykład 8) Programowanie w C++ 1 / 33

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

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

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

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

Programowanie obiektowe

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

Sposoby tworzenia projektu zawierającego aplet w środowisku NetBeans. Metody zabezpieczenia komputera użytkownika przed działaniem apletu.

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

Laboratorium 1 - Programowanie proceduralne i obiektowe

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

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL IV TI 6 godziny tygodniowo (6x15 tygodni =90 godzin ),

Metodyka programowania. Podstawy C#

Zaawansowane programowanie w języku C++ Funkcje uogólnione - wzorce

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

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

Środowiska i platformy programistyczne

Programowanie w C++ Wykład 9. Katarzyna Grzelak. 14 maja K.Grzelak (Wykład 9) Programowanie w C++ 1 / 30

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

TEMAT : KLASY DZIEDZICZENIE

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

Automatyczne tworzenie operatora = Integer2& operator=(const Integer& prawy) {

Dziedziczenie jednobazowe, poliformizm

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

class Student Deklaracja klasy Osoba: Deklaracja klasy Student:

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

Programowanie w C++ Wykład 12. Katarzyna Grzelak. 28 maja K.Grzelak (Wykład 12) Programowanie w C++ 1 / 27

Wprowadzenie w dziedziczenie. Klasa D dziedziczy klasę B: Klasa B klasa bazowa (base class), klasa D klasa pochodna (derived class).

Programowanie obiektowe

Laboratorium 1 Temat: Przygotowanie środowiska programistycznego. Poznanie edytora. Kompilacja i uruchomienie prostych programów przykładowych.

WYKONANIE APLIKACJI OKIENKOWEJ OBLICZAJĄCEJ SUMĘ DWÓCH LICZB W ŚRODOWISKU PROGRAMISTYCZNYM. NetBeans. Wykonał: Jacek Ventzke informatyka sem.

Java - wprowadzenie. Programowanie Obiektowe Mateusz Cicheński

C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy INNE SPOSOBY INICJALIZACJI SKŁADOWYCH OBIEKTU

Materiały do zajęć VII

Programowanie obiektowe, wykład nr 7. Przegląd typów strukturalnych - klasy i obiekty - c.d.

Programowanie w C++ Wykład 11. Katarzyna Grzelak. 13 maja K.Grzelak (Wykład 11) Programowanie w C++ 1 / 30

Automatyczne tworzenie operatora = Integer2& operator=(const Integer& prawy) {

1 Ergonomia i komputer Wprowadzenie Krótka historia ergonomii Ergonomiczna praca z komputerem... 11

Automatyczne tworzenie operatora = Integer2& operator=(const Integer& prawy) { zdefiniuje. Integer::operator=(ri);

Zmienne, stałe i operatory

1 Podstawy c++ w pigułce.

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

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

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

Lokalizacja Oprogramowania

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

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

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

Języki i metody programowania Java Lab1 Zofia Kruczkiewicz

Tablice (jedno i wielowymiarowe), łańcuchy znaków

Aplikacje w środowisku Java

Języki i metody programowania Java Lab2 podejście obiektowe

Konstruktor kopiujacy

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

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

Multimedia JAVA. Historia

Programowanie 2. Język C++. Wykład 3.

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

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

Scenariusz lekcji. Scenariusz lekcji 1 TEMAT LEKCJI: 2 CELE LEKCJI: 2.1 Wiadomości: 2.2 Umiejętności: 3 METODY NAUCZANIA: 4 ŚRODKI DYDAKTYCZNE:

Rozdział 4 KLASY, OBIEKTY, METODY

Programowanie obiektowe

Java: otwórz okienko. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak

Programowanie w Internecie. Java

1 Podstawy c++ w pigułce.

Wykład VII. Programowanie. dr inż. Janusz Słupik. Gliwice, Wydział Matematyki Stosowanej Politechniki Śląskiej. c Copyright 2014 Janusz Słupik

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

Temat 3. Projektowanie interfejsu użytkonwnika Kalkulator pierwszy program dla IOS

Transkrypt:

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 języka C++/CLI 5. Najprostsza aplikacja kalkulator 6. Tworzenie projektu do tworzenia definicji klasy w pliku nagłówkowym i pliku dll 7. Tworzenie programu korzystającego z klasy zdefiniowanej w pliku nagłówkowym 8. Interfejs graficzny aplikacji obsługa zdarzeń 2

1. Podstawowe pojęcia Typy programów C++ ISO/ANSI programy natywne C++ C++/CLI programy pracujące pod kontrolą CLR Standardy CLR (Common Language Runtime) jest standardowym środowiskiem do wykonywania programów napisanych w językach Visual Basic, C#, C++ oraz bibliotek ADO.Net, ASP.NET. To podstawa całego systemu.net Framework Specyfikacja CLR zawiera się w równorzędnych standardach CLI (Common Language Infrastructure), opracowanym przez ECMA (European Computer Manufacture) jako standard ECMA-335 ISO (ISO/IEC 23271). Właściwości Platforma.NET jest częścią systemu operacyjnego Windows Dzięki specyfikacji CLI kompilatory C++/CLI mogą działać w wielu systemach operacyjnych. 3

Tworzenie programów w C++ wg Ivor Horton Od podstaw Visual C++ 2005 C++ zarządzany C++ natywny C++ natywny MFC (Microsoft Foundation Classes) Klasy Platformy.NET Windows Forms CLR (Common Language Runtime) System operacyjny Sprzęt 4

Przebieg tworzenia i działania programu w języku zarządzanym C++ (w środowisku CLR) (1) Kod źródłowy np. C++/CLI Kompilator Kod pośredni MSIL + meta dane = Pliki typu.exe lub.dll czyli tzw. Podzespoły Uruchomienie programu ładującego CLR, znajdującego się w pliku exe lub dll Kod klasy bazowej Program ładujący klasy Kod maszynowy Kompilator JIT Program weryfikujący 5

Przebieg tworzenia i działania programu w języku zarządzanym C++ (w środowisku CLR) (2) Program napisany z języku wysokiego poziomu (C++, C#, J#, Visual Basic) jest kompilowany do języka pośredniego dla maszyny wirtualnej wyspecyfikowanej przez CLI jest to język MSIL (Microsoft Intermediate Language). Kompilator tworzy kod pośredni MSIL oraz tzw. metadane, zapewniające informacje o klasach Role metadanych: Udostępnianie definicji typów danych Lokalizowanie i ładowanie klas Rozmieszczenia obiektów w pamięci Egzekwowanie zasad bezpieczeństwa Odczytywane informacji o sposobie uczestniczenia danej klasy w transakcjach. Kod pośredni w postaci pliku.exe lub dll tworzy tzw. podzespoły (assemblies), w których rezydują klasy C++/CLI, oraz zasoby, które współpracując tworzą podstawowe logiczne funkcjonalności programu. W momencie uruchomienia kodu pośredniego startuje biblioteka mscoree.dll zapewniająca hosting wszystkim podzespołom - startuje program ładujący środowisko CLR w celu załadowania kompilatora JIT (Just-in-time) Kompilator typu JIT mapuje kod w języku pośrednim i metadane na kod maszynowy w locie. Dzięki temu kod pośredni CLI może być uruchomiony w dowolnym środowisku posiadającym implementację CLI (CLR jest implementacją stworzoną przez firmę Microsoft) Kompilator JIT jest uruchamiany w momencie wywoływania po raz pierwszy metody i tłumaczy ją na kod maszynowy. Dokonuje się wtedy weryfikacji kodu: czy typy danych są bezpieczne i operacje wykonywane są legalnie (nie każdy program podlega weryfikacji). Kiedy metoda jest wywołana ponownie, jest natychmiast wykonywana w kodzie maszynowym. Oznacza to, że weryfikowane i kompilowane są tylko te metody, które są wywoływane. Program jest kompilowany w trakcie pierwszego wykonywania lub podczas instalacji oprogramowania (można go uruchomić po raz kolejny bez potrzeby kompilacji). Podczas działania programu po kompilacji do kodu maszynowego uruchamiane są następujące usługi zarządzające wykonaniem skompilowanego programu: Usuwanie nieużytków w pamięci, Zarządzanie bezpieczeństwem - w CLR bezpieczeństwo jest oparte na uprawnieniach kodu (Code Access Security CAS) oraz na rolach (Role-Based Security RBS). Połączenie z kodem niezarządzanym Debugowanie, Wspieranie procesu ustalania wersji programu.. Przygotowanie programu do uruchomienia 6

Działanie programu Zdarzenia Klawiatura Przyciski myszy System operacyjny Windows PROGRAM Dane Algorytmy Obsługa zdarzeń o Klawiatura o Przyciski myszy Funkcje, metody klas realizujące algorytmy, obsługę zdarzeń 7

Trzy sposoby tworzenia programu (1) Korzystanie z API Windows jako podstawowego interfejsu systemu operacyjnego Windows do komunikacji między systemem operacyjnym i aplikacją Korzystanie z biblioteki Microsoft Foundation Classes (MFC), która zawiera klasy C++ obejmujące API Windows Korzystanie z Windows Forms sposób tworzenia aplikacji oparty na formularzach, która jest uruchamiana w środowisku CLR 8

Charakterystyka trzech podejść (2) Windows API - Należy napisać cały kod dla wszystkich elementów GUI (pracochłonny) MFC korzystanie z gotowych kontrolek GUI, korzystając z metody wizualnego programowania. Należy jednak napisać sporo kodu do obsługi interakcji z użytkownikiem. Umożliwia to dużą kontrolę nad tworzonym GUI, większą niż w Windows Forms. Program działa natywnie na PC, więc nieznacznie ma lepszą wydajność Windows Forms tworzenie GUI budując projekt metodą przeciągnij i upuść bez konieczności pisania dużej ilości kodu. Jest to najszybszy i najprostszy sposób budowania aplikacji, która działa w środowisku CLR, które pogarsza nieznacznie wydajność. 9

Style interfejsów graficznych programów Windows (1) Trzy style 1.Interfejs typu jednodokumentowy SDI (the single-document interface) 2.Interfejs typu wielodokumentowy MDI (the multiple-document interface) 3.Interfejs typu Explorer-style 10

Word Pad widok jednodokumentowego interfejsu programu SDI (2) Można otworzyć tylko jeden dokument - jeśli jest otwarty jeden dokument, nie można otworzyć drugiego okna 11

Microsoft Excel - widok wielodokumentowego interfejsu programu MDI (3) W programie można jednocześnie wiele okien 12

Windows Explorer - widok interfejsu programu typu explorer-style (4) Pojedyncze okno zawierające dwa panele - w lewym panelu zawierające zazwyczaj drzewo lub hierarchiczny widok, w prawym panelu wyświetla zawartość obszaru zaznaczonego w lewym panelu. Służy do wyboru lub nawigacji wśród dużej liczby plików, dokumentów, obrazów 13

2. Tworzenie aplikacji w Windows Forms 14

15

16

17

Widok projektu CLR Windows Forms 18

Paleta kontrolek Windows Forms (1) 19

Paleta kontrolek Windows Forms (2) 20

21

22

23

Po kliknięciu prawym klawiszem myszy na kontrolkę można wybrać okno Properties 24

25

26

27

28

29

Uruchomiony program typu Windows Forms 30

Podsumowanie: Czynności podczas tworzenia aplikacji W trybie Form Design stosowanie metody przeciągnij i upuść przeciąganie komponentów z okna Toolbox (generowanie automatyczne kodu) W trybie Form Design modyfikowanie właściwości komponentów w oknie Properties (generowanie automatyczne kodu) Uzupełnianie ręczne kodu w plikach źródłowych aplikacji dotyczących obsługi zdarzeń komponentów oraz modyfikowanie klas utworzonych automatycznie w projekcie 31

3. Zawartość projektu 32

33

Początkowa zawartość pliku przed wstawieniem komponentów 34

Główny plik 35

4. Podstawowe cechy języka C++/CLI Klasy wartości lub referencji nie może zawierać składowych będących tablicami oraz klas w natywnym C++ Nie można używać funkcji zaprzyjaźnionych Nie wolno używać pól bitowych Nie ma składowych typu const W definicji konstruktora kopiującego Nie można przesłaniać domyślnego operatora przypisania w klasie wartości Brakuje domyślnego operatora przypisania dla klas referencyjnych Nie można przeciążać operatora gcnew Przeciążone operatory można realizować za pomocą metod statycznych i zwykłych Składowe typu literal definiowanie stałych wewnątrz klasy Składowe typu initonly można je inicjować tylko podczas tworzenia obiektu Oprócz zwykłych konstruktorów (metod o nazwie klasy bez zwracanego typu) bezparametrowych i z parametrami, które są wywoływane podczas tworzenia obiektów klas wartości i referencyjnych istnieją konstruktory typu static wywoływane niejawnie zawsze przed jawnym wywołaniem zwykłych konstruktorów/ Umożliwiają inicjowanie pól initonly podczas działania programu. Pola initonly inicjowane przez przypisanie są inicjowane przed 36 uruchomieniem programu podczas kompilacji programu.

Typy klas w C++/CLI Klasy wartości zmienne tych klas, czyli obiekty posiadają własne dane value struct (domyślnie składowe są publiczne), value class (domyślnie składowe są prywatne) Klasy referencji zmienne tych klas są uchwytami do obiektów, którym należy przydzielać pamięć za pomocą operatora gcnew ref struct (domyślnie składowe są publiczne), ref class (domyślnie składowe są prywatne) 37

5. Najprostsza aplikacja - kalkulator Wykonanie klasy kalkulator w trybie konsolowym - wykonanie modułu Testowanie kalkulatora w trybie konsolowym wykonanie projektu konsolowego Wykonanie interfejsu kalkulatora w trybie Window Forms 38

Tworzenie programu konsolowego CLR 39

40

41

42

43

44

#include "stdafx.h using namespace System; public ref class TKalkulator1 { private: double arg1, arg2, wynik; wchar_t operacja; int poprawna; literal char plus = '+'; literal char minus = '-'; literal char mnoz = '*'; literal char dziel = '/'; public: // Kalkulator_1.cpp : main project file. 2-bajtowy typ znakowy, który w operacjach arytmetycznych nie zachowuje się jak int TKalkulator1 (double a,double b, wchar_t c) : arg1(a), arg2(b), operacja(c) { } TKalkulator1 () : arg1(1),arg2(1),operacja('+') { } void setarg1 (double a_) { arg1 = a_;} double getarg1() { return arg1; } void setarg2 (double b_) { arg2 = b_;} double getarg2() { return arg2; } Klasa typu ref jej obiekty mogą być dostępne tylko za pomocą referencji konstruktory przeciążone z listą argumentów void setoper (wchar_t c_) { operacja = c_;} wchar_t getoper() { return operacja; } double getwynik() { return wynik; } 45

int wyniki() { poprawna = 1; switch (operacja) { case plus : wynik = arg1 + arg2; break; case minus : wynik = arg1 - arg2; break; case mnoz : wynik = arg1 * arg2; break; case dziel : arg2!=0? wynik=arg1/arg2 : poprawna=3; break; default: poprawna = 2; } return poprawna; } Modyfikator L oznacza, że łańcuchy składają się z dwubajtowych znaków String^ info() { if (poprawna==1) return getarg1()+l" "+getoper()+l" "+getarg2()+l" = "+getwynik(); else if (poprawna==2) return L"Operacja "+getoper()+l" jest niepoprawna."; else return L"Argument 2 równy "+getarg2()+l" dzielenie przez zero."; } }; 46

int main(array<system::string ^> ^args) { TKalkulator1^ kalkulator1 = gcnew TKalkulator1(3,0,'/'); kalkulator1->wyniki(); Console::WriteLine(kalkulator1->info()); } TKalkulator1^ kalkulator2 = gcnew TKalkulator1(3,4,'/'); kalkulator2->wyniki(); Console::WriteLine(kalkulator2->info()); TKalkulator1^ kalkulator3 = gcnew TKalkulator1(3,4,'k'); kalkulator3->wyniki(); Console::WriteLine(kalkulator3->info()); TKalkulator1^ kalkulator4 = gcnew TKalkulator1(); kalkulator4->wyniki(); Console::WriteLine(kalkulator4->info()); return 0; Klasa typu ref jej obiekty mogą być tylko dostępne za pomocą referencji. Obiekt wskazywany przez referencje powstaje po przydzieleniu pamięci za pomocą operatora gcnew 47

1 2 3 4 1 2 3 4 48

6. Tworzenie projektu do tworzenia definicji klasy w pliku nagłówkowym i pliku dll 49

50

Utworzenie modułu 51

52

7. Tworzenie programu korzystającego z klasy zdefiniowanej w pliku nagłówkowym 53

Dodawanie istniejącego pliku nagłówkowego 54

Napisanie kodu programu testującego klasę zdefiniowana w pliku nagłówkowym 55

8. Interfejs graficzny aplikacji - obsługa zdarzeń 56

57

Nadanie własnej nazwy uchwytowi do obiektu Form1 (klasy głównej formularza) 58

Nadanie własnej nazwy uchwytowi do obiektów kontrolek formularza Zakładka definicji właściwości w oknie Properties kontrolek typu RadioButton i Button 59

Zakładka definicji właściwości w oknie Properties kontrolki typu TextBox Nadanie własnej nazwy uchwytowi do obiektu Form1 (klasy głównej formularza) 60

61

obsługa zdarzeń (Puste metody wygenerowa ne w wyniku kliknięcia na powierzchnię kontrolek formularza ) 62

63

64

65

Zakładka obsługi zdarzeń w oknie Properties kontrolki typu Buttons 66

Zakładka obsługi zdarzeń w oknie Properties kontrolki typu TextBox 67

Zakładka obsługi zdarzeń w oknie Properties kontrolki typu RadioButton 68

69

70

71

Poprawa kodu 72

73